Linux를 사용하여 "플러그 아웃" 시나리오 감지

Linux를 사용하여 "플러그 아웃" 시나리오 감지

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에 자리 표시자 파일을 쓰지 않도록 주의하세요. 이러한 디렉터리는 시스템을 재부팅할 때 비워지기 때문입니다.

관련 정보