it-swarm-ko.tech

시스템 종료의 원인을 로그에서 확인하는 방법은 무엇입니까?

예 : /var/log/messages에서 이것을보고 있습니다 :

Mar 01 23:12:34 hostname shutdown: shutting down for system halt

종료 원인을 확인하는 방법이 있습니까? 예 : 콘솔에서 실행되었거나 누군가 전원 버튼 등을 쳤습니까?

123
alex

루트 권한 프로그램 만 시스템을 정상적으로 종료 할 수 있습니다. 따라서 시스템이 정상적인 방식으로 종료되면 루트 권한을 가진 사용자이거나 acpi 스크립트입니다. 두 경우 모두 로그를 확인하여 찾을 수 있습니다. 전원 버튼 누르기, 과열 또는 배터리 부족 (노트북)으로 인해 ACPI가 종료 될 수 있습니다. 전원 공급 장치에 장애가 발생했을 때 UPS 소프트웨어 인 세 번째 이유를 잊어 버렸습니다.

최근에는 시스템이 비정상적으로 전원을 껐다가 다시 시작하기 시작했고 시스템이 과열되고 mobo가 일찍 전원을 끄도록 구성되었습니다. 시스템은 로그를 저장할 기회가 없었지만 다행히 시스템 온도를 모니터링하면 전원을 끄기 직전에 온도가 상승하기 시작했습니다.

따라서 정상적인 종료 인 경우에는 로그가 기록되고 침입이 발생한 경우 ... 행운을 빕니다. 콜드 셧다운 인 경우 환경을 제어하고 모니터링하는 것이 가장 좋습니다.

50
forcefsck

다음 명령을 시도하십시오 :

마지막 재부팅 항목 표시 목록 : last reboot | less

마지막 종료 항목 표시 목록 : last -x | less

또는 더 정확하게 : last -x | grep shutdown | less

그러나 누가 그랬는지 알 수 없습니다. 누가 그랬는지 알고 싶다면 약간의 코드를 추가해야하므로 다음에 알게 될 것입니다.

이 리소스를 온라인에서 찾았습니다. 다음과 같이 유용 할 수 있습니다.

누가 또는 무엇이 내 시스템을 멈추게했는지 알아내는 방법

127

다음 두 가지를 검토해야합니다.

  1. last -x 명령의 출력
  2. /var/log/의 로그 파일

이 두 명령을 사용하고 자세한 내용을 계속 읽으십시오.

last -x | head | tac

grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \
  /var/log/messages /var/log/syslog /var/log/apcupsd* \
  | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'

1) last -x 명령의 출력에 대하여

이 명령 *을 실행하고 출력을 아래 예제와 비교하십시오.

last -x | head | tac

정상적인 종료 예

정상적인 종료 및 전원 켜기는 다음과 같습니다 (종료 이벤트와 시스템 부팅 이벤트가 있음에 유의하십시오).

runlevel (to lvl 0)   2.6.32- Sat Mar 17 08:48 - 08:51  (00:02) 
shutdown system down  ... <-- first the system shuts down   
reboot   system boot  ... <-- afterwards the system boots
runlevel (to lvl 3)       

경우에 따라 다음과 같이 표시 될 수 있습니다 (종료에 관한 행은 없지만 시스템이 "중단 상태"인 실행 레벨 0에 있음).

runlevel (to lvl 0)   ... <-- first the system shuts down (init level 0)
reboot   system boot  ... <-- afterwards the system boots
runlevel (to lvl 2)   2.6.24-... Fri Aug 10 15:58 - 15:32 (2+23:34)   

예기치 않은 종료 예

정전으로 인한 예기치 않은 종료는 다음과 같습니다 (사전 시스템 종료 이벤트없이 시스템 부팅 이벤트가 있음에 유의하십시오).

runlevel (to lvl 3)   ... <-- the system was running since this momemnt
reboot   system boot  ... <-- then we've a boot WITHOUT a prior shutdown
runlevel (to lvl 3)   3.10.0-693.21.1. Sun Jun 17 15:40 - 09:51  (18:11)    

2)/var/log /의 로그에 대하여

가장 흥미로운 로그 메시지를 필터링하는 bash 명령은 다음과 같습니다.

grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \
  /var/log/messages /var/log/syslog /var/log/apcupsd* \
  | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'

예기치 않은 전원 끄기 또는 하드웨어 오류가 발생하면 파일 시스템이 올바르게 마운트 해제되지 않으므로 다음 부팅시 다음과 같은 로그가 표시 될 수 있습니다.

EXT4-fs ... INFO: recovery required ... 
Starting XFS recovery filesystem ...
systemd-fsck: ... recovering journal
systemd-journald: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.

사용자가 전원 버튼을 눌러 시스템 전원을 끄면 다음과 같은 로그가 표시됩니다.

systemd-logind: Power key pressed.
systemd-logind: Powering Off...
systemd-logind: System is powering down.

시스템이 순서대로 종료 될 때만 다음과 같은 로그가 나타납니다.

rsyslogd: ... exiting on signal 15

과열로 인해 시스템이 종료되면 다음과 같은 로그가 나타납니다.

critical temperature reached...,shutting down

UPS가 있고 전원 및 종료를 모니터링하기 위해 데몬을 실행하는 경우 반드시 해당 로그 (/ var/log/messages의 NUT 로그는/var/log/apcupsd *의 apcupsd 로그)를 확인해야합니다.


주의 사항

* : 다음은 매뉴얼 페이지에서 last에 대한 설명입니다.

last [...] prints information about connect times of users. 
Records are printed from most recent to least recent.  
[...]
The special users reboot and shutdown log in when the system reboots
or (surprise) shuts down. 

우리는 head를 사용하여 최신 10 개의 이벤트를 유지하고 tac를 사용하여 순서를 반전하여 가장 최근의 이벤트부터 가장 최근의 이벤트까지 마지막으로 인쇄 된 사실에 혼동되지 않도록합니다.

26
ndemou

탐색 할 수있는 몇 가지 로그 파일 : (우분투 시스템을 찾았지만 대부분의 Linux/Unix 시스템에 존재하기를 바랍니다)

/var/log/debug
/var/log/syslog (will be pretty full and may be harder to browse)
/var/log/user.log
/var/log/kern.log
/var/log/boot

이 로그 파일은 Ubuntu 시스템에 있으므로 파일 이름이 다를 수 있습니다. tail 명령은 당신의 친구입니다.

11
user6148

lastshutdown에서 시스템 종료 항목 및 실행 레벨 변경 사항 및 필터링을 표시하는 reboot를 사용하여 단순화하십시오.

last -x shutdown reboot
8
jhvaras

완전히 만족스럽지 않은

데비안 7.8에서도 비슷한 요구가 있었고 기본적으로 로그에 명확하고 명확한 메시지가 없다는 것을 알았습니다.

/var/log를 통해 grep하면 시스템이 종료 된 시간을 알려주고 적절한 데몬 종료 등을 표시하지만 초기 이유는 아닙니다.

shutdown[25861]: shutting down for system halt

언급 된 다른 솔루션 (last -x) 은별로 도움이되지 않았습니다.

그것이 어떻게 작동하는지

다음을 포함하는 /etc/acpi/powerbtn-acpi-support.sh 읽기

 if [-x /etc/acpi/powerbtn.sh]; then 
 # acpid package 
 /etc/acpi/powerbtn.sh
Elif [-x /etc/acpi/powerbtn.sh.dpkg-bak]의 이전 구성 스크립트와의 호환성 ; then 
 # acpid package 
의 이전 설정 스크립트와의 호환성 
 # admin 
 /etc/acpi/powerbtn.sh.dpkg-bak 
 else 
 # 일반 처리. 
/sbin/shutdown -h -P- "지금 전원 버튼을 눌렀습니다"
 fi 

명시 적 텍스트는 shutdown 명령의 매개 변수로 제공됩니다. 종료 프로그램에 의해 해당 문자열이 자동으로 기록 될 것으로 예상됩니다.

더 나은 로그를위한 조정

어쨌든, 명시적인 메시지를 얻기 위해 새로 작성된 /etc/acpi/powerbtn.shchmod a+x /etc/acpi/powerbtn.sh로 실행 가능하게 만든 아래 텍스트를 루트로 입력했습니다.

 #!/bin/sh 
 logger /etc/acpi/powerbtn.sh의 로거, 아마도 "전원 버튼을 눌렀을 것"
