Sul mio Ubuntu-Desktop e sul mio debian-server ho uno script che deve essere eseguito ogni minuto (uno script che chiama il minuto-tic del mio browser nel mio spazio online ).
Il problema è che su derivati debian cron si registra /var/log/syslog
ogni volta che viene eseguito. Alla fine vedo ripetuto il messaggio in cui è stato eseguito più volte /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 /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 in syslog e non genera alcun messaggio di posta elettronica
EDIT:
esiste una soluzione per reindirizzare i cron-log in un registro separato come proposto qui cambiando/etc/syslog.conf
Ma lo svantaggio è che poi TUTTO l'output di tutti i cronjob viene reindirizzato.
Posso in qualche modo reindirizzare un singolo cronjob a un file di registro separato? Preferibilmente configurabile all'interno del cron.hourly
file stesso.
MAILTO=""
poiché la prima riga del crontab impedirà qualsiasi email. Inoltre, utilizzare il trifecta completo sulle righe di comando se si sopprime tutto l'output. Tutti e 3 i tipi vengono reindirizzati da questa stringa: >/dev/null 2>&1
- Naturalmente, è possibile fare in modo che lo script includa scritture periodiche in un registro separato.
MAILTO=""
all'inizio del file cron. Questo eliminerà tutte le email. E non ho mai sentito parlare di un demone cron che invia l'output del lavoro a syslog (ma suppongo sia possibile).