¿La ejecución de cron por sí sola tiene el mismo comportamiento que mediante el script init.d?

¿La ejecución de cron por sí sola tiene el mismo comportamiento que mediante el script init.d?

Estoy trabajando con un código que activa cron en un servidor (que no lo tiene ejecutándose en el momento del arranque). El script que inicia cron configura algunas cosas de registro y luego simplemente invoca cron. No usa /etc/init.d/crono service cron start.

Después de iniciar cron de esta manera, service cron statusparece service cron stopque puedo trabajar felizmente y el PIDFILE especificado en /etc/init.d/cronestá presente.

Puse una línea de registro /etc/init.d/crony parece que la ejecución cronindependiente no invoca el script.

# service cron status
script is running
 * cron is running
# service cron stop
script is running
 * Stopping periodic command scheduler cron                                                                                                                                                        [ OK ]
# cron
#

¿Que está pasando aqui? ¿Esto se debe simplemente a que el cronbinario y el script /etc/init.d/cron usan la misma convención para la ubicación del archivo pid?

Respuesta1

Tu hipótesis es correcta:Vixie Crontiene una ubicación fija de archivo pid ( /var/run/crond.pid), lo que también impide ejecutarlo dos veces.

Elinicio.dscript, que también se llama serviceusando el estándar /lib/lsb/init-functions, que resume:

  1. La startacción simplemente llama /usr/sbin/cron(a través del /sbin/start-stop-daemonayudante),
  2. La stopacción simplemente envía SIGTERMal PID en el archivo pid (a través de /sbin/start-stop-daemon),
  3. La statusacción asciende a kill -0 $(cat /var/run/crond.pid).

Sin embargo, si tienessistemadinstalado, las funciones de inicio estándar se reescriben en/lib/lsb/init-functions.d/40-systemd y se ejecutancrondirectamente ya no se detecta:

piotr@bialykiel:~$ sudo /usr/sbin/cron 
piotr@bialykiel:~$ sudo /etc/init.d/cron status
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2020-02-02 09:12:43 CET; 5min ago
     Docs: man:cron(8)
  Process: 734 ExecStart=/usr/sbin/cron -f $EXTRA_OPTS (code=killed, signal=TERM)
 Main PID: 734 (code=killed, signal=TERM)

desdesistemadMe gustaría tener un CGrouppor servicio. ¿Qué es peor starty restartno funcionará, ya quecronfallará en el archivo pid ya existente y stopno eliminará elcroninstancia que creaste.

información relacionada