Ok, donc j’ai fait mon script, je l’ai déposé dans /etc/cron.hourly
puis je chmod 777
le fichier mais il ne fonctionnera pas (automatiquement). Si je le lance manuellement, cela fonctionne bien. Dois-je faire autre chose?
Pourquoi ne pas utiliser crontab (/ etc/crontab) et utiliser */1 dans le champ des heures. J'ai utilisé cela pour exécuter un script toutes les 5 minutes et cela fonctionne bien:
# m h dom mon dow user command
* */1 * * * user command
Les entrées dans cron.hourly
sont exécutées par le mécanisme de run-parts ( man run-parts
pour plus d'informations). Et run-parts
choisit les noms de fichiers qu’il considère comme valables.
Par exemple, attribuer une extension à votre script le rendra invalide et empêchera l'exécution du travail. [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 par la suite que run-parts
l'exécutera en émettant la commande suivante:
run-parts --test /etc/cron.hourly
Si en exécutant cette commande, votre fichier est affiché, cela signifie que cela a fonctionné. Sinon, si rien ne s'affiche, votre nom de fichier n'est pas valide.
Quel était le nom de votre script?
Votre problème est probablement dû aux autorisations trop ouvertes, qui permettent à quiconque de modifier votre fichier. Essayez 755
à la place.
Rechercher dans les entrées cron de votre sortie syslog devrait le confirmer.
La réponse de DaithiF devrait être la bonne réponse.
De plus, mon script n'avait pas #!/bin/bash
dans la première ligne. Même si le script pouvait être exécuté à l'aide de la ligne de commande, run-parts
l'a rejeté en indiquant "Erreur de format Exec".
Changer le nom du fichier de scriptname.sh
en scriptname
et ajouter le #!/bin/bash
en première ligne ont permis à mon script de s'exécuter toutes les heures.
Quand tu cours
crontab -l
cette tâche est-elle sur la liste?
sinon ajoutez-le
crontab -e
ajouter cette ligne
0 * * * * yourScript
s'il se trouve dans cette liste, essayez d'ajouter le chemin du langage de programmation en haut de votre script.
Exemple:
bash: #!/bin/bash
Ces 2 choses ont toujours résolu mes problèmes :)