J'ai un script notify.sh
qui ressemble à:
notify-send "hi welcome"
Ma notification crontab pour 14h:
0 14 * * * home/hacks/notify.sh
Cependant, cela ne fonctionne pas. Quel est le problème?
Votre script manque un #! ligne au début, qui est la magie interprétée par le noyau pour dire quel interpréteur de commande doit être utilisé pour le script.
Faites-le ressembler à ceci:
#!/bin/sh
notify-send "hi welcome"
et assurez-vous que le script est exécutable:
ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh
De plus, puisque vous demandez que cela se produise une fois par jour, le fuseau horaire de la crontab est-il identique à votre fuseau horaire? Vous pourriez constater que cela se passe à 14h00 GMT.
Faire fonctionner crontab est facile seulement. Ici, je vais vous dire comment exécuter les tâches crontab. C'est utile pour quiconque est bloqué sur crontab.
*/1 * * * * cd /home/hacks && sh notify.sh
Pour rendre le script exécutable, nous devons faire:
chmod +x home/hacks/notify.sh
Ici, j’exécute ce script toutes les minutes ... En faisant le script ci-dessous, vous pouvez l’écrire dans un fichier journal pour déterminer si son fonctionnement est correct.
écrire un journal
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log
envoyer un mail
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" [email protected]
4 hypothèse:
le démon cron n'est pas en cours d'exécution (faites un ps axfww | grep cron
et vérifiez)
notify-send tente d'envoyer la sortie à un terminal ou à une session X - mais elle est exécutée à partir de l'environnement cron
et ne sait pas "à qui parler", pour ainsi dire.
votre script n'est pas exécutable
le chemin home/
dans le script crontab est relatif à l'utilisateur sous lequel les scripts sont exécutés. Essayez d'utiliser le chemin complet
Ajoutez export DISPLAY=:0
au-dessus de la ligne notify-send dans votre script. Cela répond au deuxième point de Lornezog.
Vous devez ouvrir crontab avec la commande suivante:
crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh
Cela lancera votre script toutes les heures, de 8h à 15h, tous les lundi, mercredi et vendredi.
Tout d’abord, nous devons éditer la crontab avec Command crontab -e
et que dans cette Crontab
ajouter le script Path of Executable et dans votre cas comme ceci * 14 * * * home/hacks/notify.sh >/dev/null 2>&1
.
Démarrer/Arrêter/redémarrer le service cron
/etc/init.d/crond start /stop / restart
service crond start /stop /restart
systemctl stop crond.service
systemctl stop crond.service