En mi Ubuntu-Desktop y en mi servidor Debian, tengo un script que debe ejecutarse cada minuto (un script que llama al minuto-tic de mi juego de navegador en línea espacial ).
El problema es que en los derivados de Debian, cron inicia sesión /var/log/syslog
cada vez que se ejecuta. Termino viendo repetido el mensaje en el que se ejecutó una y otra vez /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Sé que para suprimir la salida de un programa, puedo redirigirlo a /dev/null
, por ejemplo, para ocultar todos los mensajes de error y advertencia de un programa, puedo crear una línea en crontab como este
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Pero me gustaría ejecutar un cronjob y asegurarme de que todos los resultados o errores generados se canalicen a NULL, por lo que no genera ningún mensaje en syslog y no genera ningún correo electrónico
EDITAR:
hay una solución para redirigir los registros cron en un registro separado como se propone aquí cambiando/etc/syslog.conf
Pero el inconveniente es que TODA la salida de todos los cronjobs se redirige.
¿De alguna manera solo puedo redirigir un único cronjob a un archivo de registro separado? Preferentemente configurable dentro del cron.hourly
propio archivo.
MAILTO=""
ya que la primera línea del crontab evitará cualquier correo electrónico. Además, use la trifecta completa en sus líneas de comando si está suprimiendo todos los resultados. Los 3 tipos son redirigidos por esta cadena: >/dev/null 2>&1
- Por supuesto, puede hacer que el script incluya escrituras periódicas en un registro separado.
MAILTO=""
al comienzo del archivo cron. Esto suprimirá todos los correos electrónicos. Y nunca he oído hablar de un demonio cron que envíe la salida del trabajo a syslog (pero supongo que es posible).