Comment configurer une tâche cron pour exécuter un exécutable toutes les heures?


94

J'ai besoin de configurer un travail cron qui exécute un exécutable compilé à l'aide de gcc une fois par heure.

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

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

0 * * * *  /path_to_executable

Cependant, le travail cron ne fonctionne pas.

Je vois que lorsque je tape, /...path_to_executablej'obtiens une erreur de segmentation. Je ne peux exécuter l'exécutable qu'à partir du dossier dans lequel il se trouve. Existe-t-il un moyen de résoudre ce problème?


8
C'est un mauvais titre. Vous savez comment configurer le travail cron; ce que vous voulez savoir, c'est comment faire fonctionner la commande.
David Thornley

5
appartient à superuser.com (pas directement lié à la programmation)
Philipp

3
Mauvais titre, mais c'est ainsi que j'ai trouvé la solution.
Roman Holzner

Votre exécutable est probablement démarré. Je recommande d'utiliser syslog (3) à l' intérieur (et au moins créer un message de journal au début, pour être sûr qu'il est démarré).
Basile Starynkevitch

Réponses:


159
0 * * * * cd folder_containing_exe && ./exe_name

devrait fonctionner sauf s'il y a autre chose qui doit être configuré pour que le programme s'exécute.


11
utilisez && au lieu de;, sinon des choses intéressantes peuvent se produire (surtout lorsqu'il est utilisé avec rm)
Reactormonk

4
Vous avez raison. && est beaucoup mieux s'il y a une chance que la cible cd n'existe pas (par exemple si le répertoire est sur un serveur NFS qui est en panne).
jeudi

Sauve ma journée! Merci!
Chiakie

Notez que vous avez également besoin d'un chemin absolu (c'est-à-dire à partir du répertoire racine) afaik
drevicko

8

La solution pour résoudre ce problème est de savoir pourquoi vous obtenez l'erreur de segmentation et de résoudre ce problème.


5

Vous pouvez également utiliser @hourlyinstant de0 * * * *


curieux avec cette solution à quelle minute tourne-t-il @hourly implique-t-il à 0?
ojblass

1
@ojblass @hourlyest un synonyme exact de 0 * * * *, il n'y a pas de différence.
Marek Skiba

2

Vouliez-vous dire que l'exécutable ne s'exécute pas s'il est appelé à partir d'un autre répertoire? Il s'agit plutôt d'un bug sur l'exécutable. Une raison potentielle pourrait être que l'exécutable nécessite des libraires partagées du dossier installé. Vous pouvez vérifier la variable d'environnementLD_LIBRARY_PATH



0

Comme je ne pouvais pas exécuter l' Cexécutable de cette façon, j'ai écrit un simple shell scriptqui 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

utilisation

path_to_exe >> log_file

pour voir la sortie de votre commande, les erreurs peuvent également ê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.


crontab -l montre le travail cron lorsque je me connecte en tant que root. J'ai essayé le log_file mais il est vide.
Anonyme
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.