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

Comment exécuter un script shell via crontab ?

J'ai un script notify.sh qui ressemble à ça :

notify-send "hi welcome"

Ma notification crontab pour 14h :

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

Mais cela ne fonctionne pas. Quel est le problème ?

Réponses (6)

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

Il manque à votre script une 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 en sorte que cela ressemble à ç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

Aussi, puisque vous demandez que cela n'arrive qu'une fois par jour, le fuseau horaire de la crontab est-il le même que votre propre fuseau horaire ? Vous pourriez trouver que cela se produit à 14 heures GMT.

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

Faire fonctionner la crontab n'est que facile. Je vais vous dire comment faire fonctionner les crontab. C'est utile pour tous ceux qui sont bloqués sur la 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 toutes les minutes … En faisant le script ci-dessous, vous pouvez l'écrire dans un fichier de log pour savoir si son fonctionnement

écrire le log

*/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
5
5
5
2009-12-10 08:42:40 +0000

4 hypothèses :

  • le démon cron ne tourne pas (faites un ps axfww | grep cron et vérifiez)

  • le notify-send essaie d'envoyer une sortie vers un terminal, ou une session X – mais il est lancé depuis l'environnement cron et il 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 le script est exécuté. Essayez d'utiliser le chemin complet

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

Ajoutez export DISPLAY=:0 au-dessus de la ligne “notify-send” dans votre script. Ceci répond au deuxième point de lornezog.

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

Tout d'abord, nous devons éditer la crontab avec la commande crontab -eet ensuite à l'intérieur de cette Crontab ajouter le chemin du script exécutable et dans votre cas comme ceci * 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

assez simple, ajouter la ligne suivante au bas du fichier crontab via:sudo nano /etc/crontab

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