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

Hoe shell script uitvoeren via crontab?

Ik heb een notify.sh script dat er als volgt uitziet:

notify-send "hi welcome"

Mijn crontab notificatie voor 2 PM:

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

Dit werkt echter niet. Wat is het probleem?

Antwoorden (6)

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

Je script mist een #! regel aan het begin, wat de magie is die de kernel interpreteert om aan te geven welke commando-interpreter gebruikt moet worden voor het script.

Laat het er zo uitzien:

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

en zorg ervoor dat het script uitvoerbaar is:

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

Ook, aangezien je vraagt om dit slechts een keer per dag te laten gebeuren, is de tijdzone van de crontab hetzelfde als je eigen tijdzone? Misschien gebeurt dit om 14:00 GMT.

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

Crontab laten draaien is alleen makkelijk . Hier ga ik zeggen hoe je crontab jobs kan draaien. Het is nuttig voor iedereen die vast zit op crontab.

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

Om het script uitvoerbaar te maken, moeten we doen:

chmod +x home/hacks/notify.sh

Hier laat ik dit script om de minuut lopen … Door het onderstaande script uit te voeren, kun je het in een logbestand schrijven om te zien of het werkt

write log

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

send 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 hypotheses:

  • de cron daemon draait niet (doe een ps axfww | grep cron en controleer het)

  • de notify-send probeert output naar een terminal, of een X sessie te sturen – maar het wordt uitgevoerd vanuit de cron omgeving en het weet niet “tegen wie te praten”, om het zo maar te zeggen.

  • je script is niet uitvoerbaar

  • het home/ pad in het crontab script is relatief aan de gebruiker als wie het script wordt uitgevoerd. Probeer het volledige pad te gebruiken

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

Voeg export DISPLAY=:0 toe boven de notify-send regel in je script. Dit adresseert lornezog’s tweede punt.

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

Allereerst moeten we de crontab bewerken met Commando crontab -een dan binnen deze Crontab het Pad van Uitvoerbaar script toevoegen en in uw geval als volgt * 14 * * * home/hacks/notify.sh >/dev/null 2>&1 .

Start /Stop / herstart cron service

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

systemctl stop crond.service

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

heel simpel, voeg de volgende regel toe onderaan het crontab bestand via:sudo nano /etc/crontab

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