Verständnisproblem Bash-Scripting
Moin, ich habe da ein Verständnisproblem. in meinem Backupscript für die bash sieht es in etwa so aus --snipp-- ( mount /mnt/log echo "log mounted" backup.core.sh echo "fertig" ) >>/mnt/log/log.out 2>>/mnt/log/log.err umount /mnt/log echo "ganz durch" --snapp-- Hier ist komisch, dass die gesamte Ausgabe nicht ins gemounte log ging sondern ins ungemounte (oder heißt es ungemountete?). Was geht hier vor? Das Verzeichnis /mnt/log wird gemountet. Die Ausgaben werden in die Files in /mnt/log umgeleitet. Das Backup wird gefahren, auch dessen Meldungen werden von der Konsole in die Files umgeleitet. Wenn stdout und stderr geschrieben werden sollen, sollte log noch gemountet sein. log wird umounted. die letzte Ausgabe geht auf die Konsole, stdout. So ist's beabsichtigt, so passiert das aber nicht. Obwohl die Anweisung mount ausgeführt wird (lasse ich das umount am Ende weg, ist log gemountet) werden die Ausgabefiles ins umgemountete Verzeichnis geschrieben. Ich hätte ja verstanden, dass das Leeren der Buffers und damit das Anlegen der und das Schreiben in die Files erst passiert, wenn das bash-Script beendet wird. Aber so ist es nicht. Auch wenn ich die letzte Anweisung im Script weglasse, geht die Ausgabe nicht ins gemountete Verzeichnis. ?? Gruß Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Moin ganz einfach ;-) - die Klammern ( ) starten eine Subshell, - die gesamte Ausgabe der Subshell wird in die Datei umgeleitet - diese Umleitung wird für den Subshell-Prozess eingerichtet, d.h. *bevor* die Befehle in der Subshell ausgeführt werden Evtl. kannst du das Log erst mal auf einem anderen Device speichern und später auf das neu gemountete Device verschieben. Gruß Marcus Am 02.10.20 um 12:49 schrieb Joachim H.:
Moin,
ich habe da ein Verständnisproblem.
in meinem Backupscript für die bash sieht es in etwa so aus
--snipp--
( mount /mnt/log echo "log mounted" backup.core.sh echo "fertig" ) >>/mnt/log/log.out 2>>/mnt/log/log.err umount /mnt/log echo "ganz durch"
--snapp--
Hier ist komisch, dass die gesamte Ausgabe nicht ins gemounte log ging sondern ins ungemounte (oder heißt es ungemountete?).
Was geht hier vor?
Das Verzeichnis /mnt/log wird gemountet. Die Ausgaben werden in die Files in /mnt/log umgeleitet. Das Backup wird gefahren, auch dessen Meldungen werden von der Konsole in die Files umgeleitet. Wenn stdout und stderr geschrieben werden sollen, sollte log noch gemountet sein. log wird umounted. die letzte Ausgabe geht auf die Konsole, stdout.
So ist's beabsichtigt, so passiert das aber nicht.
Obwohl die Anweisung mount ausgeführt wird (lasse ich das umount am Ende weg, ist log gemountet) werden die Ausgabefiles ins umgemountete Verzeichnis geschrieben.
Ich hätte ja verstanden, dass das Leeren der Buffers und damit das Anlegen der und das Schreiben in die Files erst passiert, wenn das bash-Script beendet wird. Aber so ist es nicht. Auch wenn ich die letzte Anweisung im Script weglasse, geht die Ausgabe nicht ins gemountete Verzeichnis.
??
Gruß
Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
kaum macht man's richtig, schon funktionierts!! Ich schreibe zunächst in eine temporäre Datei und schaufle ganz am Ende um. Das klappt Danke Joachim Am 02.10.2020 um 13:34 schrieb Marcus Graf:
Moin
ganz einfach ;-)
- die Klammern ( ) starten eine Subshell, - die gesamte Ausgabe der Subshell wird in die Datei umgeleitet - diese Umleitung wird für den Subshell-Prozess eingerichtet, d.h. *bevor* die Befehle in der Subshell ausgeführt werden
Evtl. kannst du das Log erst mal auf einem anderen Device speichern und später auf das neu gemountete Device verschieben.
Gruß Marcus
Am 02.10.20 um 12:49 schrieb Joachim H.:
Moin,
ich habe da ein Verständnisproblem.
in meinem Backupscript für die bash sieht es in etwa so aus
--snipp--
( mount /mnt/log echo "log mounted" backup.core.sh echo "fertig" ) >>/mnt/log/log.out 2>>/mnt/log/log.err umount /mnt/log echo "ganz durch"
--snapp--
Hier ist komisch, dass die gesamte Ausgabe nicht ins gemounte log ging sondern ins ungemounte (oder heißt es ungemountete?).
Was geht hier vor?
Das Verzeichnis /mnt/log wird gemountet. Die Ausgaben werden in die Files in /mnt/log umgeleitet. Das Backup wird gefahren, auch dessen Meldungen werden von der Konsole in die Files umgeleitet. Wenn stdout und stderr geschrieben werden sollen, sollte log noch gemountet sein. log wird umounted. die letzte Ausgabe geht auf die Konsole, stdout.
So ist's beabsichtigt, so passiert das aber nicht.
Obwohl die Anweisung mount ausgeführt wird (lasse ich das umount am Ende weg, ist log gemountet) werden die Ausgabefiles ins umgemountete Verzeichnis geschrieben.
Ich hätte ja verstanden, dass das Leeren der Buffers und damit das Anlegen der und das Schreiben in die Files erst passiert, wenn das bash-Script beendet wird. Aber so ist es nicht. Auch wenn ich die letzte Anweisung im Script weglasse, geht die Ausgabe nicht ins gemountete Verzeichnis.
??
Gruß
Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (2)
-
Joachim H.
-
Marcus Graf