Проверьте, находится ли USB-устройство в режиме ожидания, LINUX

StackOverflow https://stackoverflow.com//questions/25003948

Вопрос

У меня есть быстрый вопрос, но я не могу найти ответ.Возможно ли в Linux (или в Python) увидеть, работает ли внешний USB-накопитель на холостом ходу?Мне нужно знать это для сценария Python, который я пишу.Мне нужно переименовать папку на внешнем USB-накопителе, как только в нее ничего не записывается.

редактировать:Я знаю, что есть команда lsof для вывода списка открытых файлов.«lsof /theDir» работает только наполовину.Все работает нормально, когда процесс копирования на USB все еще выполняется.Но когда процесс останавливается, lsof ничего не показывает.Но ОС по-прежнему пишет на USB из своего буфера.

Это было полезно?

Решение

Вы можете проверить, были ли обработаны все операции ввода-вывода, просмотрев /sys/block/<dev>/stat.В девятом столбце указаны количество операций ввода-вывода, находящихся в настоящее время в работе.Проверять https://www.kernel.org/doc/Documentation/block/stat.txt
Как только это число станет нулевым, устройство должно находиться в режиме ожидания.

Чтобы заставить все буферы быть записаны немедленно, вы можете выполнить sync и ждем, пока оно вернется.

Тем не менее, имейте в виду, что здесь возникает состояние гонки, если вы не контролируете запись - после того, как вы решили, что устройство простаивает, какой-то другой процесс может начать запись в него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top