resposta do caos é o que algumas documentações dizem. Mas não é o que realmente faz. (Não é o que o System V rc
fez. O Sistema Linux V rc
definitivamente não ignorou os cabeçalhos LSB, que insserv
usou para calcular ordenações estáticas, para iniciantes.) O Freedesktop documentação, como a página "Incompatibilities", está errada, sobre esses e outros pontos. (A variável de ambiente HOME
na verdade é frequentemente definida, por exemplo. Isso foi totalmente não documentado em qualquer lugar por um longo tempo. Agora está documentado no manual, mas a página WWW da Freedesktop ainda tem foi corrigido.)
O formato de serviço nativo do systemd é a unidade de serviço . O gerenciamento de serviço do systemd opera apenas somente em termos daqueles, que ele lê em um dos nove diretórios onde (em todo o sistema) .service
arquivos podem viver. /etc/systemd/system
, /run/systemd/system
, /usr/local/lib/systemd/system
e /usr/lib/systemd/system
são quatro desses diretórios.
A compatibilidade com os scripts System V rc
é obtida com um programa de conversão denominado systemd-sysv-generator
. Este programa é listado no diretório /usr/lib/systemd/system-generators/
e, portanto, é executado automaticamente pelo systemd no início do processo de autoinicialização a cada inicialização e, novamente, toda vez que o systemd for instruído a recarregar sua configuração posteriormente.
Este programa é um gerador , um tipo de utilitário auxiliar cujo trabalho é criar arquivos de unidade de serviço em tempo real, em um tmpfs onde mais três desses nove diretórios (que são destinados a serem usados apenas por geradores) estão localizados. systemd-sysv-generator
gera as unidades de serviço que executam os scripts System V rc
de /etc/init.d
, caso não encontre uma unidade de serviço systemd nativa com esse nome já existente nos outros seis locais.
O gerenciamento de serviços do systemd só conhece as unidades de serviço. Essas unidades de serviço (re- geradas automaticamente) são gravadas para invocar o sistema 5 rc
scripts. Eles têm, entre outras coisas:
[Unit] SourcePath=/etc/init.d/wibble [Service] ExecStart=/etc/init.d/wibble start ExecStop=/etc/init.d/wibble stop
A sabedoria recebida é que os scripts System V rc
devem ter um cabeçalho LSB e serem executados em paralelo sem honrar as prioridades impostas pelo sistema /etc/rc?.d/
. Isso está incorreto em todos os pontos.
Na verdade, eles não precisam ter um cabeçalho LSB e, se não forem, systemd-sysv-generator
poderão reconhecer os cabeçalhos de comentários antigos RedHat mais limitados ( description:
, pidfile:
e assim por diante). Além disso, na ausência de um cabeçalho LSB, ele retornará ao conteúdo dos farms de link simbólico /etc/rc?.d
, lendo as prioridades codificadas nos nomes dos links e construindo uma ordem antes / depois deles, serializando os serviços. Não apenas os cabeçalhos LSB não são um requisito, e não apenas eles mesmos codificam as ordenações antes / depois que serializam as coisas até certo ponto, o comportamento de fallback em sua completa ausência é, na verdade, uma operação significativamente não paralelizada.
O motivo pelo qual /etc/rc3.d
não pareceu importar é que você provavelmente tinha esse script ativado por meio de outro diretório /etc/rc?.d/
. systemd-sysv-generator
traduz a listagem em qualquer uma das /etc/rc2.d/
, /etc/rc3.d/
e /etc/rc4.d/
em uma relação Wanted-By
nativa para multi-user.target
do systemd. Os níveis de execução são "obsoletos" no mundo do systemd e você pode esquecê-los.
Leitura adicional
- systemd-sysv-generator . páginas de manual do systemd. Freedesktop.org.
-
"Variáveis de ambiente em processos gerados" .
systemd.exec
. páginas de manual do systemd. Freedesktop.org. - link
- link
- link
- link