web-dev-qa-db-fra.com

Comment configurer un travail cron pour exécuter un exécutable toutes les heures?

Je dois configurer un travail cron qui exécute un exécutable compilé avec gcc toutes les heures.

Je me suis connecté en tant que root et j'ai tapé crontab -e

Ensuite, j'ai entré ce qui suit et enregistré le fichier.

0 * * * *  /path_to_executable

Cependant, le travail cron ne fonctionne pas.

Je vois ça quand je tape /...path_to_executable Je reçois une erreur de segmentation. Je ne peux exécuter que l'exécutable à partir du dossier dans lequel il se trouve. Y a-t-il un moyen de résoudre ce problème?

83
Anonymous
0 * * * * cd folder_containing_exe && ./exe_name

devrait fonctionner sauf si quelque chose d'autre doit être configuré pour que le programme s'exécute.

142
joast

La solution à ce problème consiste à déterminer pourquoi vous obtenez le problème de segmentation et à remédier à la situation.

8
David Thornley

Vous pouvez aussi utiliser @hourly moment de 0 * * * *

4
Marek Skiba

Si vous utilisez Ubuntu, vous pouvez placer un script Shell dans l’un de ces dossiers: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly ou /etc/cron.weekly.

Pour plus de détails, consultez ce message: https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job

3
James Gentes

Voulez-vous dire que l'exécutable ne s'exécute pas s'il est appelé depuis un autre répertoire? C'est plutôt un bug sur l'exécutable. Une des raisons possibles pourrait être que l'exécutable nécessite des libraires partagées à partir du dossier installé. Vous pouvez vérifier la variable d'environnement LD_LIBRARY_PATH

2
Jayan

Comme je ne pouvais pas exécuter le C exécutable de cette façon, j’écris un simple Shell script qui fait ce qui suit

cd /..path_to_Shell_script
./c_executable_name

Dans la liste des tâches cron, j'appelle le script shell.

0
Anonymous

utilisation

path_to_exe >> log_file

pour voir le résultat de votre commande, les erreurs peuvent être redirigées avec

path_to_exe &> log_file

aussi vous pouvez utiliser

crontab -l

pour vérifier si vos modifications ont été enregistrées.

0
jartieda