Frage

Ich habe eine kurze Frage, kann aber keine Antwort finden.Ist es unter Linux (oder in Python) möglich zu sehen, ob ein externer USB-Stick im Leerlauf ist?Ich muss das für ein Python-Skript wissen, das ich schreibe.Ich muss einen Ordner auf einem externen USB-Stick umbenennen, sobald nichts mehr darauf schreibt.

bearbeiten:Ich weiß, dass es den Befehl lsof gibt, um geöffnete Dateien aufzulisten.'lsof /theDir' funktioniert nur zur Hälfte.Es funktioniert einwandfrei, wenn der Kopiervorgang auf den USB-Stick noch läuft.Aber wenn der Prozess stoppt, zeigt lsof nichts an.Aber das Betriebssystem schreibt immer noch aus seinem Puffer auf den USB-Stick.

War es hilfreich?

Lösung

Sie können überprüfen, ob alle I/Os verarbeitet wurden, indem Sie einen Blick darauf werfen /sys/block/<dev>/stat.Die neunte Spalte enthält die Anzahl der derzeit ausgeführten I/Os.Überprüfen https://www.kernel.org/doc/Documentation/block/stat.txt
Sobald diese Zahl Null ist, sollte das Gerät im Leerlauf sein.

Um zu erzwingen, dass alle Puffer sofort geschrieben werden, können Sie Folgendes ausführen sync und warte, bis es zurückkommt.

Beachten Sie jedoch, dass hier eine Race-Bedingung vorliegt, wenn Sie den Schreibvorgang nicht steuern. Nachdem Sie entschieden haben, dass das Gerät im Leerlauf ist, könnte ein anderer Prozess damit beginnen, darauf zu schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top