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?
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?
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.
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
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
Allereerst moeten we de crontab bewerken met Commando crontab -e
en 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