Проверьте, находится ли USB-устройство в режиме ожидания, LINUX
-
20-12-2019 - |
Вопрос
У меня есть быстрый вопрос, но я не могу найти ответ.Возможно ли в 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
и ждем, пока оно вернется.
Тем не менее, имейте в виду, что здесь возникает состояние гонки, если вы не контролируете запись - после того, как вы решили, что устройство простаивает, какой-то другой процесс может начать запись в него.