Saltar para o conteúdo
101 · LPIC-1 (parte 1)

101.3 Alterar níveis de execução - destinos de energia

TópicoT03ObjetivoAlterar níveis de execução e destinos de inicialização, e desligar ou reiniciar o sistemaPeso1PáginasLPIC-1 (101) - Version 5.0

Resumo Conciso

Daemons e Serviços

  • Daemons/serviços: processos responsáveis por funções específicas do sistema (HTTP, compartilhamento de arquivos, email, firewall, balanceamento de carga)
  • O gerenciador de serviços é o primeiro programa lançado pelo kernel → PID 1
  • Pode controlar quais daemons estão ativos dependendo da finalidade do sistema

SysVinit — Níveis de execução

Para mais detalhes sobre a sequência de inicialização, ver T02 — Inicialização do sistema.

NívelFunção
0Encerramento do sistema (shutdown)
1, s ou singleModo de usuário único, sem rede (manutenção)
2, 3 ou 4Modo multiusuário (2 e 4 pouco usados)
5Modo multiusuário + login gráfico
6Reinicialização do sistema (reboot)

SysVinit — Arquivos e diretórios

CaminhoFunção
/sbin/initPrograma de gerenciamento de níveis de execução (PID 1)
/etc/inittabArquivo de configuração do init
/etc/init.d/Scripts de serviço reais
/etc/rc0.d/ a /etc/rc6.d/Links simbólicos para scripts por nível de execução
/etc/shutdown.allowUsuários autorizados a reiniciar com Ctrl+Alt+Del

/etc/inittab — Formato

bash
id:runlevels:action:process
AçãoDescrição
bootProcesso executado durante inicialização (runlevels ignorado)
bootwaitProcesso executado durante inicialização, init aguarda conclusão
sysinitProcesso executado após inicialização (qualquer runlevel)
waitProcesso executado nos runlevels dados, init aguarda conclusão
respawnProcesso reiniciado caso seja encerrado
ctrlaltdelProcesso executado ao pressionar Ctrl+Alt+Del

SysVinit — Comandos

ComandoFunção
runlevelMostra nível de execução anterior e atual
telinit <nível>Alterna para nível de execução diferente
telinit qRecarrega configuração do /etc/inittab
  • Primeira letra K → serviço será encerrado (kill) ao entrar no nível
  • Primeira letra S → serviço será iniciado (start) ao ingressar no nível

systemd — Tipos de unidades

TipoDescrição
serviceUnidade mais comum (iniciar, interromper, recarregar)
socketSocket de sistema de arquivos ou rede
deviceDispositivo de hardware identificado pelo kernel
mountDefinição de ponto de montagem (semelhante a /etc/fstab)
automountPonto de montagem automática
targetAgrupamento de outras unidades
snapshotEstado salvo do gerenciador systemd

systemd — Comandos do systemctl

ComandoFunção
systemctl start <unit>Inicia a unidade
systemctl stop <unit>Interrompe a unidade
systemctl restart <unit>Reinicia a unidade
systemctl status <unit>Mostra estado da unidade
systemctl is-active <unit>Exibe active ou inactive
systemctl enable <unit>Habilita unidade para iniciar na inicialização
systemctl disable <unit>Desabilita unidade de iniciar com o sistema
systemctl is-enabled <unit>Verifica se unidade inicia com o sistema
systemctl isolate <target>Alterna para destino diferente
systemctl set-default <target>Define destino padrão
systemctl get-defaultExibe destino padrão atual
systemctl list-unit-filesLista unidades disponíveis
systemctl list-unitsLista unidades ativas
systemctl suspendModo de baixo consumo (mantém dados na RAM)
systemctl hibernateCopia dados da RAM para disco e desliga
systemctl rebootReinicia o sistema
systemctl poweroffDesliga o sistema

systemd — Destinos

  • Destinos correspondentes aos runlevels: runlevel0.target a runlevel6.target
  • multi-user.target ≈ nível de execução 3
  • graphical.target ≈ nível de execução 5
  • Destino padrão: link simbólico /etc/systemd/system/default.target
  • Nunca apontar para shutdown.target (equivale ao nível 0)

systemd — Arquivos importantes

CaminhoFunção
/lib/systemd/system/Arquivos de configuração das unidades
/etc/systemd/logind.confAções relacionadas a consumo de energia
/etc/systemd/logind.conf.d/Configurações extras de energia

Upstart

ComandoFunção
initctl listLista serviços e estado
start <serviço>Inicia um serviço
status <serviço>Verifica estado de um serviço
stop <serviço>Interrompe um serviço
  • Scripts localizados em /etc/init/
  • Comandos legados runlevel e telinit ainda funcionam
  • Descontinuado pelo Ubuntu em 2015 (migrou para systemd)

Desligar e reiniciar

ComandoFunção
shutdown [opções] <tempo> [mensagem]Desligamento agendado com notificação
shutdown -h nowDesligar imediatamente
shutdown -r nowReiniciar imediatamente
shutdown -cCancelar shutdown agendado
shutdown +10 "Mensagem"Desligar em 10 minutos com aviso
wall [mensagem]Envia mensagem para todas as sessões de terminal

Formatos de tempo para shutdown

FormatoDescrição
hh:mmHora específica (ex: 23:30)
+mMinutos a esperar (ex: +10)
now ou +0Imediato

ACPID

  • Principal gerenciador de energia do Linux
  • Permite ajustes refinados: fechar tampa do laptop, bateria fraca, níveis de carga
  • Conflita com o gerenciamento de energia do systemd

Exercícios Exploratórios

Exercício Exploratório 1 — Nível de execução incorreto no SysV

Enunciado: Em um sistema baseado em SysV, suponha que o nível de execução padrão definido em /etc/inittab seja 3, mas o sistema sempre inicia no nível de execução 1. Qual é a causa provável disso?

Os parâmetros 1 ou S podem estar presentes na lista de parâmetros do kernel.

Enunciado: Embora o arquivo /sbin/init possa ser encontrado nos sistemas baseados em systemd, ele é apenas um link simbólico para outro arquivo executável. Nesses sistemas, qual o arquivo apontado por /sbin/init?

O binário principal do systemd: /lib/systemd/systemd.

Exercício Exploratório 3 — Verificar destino padrão do systemd

Enunciado: Como se verifica o destino padrão do sistema em um sistema baseado em systemd?

O link simbólico /etc/systemd/system/default.target aponta para o arquivo da unidade definido como destino padrão. Também é possível usar o comando systemctl get-default.

bash
systemctl get-default# ouls -l /etc/systemd/system/default.target

Exercício Exploratório 4 — Cancelar shutdown agendado

Enunciado: Como poderíamos cancelar uma reinicialização do sistema programada com o comando shutdown?

Usaríamos o comando shutdown -c.

bash
shutdown -c