
Estou convertendo um arquivo de estilo de inicialização SysV em um arquivo de unidade Systemd e seu bloco de seção de inicialização se parece com isto:
### BEGIN INIT INFO
# Provides: ifcheck
# Required-Start: $local_fs
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Network interfaces check & replace
# Description: Checks if the interfaces were corrupted or if the special section is missing. If so, a default version will be copied over.
### END INIT INFO
Eu sei que os níveis de execução 0-6 correspondem a vários alvos do systemd:
╔══════════════════════╦═══════════════════╗
║ Run Level (SysVinit) ║ Systemd Target ║
╠══════════════════════╬═══════════════════╣
│ Run level 0 │ poweroff.target │
├──────────────────────┼───────────────────┤
│ Run level 1 │ rescue.target │
├──────────────────────┼───────────────────┤
│ Run level 2 │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 3 │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 4 │ multi-user.target │
├──────────────────────┼───────────────────┤
│ Run level 5 │ graphical.target │
├──────────────────────┼───────────────────┤
│ Run level 6 │ reboot.target │
├──────────────────────┼───────────────────┤
│ Emergency │ emergency.target │
└──────────────────────┴───────────────────┘
(According to https://www.tecmint.com/change-runlevels-targets-in-systemd/ )
Mas eu nunca vi S
um nível de execução antes. eu tenho vistoalgumas definições que dizem que é para usuário únicoenquantohá outros que o definem como sinônimo de outros níveis de execuçãoe aindaoutros não têm uma definição conclusiva.
Eu sei que a versão com a qual estou trabalhando é provavelmente aEspecificação de base padrão do Linuxporque imediatamente após o bloco de informações de inicialização é a origem doFunções de inicialização lsb(Fornecido por . /lib/lsb/init-functions
). Além disso, o sistema está rodando Debian 8 Jessie.
Qual destino devo colocar no arquivo de unidade systemd equivalente para o nível de execução S
?
Responder1
S
não tem correspondência direta no systemd. O systemd-sysv-generator
programa não suporta esses rc
scripts de van Smoorenburg.
Debiancostumava teruma versão corrigida desse programa que agrupava um rc
script usado S
dentro de uma unidade de serviço sem dependências padrão e que era procurado por sysinit.target
. Isso era imperfeito, mas entãotodosda operação de systemd-sysv-generator
é imperfeita, porque não existe uma maneira mecanicista que sirva para todos para traduzir rc
os scripts de van Smoorenburg.
O pessoal do sistema Debian eliminou o patch em julho de 2016, quando acreditaram que todos os rc
scripts van Smoorenburg usados no Debian S
haviam sido substituídos por unidades de serviço adequadas. O seu parece ser cultivado em casa.
Nesse caso, é melhor esquecer completamente o S
nível de execução. Meu palpite, baseado apenas na descrição, é que o que você realmente deveria fazer é uma unidade de serviço que seja:
Dependências padrão = não Depois=local-fs.target Antes = rede-pre.target Quer = rede-pre.targete isso é
Wanted-By
algo adequado, possivelmente basic.target
.
Dependendo do que o seu serviço realmente faz, fazer pedidos posteriores local-fs.target
pode ser um exagero. Mas isso é algo que só você pode determinar.