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

관련 정보