저는 다양한 튜토리얼을 따라했고 결국 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