Wie richte ich einen Cron-Job ein, um jede Stunde eine ausführbare Datei auszuführen?


92

Ich muss einen Cron-Job einrichten, der eine mit gcc kompilierte ausführbare Datei einmal pro Stunde ausführt.

Ich habe mich als root angemeldet und getippt crontab -e

Dann habe ich Folgendes eingegeben und die Datei gespeichert.

0 * * * *  /path_to_executable

Der Cron-Job funktioniert jedoch nicht.

Ich sehe, dass /...path_to_executableich beim Tippen einen Segmentierungsfehler bekomme. Ich kann die ausführbare Datei nur in dem Ordner ausführen, in dem sie sich befindet. Gibt es eine Möglichkeit, dieses Problem zu lösen?


8
Das ist ein schlechter Titel. Sie wissen, wie Sie den Cron-Job einrichten. Sie möchten wissen, wie der Befehl funktioniert.
David Thornley

5
gehört auf superuser.com (nicht direkt mit der Programmierung verbunden)
Philipp

3
Falscher Titel, aber so habe ich die Lösung gefunden.
Roman Holzner

Ihre ausführbare Datei wird wahrscheinlich gestartet. Ich empfehle, syslog (3) darin zu verwenden (und zumindest beim Start eine Protokollmeldung zu erstellen, um sicherzugehen, dass es gestartet wird).
Basile Starynkevitch

Antworten:


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

sollte funktionieren, es sei denn, es muss noch etwas eingerichtet werden, damit das Programm ausgeführt werden kann.


11
Verwenden Sie && anstelle von
;, da

4
Du hast recht. && ist viel besser, wenn die Möglichkeit besteht, dass das CD-Ziel nicht vorhanden ist (z. B. wenn sich das Verzeichnis auf einem NFS-Server befindet, der gerade nicht verfügbar ist).
Joast

Rette meinen Tag! Vielen Dank!
Chiakie

Beachten Sie, dass Sie auch einen absoluten Pfad benötigen (dh aus dem Stammverzeichnis) afaik
drevicko

8

Die Lösung, um dies zu lösen, besteht darin, herauszufinden, warum Sie den Segmentierungsfehler erhalten, und diesen zu beheben.


5

Sie können auch @hourlysofort von verwenden0 * * * *


neugierig auf diese Lösung, in welcher Minute läuft sie? Bedeutet @hourly bei 0?
Ojblass

1
@ojblass @hourlyist ein genaues Synonym für 0 * * * *, es gibt keinen Unterschied.
Marek Skiba

2

Meinten Sie, dass die ausführbare Datei nicht ausgeführt werden kann, wenn sie aus einem anderen Verzeichnis aufgerufen wird? Dies ist eher ein Fehler in der ausführbaren Datei. Ein möglicher Grund könnte sein, dass für die ausführbare Datei einige freigegebene Bibliotheken aus dem installierten Ordner erforderlich sind. Sie können die Umgebungsvariable überprüfenLD_LIBRARY_PATH



0

Da ich die Causführbare Datei nicht auf diese Weise ausführen konnte, habe ich eine einfache Datei geschrieben , shell scriptdie Folgendes bewirkt

cd /..path_to_shell_script
./c_executable_name

In der Liste der Cron-Jobs rufe ich das Shell-Skript auf.


0

verwenden

path_to_exe >> log_file

Um die Ausgabe Ihres Befehls zu sehen, können auch Fehler mit umgeleitet werden

path_to_exe &> log_file

auch du kannst verwenden

crontab -l

um zu überprüfen, ob Ihre Änderungen gespeichert wurden.


crontab -l zeigt den Cron-Job an, wenn ich mich als root anmelde. Ich habe die log_file ausprobiert, aber sie ist leer.
Anonym
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.