34

I am testing a hard disk with SmartMonTools.

Hard disk status prior to the testings (only one short test performed days ago):

$ 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         -

So I start the long test:

$ 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.

The test is supposed to be running, then, but if I try to see its progress:

$ 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         -

... all I get is the same results, like if there were no running/performing tests right now.
The '-H' parameter gives no more info:

$ 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

And, as long as there is no process running (this test is performed by the hard disk controller alone), some ps -e style search should neither help.

How can I know if there is some SMART self test running right now?

40

In smartctl -a <device> look for Self-test execution status.

Example when no test is running:

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

Example while a test is running:

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

When running selective self-test (-t select) there will also be a progress shown here:

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)
  • 2
    A good idea. I suggest you to add this direct line (by grepping) as a possibility: smartctl -a /dev/sda | grep "progress" -i -A 1 , to cut excessive info printout. – Sopalajo de Arrierez May 9 '15 at 11:18
  • 1
    You need the excessive printout to get the whole picture though. In a script the grep may be fine, but people who are used to grep everything on the command line (dmesg | grep something, smartctl -a | grep ..., etc.), they will miss things. With smartctl in particular there is no simple command that tells you everything is okay... smartctl -H is a false friend in that regard. – frostschutz May 9 '15 at 12:09
  • @frostschutz "smartctl -H is a false friend in that regard." You can say that again! I too have fallen for this option once, thinking it might have to do with the self-tests...but no, entirely different subject (and purpose). – syntaxerror Jan 29 '16 at 21:03
  • What do I do for "Device does not support Self Test logging"? – Mr.WorshipMe Jul 27 '17 at 19:29
12

Try :

smartctl -c /dev/sda

if /dev/sda is the drive you want to check.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.