it-swarm-vi.com

Làm thế nào để tìm ra từ các bản ghi những gì gây ra tắt hệ thống?

Ví dụ. Tôi đang thấy điều này trong /var/log/messages:

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

Có cách nào để tìm hiểu những gì gây ra tắt máy? Ví dụ. nó chạy từ bàn điều khiển hay ai đó nhấn nút nguồn, v.v.?

123
alex

Chỉ các chương trình đặc quyền root mới có thể tắt hệ thống một cách duyên dáng. Vì vậy, khi một hệ thống tắt theo cách thông thường, đó là người dùng có quyền root hoặc tập lệnh acpi. Trong cả hai trường hợp, bạn có thể tìm ra bằng cách kiểm tra nhật ký. Tắt máy acpi có thể do nhấn nút nguồn, quá nóng hoặc pin yếu (máy tính xách tay). Tôi quên mất lý do thứ ba, phần mềm UPS khi nguồn điện bị hỏng, dù sao cũng sẽ gửi cảnh báo.

Gần đây tôi có một hệ thống bắt đầu tắt nguồn một cách vô duyên, hóa ra nó quá nóng và mobo được cấu hình để tắt nguồn sớm. Hệ thống không có cơ hội lưu nhật ký, nhưng may mắn thay, theo dõi nhiệt độ của hệ thống cho thấy nó đã bắt đầu tăng ngay trước khi tắt nguồn.

Vì vậy, nếu đó là tắt máy bình thường, nó sẽ được ghi lại, nếu đó là một sự xâm nhập ... chúc may mắn và nếu đó là tắt máy lạnh, cơ hội tốt nhất của bạn để biết là kiểm soát và giám sát môi trường của nó.

50
forcefsck

Hãy thử các lệnh sau:

Hiển thị danh sách các mục khởi động lại cuối cùng: last reboot | less

Hiển thị danh sách các mục tắt máy cuối cùng: last -x | less

hoặc chính xác hơn: last -x | grep shutdown | less

Bạn sẽ không biết ai đã làm điều đó. Nếu bạn muốn biết ai đã làm điều đó, bạn sẽ cần thêm một chút mã có nghĩa là bạn sẽ biết lần sau.

Tôi đã tìm thấy tài nguyên này trực tuyến. Nó có thể hữu ích cho bạn:

Cách tìm ra ai hoặc cái gì đã tạm dừng hệ thống của tôi

127
Nicolas de Fontenay

Bạn phải kiểm tra 2 điều:

  1. Đầu ra của lệnh last -x
  2. Các tệp nhật ký trong /var/log/

Sử dụng 2 lệnh này và tiếp tục đọc để biết thêm thông tin.

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) Về đầu ra của lệnh -x cuối cùng

Chạy lệnh này * và so sánh đầu ra với các ví dụ dưới đây:

last -x | head | tac

Ví dụ tắt máy bình thường

Tắt máy và bật nguồn bình thường trông như thế này (lưu ý rằng bạn có một sự kiện tắt máy và sau đó là một sự kiện khởi động hệ thống):

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)       

Trong một số trường hợp, bạn có thể thấy điều này (lưu ý rằng không có dòng nào về việc tắt máy nhưng hệ thống ở trạng thái runlevel 0 là "trạng thái tạm dừng"):

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)   

Ví dụ tắt máy bất ngờ

Việc tắt đột ngột do mất điện trông như thế này (lưu ý rằng bạn có một sự kiện khởi động hệ thống mà không có sự kiện tắt hệ thống trước đó):

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) Về nhật ký trong/var/log /

Lệnh bash để lọc các thông điệp tường trình thú vị nhất là:

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'

Khi mất điện đột xuất hoặc xảy ra lỗi phần cứng, các hệ thống tập tin sẽ không được ngắt kết nối chính xác để trong lần khởi động tiếp theo, bạn có thể nhận được các bản ghi như thế này:

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.

Khi hệ thống tắt vì người dùng nhấn nút nguồn, bạn sẽ nhận được các bản ghi như thế này:

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

Chỉ khi hệ thống tắt trật tự, bạn mới có được nhật ký như thế này:

rsyslogd: ... exiting on signal 15

Khi hệ thống tắt do quá nóng, bạn sẽ nhận được các bản ghi như thế này:

critical temperature reached...,shutting down

Nếu bạn có một UPS và chạy một daemon để theo dõi nguồn và tắt máy, rõ ràng bạn nên kiểm tra nhật ký của nó (NUT log trên/var/log/message nhưng nhật ký apcupsd trên/var/log/apcupsd *)


Ghi chú

*: Đây là mô tả của last từ trang man của nó:

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. 

Chúng tôi sử dụng head để giữ 10 sự kiện mới nhất và chúng tôi sử dụng tac để đảo ngược thứ tự để chúng tôi không bị nhầm lẫn bởi thực tế là các bản in cuối cùng từ sự kiện gần đây nhất đến gần đây nhất.

26
ndemou

