Verificare che il file non venga scritto prima di passare allo script di shell


2

Ho bisogno di scrivere uno script Unix Shell tran.sh che sposta i file di input CSV dalla /exp/filescartella alla /exp/readydirectory. I file di input CSV sono scritti nella /exp/filescartella da un server SFTP il cui comportamento non posso cambiare banalmente.

Nello script di shell tran.sh devo assicurarmi prima di fare uno spostamento di quel file di input csv dalla directory / exp / files non più qualsiasi altro processo sta scrivendo sul file. Come posso spostarlo?

Risposte:


3

lsofpotrebbe essere quello che vuoi (dopo tutto, è il comando a list open files). Se i tuoi file hanno una convenzione di denominazione nota, esegui un lsof <filename>contro per verificare se viene effettivamente utilizzato da un processo. In caso contrario, lsofrestituirà un codice di ritorno diverso da zero.


Nota: se si desidera verificare se il file è stato scritto da un altro utente, è necessario eseguire lsof(o fuser) come root. Se stai controllando un file su NFS, lsofo fuserti dirà qualcosa solo quando eseguito sul computer da cui viene scritto il file.
Emmanuel Joubaud,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.