Come impostare un crontab da eseguire in un momento specifico
Domanda
Come posso impostare il mio crontab per eseguire lo script X ogni giorno alle 23:59 senza inviarmi un'e-mail o creare alcun registro?
In questo momento il mio crontab assomiglia a questo
@daily /path/to/script.sh
Soluzione
Quando esegui crontab -e, prova questo:
59 23 * * * /usr/sbin/myscript > /dev/null
Questo significa:A 59 minuti e 23 ore ogni giorno (*) ogni mese ogni giorno feriale, esegui myscript.
Vedere uomo crontab per ulteriori informazioni ed esempi.
Altri suggerimenti
Seguito la risposta di svrist, a seconda della shell, 2>&1 dovrebbe andare Dopo > /dev/null oppure vedrai comunque l'output di stderr.
Quanto segue silenzierà sia stdout che stderr:
59 23 * * * /usr/sbin/myscript > /dev/null 2>&1
Il seguente silenzia stdout, ma stderr apparirà comunque (tramite stdout):
59 23 * * * /usr/sbin/myscript 2>&1 > /dev/null
Il capitolo della Advanced Bash Scripting Guide sul reindirizzamento IO è un buon riferimento: cerca 2>&1 per vedere un paio di esempi.
Con la risposta di cui sopra riceverai un'e-mail con qualsiasi testo scritto a stderr.Alcune persone reindirizzano anche quello e si assicurano che lo script scriva invece un registro.
... 2>&1 ....