Một số tệp nhật ký có thể khám phá: (tìm thấy một hệ thống Ubuntu, nhưng tôi hy vọng rằng chúng có mặt trên hầu hết các hệ thống 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

Một lần nữa, các tệp nhật ký này có mặt trên một hệ thống Ubuntu, vì vậy tên tệp có thể khác nhau. Lệnh tail là bạn của bạn.

11
user6148

Đơn giản hóa bằng cách sử dụng last hiển thị các mục tắt hệ thống và chạy thay đổi cấp độ và lọc trên shutdownreboot:

last -x shutdown reboot
8
jhvaras

Không hoàn toàn thỏa mãn

Tôi có một nhu cầu tương tự trên Debian 7.8 và nhận thấy rằng về cơ bản không có thông báo rõ ràng và rõ ràng trong nhật ký, điều này hơi đáng ngạc nhiên.

Grep thông qua /var/log Sẽ cho biết thời gian máy bị tắt, hiển thị tắt trình nền daemons, v.v., nhưng không phải là lý do ban đầu.

shutdown[25861]: shutting down for system halt

Các giải pháp khác được đề cập (last -x) Không giúp được gì nhiều.

Nhìn cách nó hoạt động

Đọc /etc/acpi/powerbtn-acpi-support.sh Bao gồm:

[.__.] nếu [-x /etc/acpi/powerbtn.sh]; sau đó [.__.] # Khả năng tương thích với tập lệnh cấu hình cũ từ gói acpid [.__.] /etc/acpi/powerbtn.sh[.__.[Elif [-x /etc/acpi/powerbtn.sh.dpkg-bak] ; sau đó [.__.] # Khả năng tương thích với tập lệnh cấu hình cũ từ gói acpid [.__.] # vẫn còn bởi vì nó đã được thay đổi bởi quản trị viên [.__.] /etc/acpi/powerbtn.sh.dpkg-bak [ .___.] khác [.___

Lưu ý rằng một văn bản rõ ràng được đưa ra làm tham số của lệnh shutdown. Tôi hy vọng chuỗi đó sẽ được ghi lại tự động bởi chương trình tắt máy.

Điều chỉnh cho nhật ký tốt hơn

Dù sao, để nhận được một tin nhắn rõ ràng, tôi đặt văn bản bên dưới (dưới dạng root) trong một /etc/acpi/powerbtn.sh Mới được thực hiện với chmod a+x /etc/acpi/powerbtn.sh

[.__.] #!/bin/sh [.__.] logger trong /etc/acpi/powerbtn.sh, có lẽ là "Nhấn nút nguồn" [.__.]/sbin/shutdown -h -P now "Nút nguồn nhấn "[.__.]

Làm theo cách này có thể sẽ tạo ra một thay đổi lâu dài hơn là sửa đổi /etc/acpi/powerbtn-acpi-support.sh. Tùy chọn thứ hai có thể sẽ mất tác dụng trong lần nâng cấp gói tiếp theo acpi-support-base.

Lưu ý so với Ubuntu 14.04, nó khác (/etc/acpi/powerbtn.sh Đã tồn tại với nội dung khác với gói acpid). Ngoài ra, Debian 8 có thể làm điều đó khác đi. Hãy cung cấp các biến thể.

Lợi nhuận!

Và bây giờ khi nhấn nút nguồn, một dòng như bên dưới sẽ xuất hiện trong /var/log/messages, /var/log/syslog/var/log/user.log:

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

Bây giờ đó là một thông điệp rõ ràng trong nhật ký.

8
Stéphane Gourichon

Tôi chỉ có một ý tưởng vụng về, nhưng có lẽ nó hiệu quả với bạn: nhập lệnh last và kiểm tra thông tin đăng nhập cho tất cả người dùng. sau đó, lọc người dùng với quyền được yêu cầu cho halt đã được đăng nhập tại thời điểm đó. sau đó kiểm tra tệp .bash_history của họ để xem họ có dừng lại hay không.

4
sazary

Trong trường hợp của tôi, tôi gặp vấn đề quá nhiệt và tìm thấy nhật ký trong/var/log/syslog bởi một thư mục 'grep shut *' trong/var/log.

Lỗi được ghi lại là:

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

Chỉ cần chip trong đó KVM VM (trong đó tôi tự hỏi liệu khởi động lại máy chủ có làm tắt máy khách không), tôi đã tìm thấy những gì tôi cần trong /var/log/auth.log (ngoài last -x shutdown hiển thị giống nhau). Có những dòng này hiện lên:

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 hiển thị các dòng này, lưu ý rằng chúng đang được in trong gần đây nhất trước tiên thứ tự (tức là đọc dòng cuối cùng trước, sau đó đi lên), nhưng do thiết lập lại đồng hồ (23: 56 trước khi khởi động, 23:55 sau) cũng hiển nhiên trong các dòng trước, thứ tự có vẻ hơi hoang mang:

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)

Về phần tôi, kiểm tra xem khách có tắt máy một cách sạch sẽ khi Host được khởi động không, tôi cũng có thể đăng nhập vào (ssh) một trong những khách và ở đó khi tôi khởi động Host, nhận các dòng này trong thiết bị đầu cuối:

[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

bí danh tắt máy cho một kịch bản
[.___.] tập lệnh phải cung cấp tất cả các tham số, v.v. để thực thi tắt máy ban đầu
[.__.] NHƯNG: kịch bản phải ghi lại những cái này

0
LanceBaynes