Sul mio Ubuntu-Desktop e sul mio debian-server ho uno script che deve essere eseguito ogni minuto (uno script che richiama il minute-tic del mio browsergame spaziale online).
Il problema è che sui derivati debian cron sta registrando su /var/log/syslog
ogni volta che viene eseguito. Finisco per vedere ripetuto il messaggio che è stato eseguito più e più volte in /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)
So che per sopprimere l'output di un programma posso reindirizzarlo a /dev/null
, ad esempio per nascondere tutti i messaggi di errore e di avviso da un programma posso creare una riga in crontab come questa
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Ma vorrei eseguire un cronjob ed essere sicuro che tutto l'output o gli errori generati vengano reindirizzati a NULL, quindi non genera alcun messaggio nel syslog e non genera alcuna e-mail
EDIT:
esiste una soluzione per reindirizzare i cron-log in un registro separato come proposto qui modificando /etc/syslog.conf
Ma lo svantaggio è che TUTTO l'output di tutti i cronjob viene reindirizzato.
Posso in qualche modo reindirizzare solo un singolo cronjob a un file di registro separato? Preferibilmente configurabile all'interno di cron.hourly
file stesso.
Risposta accettata:
Fai la linea in questo modo:
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
Questo catturerà sia STDOUT (1) che STDERR (2) e li invierà a /dev/null
.
MAILTO
Puoi anche disabilitare l'e-mail impostando e quindi reimpostando il MAILTO=""
che disabiliterà l'invio di eventuali email.
Esempio
MAILTO=""
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
MAILTO="[email protected]"
* * * * * root /usr/local/sbin/myothercommand.sh
Messaggi aggiuntivi
Spesso riceverai i seguenti tipi di messaggi in /var/log/syslog
:
Nov 11 08:17:01 manny CRON[28381]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Queste sono semplicemente notifiche tramite cron che è stata eseguita una directory di cronjobs. Questo messaggio non ha nulla a che fare direttamente con questi lavori, proviene invece da crond
demone direttamente. Non c'è davvero nulla che tu possa fare al riguardo e ti incoraggio a non disabilitarli, dal momento che sono probabilmente l'unica finestra che hai sulle vicende di crond
tramite i registri.
Se sono molto fastidiosi per te, puoi sempre indirizzarli a un file di registro alternativo per eliminarli dal tuo /var/log/syslog
file, tramite il /etc/syslog.conf
file di configurazione per syslog
.