Ubuntu smartctl – 从 cron 运行测试:我如何知道结果何时创建?

Ubuntu smartctl – 从 cron 运行测试:我如何知道结果何时创建?

我遵循了各种教程,最终从 cron 运行 smartctl 测试。

定时任务:

0 2 2 * * /usr/sbin/smartctl --test=long /dev/sda &> /dev/null
0 2 3 * * /usr/sbin/smartctl --test=long /dev/sdb &> /dev/null

我知道漫长的测试可能需要几个小时才能完成。

然后我就可以用手跑了;一旦它开始工作,我将围绕它编写一个脚本:

smartctl -a /dev/sda

我可以查看测试是否仍在运行,但在测试完成之前不断打电话检查结果肯定不是很好。

我可以看到开机时间

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      1216         -
# 2  Short offline       Completed without error       00%       511         -
# 3  Short offline       Completed without error       00%       487         -
# 4  Extended offline    Completed without error       00%       487         -
# 5  Short offline       Completed without error       00%       464         -
# 6  Short offline       Completed without error       00%       440         -
# 7  Short offline       Completed without error       00%       417         -
# 8  Extended offline    Completed without error       00%       394         -
# 9  Short offline       Completed without error       00%       393         -

但这并没有告诉我结果是什么时候创建的。我看不到开机,短时间/长时间离线会告诉我。我想过记录开机时间,但如果系统已经重新启动,那就没有意义了。

我不认为我想做任何太奇怪的事情。毕竟,我有一组结果,但不知道他们告诉我的信息是什么时候创建的。

相信很多人都知道答案。您能给我一些有帮助的指示或线索吗?

答案1

启动 cronjob 后,您可以定期检查smartctl -c特定字符串的输出。如果该字符串存在,那么您就知道当前正在运行测试。如果找不到该字符串,请将日期和输出写入smartctl -a日志文件并退出循环:

while true
do
    sleep 1m
    if smartctl -c /dev/sda | grep "Self-test routine in progress"
    then
        echo "test running"
    else
        echo "no test running"
        #write to log
        date=$(date)
        echo -e "\n\n\nTest completed\n\n\n$date\n\n $(smartctl -a /dev/sda)" >> logfile
        #break out of while loop
        break
    fi
done

相关内容