Ok, donc j'ai fait mon script, je l'ai déposé dans /etc/cron.hourly
alors je chmod 777
le fichier mais il ne s'exécute pas (automatiquement). Si je l'exécute manuellement, il fonctionne bien. Dois-je faire autre chose ?
Réponses
Trop de publicités?Entrées en cron.hourly
sont exécutés par le mécanisme d'exécution des parties ( man run-parts
pour plus d'informations). Et run-parts
est pointilleux sur les noms de fichiers qu'il considère comme valides.
Par exemple, le fait de donner une extension à votre script le rendra invalide et aura pour conséquence que le travail ne sera pas exécuté. [a-zA-Z0-9_-]
sont les caractères valides, donc le '.' le rend invalide.
Lorsque vous ajoutez un travail à /etc/cron.hourly
( ou .daily
, .weekly
etc), vérifiez toujours ensuite que run-parts
l'exécutera en lançant la commande :
run-parts --test /etc/cron.hourly
Si en exécutant cette commande, votre fichier apparaît, cela signifie que cela a fonctionné. Sinon, si rien n'apparaît, votre nom de fichier n'est pas valide.
Quel était le nom de votre script ?
La réponse de DaithiF devrait être la bonne.
Aussi, mon script n'avait pas de #!/bin/bash
dans la première ligne. Même si le script pouvait être exécuté avec la ligne de commande, run-parts
a rejeté le message "Exec format error".
Changer le nom du fichier de scriptname.sh
a scriptname
et en ajoutant le #!/bin/bash
dans la première ligne a permis à mon script de s'exécuter toutes les heures.
Lorsque vous exécutez
crontab -l
Cette tâche figure-t-elle sur la liste ?
si ce n'est pas le cas, ajoutez-le
crontab -e
ajouter cette ligne
0 * * * * yourScript
s'il est dans cette liste, essayez d'ajouter le chemin du langage de programmation en haut de votre script.
例
bash: #!/bin/bash
Ces 2 choses ont toujours résolu mes problèmes :)