Linux 시스템의 정전으로 인한 종료를 감지할 수 있는지 궁금합니다. (정전이란 리셋 버튼 누르기, 전원 버튼 누르기, 전원 코드 뽑기 등으로 정의됩니다.) 그렇다면 어떻게 해야 하나요? (즉, 이것이 이미 사람들이 할 수 있는 일이라면 어떤 명령을 실행해야 합니까?)
나는 그것이 다음과 같이 작동한다고 상상합니다 :
- 시스템이 다시 작동되었을 때 종료 또는 다시 시작 명령이 실행되었는지 확인했지만 아무 것도 발견되지 않았습니다.
- 시스템은 커널 패닉 등(OOM 어쩌면?)과 같이 재부팅이 필요한 오류가 기록되어 있는지 확인하지만 아무 것도 발견되지 않습니다.
- 위에서 언급한 대로 결정적인 증거가 발견되지 않으면 시스템은 "종료 원인을 찾을 수 없습니다. 정전 가능성이 감지되었습니다."와 유사한 메시지를 기록합니다.
답변1
이는 구현에 따라 다르지만 last
시스템이 충돌하면 출력에 이에 대한 메시지가 표시됩니다 last
.
예
줄이 보이시나요 crash
? 이는 정전이나 특정 시스템의 전원 스위치를 누군가가 누름으로 인해 발생합니다.
$ last
root pts/0 greeneggs.bubba. Tue May 13 22:42 - 22:43 (00:01)
reboot system boot 2.6.18-238.19.1. Tue May 13 21:47 (4+17:29)
root pts/0 greeneggs.bubba. Tue May 13 21:36 - crash (00:11)
root pts/0 greeneggs.bubba. Mon May 12 03:29 - 03:29 (00:00)
root pts/0 greeneggs.bubba. Sun May 11 16:47 - 19:41 (02:53)
root pts/0 greeneggs.bubba. Sat May 10 17:10 - 17:12 (00:01)
root pts/0 greeneggs.bubba. Sat May 10 08:35 - 08:35 (00:00)
root pts/1 greeneggs.bubba. Thu May 8 23:56 - 23:56 (00:00)
reboot system boot 2.6.18-238.19.1. Thu May 8 23:55 (9+15:21)
root pts/0 greeneggs.bubba. Thu May 8 22:39 - 22:41 (00:02)
root pts/0 greeneggs.bubba. Tue May 6 21:36 - 22:06 (00:30)
sam pts/0 byers.bubba.net Tue May 6 12:36 - 13:04 (00:28)
root pts/0 :0.0 Mon May 5 23:12 - 23:12 (00:00)
root :0 Mon May 5 23:03 - crash (3+00:51)
좀 더 난해한 접근 방식
제가 본 잘 사용되는 한 가지 방법은 랩톱이 있는 경우 명령줄 도구를 사용하여 acpi
시스템의 ACPI 인터페이스를 쿼리할 수 있다는 것입니다. 무엇보다도 이는 시스템이 활성 상태인지 또는 배터리가 방전되었는지 알려줄 수 있습니다.
예
다음은 내 노트북의 명령 출력입니다.
$ acpi -V
Battery 0: Unknown, 94%
Battery 0: design capacity 6963 mAh, last full capacity 6683 mAh = 95%
Adapter 0: on-line
Thermal 0: ok, 52.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 100.0 degrees C
Thermal 0: trip point 1 switches to mode passive at temperature 95.5 degrees C
Cooling 0: LCD 0 of 15
Cooling 1: Processor 0 of 10
Cooling 2: Processor 0 of 10
Cooling 3: Processor 0 of 10
Cooling 4: Processor 0 of 10
이 줄의 내용을 검토하기만 하면 Adapter
시스템의 현재 상태를 알 수 있습니다. 예를 들어 컴퓨터 그룹을 모니터링하여 전체 전원 차단이 발생했는지 확인하려는 경우 이는 모니터에 캡슐화될 수 있습니다.
끼워 넣다
$ acpi -V | grep "Adapter"
Adapter 0: on-line
플러그를 뽑다
$ acpi -V | grep "Adapter"
Adapter 0: off-line
답변2
시스템이 제대로 종료되거나 사용자가 재부팅(init 0 또는 6)을 시작할 때 자리 표시자 파일을 생성하면 됩니다. 시작 스크립트(init 3 또는 5)를 실행하여 파일이 존재하는지 확인하십시오. 누락된 경우 제대로 종료되지 않습니다. 파일이 존재하는 경우(즉, 시스템이 종료되거나 정상적으로 다시 시작되는 경우) 잠금 파일을 삭제하면 됩니다.
메모리 내 마운트된 디렉터리(/dev/shm, /var/run 등) 또는 /tmp에 자리 표시자 파일을 쓰지 않도록 주의하세요. 이러한 디렉터리는 시스템을 재부팅할 때 비워지기 때문입니다.