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

Wie führe ich ein Shell-Skript über crontab aus?

Ich habe ein notify.sh Skript, das wie folgt aussieht:

notify-send "hi welcome"

Meine crontab-Benachrichtigung für 2 PM:

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

Dies funktioniert jedoch nicht. Was ist das Problem?

Antworten (6)

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

In Ihrem Skript fehlt eine #!-Zeile am Anfang. Das ist die Magie, die vom Kernel interpretiert wird, um zu sagen, welcher Befehlsinterpreter für das Skript verwendet werden soll.

Lassen Sie es so aussehen:

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

und stellen Sie sicher, dass das Skript ausführbar ist:

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

Außerdem, da Sie dies nur einmal am Tag machen wollen, ist die Zeitzone der Crontab die gleiche wie Ihre eigene Zeitzone? Es könnte sein, dass dies um 14 Uhr GMT geschieht.

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

Crontab zum Laufen zu bringen ist ganz einfach. Hier werde ich sagen, wie man Crontab-Jobs ausführt. Es ist nützlich für jeden, der mit crontab nicht weiterkommt.

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

Um das Skript ausführbar zu machen, müssen wir Folgendes tun:

chmod +x home/hacks/notify.sh

Hier lasse ich dieses Skript jede Minute laufen … Wenn Sie das folgende Skript ausführen, können Sie es in eine Protokolldatei schreiben, um festzustellen, ob es funktioniert

Protokoll schreiben

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

Mail senden

*/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 Hypothesen:

  • der Cron-Daemon läuft nicht (machen Sie ein ps axfww | grep cron und überprüfen Sie es)

  • das notify-send versucht, die Ausgabe an ein Terminal oder eine X-Sitzung zu senden - aber es wird aus der cron-Umgebung ausgeführt und weiß sozusagen nicht, “mit wem es reden soll”.

  • Ihr Skript ist nicht ausführbar

  • der home/-Pfad im crontab-Skript ist relativ zum Benutzer, unter dem das Skript ausgeführt wird. Versuchen Sie, den vollständigen Pfad zu verwenden

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

Fügen Sie export DISPLAY=:0 oberhalb der notify-send-Zeile in Ihrem Skript ein. Damit wird der zweite Punkt von lornezog angesprochen.

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

Zuerst müssen wir die crontab mit dem Befehl crontab -e bearbeiten und dann innerhalb dieses Crontab den Pfad des ausführbaren Skripts hinzufügen und in Ihrem Fall so * 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

Ganz einfach, fügen Sie folgende Zeile am Ende der crontab-Datei über:sudo nano /etc/crontab

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