En una instalación nueva de OpenSuse 12.3, quiero "daemonizar" un programa. Y, en todos los ejemplos encontrados en Internet, veo que primero tengo que crear uno /etc/init.d/myscript
basado en /etc/init.d/skeleton
...
Pero no tengo /etc/init.d/skeleton
... ¿Existe otro lugar para este archivo? ¿O tal vez necesito instalar algo?
El sistema está actualizado, lo comprobé primero.
Sé que puedo intentar copiar otro /etc/init.d
script existente y modificarlo, o crear uno nuevo, pero sabría si lo estoy haciendo mal o si hay otra forma especial de hacerlo en OpenSuse.
Respuesta1
No estoy seguro de dónde /etc/init.d/skeleton
desapareció el archivo, pero esperaría que este cambio esté relacionado con el reemplazo del tradicional SysV init daemon
desde systemd
OpenSUSE 12. systemd
Es totalmente compatible con scripts de inicio bien conocidos, pero preferiría usar el systemd
modelo de servicios de inicio.
En mi opinión, los scripts de inicio tradicionales pueden ser complicados y, a veces, pueden requerir un conocimiento más profundo de los scripts de shell. Por otro lado, systemd
el "initscript" o unit
archivo de configuración de un servicio ( man systemd.unit
) es más fácil de mantener ya que tiene una sintaxis simple similar a la de .INI
los archivos. Puede intentar escribir algún archivo de unidad y habilitarlo soltando el archivo en el /etc/systemd/system
directorio. Este directorio tiene mayor prioridad que el directorio predeterminado /usr/lib/systemd/system
. A continuación se muestra un ejemplo de sshd
unidad demonio:
[Unit]
Description=OpenSSH Daemon
After=syslog.target network.target
[Service]
EnvironmentFile=/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
O puede seguir con los scripts de inicio "heredados" a medida que los utiliza. Pero perderás algunas características interesantes systemd
como:
- tiempo de arranque más rápido, inicio paralelo real de servicios
- manejo automático de dependencias
- Monitoreo de servicios y reinicio automático de los que fallaron.
- y mucho más
Finalmente, tenga en cuenta que si hay una unidad ( sshd.service
) con el mismo nombre base que un script de inicio ( /etc/init.d/sshd
), entonces el script de inicio se ignora y systemd
se preferirá y utilizará la unidad.