Überprüfen Sie, ob in die Datei geschrieben wird, bevor Sie mit dem Shell-Skript fortfahren

2

Ich muss ein Unix-Shell-Skript tran.sh schreiben, das die CSV-Eingabedateien vom /exp/filesOrdner in das /exp/readyVerzeichnis verschiebt. Die CSV-Eingabedateien werden /exp/filesvon einem SFTP-Server in einen Ordner geschrieben, dessen Verhalten ich nicht trivial ändern kann.

Im Shell-Skript tran.sh muss ich sicherstellen, dass vor dem Verschieben der CSV-Eingabedatei aus dem Verzeichnis / exp / files kein anderer Prozess mehr in die Datei schreibt. Wie kann ich es bewegen?

Jia
quelle

Antworten:

3

lsofVielleicht ist es das, was Sie wollen (es ist schließlich der Befehl an list open files). Wenn für Ihre Dateien eine Namenskonvention bekannt ist, führen lsof <filename>Sie eine Überprüfung durch, um zu überprüfen, ob sie tatsächlich von einem Prozess verwendet werden. Ist dies nicht der lsofFall , wird ein Rückkehrcode ungleich Null zurückgegeben.

qweet
quelle
Bitte beachten Sie: Wenn Sie überprüfen möchten, ob die Datei von einem anderen Benutzer geschrieben wird, müssen Sie lsof(oder fuser) als ausführen root. Wenn Sie eine Datei unter NFS überprüfen lsofoder fusernur dann etwas mitteilen, wenn sie auf dem Computer ausgeführt wird, von dem aus die Datei geschrieben wird.
Emmanuel Joubaud