Ich habe einen Prozess, der aus einer Shell hervorgegangen ist. Es wird als Hintergrundprozess ausgeführt und exportiert eine Datenbank in eine CSV-Datei in /tmp
.
Wie kann ich feststellen, wann der Hintergrundprozess abgeschlossen ist (beendet / beendet) oder ob die CSV-Dateisperre geschlossen wurde? Ich habe vor, die Datei nach dem Schreiben per FTP auf einen anderen Host zu übertragen, benötige jedoch die vollständige Datei, bevor ich mit der Dateiübertragung beginne.
Antworten:
Unter Linux ist die Datei auch dann nicht gesperrt, wenn ein Programm darauf schreibt (im Gegensatz zu Windows).
Verwenden Sie Folgendes, um zu überprüfen, ob der Vorgang abgeschlossen ist:
Sie können verwenden, um zu überprüfen, ob der Prozess die Datei geöffnet hat
lsof <file>
Es werden die geöffneten Prozesse aufgelistet<file>
ls -l /proc/$(pgrep db-process)/fd
listet die vom Prozess geöffneten Dateideskriptoren aufdb-process
quelle
Sie können die integrierte
wait
Shell verwenden, um dies zu erreichen.Das
wait
eingebaute System bewirkt lediglich, dass die Shell pausiert und auf den Abschluss von Hintergrundjobs wartet. Sie können ihm entweder einen bestimmten Job zum Warten übergeben oder ihn auf alle Jobs warten lassen.Zum Beispiel:
Was dazu führt:
quelle