J'ai un processus qui a été généré à partir d'un shell. Il s'exécute en tant que processus d'arrière-plan et exporte une base de données vers un fichier CSV dans /tmp
.
Comment savoir quand le processus d'arrière-plan est terminé (terminé / quitter) ou si le verrouillage du fichier CSV est fermé? J'ai l'intention de transférer le fichier par FTP vers un autre hôte une fois qu'il est écrit, mais j'ai besoin du fichier complet avant de commencer le transfert de fichier.
Réponses:
Sous Linux, le fichier n'est pas verrouillé même lorsqu'un programme y écrit (contrairement à Windows).
Pour vérifier si le processus est terminé, utilisez:
Pour vérifier si le processus a ouvert le fichier, vous pouvez utiliser
lsof <file>
il listera les processus qui ont ouvert<file>
ls -l /proc/$(pgrep db-process)/fd
répertorie les descripteurs de fichiers ouverts par le processusdb-process
la source
Vous pouvez utiliser le
wait
shell intégré pour accomplir cela.La fonction
wait
intégrée fait simplement interrompre le shell en attendant la fin des travaux en arrière-plan. Vous pouvez soit lui passer un travail spécifique à attendre, soit le faire attendre pour tous les travaux.Par exemple:
Ce qui se traduit par:
la source