/sbin/shutdown -h -P now "전원 버튼 눌림 "

이 방법을 사용하면 /etc/acpi/powerbtn-acpi-support.sh를 수정하는 것보다 오래 지속될 수 있습니다. 후자의 옵션은 아마도 패키지 acpi-support-base의 다음 업그레이드에 영향을 미치지 않을 것입니다.

Ubuntu 14.04와는 다르게 (/etc/acpi/powerbtn.sh는 이미 acpid 패키지와 다른 내용으로 존재합니다.) 또한 데비안 8은 아마 다르게 작동합니다. 변형을 자유롭게 제공하십시오.

이익!

전원 버튼을 누르면 다음과 같은 줄이 /var/log/messages, /var/log/syslog/var/log/user.log에 나타납니다.

logger: in /etc/acpi/powerbtn.sh, presumably Power button pressed

이제 로그에 명시적인 메시지입니다.

8

나는 어색한 아이디어를 가지고 있지만 어쩌면 당신을 위해 일할 수도 있습니다 : last 명령을 입력하고 모든 사용자의 로그인 정보를 확인하십시오. 그런 다음 해당 시점에 로그인 한 halt에 필요한 권한으로 사용자를 필터링하십시오. 그런 다음 .bash_history 파일이 중지되었는지 확인합니다.

4
sazary

필자의 경우 과열 문제가 발생하여/var/log 폴더의 'grep shut *'로/var/log/syslog에서 로그를 찾았습니다.

기록 된 오류는 다음과 같습니다.

Feb 23 15:59:49 luca-LIFEBOOK-A530 kernel: [24746.497174] thermal thermal_zone0: critical temperature reached(99 C),shutting down
1
luandrea

내 KVM VM (호스트 재부팅으로 게스트를 완전히 종료했는지 궁금합니다))에 칩을 넣으면 /var/log/auth.log (last -x shutdown 동일하게 표시). 이 라인들이 나타났습니다 :

Sep  3 23:56:31 Web systemd-logind[531]: Power key pressed.
Sep  3 23:56:31 Web systemd-logind[531]: Powering Off...
Sep  3 23:56:31 Web systemd-logind[531]: System is powering down.
Sep  3 23:55:45 Web systemd-logind[591]: New seat seat0.
Sep  3 23:55:45 Web systemd-logind[591]: Watching system buttons on /dev/input/event0 (Power Button)
Sep  3 23:55:54 Web sshd[805]: Server listening on 0.0.0.0 port 22.
Sep  3 23:55:54 Web sshd[805]: Server listening on :: port 22.

last -x는 이러한 행을 보여줍니다. most-recent-first order (즉, 마지막 행을 먼저 읽은 다음 위로)로 인쇄하고 있지만 시계 재설정 (23 : 부팅하기 전에 56, 23:55 이후)도 이전 줄에서 분명하지만 순서는 다소 어리석은 것처럼 보입니다.

runlevel (to lvl 2)   3.13.0-129-gener Sun Sep  3 23:55 - 22:04  (22:08)    
reboot   system boot  3.13.0-129-gener Sun Sep  3 23:55 - 22:04  (22:08)    
shutdown system down  3.13.0-123-gener Sun Sep  3 23:56 - 23:55  (00:00)    
runlevel (to lvl 0)   3.13.0-123-gener Sun Sep  3 23:56 - 23:56  (00:00)

내 경우에는 호스트가 부팅 될 때 게스트가 완전히 종료되었는지 확인하고 게스트 중 하나에 로그인하고 호스트를 부팅 할 때 터미널에 다음 줄을 가져올 수 있습니다.

[email protected]:~#
Broadcast message from [email protected]
        (unknown) at 22:25 ...

The system is going down for power off NOW!
Connection to web closed by remote Host.
Connection to web closed.
1
stolsvik

스크립트에 종료를 알리십시오.
스크립트는 모든 매개 변수 등을 원본 종료 실행 파일에 제공해야합니다.
BUT : 스크립트는이를 기록해야합니다.

0
LanceBaynes