¿Debo usar cron.hourly o crontab?

9

Parece que todas las sugerencias para usar / programar awstats es a través de crontab, como tal: 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null(ejecutando awstats cada hora).

Sin embargo, si verifico crontab -l, dice que crontab está vacío para mi usuario.

Sin embargo, cuando verifico /etc/cron.hourly, tengo un archivo awstats con lo siguiente:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

Solo para hacerle saber, mi awstats se actualiza bien, crea sus informes y todo está bien.

¿Ejecutar un comando crontab crea una entrada en la carpeta cron especificada? (es decir, cron.hourly o cron.daily, etc.) ¿O no están relacionados? Si están relacionados, ¿por qué mi usuario no tiene una entrada crontab?

Bebida gaseosa
fuente

Respuestas:

13

crontab -ees la forma tradicional de crear un crontab. Me parece incómodo y anticuado, pero la gente todavía lo usa.

/etc/cron.hourly, incluyendo cron.daily, cron.weekly& /etc/cron.d, etc. son proporcionados por la mayoría de las distribuciones de Linux porque son convenientes y funcionan bien con herramientas de automatización como gestores de paquetes y sistemas de gestión de configuración. Es muy fácil para un administrador de paquetes colocar un archivo en /etc/cron.hourly/foocomparación con la secuencia de comandos y editar un crontab existente. Editar un archivo mediante programación a través de un administrador de paquetes puede dañar el archivo, agregar entradas duplicadas, eliminar la línea incorrecta, arruinar los comentarios, etc. Vea Editar archivos considerados perjudiciales para alguna discusión, ya que este problema ha estado presente por un tiempo.

¿Ejecutar un comando crontab crea una entrada en la carpeta cron especificada?

No. /etc/cron.daily/fooes creado por el administrador de paquetes o creado a mano. No se crea cuando ejecuta el comando crontab. crontab -ecreará el crontab debajo /var, como /var/spool/cron/root.

Prefiero /etc/cron.$period/fooy /etc/cron.dporque esa jerarquía es ordenada y organizada, y es fácil de script para mi sistema de gestión de configuración. /etc/crontabtambién está disponible en Linux, pero es un poco monolítico y difícil de editar mediante programación. Sistemas como soporte de FreeBSD /etc/crontaby /etc/periodic.

Stefan Lasiewski
fuente
1
Gracias por su respuesta, también lo prefiero, ya que estoy acostumbrado a soltar archivos de configuración en carpetas .d (es decir, conf.d, etc.).
bebida gaseosa
Solo puedo estar de acuerdo en esto. También prefiero usar el sistema /etc/crontabcuando se trata de ejecutar tareas del sistema en lugar de usar el crontab de root. De esta manera, uno puede saber fácilmente qué hace el sistema sin tener que buscar en el crontab de cada usuario.
Spack
1
Estoy de acuerdo con esta respuesta Quizás mencione algunas otras diferencias: /etc/cron.$period/ contiene scripts autosuficientes que ejecuta el usuario root. OTOH /etc/cron.d/ contiene archivos de inclusión en crontab -eformato. Finalmente, / etc / cron * está destinado a ejecutar scripts de root, mientras crontab -eestá disponible para todos los usuarios.
Nils Toedtmann
El crontab -ecomando es incómodo por defecto. Así que creé un script llamado cteque hace dos comandos: export EDITOR=gedity luego crontab -ees más fácil trabajar con el editor.
SDsolar