시스템이 갑자기 종료되는 경우. 그럼 언제 문을 닫았는지 아시나요? 갑작스러운이란 정전 또는 sysrq 매직 키로 인해 발생함을 의미합니다. 몇 초마다 뭔가를 기록하면 답을 얻을 수 있지만, 그렇지 않다면 어떤 방법이 있을까요?
저는 맞춤형 콘솔 기반 시스템을 사용하고 있습니다. 커널은 5.3입니다.
답변1
시스템이 재부팅된 시기를 알 수 있는 방법에는 "가동 시간", "마지막 재부팅" 등 여러 가지가 있습니다. 시스템이 다운된 시점을 파악하는 것은 약간 까다롭습니다. rsyslogd를 통해 정기적인 시스템 로깅을 실행한다고 가정하면 /etc/rsyslogd.conf에 다음을 추가하여 immark 모듈을 "몇 초마다 기록" 루틴으로 사용할 수 있습니다.
$ModLoad immark
$MarkMessagePeriod <your time granularity here, in seconds>
$ActionWriteAllMarkMessages on
또한 그대로 두고 메시지 파일의 두 가지 항목 중 하나를 볼 수도 있습니다. 시스템 시작 시 파일이 회전되는 경우 "ls -l"을 사용하여 파일의 이전 버전 날짜만 확인하면 시스템이 파일 쓰기를 중지한 시점을 추측할 수 있습니다. 시스템 로그를 교체하지 않는 경우 다시 시작을 나타내는 줄 앞에 있는 줄의 타임스탬프를 확인하여 동일한 정확도를 얻을 수 있습니다. 다시 시작하면 다음과 같이 됩니다.
2020-03-29T03:20:01.529437-04:00 [hostname] rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="1615" x-info="h
ttp://www.rsyslog.com"] rsyslogd was HUPed
종료가 예상치 못한 일이 아닌 경우에는 종료가 사라지기 전에 시스템 로거가 로그에 메시지를 기록하므로 더 쉬울 것입니다.
시스템 로깅을 끄면 당연히 이 모든 것이 의미가 없게 됩니다. 여전히 시스템 로그에 내용을 기록하고 있다면 해당 파일 중 일부에 대한 통계를 얻고 수정 시간을 확인하여 시스템이 사라진 시점에 대한 대략적인 아이디어를 얻을 수 있습니다.
root# stat /var/log/messages-01.gz
File: '/var/log/messages-01.gz'
Size: 185529 Blocks: 368 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 12689803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: (658178/ mssgro)
Access: 2020-04-08 10:27:47.691311523 -0400
Modify: 2020-04-05 03:01:34.000000000 -0400 <=== that's what you're after ==
Change: 2020-04-07 18:16:40.252668164 -0400
Birth: -
선택한 파일 중 가장 최근 파일을 선택하면 시스템이 언제 중지될지 대략적으로 예측할 수 있습니다.
몇 가지 생각이 도움이 되기를 바랍니다.