Si necesito un cronjob que se ejecuta a nivel del sistema (es decir, no es específico para un determinado usuario), ¿cómo me sugiere que lo cree?
- corriendo
crontab -e
como root - anexándolo a
/etc/crontab
- creando un archivo que define el cronjob en
/etc/cron.d/
- crear un archivo que defina el cronjob en
/etc/cron.*ly/
(pero solo si dicho intervalo de tiempo se ajusta a mis necesidades)
Lo que más me preocupa es: ¿cuál de estas soluciones posiblemente se sobrescribirá con una actualización del sistema ?
Además, supongo que si el trabajo es largo, debería ponerlo en un archivo de script separado , por ejemplo, en /root/bin/
. ¿Estás de acuerdo?
Respuestas:
No usar
crontab -e
No lo pondría
crontab -e
como root. Esto generalmente es menos obvio para otros administradores y es probable que se pierda con el tiempo. Al colocarlos/etc/crontab
, puede especificar exactamente el tiempo que desea que se ejecuten y también puede especificar un usuario diferente.Ubicaciones alternativas
Si no le importa ejecutar el script como un usuario diferente, y / o simplemente desea que el script se ejecute semanalmente, diariamente, etc., varias distribuciones proporcionan directorios donde se pueden colocar los scripts que se procesarán automáticamente en un momento específico.
Por ejemplo, bajo distribuciones basadas en Redhat:
A menudo pongo crons a nivel de sistema que quiero ejecutar en un momento específico en
/etc/cron.d
lugar de/etc/crontab
, especialmente si son scripts más complejos.Prefiero usar los directorios debajo
/etc/cron*
porque son un lugar mucho más obvio que otros administradores de sistemas sabrán que deben buscar y los archivos aquí se pueden administrar a través de instalaciones de paquetes comorpm
y / oapt
.Proteger entradas
Cualquiera de los directorios que he mencionado están diseñados para colocar scripts que no serán destruidos por un administrador de paquetes. Si le preocupa proteger una entrada crontab, definitivamente no la incluiría en el
/etc/crontab
archivo y, en su lugar , la incluiría como un script adecuado en uno de los/etc/cron*
directorios.fuente
Yo elegiría el # 4. Permite que la configuración del sistema elija cuándo ejecutar el trabajo, y generalmente hacen un buen trabajo de "ejecutar cuando no está ocupado". Cambiar el programador cron del sistema también afectaría automáticamente el tiempo de ejecución del script.
La desventaja es que no tienes control directo sobre cuándo se ejecuta. Si necesita un control más directo, use el # 1.
1 es menos probable que se sobrescriba con una actualización del sistema. Aunque 3 y 4 deberían ser bastante seguros. todo depende de cómo se actualice. Su distribución puede actualizarse como quiera, pero solo 2, por lo general, correrían el riesgo de sobrescribirse.
Finalmente, pondría los scripts en / usr / local / bin. Ese es el lugar "normal" donde coloco las cosas del sistema que no son administradas por el administrador de paquetes de la distribución. / root / bin también es aceptable si solo va a ser ejecutado por root. Sin embargo, todo esto es principalmente de sabor.
fuente
Cualquiera de los anteriores funcionará, y ninguno de los anteriores debe sobrescribirse con las actualizaciones. La elección real se reduce a la opinión: tres personas diferentes a menudo tendrán al menos dos, si no tres respuestas diferentes.
fuente