Cómo usar @reboot en /etc/cron.d

17

Estoy migrando crontabs de usuarios individuales a /etc/cron.d, ya que eso permitiría una copia de seguridad, restauración y control de versiones adecuados.

Hasta ahora, según entiendo, la única diferencia entre los crontabs del usuario y los etc. es que debe especificar el usuario como la sexta columna. ¿Es esto correcto?

Y mi pregunta principal, para la cual no pude encontrar la respuesta en ninguna parte de Internet: ¿Cuál es la forma correcta de usar @rebooten /etc/cron.d o / etc / crontab?

algo como @reboot root command?

hipernudo
fuente

Respuestas:

20

Desde la página de manual de crontab :

Trabajos en /etc/cron.d/

Los trabajos en cron.d son trabajos del sistema, que se utilizan generalmente para más de un usuario. Esa es la razón por la cual se necesita el nombre del usuario. MAILTO en la primera línea es opcional.

EJEMPLO PARA TRABAJO EN /etc/cron.d/job

 #login as root
 #create job with preferred editor (e.g. vim)
 MAILTO=root
 * * * * * root touch /tmp/file

Esa es toda la sección sobre crontab en / etc , así que supongo que la inclusión del usuario bajo cuyo nombre se ejecuta el trabajo es la única diferencia.

De nuevo desde la misma página de manual:

Se admiten estos "apodos" de especificación de tiempo especial, que reemplazan los 5 campos de fecha y hora iniciales, y tienen el prefijo '@':

@reboot: Ejecutar una vez después de reiniciar.

Por lo tanto, deduce que la forma correcta de usar @reboot es

   @reboot user_name command

es correcta .

MariusMatutiae
fuente
1

En caso de /etc/crontabque solo tenga que agregar estas líneas.

@reboot        command

Donde el comando puede ser cualquier script o un solo archivo.

Krishna
fuente
¿Eso funciona? /etc/crontabgeneralmente requiere un nombre de usuario.
mwfearnley
1

Si lo está ejecutando de manera interactiva como se muestra a continuación, no especifique el usuario:

crontab -e
@reboot /root/mycommand

Si lo está colocando como un archivo en /etc/cron.d, por ejemplo /etc/cron.d/mycronfile, debe poner al usuario:

@reboot root /root/mycommand
Wadih M.
fuente