PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ar legt sich schlafen, und wacht nie mehr auf



dj_mueller
26-08-2008, 12:48
Hallo Leute,

ich bin jetzt wirklich am verzweifeln. Folgendes mir völlig schleierhaftes Verhalten:

Ich rufe in einem Bash-Skript einen tar auf. Das hat bisher immer funktioniert. An dem Skript wurde nichts geändert. Auf einmal konnte ich reproduzierbar folgendes Verhalten sehen:

- tar läuft an
- tar legt sich schlafen (also der Prozess hat ein S)
- auch nach stunden rührt sich nichts

Wenn ich den gleichen Befehl direkt auf der Konsole ausführe funktioniert alles wunderbar.

Hier der Befehl im Skript:

if { tar -cvf ${BACKUP_DIR}/vollbackup_${w_tag}.tar --exclude=temp * ; }

Also überhaupt nichts aufregendes.

Wenn der Prozess sich schlafen legt, sehe ich unter /proc/PID/fd das der Prozess noch einen File Descriptor auf eine Datei offen hatte.

Habe dann einmal diese Datei rausgenommen (mit --exclude) und wieder gestartet. Hat nichts geholfen. Prozess legte sich wieder schlafen. Diesmal war ein anderer File Descriptor offen.

Bin für jeden Hinsweis dankbar.

Folgender Workaround (Fix???) funktioniert:

Wenn ich die Zeile ändere:

if { tar -cvf ${BACKUP_DIR}/vollbackup_${w_tag}.tar --exclude=temp * > /dev/null ; }

Also Eingabestrom auf /dev/null/ umleite dann funktioniert es auch wieder.

Verstehen tue ich das aber nicht.

Gruss
Daniel

jan61
26-08-2008, 23:00
Moin,

hört sich komisch an, ich habe so ein Verhalten bisher noch nicht erlebt. Ein paar Richtungen zum Probieren:

- Versuche mit lsof -p [tar-PID] herauszukriegen, welche Dateien tar gerade offen hat.
- Versuche mit lsof [offeneDatei] herauszukriegen, ob andere Prozesse diese Datei auch offen halten und evtl. sperren
- was passiert ohne die v-Option des tar?
- Versuche mit strace -p[tar-PID] herauszufinden, ob tar bei einem bestimmten System-Call hängt.
- haben die Dateien evtl. komische Namen, die die Ausgabe durcheinanderbringen?
- läuft das Script im Hintergrund mit nohup (also evtl. ohne Terminal)?
- liegt Dein Backup-File im zu sichernden Verzeichnisbaum?
- wenn Du die Ausgabe statt nach /dev/null in eine Datei umleitest und Dir diese parallel auf einem anderen Terminal (z. B. mit tail -f) anschaust - was passiert dann?

Mehr fällt mir im Moment auch nicht ein.

Jan

dj_mueller
27-08-2008, 07:31
OK, hört sich gut an werde ich ausprobieren...

undefined
27-08-2008, 15:36
Das hört sich danach an also ob du Zeichen orientierte Geräte komprimieren willst. Setze /dev,/sys,/proc und /lib/udev/devices mit auf die Ausschließen liste.