Réponses:
Votre script manque un #! ligne au début, qui est la magie interprétée par le noyau pour dire quel interpréteur de commandes doit être utilisé pour le script.
Faites comme ça:
#!/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 seule fois par jour, le fuseau horaire de la crontab est-il le même que votre propre fuseau horaire? Vous pourriez constater que cela se produit à 14 heures GMT.
Faire fonctionner crontab est facile seulement. Ici, je vais dire comment exécuter des tâches crontab. Il 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, je lance ce script pour chaque minute ... En faisant ci-dessous le script, vous pouvez l'écrire dans un fichier journal pour voir si son fonctionnement
écrire le 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" user@domain.com
4 hypothèse:
le démon cron n'est pas en cours d'exécution (faites un ps axfww | grep cron
et vérifiez)
le notify-send essaie d'envoyer la sortie vers un terminal ou une session X - mais il est exécuté à partir de l' cron
environnement et il ne sait pas "à qui parler", pour ainsi dire.
votre script n'est pas exécutable
le home/
chemin dans le script crontab est relatif à l'utilisateur sous lequel les scripts sont exécutés. Essayez d'utiliser le chemin complet
Vous devez ouvrir crontab par 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 exécutera votre script une fois par heure de 8 h à 15 h à 10 minutes après l'heure tous les lundis, mercredis et vendredis.
Tout d'abord, nous devons modifier la crontab avec Command crontab -e
et à l'intérieur, 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
assez simple, ajoutez la ligne suivante en bas du fichier crontab via:
sudo nano /etc/crontab
@reboot root cd /home/pi/node-sonos-http-api && npm start &