Ok, donc j’ai fait mon script, je l’ai déposé /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?
Ok, donc j’ai fait mon script, je l’ai déposé /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?
Réponses:
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
cron.daily
and friends fonctionne un peu mieux si la machine ne fonctionne pas tout le temps, car anacron essaie de se rapprocher du bon programme alors que Plain Cron ne les exécutera tout simplement pas si la machine n’est pas allumée toute la nuit. Pour les emplois horaires, cela n'a probablement pas beaucoup d'importance.
/etc/crontab
: cron.daily
, cron.weekly
et cron.monthly
courir avec anacron (si disponible) , mais toutes les heures run-parts --report /etc/cron.hourly
.
Les entrées cron.hourly
sont exécutées par le mécanisme des pièces d’exécution ( man run-parts
pour plus d’informations). Et run-parts
est difficile quant aux noms de fichiers considérés comme valides.
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.
Lors de l'ajout d'un travail à /etc/cron.hourly
(ou .daily
, .weekly
etc.), testez toujours après pour run-parts
l'exécuter en exécutant 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?
giving your script an extension will make it invalid and result in the job not being run
--report
pour exécuter les scripts.
chmod +x /etc/cron.hourly/myscript
fait le tour et l'a run-parts
répertorié comme prévu.
La réponse de DaithiF devrait être la bonne réponse.
En outre, mon script n'avait pas #!/bin/bash
dans la première ligne. Même si le script pouvait être exécuté avec la ligne de commande, run-parts
il l'a rejeté en indiquant "Erreur de format Exec".
Changer le nom du fichier à partir scriptname.sh
de scriptname
et en ajoutant la #!/bin/bash
en première ligne permet d'exécuter toutes les heures mon script.
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 :)