Hallo Leute! Ich habe folgendes Problem: Das Skript /root/bin/localbackup führt - naja - ein Backup von lokalen Dateien aus. Ich möchte, daß es nur einmal am Tag ausgeführt wird, aber da mein Computer nicht ständig läuft, habe ich folgendes Skript (/root/bin/localbackup.sh) geschrieben: #!/bin/sh if !(test -f /var/log/localbackup/$(date +%Y%m%d).bz2) then /root/bin/localbackup > /var/log/localbackup/$(date +%Y%m%d); bzip2 /var/log/localbackup/$(date +%Y%m%d); fi Heute z.B. testet es, ob die Datei /var/log/localbackup/20031203.bz2 bereits existiert. Ist dies nicht der Fall, so wird /root/bin/localbackup ausgeführt und die oben genannte Datei erzeugt. So weit so gut. Ich kann als root /root/bin/localbackup ausführen; ich kann auch /root/bin/localbackup.sh ausführen, und es tut genau das Gewünschte. Nur mein cronjob, der das Skript jede Stunde ausführen soll: 7 * * * * /root/bin/localbackup.sh meldet mir (natürlich nur beim ersten Mal, weil danach ja die leere Logdatei existiert): /root/bin/localbackup.sh: line 4: /root/bin/localbackup: cannot execute binary file Es handelt sich um einen cronjob von root, und die Rechte auf /root/bin/localbackup und /root/bin/localbackup.sh sind jeweils 755. Hat jemand eine Idee, wo das Problem liegt? Vielen Dank und viele Grüße Lutz
On Wednesday 03 December 2003 11:00, Lutz Gehlen wrote:
Hallo Leute! Ich habe folgendes Problem:
Das Skript /root/bin/localbackup führt - naja - ein Backup von lokalen Dateien aus. Ich möchte, daß es nur einmal am Tag ausgeführt wird, aber da mein Computer nicht ständig läuft, habe ich folgendes Skript (/root/bin/localbackup.sh) geschrieben:
#!/bin/sh
if !(test -f /var/log/localbackup/$(date +%Y%m%d).bz2) then /root/bin/localbackup > /var/log/localbackup/$(date +%Y%m%d); bzip2 /var/log/localbackup/$(date +%Y%m%d); fi [...]
/root/bin/localbackup.sh: line 4: /root/bin/localbackup: cannot execute binary file
[...] gewöhn dir an, das ein cronjob nur ein sehr eingeschränktes Environment hat und Du daher sicherheitshalber davon ausgehen musst, das weder ein Pfad existiert noch eine Umgebungsvariable gesetzt ist. Ich denke, der job hat ein Kommando aus localbackup nicht gefunden. Andreas PS: auch das aufgerufene Skript localbackup erbt natürlich nur das MINI-Environment des cronjobs!
Hallo, Am Mittwoch, 3. Dezember 2003 11:00 schrieb Lutz Gehlen:
Hallo Leute! Ich habe folgendes Problem:
...schnipp...
#!/bin/sh
if !(test -f /var/log/localbackup/$(date +%Y%m%d).bz2) then /root/bin/localbackup > /var/log/localbackup/$(date +%Y%m%d); bzip2 /var/log/localbackup/$(date +%Y%m%d);
Gib mal den Pfad bei bzip2 an! Der wird bei Cronjobs nicht unbedingt verfügbar sein.
fi
..schnipp..
Vielen Dank und viele Grüße Lutz
-- MfG Rolf Masfelder EMail: rolf.masfelder@nector.de
On Wed, Dec 03, 2003 at 11:00:41AM +0100, Lutz Gehlen wrote:
/root/bin/localbackup.sh: line 4: /root/bin/localbackup: cannot execute binary file
Was behauptet denn "file /root/bin/localbackup"? Falls das ein Skript ist, sind da Unix oder DOS/Mac-Zeilenumbrueche drin? -> (info recode) -- Have fun, Peter
Hallo! Danke fuer die bisherigen Antworten. An der Umgebung hat es nicht gelegen, PATH ist richtig gesetzt. Ich habe inzwischen herausgefunden, dass das Problem darin bestand, dass die Datei /root/bin/localbackup mit einem Kommentar (eingeleitet durch #) begann. Wenn ich davor noch eine Leerzeile einfuege, klappt es. Kann mir jemand erklaeren, warum es mit dem Kommentar bei einem direkten Aufruf funktioniert, aus dem cronjob heraus aber nicht? Bei der Datei handelt es sich um eine Textdatei (file liefert ISO-8859 text), die nur ein paar echos und rsync-Aufrufe enthaelt. Vielen Dank Lutz
Hallo Lutz, hallo Leute, Am Mittwoch, 03. Dezember 2003 15:42 schrieb Lutz Gehlen:
Ich habe inzwischen herausgefunden, dass das Problem darin bestand, dass die Datei /root/bin/localbackup mit einem Kommentar (eingeleitet durch #) begann. Wenn ich davor noch eine Leerzeile einfuege, klappt es.
Der Kommentar begann nicht zufällig mit #! ? Dann würde er nämlich als Interpreter verstanden und es wäre großer Zufall, wenn es ein entsprechendes Programm gibt. In der ersten Zeile eines Sripts sollte immer der Pfad zum Interpreter stehen, z. B. #!/bin/bash
Kann mir jemand erklaeren, warum es mit dem Kommentar bei einem direkten Aufruf funktioniert, aus dem cronjob heraus aber nicht?
Das wundert mich auch ;-) Gruß Christian Boltz -- Ich sehe schon, die meiste manpower des Projektes fließt derzeit in die Gestaltung der "--help"-Option. Ich glaube, wir greifen den Vorschlag von Christian auf und richten mehrere Hilfsseiten ein. Gleicher Inhalt, andere Formatierung. :-))) [Ratti in fontlinge-devel]
participants (5)
-
Andreas Kyek
-
Christian Boltz
-
Lutz Gehlen
-
Peter Wiersig
-
Rolf Masfelder