Se o seu script quiser ver se o teste está concluído, você não deve estar olhando para o log, mas sim para o status de execução do autoteste (na saída de smartctl -a
).
Eu tenho uma unidade que não quer fazer o autoteste:
# 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.
#
Agora, esperaria ver uma mensagem "rotina em andamento" no status. Não apenas eu esperaria isso, mas também é assim que funciona para todos os outros dispositivos!
No entanto, em vez disso, recebo "Aborted by host":
# 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 -
Por outro lado, se eu executar novamente smartctl -t long
, recebo a mensagem de que uma verificação já está em andamento e devo aguardar. Posso cancelá-lo com êxito com -X
e reiniciá-lo com -t long
e obtenho outra linha na saída com "Aborted by host".
O que está acontecendo aqui?
Note que mesmo que o teste seja realmente executado (embora o "90% restante" esteja sempre travado!) Eu preciso da saída da mensagem "rotina em progresso" porque inicio o smartctl a partir de um script e preciso aguardar operação a ser concluída ...