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?

Anonym
quelle
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.

joast
quelle
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.

David Thornley
quelle
5

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

Marek Skiba
quelle
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

Jayan
quelle
2

Wenn Sie Ubuntu verwenden, können Sie ein Shell - Skript in einem dieser Ordner setzen: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyoder/etc/cron.weekly .

Weitere Informationen finden Sie in diesem Beitrag: /ubuntu/2368/how-do-i-set-up-a-cron-job

James Gentes
quelle
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.

Anonym
quelle
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.

jartieda
quelle
crontab -l zeigt den Cron-Job an, wenn ich mich als root anmelde. Ich habe die log_file ausprobiert, aber sie ist leer.
Anonym