Проверить, вращается ли внешний жесткий диск или находится в спящем режиме через командную строку?

Проверить, вращается ли внешний жесткий диск или находится в спящем режиме через командную строку?
Проверить, вращается ли внешний жесткий диск или находится в спящем режиме через командную строку? - theregisti @ Unsplash

Как с помощью командной строки определить, находится ли внешний диск, подключенный к системе, в бодрствующем (вращающемся) или спящем режиме?

из ответов здесь помогли. Метод Powershell не работает вообще, а метод smartctl описан ниже. Я также не пробовал метод hdparm, потому что я пробую это на Windows и, согласно многочисленным сообщениям в Интернете, команда hdparm -C в любом случае пробудит диск.

Тестирование внешнего диска Seagate.

Используемые команды:

smartctl -n standby G:

выше работает только в том случае, если диск не спит, и он мгновенно сообщает об этом:

Device is in ACTIVE or IDLE mode

Однако если диск находится в спящем режиме, команда зависает на 1-2 минуты, а затем сообщает:

CHECK POWER MODE: incomplete response, ATA output registers missing
CHECK POWER MODE not implemented, ignoring -n option
ATA device successfully opened

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

Тестирование внешнего диска WD.

Приведенная выше команда выдает одно и то же сообщение, независимо от того, вращается диск или нет:

CHECK POWER MODE: incomplete response, ATA output registers missing
CHECK POWER MODE not implemented, ignoring -n option
ATA device successfully opened

Однако он не зависает, как раньше, и реакция мгновенная.

Тестирование внутреннего диска WD.

Когда диск вращается:

Device is in ACTIVE or IDLE mode

Когда диск находится в спящем режиме:

Device is in STANDBY (OS) mode, exit(2)

Это единственный случай, когда все работает так, как ожидалось.

Читая manpage, я случайно нашел опцию -d, которая позволяет указать "тип устройства". Таким образом, следующая команда работает, как и ожидалось:

smartctl -d ata -n standby G:

Когда диск находится в спящем режиме, я получаю мгновенный ответ:

Device is in STANDBY (OS) mode, exit(2).

Когда диск вращается, я также получаю мгновенный ответ:

Device is in ACTIVE or IDLE mode.

Я не уверен, почему -d ata работает, а -d sat нет.

Эту команду необходимо запускать с повышенной строкой в Windows, иначе она будет давать ложные результаты для некоторых дисков: например, мой внутренний диск WD всегда сообщается как АКТИВНЫЙ, если команда выполняется с не повышенной строкой.


NevaDev, 31 января 2023 г., 00:40