J'ai jeté un tas de fléchettes en essayant de faire exécuter chaque minute un script en python. J'ai donc pensé simplifier le processus pour qu'il ne fasse que "la chose la plus simple qui puisse fonctionner" une fois par minute (je suis sous debian / testing).
J'ai créé un fichier d'une seule ligne dans /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Il est la propriété de root et de l'exécutable (je ne sais pas si cela importe). Et puis j'ai fait:
sudo service cron reload
Et puis asseyez-vous et commencez à courir ls -ltr
encore et encore dans mon répertoire personnel ( /home/me
). Mais mon fichier ding_dong ne se présente jamais. Je sais que si je fais sudo /bin/touch /home/me/ding_dong
ça, ça se voit tout de suite.
Manque évidemment quelque chose de stupide ici.
Réponses:
Lors de l'ajout d'une configuration cron dans
/etc/cron.d/
ou dans,/etc/crontab
vous devez ajouter le nom d'utilisateur dans quel contexte la commande doit être exécutée, dans votre exemple.* * * * * root /bin/touch /home/me/ding_dong
Et juste un conseil de ma part: vous n'avez pas à recommencer à courir
ls -ltr
, utilisez-lewatch -n 5 "ls -ltr"
et la commande sera exécutée toutes les 5 secondes (ou toute autre valeur en remplaçant 5 par ce que vous voulez).la source
man cron
un peu plus lentement et porté une attention particulière auxDEBIAN specific
sections, j'ai remarqué que les fichiers ne doivent PAS être en groupe ou inscriptibles. Ce que j'avais activé dans ma frustration à un moment donné.man cron
: De plus, dans Debian, cron lit les fichiers du répertoire /etc/cron.d. cron traite les fichiers dans /etc/cron.d de la même manière que le fichier / etc / crontab (ils suivent le format spécial de ce fichier, c’est-à-dire qu’ils incluent le champ utilisateur ). Cependant, ils sont indépendants de / etc / crontab: ils n'en héritent pas, par exemple, des paramètres de variable d'environnement. Cette modification est spécifique à Debian (voir la note sous Spécifique à Debian ci-dessous).Pour créer un nouveau
cron
travail, vous devez l'exécuter encrontab -e
tant qu'utilisateur de votre choix. Ajoutez ensuite la ligne appropriée dans la fenêtre de l'éditeur qui apparaît:La façon dont vous le faites nécessite un format différent et n’est vraiment pas une bonne idée de toute façon. Les crontabs
/etc/cron.d
ont un format légèrement différent, ils nécessitent un nom d’utilisateur pour être exécutés. Par exemple:Une bonne astuce (suggérée par @VogonPoetLaureate) consiste à capturer l'erreur standard de vos tâches cron, ce qui peut aider à les déboguer. Par exemple:
la source
crontab -l
répertorier tous vos travaux cron.Une erreur possible ici est la création d’ un fichier simple ligne . De la documentation Ubuntu :
Par exemple, cette façon de créer ne fonctionne pas:
la source