Ok, donc j’ai fait mon script, je l’ai déposé /etc/cron.hourlypuis je chmod 777le 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.hourlypuis je chmod 777le 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.dailyand 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.weeklyet cron.monthly courir avec anacron (si disponible) , mais toutes les heures run-parts --report /etc/cron.hourly.
Les entrées cron.hourlysont exécutées par le mécanisme des pièces d’exécution ( man run-partspour plus d’informations). Et run-partsest 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, .weeklyetc.), testez toujours après pour run-partsl'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
--reportpour exécuter les scripts.
chmod +x /etc/cron.hourly/myscriptfait le tour et l'a run-partsrépertorié comme prévu.
La réponse de DaithiF devrait être la bonne réponse.
En outre, mon script n'avait pas #!/bin/bashdans la première ligne. Même si le script pouvait être exécuté avec la ligne de commande, run-partsil l'a rejeté en indiquant "Erreur de format Exec".
Changer le nom du fichier à partir scriptname.shde scriptnameet en ajoutant la #!/bin/bashen 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 :)