SmartMonTools: Como posso saber se existe algum teste do smartctl em execução no meu disco rígido?

40

Estou testando um disco rígido com o SmartMonTools .

Status do disco rígido antes dos testes (apenas um pequeno teste realizado dias atrás):

$ sudo smartctl -l selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (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  Short offline       Completed without error       00%      5167         -

Então eu começo o teste longo :

$ sudo smartctl -t long /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (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 130 minutes for test to complete.
Test will complete after Sat May  9 16:05:27 2015

Use smartctl -X to abort test.

O teste deve estar em execução , então, mas se eu tentar ver seu progresso:

$ sudo smartctl -l selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (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  Short offline       Completed without error       00%      5167         -

... tudo o que recebo são os mesmos resultados, como se não houvesse testes de execução / execução no momento.
O parâmetro '-H' não fornece mais informações:

$ sudo smartctl -H /dev/sda
smartctl 6.2 2013-07-26 r3841 [i686-linux-3.16.0-30-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

E, desde que não haja nenhum processo em execução (esse teste é realizado apenas pelo controlador do disco rígido), algumas ps -epesquisas de estilo não devem ajudar.

Como posso saber se existe algum autoteste SMART em execução no momento?

Sopalajo de Arrierez
fonte

Respostas:

43

Em smartctl -a <device>procurar Self-test execution status.

Exemplo quando nenhum teste está sendo executado:

Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.

Exemplo enquanto um teste está sendo executado:

Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.

Ao executar o autoteste seletivo ( -t select), também haverá um progresso mostrado aqui:

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA    MAX_LBA  CURRENT_TEST_STATUS
    1        0  125045423  Self_test_in_progress [90% left] (2881512-2947047)
frostschutz
fonte
2
Uma boa ideia. Sugiro que você adicione esta linha direta (grepping) como uma possibilidade:, smartctl -a /dev/sda | grep "progress" -i -A 1para cortar informações de impressão excessivas.
Sopalajo de Arrierez
1
Você precisa da impressão excessiva para obter a imagem completa. Em um script o grep pode ser bom, mas as pessoas que estão acostumados a greptudo na linha de comando ( dmesg | grep something, smartctl -a | grep ..., etc.), eles vão perder as coisas. Com smartctlem particular, não existe um comando simples que diga que está tudo bem ... smartctl -Hé um falso amigo a esse respeito.
Frostschutz
@frostschutz "smartctl -H é um falso amigo a esse respeito." Você pode dizer isso de novo! Eu também caí nessa opção uma vez, pensando que poderia ter a ver com os autotestes ... mas não, assunto (e propósito) totalmente diferente.
Syntaxerror
O que faço para "O dispositivo não suporta o log de autoteste"?
Mr.WorshipMe
13

Experimentar :

smartctl -c /dev/sda

se / dev / sda é a unidade que você deseja verificar.

SebM
fonte
Edit: Desculpe. Eu estava errado. -c significa --capabilities, mas também mostra o progresso atual do teste. like60% of test remaining.
JPT 02/11