Tengo un proceso que se ha generado a partir de un shell. Se ejecuta como un proceso en segundo plano y exporta una base de datos a un archivo CSV /tmp
.
¿Cómo puedo saber cuándo se completó el proceso en segundo plano (finalizó / salió) o si el bloqueo del archivo CSV se ha cerrado? Planeo enviar el archivo FTP a otro host una vez que está escrito, pero necesito el archivo completo antes de comenzar la transferencia del archivo.
Respuestas:
En Linux, el archivo no está bloqueado incluso cuando un programa le está escribiendo (a diferencia de Windows).
Para verificar si el proceso se ha completado, use:
Para verificar si el proceso tiene el archivo abierto, puede usar
lsof <file>
enumerará los procesos que se abrieron<file>
ls -l /proc/$(pgrep db-process)/fd
enumera los descriptores de archivo abiertos por el procesodb-process
fuente
Puede usar el
wait
shell incorporado para lograr esto.La
wait
construcción simplemente hace que el shell se detenga esperando que se completen los trabajos en segundo plano. Puede pasarle un trabajo específico para esperar o hacer que espere todos los trabajos.Por ejemplo:
Lo que resulta en:
fuente