Introdução aos fundamentos do systemd
- O QUE É?
O
systemd
é usado para gerenciar configurações e serviços do sistema. Osystemd
organiza tarefas em componentes chamados unidades e grupos de unidades em destinos.- POR QUÊ?
Conhecer os fundamentos do
systemd
, que incluem funcionalidades essenciais, como gerenciamento de serviços, monitoramento de dependências, registro, gerenciamento de recursos, ativação de soquetes e controle do sistema.- DEDICAÇÃO
Tempo de leitura de 20 minutos.
- REQUISITOS
Conhecimento básico dos comandos do Linux
Conhecimento básico dos processos, daemons e grupos de controle do Linux
1 O que é systemd
? #
O systemd
é um gerenciador de sistemas e serviços para sistemas operacionais Linux. Trata-se do sistema de inicialização padrão das principais distribuições Linux. O systemd
não é iniciado diretamente pelo usuário, mas instalado por meio do /sbin/init
e iniciado durante a inicialização antecipada. O systemd
atua como o sistema init que ativa e mantém os serviços do espaço do usuário quando executado como o primeiro processo na inicialização (PID 1). O PID 1 é conhecido como init e é o primeiro processo de modo de usuário do Linux criado. Ele é executado até o encerramento do sistema.
O systemd
tem a propriedade do PID 1 e é iniciado diretamente pelo kernel. Todos os outros processos são iniciados diretamente pelo systemd
ou por um de seus processos filho. O systemd
monta o sistema de arquivos do host e gerencia os arquivos temporários. Ele tem compatibilidade retroativa com os scripts init do SysV. O SysV é um sistema de inicialização que antecede o systemd
.
No systemd
, uma unidade é um recurso que o sistema sabe como operar e gerenciar. Esse é o objeto principal usado pelas ferramentas do systemd
. Esses recursos são definidos com arquivos de configuração chamados arquivos de unidade.
systemctl
é a ferramenta de gerenciamento central para controle do sistema init. Ela é usada para examinar e controlar o estado do sistema systemd
e do gerenciador de serviços.
Os destinos no systemd
são grupos de unidades relacionadas que atuam como pontos de sincronização durante a inicialização do sistema. Os arquivos de unidade de destino têm a extensão .target
. As unidades de destino agrupam várias unidades do systemd
por meio de uma cadeia de dependências.
Para solucionar problemas, você pode usar journalctl
para consultar e exibir mensagens de registro do diário do systemd
.
Para obter mais informações sobre o systemd
, você pode acessar https://systemd.io e consultar man 1 systemd
.
2 Sobre o processo de boot do systemd
#
A primeira etapa do processo de boot é carregar o kernel Linux, que é o principal componente do sistema operacional Linux. Após o carregamento do kernel, ele inicializará o hardware e iniciará o processo do systemd
, que é o primeiro processo executado no sistema.
2.1 Processo de boot do Linux #
O processo de boot do Linux é a fase inicial da inicialização do sistema operacional. É o processo pelo qual o sistema operacional carrega a memória, inicializa os componentes e se prepara para executar os aplicativos de usuário.
O processo de boot do Linux é dividido em quatro fases principais:
- Fase 1: BIOS
Quando você liga o computador, ele inicia o BIOS (Basic Input/Output System) e executa um POST (Power On Self Test). Essa é uma verificação de integridade que analisa a funcionalidade dos componentes do hardware, como discos rígidos, SSD, teclado, RAM, portas USB e qualquer outro hardware. Se o hardware funcionar como esperado, o processo de boot avançará para a próxima fase.
- Fase 2: O carregador de boot
Após a conclusão do POST, o BIOS procura e carrega o programa do carregador de boot armazenado no MBR (Master Boot Record). O MBR é um código de 512 bytes que geralmente está localizado em
/dev/sda
ou/dev/hda
, dependendo da arquitetura da unidade de disco rígido. O MBR também pode estar localizado em uma instalação ativa do Linux por USB ou DVD. O BIOS é carregado e executa esse código MBR.Há três carregadores de boot principais no Linux: LILO, GRUB e GRUB2. O carregador de boot GRUB2 (Grand Unified Bootloader) é o mais recente e o principal nas distribuições Linux modernas. O arquivo de configuração do GRUB2 está localizado em
/boot/grub2/grub2.cfg
. Depois que o BIOS localiza o carregador de boot GRUB2, ele o executa e o carrega na memória principal (RAM).- Fase 3: Inicialização do kernel Linux
O kernel Linux é o núcleo do sistema operacional. No sistema Linux, o kernel faz interface com o hardware, controla o gerenciamento de memória e gerencia os processos. O carregador de boot carrega o kernel Linux selecionado. O kernel é autoextraído de uma versão compactada e monta o sistema de arquivos raiz. Em seguida, ele executa o programa
/sbin/init
.- Fase 4:
systemd
O kernel carrega o
systemd
, que é um gerenciador de sistemas e serviços para sistemas operacionais Linux. Em seguida, osystemd
executa todos os outros processos de inicialização.
2.2 Processo de boot com systemd
#
Depois que o kernel carrega o systemd
, o systemd
assume o controle e inicia os outros serviços do sistema necessários para ativar e executar o sistema. Dentre eles estão o serviço de rede, o gerenciador de login etc.
O processo de boot é paralelizado na ordem em que as unidades de destino específicas são executadas. O systemd
usa o arquivo /etc/systemd/system/default.target
para determinar o destino no qual o sistema Linux deve ser inicializado. Esse arquivo é um link para graphical.target
, que inicializa o gerenciador de login gráfico. O systemd
ativa todas as unidades de destino que são dependências do default.target
e também, repetidamente, todas as dependências dessas dependências. Depois que todos os serviços forem iniciados, o sistema estará pronto para uso, e o gerenciador de login será exibido. Agora você pode efetuar login e começar a usar o sistema.
2.3 Analisando o desempenho do processo de boot do sistema com o comando systemd-analyze
#
Use o comando systemd-analyze
para analisar o desempenho do processo de boot do sistema. O comando também pode ser usado para recuperar outras informações de estado e rastreamento do gerenciador de sistemas e serviços. Ele é usado para verificar se os arquivos de unidade estão corretos e também para acessar funções especiais úteis para depuração avançada do gerenciador de sistemas.
Alguns exemplos incluem:
- Ver o tempo que leva para o sistema ser inicializado
>
systemd-analyze time Startup finished in 3.404s (kernel) + 2.415s (initrd) + 13.125s (userspace) = 18.945s graphical.target reached after 13.117s in userspace- Obter uma visão geral de alto nível do processo de boot, que inclui os serviços iniciados e o tempo necessário para iniciar cada serviço
>
systemd-analyze critical-chain The time when unit became active or started is printed after the "@" character. The time the unit took to start is printed after the "+" character. graphical.target @13.117s └─multi-user.target @13.117s └─getty.target @13.117s └─getty@tty1.service @13.116s └─plymouth-quit-wait.service @10.775s +2.338s └─systemd-user-sessions.service @10.769s +3ms └─remote-fs.target @10.764s └─iscsi.service @10.747s +16ms └─network-online.target @10.744s └─NetworkManager-wait-online.service @1.547s +9.197s └─NetworkManager.service @1.507s +37ms └─network-pre.target @1.504s └─wpa_supplicant.service @2.341s +5ms └─dbus.service @1.042s └─basic.target @1.036s └─sockets.target @1.036s └─snapd.socket @1.035s +590us └─sysinit.target @1.030s └─systemd-update-utmp.service @1.025s +5ms └─auditd.service @976ms +47ms └─systemd-tmpfiles-setup.service @964ms +9ms └─local-fs.target @962ms └─snapd.mounts.target @961ms └─snap-core18-2796.mount @417ms +543ms └─dev-loop9.device @961ms +628usEsse comando imprime uma árvore de unidades de tempo críticas para cada uma das unidades especificadas ou para o destino padrão. A inicialização dos serviços pode depender da ativação de soquete e da execução paralela de unidades. Semelhante ao comando
blame
, ele mostra o tempo que uma unidade leva para ser ativada, o que não é definido para unidades de dispositivo, que fazem a transição direta para o estado ativo.- Ver uma lista de serviços iniciados durante o processo de boot e exibidos de acordo com o tempo gasto por cada serviço
>
systemd-analyze blame 9.197s NetworkManager-wait-online.service 4.002s fwupd.service 2.338s plymouth-quit-wait.service 1.282s dracut-pre-udev.service 1.062s sys-devices-platform-serial8250-tty-ttyS0.device 1.062s dev-ttyS0.device 1.061s dev-ttyS1.device 1.061s sys-devices-platform-serial8250-tty-ttyS1.device 1.060s dev-ttyS11.device 1.060s sys-devices-platform-serial8250-tty-ttyS11.device 1.059s sys-devices-platform-serial8250-tty-ttyS13.device 1.059s dev-ttyS13.device 1.059s sys-devices-platform-serial8250-tty-ttyS10.device 1.059s dev-ttyS10.device 1.058s sys-devices-platform-serial8250-tty-ttyS14.device 1.058s dev-ttyS14.device 1.058s dev-ttyS12.device 1.058s sys-devices-platform-serial8250-tty-ttyS12.device 1.056s sys-devices-platform-serial8250-tty-ttyS17.deviceA inicialização de um serviço pode ser lenta porque está aguardando a conclusão de outra inicialização de serviço. Ele mostra o tempo que uma unidade leva para ser ativada, o que não é definido para unidades de dispositivo, que fazem a transição direta para o estado ativo. Esse comando não exibe resultados para serviços com
Type=simple
porque osystemd
considera esses serviços como iniciados imediatamente; logo, não é possível analisar os atrasos na inicialização.- Gerar um arquivo de gráfico vetorial que exibe os eventos ocorridos durante o processo de boot
>
systemd-analyze plot > /temp/sample.svgEsse comando cria um arquivo SVG no diretório
temp
. O SVG é um arquivo de texto que define um conjunto de vetores gráficos que os aplicativos, como o LibreOffice Draw, usam para gerar um gráfico.
3 Estrutura de um arquivo de unidade #
No systemd
, uma unidade refere-se a qualquer recurso que o sistema sabe como operar e gerenciar. Esse é o objeto principal usado pelas ferramentas do systemd
. Esses recursos são definidos usando arquivos de configuração chamados arquivos de unidade. A administração torna-se mais fácil quando você conhece os arquivos de unidade ao trabalhar com o systemd
. Os arquivos de unidade usam uma sintaxe declarativa simples que permite ver facilmente a finalidade e os efeitos de uma unidade após a ativação. Os arquivos de unidade têm seções com diretivas, por exemplo:
[Section] Directive1=value Directive2=value . . .
Os tipos de arquivo de unidade incluem as seguintes seções:
-
[Unit]
A primeira seção encontrada na maioria dos arquivos de unidade é
[Unit]
. Essa seção é usada para definir os metadados do arquivo de unidade e configurar o relacionamento dele com outros arquivos de unidade. Normalmente, essa seção é posicionada sobre as demais porque apresenta uma visão geral do arquivo de unidade.-
[Automount] / [Mount] / [Path] / [Service] / [Slice] / [Socket] /[Swap] / [Timer]
Seções que contêm diretivas específicas ao respectivo tipo. Consulte a Seção 4, “Tipos de arquivo de unidade” para ver uma lista dos tipos disponíveis. Observe que os tipos
device
,target
,snapshot
escope
não têm uma seção específica ao tipo.-
[Install]
Geralmente, ela é a última seção no arquivo de unidade e é opcional. Essa seção é usada para definir o comportamento de um arquivo de unidade quando ele está habilitado ou desabilitado. Quando você habilita um arquivo de unidade, ele é iniciado automaticamente no momento da inicialização. Com base na unidade específica, pode haver uma dependência em outras unidades relacionadas para que funcione apropriadamente. Por exemplo,
chrony
requer as diretivasAfter
,Wants
eBefore
, que são todas dependências com as quais ochrony
trabalha.
systemd
#[Unit] Description=usbguard 1 [Service] ExecStart=/usr/sbin/usb-daemon 2 [Install] WantedBy=multi-user.target 3
4 Tipos de arquivo de unidade #
Você pode determinar o tipo de unidade pela extensão do arquivo. O systemd
categoriza as unidades de acordo com o tipo de recurso que elas descrevem.
Tipos de arquivos de unidade disponíveis para o systemd
:
-
.service
Descreve como gerenciar um serviço ou aplicativo. Essa descrição inclui como iniciar ou parar o serviço, recarregar seu arquivo de configuração (se aplicável), em que condições o serviço é iniciado automaticamente e as informações de dependência ou de hierarquia para arquivos de unidade relacionados.
-
.scope
Esse arquivo de unidade é criado automaticamente pelo
systemd
com base nas informações recebidas da interface D-Bus e é usado para gerenciar conjuntos de processos do sistema que são criados externamente.-
.path
Define um caminho para a ativação baseada em caminho. Por padrão, um arquivo de unidade
.service
com o mesmo nome de base é ativado.inotify
é uma API de kernel usada por programas que desejam ser notificados sobre mudanças em arquivos.-
.snapshot
O comando
systemctl snapshot
cria automaticamente um arquivo de unidade.snapshot
. Esse comando cria instantâneos temporários do estado atual do sistema. Você pode modificar o estado atual do sistema após fazer mudanças. Os instantâneos são usados para reverter estados temporários.-
.timer
Define um temporizador gerenciado pelo
systemd
. Isso é semelhante a uma tarefa cron para ativação atrasada ou programada. Um arquivo de unidade com o mesmo nome, mas com a extensão.service
, é iniciado quando o temporizador é atingido.-
.slice
Associe nós do Grupo de Controle do Linux, que permitem atribuir ou restringir recursos a qualquer processo associado à seção. O nome indica a hierarquia na árvore de grupos de controle. As unidades são colocadas em seções por padrão, dependendo do respectivo tipo.
-
.target
Efetua a sincronização com outras unidades durante uma inicialização ou uma mudança no estado, ou coloca o sistema em um novo estado. Outras unidades especificam sua relação com os destinos para sincronização com as operações do destino.
-
.socket
Descreve uma rede, um soquete IPC ou um buffer PEPS que o
systemd
usa para ativação baseada em soquete. Há um arquivo.service
associado que é iniciado quando uma atividade é vista no soquete definido por essa unidade.-
.device
Define um dispositivo que foi designado para gerenciamento do
systemd
pelo sistema de arquivosudev
ousysfs
. Nem todos os dispositivos têm o arquivo.device
. Esse arquivo de unidade é obrigatório para solicitar, montar ou acessar um dispositivo.-
.swap
Define o espaço de troca (swap) no sistema. O nome do arquivo de unidade deve refletir o dispositivo ou o caminho de arquivo do espaço.
-
.mount
Define um ponto de montagem no sistema que será gerenciado pelo
systemd
. O nome desse arquivo é baseado no caminho de montagem, com traços no lugar das barras. As entradas em/etc/fstab
podem ter as unidades criadas automaticamente.-
.automount
Define um ponto de montagem que é montado automaticamente. Nomeie o arquivo de acordo com o ponto de montagem ao qual ele se refere. Um arquivo de unidade
.mount
correspondente é necessário para definir as especificações da montagem.
5 Dependências e ordem das unidades #
O systemd
tem dois tipos de dependências: de requisito e de ordem. As dependências de requisitos especificam que outras unidades devem ser iniciadas ou interrompidas ao ativar uma unidade. As dependências de ordem especificam a ordem em que as unidades devem ser iniciadas.
Dependências da unidade
Os arquivos de unidade têm o recurso de dependências. Uma unidade pode querer ou exigir uma ou mais unidades para ser executada. Essas dependências são definidas em arquivos de unidade com as diretivas Wants
e Requires
.
-
Wants
Por exemplo, se a unidade A tem
Wants=unit B
, quando a unidade A é executada, a unidade B também é executada. No entanto, se a unidade B é ou não iniciada com êxito, isso não influencia a execução bem-sucedida da unidade A.-
Requires
Se a unidade A tem
Requires=unit B
, as duas unidades são executadas; mas, se a unidade B não é executada com êxito, a unidade A é desativada. Não importa se os processos da unidade A teriam sido executados com êxito.
Ordem da unidade
Sem instruções apropriadas, o systemd
pode executar um grupo de unidades ao mesmo tempo. Iniciar os serviços na ordem certa é importante para o bom funcionamento do sistema Linux. Você pode organizar a ordem com as diretivas de arquivo de unidade Before
e After
.
-
Before
Por exemplo, se a unidade A tem
Before=unit B
, quando as duas unidades são executadas, a unidade A é executada na íntegra antes da unidade B.-
After
Se a unidade A tem
After=unit B
, quando as duas unidades são executadas, a unidade B é executada na íntegra antes da unidade A.
6 Registro #
Arquivos de registro e diários são importantes para a administração do sistema. Eles incluem informações detalhadas sobre um sistema e são muito importantes para solução de problemas e auditoria. Os arquivos de registro contêm eventos e mensagens gerados pelo kernel, pelos aplicativos e pelos usuários que efetuam login no sistema. Você pode usar o comando journalctl
para consultar o diário. Esse comando exibe os registros coletados pelo systemd
. O serviço systemd-journald
processa a coleta de registros do systemd
. O systemd-journald
grava os eventos e as mensagens em formato binário.
7 Destinos do systemd
#
O systemd
usa unidades e destinos. Uma unidade do systemd
define um serviço ou ação no sistema, que consiste em nome, tipo e arquivo de configuração. Um destino do systemd
combina várias unidades e define quais serviços devem ser iniciados para atingir o destino. Em um servidor, por exemplo, trata-se do estado em que a rede é executada e vários usuários podem efetuar login. Esses arquivos são identificados pelo sufixo .target
.
Semelhante aos arquivos de unidade, destinos diferentes podem ser aninhados por meio de dependências. Por exemplo, multi-user.target
requer (entre outros) os destinos que configuram os serviços de login e de sessão do usuário.
Destinos comuns do systemd
:
-
default.target
Inicializado por padrão. O arquivo
default.target
é um link simbólico para o verdadeiro arquivo de destino, comographical.target
para uma estação de trabalho desktop. Para um servidor, ele costuma sergraphical.target
.-
poweroff.target
Encerra e desliga o sistema.
-
rescue.target
Unidade de destino que extrai o sistema base e inicia uma sessão de shell de recuperação.
-
multi-user.target
Configura um sistema multiusuário não gráfico (console).
-
graphical.target
Usa um sistema multiusuário gráfico com serviços de rede.
-
reboot.target
Encerra e reinicializa o sistema.
Para obter mais informações sobre os destinos do systemd
, consulte man 5 systemd.target e man 7 systemd.special.
8 Usando systemd
como usuário comum #
Você pode usar o systemd
como um usuário comum para melhorar a segurança ou quando não tiver privilégios de usuário root
. É possível executar um serviço sem privilégio criando um user
.
Ao criar e usar um serviço de usuário, considere o seguinte:
As sessões do serviço de usuário são terminadas quando a sessão do usuário termina. É possível anular esse comportamento usando o comando
loginctl enable-linger USERNAME
.Os arquivos de serviço de usuário estão localizados em
/etc/systemd/user
ou$HOME/.config/systemd/user/
.Você pode controlar os serviços de usuário com o comando
systemctl --user
.
9 Comandos systemctl
#
O comando systemctl
é usado para examinar e controlar o estado do systemd
e do gerenciador de serviços.
Você pode usar os seguintes comandos systemctl
comuns e consultar a página man systemctl.
9.1 Exibindo informações sobre systemd
#
Para ver informações sobre os componentes do systemd
, você pode usar os seguintes comandos:
- systemctl list-units
Lista as unidades do
systemd
. Você pode usar os argumentos opcionais:--state=running
para mostrar as unidades ativas e--type=service
para mostrar as unidades ativas e encerradas.- systemctl list-unit-files
Lista as unidades do
systemd
e o status, como estático, gerado, desabilitado, álias, mascarado e habilitado.- systemctl list-dependencies
Lista a árvore de dependências.
- systemctl list-dependencies UNIT_FILE
Lista as dependências de um arquivo de unidade.
9.2 Gerenciando serviços do systemd
#
O comando systemctl
permite executar as tarefas com serviços a seguir.
- systemctl status SERVICE
Verifica o status do serviço específico.
- systemctl show SERVICE
Exibe as informações do serviço.
- systemctl start SERVICE
Em vez de iniciar o serviço manualmente, use o comando
start
. Quando uma mudança é feita no arquivo de configuração, o serviço relacionado deve ser iniciado novamente.- systemctl stop SERVICE
Interrompe um determinado serviço em execução.
- systemctl restart SERVICE
Em vez de reiniciar o serviço manualmente, use o comando
restart
. Quando uma mudança é feita no arquivo de configuração, o serviço relacionado deve ser reiniciado outra vez.- systemctl enable SERVICE
Habilita o serviço durante a inicialização.
- systemctl disable SERVICE
Desabilita o serviço durante a inicialização.
- systemctl reload-or-restart SERVICE
Recarregue o serviço se ele suportar recarregamento; do contrário, ele reiniciará o serviço. Se o serviço não estiver em execução, ele será reiniciado.
- systemctl mask SERVICE
Quando um serviço é mascarado, isso significa que o arquivo de unidade tem um link simbólico para
/dev/null
. Um link simbólico para um serviço mascarado é criado de/etc/systemd/system
para apontar para/dev/null
. Isso torna impossível carregar o serviço, mesmo que outro serviço habilitado exija o carregamento. Ele deve ser interrompido manualmente; do contrário, continuará sendo executado em segundo plano. Você pode usar a opção--runtime
para mascarar apenas temporariamente até a próxima reinicialização do sistema.Created symlink /etc/systemd/system/FOSSLinux.service → /dev/null.
- systemctl unmask SERVICE
Desmascara o serviço. Isso é efetivo quando o sistema é iniciado ou reiniciado manualmente.
9.3 Gerenciando estados do sistema #
O comando systemctl
permite executar processos de gerenciamento de energia no sistema, como reinicialização, encerramento e assim por diante, conforme descrito a seguir.
- systemctl reboot
Reinicializa o sistema
reboot.target
.- systemctl poweroff
Desliga o sistema
poweroff.target
.- systemctl emergency
Entra no modo de emergência
emergency.target
.- systemctl default
Volta para o destino padrão
multi-user.target
.
10 Solução de problemas do systemd
#
Você pode usar as seguintes dicas de solução de problemas para identificar e resolver problemas com os serviços do systemd
e garantir uma operação do sistema contínua.
-
Verificar sintaxe do seu arquivo de unidade do
systemd
com o comandosystemd-analyze verify SERVICE
Antes de iniciar ou habilitar um serviço do
systemd
, verifique a sintaxe do arquivo de unidade para garantir que não haja erros. Por exemplo:>
sudo
systemd-analyze verify /etc/systemd/system/my-custom-service.serviceO comando analisa o arquivo de unidade e relata erros de sintaxe, arquivos ausentes ou outros problemas. Você deve corrigir quaisquer problemas relatados antes de habilitar e iniciar o serviço.
-
Consultar os registros do serviço com o comando
journalctl -u SERVICE
Se você tiver qualquer problema com um serviço do
systemd
, consulte o registro do serviço. Por exemplo:>
sudo
journalctl -u my-custom-service.serviceO comando exibe os registros do serviço especificado, incluindo mensagens de erro, avisos ou outras informações relevantes. Você pode usar esses registros para identificar e corrigir problemas com o serviço.
-
Usar o comando
systemd-analyze plot
para visualizar o processo de inicialização Se um serviço estiver causando problemas durante o processo de boot, você poderá usar
systemd-analyze plot command
para visualizar o processo de boot e identificar os problemas. Por exemplo:>
sudo
systemd-analyze plot > boot-plot.svgO comando cria um arquivo SVG chamado
boot-plot.svg
que contém uma representação gráfica do processo de boot e dos possíveis problemas. Isso inclui o horário de início e de término de cada serviço. Você pode abrir esse arquivo em um visualizador de imagens compatível com SVG ou em um browser da Web para analisar os serviços que estão causando problemas durante o processo de inicialização.- Solucionar problemas de serviços com falha
Para descobrir quais serviços falharam e inspecionar a saída do registro:
>
sudo
systemctl --state=failed- Verificar o status de runtime de um serviço
Para descobrir o status de runtime atual de um serviço:
>
sudo
systemctl status SERVICE- O encerramento ou a reinicialização é demorado
Se o encerramento ou a reinicialização for demorado, a causa pode ser um serviço que não está sendo encerrado. O
systemd
aguarda algum tempo até que cada serviço seja encerrado antes de tentar terminá-lo. Um problema comum é um serviço suspenso ou um encerramento travado. Para descobrir isso, execute o seguinte comando:>
sudo
systemctl poweroff Failed to power off system via logind: There's already a shutdown or sleep operation in progress>
sudo
systemctl list-jobsVocê pode cancelar as tarefas em execução e em espera e encerrar ou reinicializar novamente:
>
sudo
systemctl cancel>
sudo
systemctl stop systemd-suspend.service
11 Melhores práticas do systemd
#
Você pode seguir algumas das melhores práticas para garantir serviços do systemd
eficientes e preparados para operar em diversas situações.
- Verificar o status de runtime de um serviço
Para descobrir o status de runtime atual de um serviço:
>
sudo
systemctl status SERVICE-
Usar o caminho absoluto no arquivo de unidade do
systemd
Use um caminho absoluto para arquivos executáveis e necessários, como arquivos de configuração ou scripts, em seu arquivo de unidade do
systemd
. Osystemd
não depende das variáveis de ambiente do usuário, como$PATH
, para localizar arquivos.- Usar a diretiva ExecReload
Use a diretiva ExecReload na seção
[SERVICE]
para definir um comando específico que deve ser executado quando você recarregar um serviço com o comandosystemctl reload
. Esse procedimento é útil para serviços que podem recarregar suas configurações dinamicamente, sem reinicialização.[Service] ExecStart=PATH_TO_EXECUTABLE ExecReload=PATH_TO_RELOAD_SCRIPT
- Usar a diretiva RestartSec
Use a diretiva RestartSec na seção
[SERVICE]
para definir um atraso (em segundos) antes de reiniciar serviço após uma falha. Esse procedimento é útil para serviços que exigem um tempo especificado para liberar recursos ou evitar loops de reinicialização rápida que podem causar alta carga do sistema.[Service] ExecStart=PATH_TO_EXECUTABLE Restart=on-failure RestartSec=5
- Desabilitar o modo de emergência em uma máquina remota
Você pode desabilitar o modo de emergência em uma máquina remota, por exemplo, uma máquina virtual hospedada no Google Cloud. Se esse modo estiver habilitado, a máquina não poderá se conectar à rede. Por exemplo:
>
sudo
systemctl mask emergency.service>
sudo
systemctl mask emergency.target
12 Informações legais #
Copyright © 2006-2024 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.