
Estoy convirtiendo un archivo de estilo de inicio SysV en un archivo Systemd Unit y su bloque de sección de inicio se ve así:
### 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
Sé que los niveles de ejecución 0-6 corresponden a varios objetivos de 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/ )
Pero nunca antes lo había visto S
como un nivel de carrera. He vistoalgunas definiciones que dicen que es para un solo usuariomientrashay otros que lo definen como sinónimo de otros niveles de ejecucióny todavíaotros no tienen una definición concluyente.
Sé que la versión con la que estoy trabajando es probablemente laEspecificación básica estándar de Linuxporque inmediatamente después del bloque de información de inicio está el origen delfunciones de inicio lsb(Obtenido a través de . /lib/lsb/init-functions
). Además, el sistema ejecuta Debian 8 Jessie.
¿Qué objetivo debo poner en el archivo de unidad systemd equivalente para el nivel de ejecución S
?
Respuesta1
S
no tiene correspondencia directa en systemd. El systemd-sysv-generator
programa no maneja dichos rc
guiones de Van Smoorenburg.
Debiansolía teneruna versión parcheada de ese programa que incluía un rc
script que se usaba S
dentro de una unidad de servicio sin dependencias predeterminadas y que era buscado por sysinit.target
. Esto fue imperfecto, pero entoncestodoEl funcionamiento de systemd-sysv-generator
es imperfecto, porque no existe una forma mecánica única de traducir rc
los guiones de Van Smoorenburg.
La gente de Debian systemd eliminó el parche en julio de 2016, cuando creyeron que todos los rc
scripts de van Smoorenburg en Debian que utilizaban S
habían sido reemplazados por unidades de servicio adecuadas. El tuyo parece ser de cosecha propia.
En este caso, es mejor que te olvides por completo del S
nivel de ejecución. Mi suposición fundamentada, basada únicamente en la descripción, es que lo que realmente debería fabricar es una unidad de servicio que sea:
Dependencias predeterminadas = no Después = local-fs.target Antes = red-pre.objetivo Quiere = red-pre.objetivoY eso es
Wanted-By
algo adecuado, posiblemente basic.target
.
Dependiendo de lo que realmente haga su servicio, ese pedido posterior local-fs.target
puede ser excesivo. Pero eso es algo que sólo tú puedes determinar.