私はさまざまなチュートリアルに従い、最終的に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