Systemaufrufe über Perl
Mischa
- perl
Hi,
ich möchte ein Script ausführen, dass ein Verzeichnis als tar.bz2 bastelt und danach das Verzeichnis löscht. Währenddessen soll das Script aber weiterlaufen.
Es lief soweit, dass er mir das tar gemacht hat und weiterlief. Allerdings funktionierte das Löschen nicht, weil er es während des anderen Prozesses gleichzeitig machte und das tar packen schief ging.
Bisher:
system "tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null;rm -rf dirb/to/backup &> /dev/null";
Ich habe leider keine Idee mehr.
Moin!
system "tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null;rm -rf dirb/to/backup &>
Ich habe leider keine Idee mehr.
Aber ich.
[1] Baue ein Shell-Skript: (theshellskript.sh)
!# /bin/sh
tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null;rm -rf dirb/to/backup &> /dev/null
rm -r dirb/to/backup
exit
[2] vergesse nicht, es ausführbar zu machen
chmod 755 theshellskript.sh
und rufe es im Perl- Skript auf:
system "theshellskript.sh";
geht auch ohne chmod (und ohne shebang):
system "sh < theshellskript.sh";
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Moin!
Ich mal wieder...
Eine Shebang beginnt natürlich mit einem Kommentarzeichen, gefolgt von einem Ausrufezeichen, einem Leerzeichen und dann dem Pfad zum Interpreter:
#! /bin/sh
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Ich hab noch was entdeckt: zu ersten hattest Du das Löschen schon in der Zeile drin. Offensichtlich wirkt:
system (kommando_1; kommando_2);
wie:
system (kommando_1);
system (kommando_2);
#! /bin/sh
tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null
rm -r dirb/to/backup &> /dev/null
exit
Zum zweiten solltest Du wohl auch Fehlermeldungen irgendwo loggen und sicherstellen, dass es das Verzeichniss überhaupt gibt.
#! /bin/sh
if test -d dirb/to/backup
then
tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null 2> /dir/my_error_log
rm -r dirb/to/backup &> /dev/null 2>/dir/my_error_log
else
echo "dirb/to/backup ist nicht existent oder kein Verzeichnis" > /dir/my_error_log
fi
exit
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
system "tar cjvfP /dir/file.tar.bz2 dirb/to/backup &> /dev/null
Bliebe noch eine Frage.
Warum weisst Du tar an geschwätzig zu sein (-v = "verbosely list files processed" ) um dann die Ausgaben nach /dev/null zu senden?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
ööhhm gute Frage :)
War eigentlich nur zum debuggen...
Moin!
War eigentlich nur zum debuggen...
Ich vermute, der Tip mit de, Shell- Skript hat geholfen?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Jau, bestens. Läuft jetzt wie geschmiert.
Danke