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


104

예를 들면 다음과 /var/log/messages같습니다.

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

종료 원인을 확인하는 방법이 있습니까? 예를 들어 콘솔에서 실행 되었습니까, 아니면 누군가 전원 버튼 등을 쳤습니까?


2
그래서 이번에는 운 /var/log/acpid이 좋았습니다 : 전원 버튼이 맞았습니다. 다른 아이디어, 어리 석음이 단서를 제공하지 않으면 어디를 봐야합니까?
alex

답변:


45

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

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

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


118

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

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

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

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

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

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

누가 또는 어떻게 내 시스템을 중단했는지 알아내는 방법


25
음,이 말하지 않는 것을 이 이루어졌다 경우에만 종료를 일으켰습니다. 내가 이미 알고있는 것은 내 질문을 참조하십시오.
alex

1
더 정확하게last -x shutdown
Rahul Patil

5
질문에 대답하지 않으므로 하향 투표.
toogley

1
"나의 시스템을 중단 한 사람 (또는 오래된 Sco Unix)을 어떻게 알 수 있습니까? "
Wolfgang

16

확인할 몇 가지 사항이 있습니다.

마지막 -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)    

/ 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순서를 거꾸로 사용 하여 가장 최근의 이벤트부터 가장 최근의 이벤트까지 마지막으로 인쇄한다는 사실에 혼동하지 않도록합니다.


좋은 대답입니다. 데비안 9에서는 정상적인 종료를위한 "runlevel (to lvl 0)"행을 보지 못했습니다.
Jruv

@jruv 무엇을 보았습니까? 나는 그것이 했어야 "셧다운 시스템 다운"추측
ndemou

이것은 훌륭한 예이지만 tac명령 없이 다시 작성하면 도움이 될 수 있습니다.
mbigras

/ var / log를 검사하면 좋은 명령이며 잘 작성된 정보입니다. 감사!
Howard Lee

11

탐색 할 수있는 몇 가지 로그 파일 : (우분투 시스템을 찾았지만 대부분의 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명령은 친구입니다.


8

사용하여 단순화 last에 시스템 종료 항목 및 실행 레벨 변경 및 필터링을 표시 shutdown하고 reboot:

last -x shutdown reboot

1
ndefontenay는 이미 언급했습니다. 기여해 주셔서 감사하지만 기존 답변을 먼저 읽으십시오.
Gilles

내 대답은 ndefontenay 하나를 단순화했지만 감사합니다.
jhvaras

1
내가 해 @gilles이 (가)이이 미묘하게 다른 말 cat foo | grep bargrep bar foo방법의 종류, 마지막으로 그 자체를 필터링 할 것으로 보인다.
xenoterracide

8

완전히 만족스럽지 않은

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

Grep through /var/log는 머신이 종료 된 시간을 알려주고 적절한 데몬 종료 등을 표시하지만 초기 이유는 아닙니다.

shutdown[25861]: shutting down for system halt

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

그것이 어떻게 작동하는지

독서 /etc/acpi/powerbtn-acpi-support.sh내용 :

만약 [-x /etc/acpi/powerbtn.sh]; 그때
    # acpid 패키지의 이전 구성 스크립트와의 호환성
    /etc/acpi/powerbtn.sh
elif [-x / etc / acpi / powerbtn.sh.dpkg-bak]; 그때
        # acpid 패키지의 이전 구성 스크립트와의 호환성
    # 관리자에 의해 변경되었으므로 여전히 주변에 있습니다.
        /etc/acpi/powerbtn.sh.dpkg-bak
그밖에
    # 정상적인 취급.
    / sbin / shutdown -h -P 이제 "전원 버튼을 눌렀습니다"
fi

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

더 나은 로그를위한 조정

어쨌든, 명시 적 메시지를 얻으려면 아래 텍스트를 루트로 새로 작성 /etc/acpi/powerbtn.sh하여 만든 실행 파일에 넣습니다.chmod a+x /etc/acpi/powerbtn.sh

#! / bin / sh
/etc/acpi/powerbtn.sh의 로거, 아마도 "전원 버튼을 눌렀습니다"
    / sbin / shutdown -h -P 이제 "전원 버튼을 눌렀습니다"

이 방법을 사용하면 수정하는 것보다 오래 지속될 수 있습니다 /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

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


설치 acpi-support-baseacpid패키지 고려를 제안한 @Bielecki에게 감사 합니다. 나는 나 자신을 테스트하지 않았습니다. 어떤 배포 및 버전에서 이점을 얻을 수 있는지 자세히 설명 할 수 있습니까?
Stéphane Gourichon

4

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


1

필자의 경우 과열 문제가 발생하여 / 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

(I는 호스트 재부팅이 손님의 완전 종료했다 있는지 궁금 곳) 점에서 그냥 칩 내 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이 줄을 보여줍니다. 가장 최근의 순서대로 인쇄되고 있음을 알 수 있습니다 (즉, 마지막 줄을 먼저 읽은 다음 위로 이동). 시계 재설정 (부팅 전 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)

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

root@Web:~#
Broadcast message from root@Web
        (unknown) at 22:25 ...

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

0

스크립트 종료시 별명을 지정하면 스크립트
는 모든 종료 매개 변수 등을 원래 종료 실행 파일에 제공
해야합니다.


2
종료 스크립트는 이미이 작업을 수행 ( last -x)
forcefsck

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.