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?
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.
La solution à ce problème consiste à déterminer pourquoi vous obtenez le problème de segmentation et à remédier à la situation.
Vous pouvez aussi utiliser @hourly
moment de 0 * * * *
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
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
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.
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.