2009-12-10 08:38:25 +0000 2009-12-10 08:38:25 +0000
22
22

Come eseguire uno script di shell tramite crontab?

Ho uno script notify.sh che assomiglia a:

notify-send "hi welcome"

La mia notifica crontab per le 2 PM:

0 14 * * * home/hacks/notify.sh

Tuttavia, questo non funziona. Qual è il problema?

Risposte (6)

38
38
38
2009-12-10 09:04:32 +0000

Al tuo script manca una linea #! all'inizio, che è la magia interpretata dal kernel per dire quale interprete di comandi deve essere usato per lo script.

Fallo sembrare così:

#!/bin/sh
notify-send "hi welcome"

e assicuratevi che lo script sia eseguibile:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

Inoltre, dato che stai chiedendo che questo accada solo una volta al giorno, il fuso orario del crontab è lo stesso del tuo fuso orario? Potresti trovare che questo accada alle 14:00 GMT.

18
18
18
2010-03-25 06:05:09 +0000

Far funzionare crontab è facile. Qui dirò come eseguire i lavori di crontab. È utile per chiunque sia bloccato su crontab.

*/1 * * * * cd /home/hacks && sh notify.sh

Per rendere lo script eseguibile, dobbiamo fare:

chmod +x home/hacks/notify.sh

Qui eseguo questo script ogni minuto … Facendo lo script qui sotto, potete scriverlo in un file di log per scoprire se funziona

scrivere log

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

inviare mail

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
5
5
5
2009-12-10 08:42:40 +0000

4 ipotesi:

  • il demone cron non è in esecuzione (fai un ps axfww | grep cron e controlla)

  • il notify-send sta cercando di inviare l'output a un terminale, o a una sessione X – ma viene eseguito dall'ambiente cron e non sa “con chi parlare”, per così dire.

  • il tuo script non è eseguibile

  • il percorso home/ nello script crontab è relativo all'utente con cui lo script viene eseguito. Prova ad usare il percorso completo

1
1
1
2012-03-11 00:33:46 +0000

Aggiungete export DISPLAY=:0 sopra la linea notify-send nel vostro script. Questo affronta il secondo punto di lornezog.

0
0
0
2015-10-24 12:00:18 +0000

Prima di tutto, abbiamo bisogno di modificare il crontab con il comando crontab -ee poi dentro questo Crontab aggiungi il percorso dello script eseguibile e nel tuo caso come questo * 14 * * * home/hacks/notify.sh >/dev/null 2>&1 .

Start /Stop / restart cron service

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl stop crond.service

-2
-2
-2
2018-12-28 16:01:47 +0000

abbastanza semplice, aggiungere la seguente linea in fondo al file crontab via:sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &