Как с помощью командной строки определить, находится ли внешний диск, подключенный к системе, в бодрствующем (вращающемся) или спящем режиме?
из ответов здесь помогли. Метод Powershell не работает вообще, а метод smartctl
описан ниже. Я также не пробовал метод hdparm
, потому что я пробую это на Windows и, согласно многочисленным сообщениям в Интернете, команда hdparm -C
в любом случае пробудит диск.
Используемые команды:
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
можно сказать, что другое сообщение об ошибке решает этот вопрос, но я надеюсь найти чистое решение, где мне не придется ждать пару минут, чтобы получить неполный ответ. Это будет использоваться в сценарии, который проверяет все подключенные диски. Также это не всегда работает так, см. ниже.
Приведенная выше команда выдает одно и то же сообщение, независимо от того, вращается диск или нет:
CHECK POWER MODE: incomplete response, ATA output registers missing
CHECK POWER MODE not implemented, ignoring -n option
ATA device successfully opened
Однако он не зависает, как раньше, и реакция мгновенная.
Когда диск вращается:
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 всегда сообщается как АКТИВНЫЙ, если команда выполняется с не повышенной строкой.