65 votes

Cron.hourly ne s'exécute pas

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 ?

171voto

will Points 9

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 ?

12voto

BillSaysThis Points 417

Pourquoi ne pas utiliser crontab ( /etc/crontab ) et utiliser */1 dans le champ de l'heure. J'ai utilisé cela pour exécuter un script toutes les 5 min et cela fonctionne bien :

# m h dom mon dow user  command
* */1  * * *   user    command

6voto

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.

5voto

Darmen Amanbayev Points 243

Votre problème est probablement dû à des autorisations trop ouvertes, qui permettent à n'importe qui de modifier votre fichier. Essayez 755 à la place.

Un examen des entrées cron dans votre sortie syslog devrait le confirmer.

-1voto

Wok Points 3647

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 :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X