У меня есть процесс, который был порожден из оболочки. Он работает как фоновый процесс и экспортирует БД в файл CSV в /tmp
.
Как узнать, когда фоновый процесс завершен (завершен / завершен) или закрыта ли блокировка файла CSV? Я планирую отправить файл по FTP на другой хост, как только он будет записан, но мне нужен полный файл, прежде чем я начну передачу файла.
Ответы:
В Linux файл не блокируется даже во время записи в него программы (в отличие от Windows).
Чтобы проверить, завершен ли процесс, используйте:
Чтобы проверить, открыт ли файл в процессе, вы можете использовать
lsof <file>
в нем будут перечислены процессы, которые открылись<file>
ls -l /proc/$(pgrep db-process)/fd
перечисляет файловые дескрипторы, открытые процессомdb-process
источник
Вы можете использовать
wait
встроенную оболочку для этого.wait
Встроенный просто заставляет оболочку , чтобы сделать паузу в ожидании фоновых заданий до завершения. Вы можете либо передать ему конкретное задание, либо дождаться его выполнения.Например:
Что приводит к:
источник