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?

Anonyme
la source
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.

joast
la source
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.

David Thornley
la source
5

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

Marek Skiba
la source
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

Jayan
la source
2

Si vous utilisez Ubuntu, vous pouvez mettre un script shell dans l' un de ces dossiers: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyou/etc/cron.weekly .

Pour plus de détails, consultez cet article: /ubuntu/2368/how-do-i-set-up-a-cron-job

James Gentes
la source
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.

Anonyme
la source
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.

jartieda
la source
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