Mam jeden dysk, który nie chce przeprowadzać autotestu:
# smartctl -t long /dev/ada3
smartctl 6.2 2013-07-26 r3841 [FreeBSD 9.2-RELEASE-p3 amd64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 379 minutes for test to complete.
Test will complete after Thu Apr 2 07:25:59 2015
Use smartctl -X to abort test.
#
Teraz spodziewałbym się, że zobaczę komunikat „rutyna w toku” w statusie. Nie tylko bym się tego spodziewał, ale tak też działa w przypadku wszystkich innych urządzeń!
Jednak zamiast tego otrzymuję „Przerwany przez gospodarza”:
# smartctl -l selftest /dev/ada3
smartctl 6.2 2013-07-26 r3841 [FreeBSD 9.2-RELEASE-p3 amd64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Aborted by host 90% 1068 -
# 2 Extended offline Aborted by host 90% 761 -
Z drugiej strony, jeśli ponownie uruchomię smartctl -t long
Dostaję wiadomość, że jeden czek jest już w toku i powinienem poczekać. Mogę to skutecznie anulować -X
i uruchom go ponownie -t long
i otrzymuję kolejną linię na wyjściu z „Aborted by host”.
Co tu się dzieje?
Zauważ, że nawet jeśli test może być rzeczywiście wykonywany (chociaż „90% pozostałych” jest zawsze zablokowane!) Potrzebuję wyjścia komunikatu „w toku”, ponieważ uruchamiam smartctl ze skryptu i muszę poczekać na operację skończone...
Odpowiedzi:
Jeśli twój skrypt chce sprawdzić, czy test został ukończony, nie powinieneś patrzeć na dziennik, ale raczej na status wykonania autotestu (w wyniku
smartctl -a
).źródło