Marquei sua pergunta como duplicata.
Leia a excelente resposta do JdeBP aqui: Como o systemd usa / scripts etc / init.d?
Received wisdom is that the System V
rc
scripts must have an LSB header, and are run in parallel without honouring the priorities imposed by the/etc/rc?.d/
system. This is incorrect on all points.In fact, they don't need to have an LSB header, and if they do not systemd-sysv-generator can recognize the more limited old RedHat comment headers (
description:
,pidfile:
, and so forth). Moreover, in the absence of an LSB header it will fall back to the contents of the/etc/rc?.d
symbolic link farms, reading the priorities encoded into the link names and constructing a before/after ordering from them, serializing the services. Not only are LSB headers not a requirement, and not only do they themselves encode before/after orderings that serialize things to an extent, the fallback behaviour in their complete absence is actually significantly non-parallelized operation.The reason that
/etc/rc3.d
didn't appear to matter is that you probably had that script enabled via another/etc/rc?.d/
directory.systemd-sysv-generator
translates being listed in any of/etc/rc2.d/
,/etc/rc3.d/
, and/etc/rc4.d/
into a nativeWanted-By
relationship to systemd'smulti-user.target
. Run levels are "obsolete" in the systemd world, and you can forget about them.
A questão de qual é o caminho da pesquisa, na verdade, é abordada pelo que você citou em sua pergunta:
systemd-sysv-generator
generates the service units that run the System Vrc
scripts from/etc/init.d
, if it doesn't find a native systemd service unit by that name already existing in the other six locations.
Mais detalhadamente:
- Para os próprios scripts:
-
systemd-sysv-generator
procura por uma variável de ambiente chamadaSYSTEMD_SYSVINIT_PATH
.- Se existir, espera-se que seja um caminho de pesquisa convencional separado por dois-pontos dos diretórios que
systemd-sysv-generator
varre um por um. - Se não existir, ou se tiver um valor vazio,
systemd-sysv-generator
recai sobre um padrão compilado, que no systemd vanilla é o diretório único/etc/init.d/
.
- Se existir, espera-se que seja um caminho de pesquisa convencional separado por dois-pontos dos diretórios que
- Cada diretório é verificado quanto a arquivos regulares que possuem o bit de permissão de execução do proprietário configurado, com diretórios anteriores no caminho substituindo os posteriores (um mecanismo não realmente exercido no caso padrão de apenas um diretório no caminho de pesquisa) e a existência de unidades de serviço com os mesmos nomes, inibindo a geração destes nonce.
-
- Para os "farms de link simbólico":
- Existe uma variável de ambiente semelhante denominada
SYSTEMD_SYSVRCND_PATH
.- Se existir, espera-se que seja um caminho de pesquisa convencional separado por dois-pontos dos diretórios que
systemd-sysv-generator
varre um por um. - Se ele não existir, ou se tiver um valor vazio,
systemd-sysv-generator
voltará a um padrão compilado, que no systemd vanilla é o diretório único/etc/rc.d/
.
- Se existir, espera-se que seja um caminho de pesquisa convencional separado por dois-pontos dos diretórios que
- Cada diretório é varrido para os subdiretórios denominados
rc[2345].d
, que são por sua vez varridos para entradas de diretório que começam comS
e dois dígitos decimais e que têm pelo menos 4 caracteres. As entradas do diretório não são desreferenciadas.
- Existe uma variável de ambiente semelhante denominada
Observe que systemd-sysv-generator
…
- … não parece no
K*
stuff; - … não verifica que os farms de link simbólico estão realmente preenchidos com links simbólicos (Eles podem ser arquivos especiais de caracteres ou FIFOs para tudo que importa, já que somente olha para os nomes .); e
- … não processa as informações de nível de execução dos comentários do LSB (por exemplo, os comentários
Default-Start:
eDefault-Stop:
).
Lembre-se, em relação ao terceiro ponto, que em baunilha van Smoorenburg rc
as informações de nível de execução dos comentários do LSB não controlam diretamente o comportamento de inicialização / desligamento. Essa é a missão dos diretórios de farm de links simbólicos. Descrevendo van Smoorenburg rc
na terminologia systemd: os farms de link simbólico são os controles enable do serviço, que determinam quais serviços são iniciados automaticamente no bootstrap; Considerando que os comentários Default-Start:
e Default-Stop:
são (muito aproximadamente) controles pré-definidos , que são transformados nos controles de ativação.