Mam proces, który został spawnowany z powłoki. Działa jako proces w tle i eksportuje DB do pliku CSV w /tmp
.
Jak mogę sprawdzić, kiedy proces w tle zakończył się (zakończył / zakończył) lub czy blokada pliku CSV została zamknięta? Planuję przesłać plik do innego hosta po zapisaniu, ale potrzebuję całego pliku, zanim zacznę przesyłanie pliku.
Odpowiedzi:
W systemie Linux plik nie jest zablokowany, nawet gdy program do niego pisze (w przeciwieństwie do systemu Windows).
Aby sprawdzić, czy proces został zakończony, użyj:
Aby sprawdzić, czy proces ma otwarty plik, możesz użyć
lsof <file>
wyświetli listę procesów, które zostały otwarte<file>
ls -l /proc/$(pgrep db-process)/fd
wyświetla deskryptory plików otwarte przez procesdb-process
źródło
Aby to zrobić, możesz użyć
wait
wbudowanej powłoki.wait
Wbudowane po prostu powoduje, że powłoka, aby wstrzymać czekając na tle zadań do wykonania. Możesz przekazać mu określone zadanie, na które trzeba czekać, lub pozwolić mu czekać na wszystkie zadania.Na przykład:
Co skutkuje w:
źródło