Jawaban:
Hanya root program istimewa yang dapat mematikan sistem dengan anggun. Jadi ketika sebuah sistem dimatikan dengan cara normal, itu adalah pengguna dengan hak akses root atau skrip acpi. Dalam kedua kasus, Anda dapat mengetahuinya dengan memeriksa log. Sebuah shutdown acpi dapat disebabkan oleh tombol power tekan, terlalu panas atau baterai rendah (laptop). Saya lupa alasan ketiga, perangkat lunak UPS ketika catu daya gagal, yang akan mengirim peringatan.
Baru-baru ini saya memiliki sistem yang mulai berulang kali mati tanpa daya, ternyata itu terlalu panas dan mobo dikonfigurasi untuk hanya mematikan awal. Sistem tidak memiliki kesempatan untuk menyimpan log, tetapi untungnya memantau suhu sistem menunjukkan sistem mulai meningkat sesaat sebelum dimatikan.
Jadi, jika ini adalah shutdown normal, itu akan dicatat, jika itu intrusi ... semoga berhasil, dan jika ini adalah shutdown dingin, kesempatan terbaik Anda untuk mengetahuinya adalah mengontrol dan memantau lingkungannya.
Coba perintah berikut:
Tampilkan daftar entri reboot terakhir:
last reboot | less
Tampilkan daftar entri shutdown terakhir:
last -x | less
atau lebih tepatnya:
last -x | grep shutdown | less
Anda tidak akan tahu siapa yang melakukannya. Jika Anda ingin tahu siapa yang melakukannya, Anda perlu menambahkan sedikit kode yang berarti Anda akan tahu lain kali.
Saya menemukan sumber ini daring. Mungkin bermanfaat bagi Anda:
Bagaimana mencari tahu siapa atau apa yang menghentikan sistem saya
last -x shutdown
Ada beberapa hal yang perlu diperiksa:
Jalankan perintah ini * dan bandingkan hasilnya dengan contoh di bawah ini:
last -x | head | tac
Shutdown dan power-up yang normal terlihat seperti ini (perhatikan bahwa Anda memiliki acara shutdown dan kemudian peristiwa boot sistem):
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)
Dalam beberapa kasus, Anda mungkin melihat ini (perhatikan bahwa tidak ada baris tentang shutdown tetapi sistem pada runlevel 0 yang merupakan "keadaan berhenti"):
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)
Shutdown yang tak terduga dari kehilangan daya terlihat seperti ini (perhatikan bahwa Anda memiliki acara boot sistem tanpa kejadian shutdown sistem sebelumnya):
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)
Perintah bash untuk memfilter pesan log paling menarik adalah ini:
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'
Ketika matikan yang tidak terduga atau kegagalan perangkat keras terjadi, sistem file tidak akan di-unmount dengan benar sehingga pada boot berikutnya Anda mungkin mendapatkan log seperti ini:
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.
Ketika sistem mati karena pengguna menekan tombol daya Anda mendapatkan log seperti ini:
systemd-logind: Power key pressed.
systemd-logind: Powering Off...
systemd-logind: System is powering down.
Hanya ketika sistem dimatikan tertib Anda mendapatkan log seperti ini:
rsyslogd: ... exiting on signal 15
Ketika sistem dimatikan karena terlalu panas Anda mendapatkan log seperti ini:
critical temperature reached...,shutting down
Jika Anda memiliki UPS dan menjalankan daemon untuk memantau daya dan shutdown, Anda harus memeriksa lognya (NUT log on / var / log / messages tetapi log apcupsd di / var / log / apcupsd *)
Catatan
*: Berikut deskripsi dari last
halaman manualnya:
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.
Kami menggunakan head
untuk menyimpan 10 acara terbaru dan kami gunakan tac
untuk membalikkan pemesanan sehingga kami tidak bingung dengan fakta bahwa cetakan terakhir dari yang terbaru ke yang paling baru.
tac
perintah
Beberapa file log yang mungkin untuk dijelajahi: (menemukan sistem Ubuntu, tapi saya berharap mereka ada di sebagian besar sistem 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
Sekali lagi, file-file log ini hadir pada sistem Ubuntu, jadi nama file mungkin berbeda. The tail
perintah adalah teman Anda.
Sederhanakan menggunakan last
tampilan entri shutdown sistem dan jalankan perubahan level dan pemfilteran pada shutdown
dan reboot
:
last -x shutdown reboot
cat foo | grep bar
vs grep bar foo
, tampaknya yang terakhir mampu menyaring dirinya sendiri.
Saya memiliki kebutuhan serupa pada Debian 7.8 dan mengamati bahwa pada dasarnya tidak ada pesan yang jelas dan eksplisit dalam log, yang sedikit mengejutkan.
Grep through /var/log
akan memberi tahu waktu mesin dimatikan, menunjukkan daemon shutdown yang tepat, dll, tetapi bukan alasan awal.
shutdown[25861]: shutting down for system halt
Solusi lain yang disebutkan ( last -x
) tidak banyak membantu.
Bacaan /etc/acpi/powerbtn-acpi-support.sh
yang meliputi:
jika [-x /etc/acpi/powerbtn.sh]; kemudian # Kompatibilitas dengan skrip konfigurasi lama dari paket acpid /etc/acpi/powerbtn.sh elif [-x /etc/acpi/powerbtn.sh.dpkg-bak]; kemudian # Kompatibilitas dengan skrip konfigurasi lama dari paket acpid # yang masih ada karena diubah oleh admin /etc/acpi/powerbtn.sh.dpkg-bak lain # Penanganan normal. / sbin / shutdown -h -P sekarang "Tombol power ditekan" fi
Perhatikan bahwa teks eksplisit diberikan sebagai parameter dari shutdown
perintah. Saya berharap string itu akan dicatat secara otomatis oleh program shutdown.
Pokoknya, untuk mendapatkan pesan eksplisit saya letakkan teks di bawah ini (sebagai root) di /etc/acpi/powerbtn.sh
executable yang baru dibuatchmod a+x /etc/acpi/powerbtn.sh
#! / bin / sh logger di /etc/acpi/powerbtn.sh, mungkin "Tombol daya ditekan" / sbin / shutdown -h -P sekarang "Tombol power ditekan"
Melakukannya dengan cara ini mungkin akan membuat perubahan yang lebih tahan lama daripada memodifikasi /etc/acpi/powerbtn-acpi-support.sh
. Opsi terakhir mungkin akan kehilangan efeknya pada peningkatan paket berikutnya acpi-support-base
.
Perhatikan bahwa Ubuntu 14.04 melakukannya secara berbeda ( /etc/acpi/powerbtn.sh
sudah ada dengan konten yang berbeda dari acpid
paket). Juga, Debian 8 mungkin melakukannya secara berbeda. Jangan ragu untuk menawarkan varian.
Dan sekarang ketika tombol power ditekan, garis seperti di bawah ini muncul /var/log/messages
, /var/log/syslog
dan /var/log/user.log
:
logger: in /etc/acpi/powerbtn.sh, presumably Power button pressed
Nah, itu pesan eksplisit di log.
acpi-support-base
dan acpid
paket. Saya belum menguji diri saya. Bisakah Anda menguraikan distribusi dan versi mana yang menghasilkan manfaat?
Saya hanya punya ide canggung, tapi mungkin berhasil untuk Anda: masukkan perintah last
dan periksa informasi masuk untuk semua pengguna. kemudian, filter pengguna dengan izin yang diperlukan untuk halt
yang telah masuk pada saat itu. kemudian periksa .bash_history
file mereka untuk melihat apakah mereka telah menghentikan atau tidak.
Dalam kasus saya, saya punya masalah overheating dan menemukan log in / var / log / syslog oleh 'grep shut *' di folder / var / log.
Kesalahan yang dicatat adalah ini:
Feb 23 15:59:49 luca-LIFEBOOK-A530 kernel: [24746.497174] thermal thermal_zone0: critical temperature reached(99 C),shutting down
Hanya chip di VM KVM saya (di mana saya bertanya-tanya apakah host reboot melakukan shutdown bersih tamu), saya menemukan apa yang saya butuhkan /var/log/auth.log
(selain last -x shutdown
menunjukkan hal yang sama). Di sana garis-garis ini muncul:
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
menunjukkan garis-garis ini, perhatikan bahwa mereka sedang dicetak dalam urutan paling baru-baru-pertama (yaitu membaca baris terakhir pertama, dan kemudian naik), tetapi karena pengaturan ulang jam (23:56 sebelum boot, 23:55 setelah) juga terlihat pada baris sebelumnya, urutannya agak membingungkan:
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)
Untuk bagian saya, memeriksa bahwa tamu benar-benar ditutup ketika host di-boot, saya juga bisa masuk ke (ssh) salah satu tamu, dan tetap di sana ketika saya mem-boot host, mendapatkan baris-baris ini di terminal:
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.
alias shutdown ke skrip
, skrip harus memberikan semua parameter, dll ke shutdown asli yang dapat dieksekusi
NAMUN: skrip harus mencatat semua yang ini
last -x
)
cat /usr/adm/syslog
dalam kasus saya itu adalah perangkat lunak up mematikan server.
/etc/rc.d/7/upsd.boot
/var/log/acpid
: ternyata tombol power dipukul. Ada ide lain, di mana mencarinya jika acpid tidak memberikan petunjuk?