Tampaknya tidak ada cara untuk mencatat data ini ke file. Untuk proses boot, ada bootlogd
paket yang membuat file /var/log/boot
, tetapi tidak ada untuk proses shutdown / reboot. Sejauh yang saya bisa lihat tidak ada cara untuk login dengan rsyslog
baik, dan bahkan jika ada, ada pesan yang dicetak setelah rsyslog
dihentikan. Bagian dari proses shutdown / reboot saya adalah untuk me-remount rootfs readonly dan umount yang lainnya, setelah ini logging ke file yang masih ada di boot berikutnya hampir tidak mungkin.
Cara termudah yang dapat saya lihat untuk melihat pesan adalah dengan mengedit /etc/init.d/halt
dan / atau /etc/init.d/reboot
skrip untuk berhenti sesaat sebelum aktual halt
/ reboot
. Untuk halt
skrip, jalankan perintah sudoedit /etc/init.d/halt
(atau gunakan editor GUI) dan cari baris yang benar-benar berhenti. Bagi saya ini adalah garis:
halt -d -f $netdown $poweroff $hddown
Kalau tidak, itu harus di akhir do_stop
fungsi dan satu-satunya baris yang memanggil halt
perintah. Setelah Anda menemukan garis, cukup masukkan baris baru di atas dengan yang berikut:
read -p "Press enter to halt" reply
Simpan file dan keluar. Sekarang ketika Anda mematikan, sistem akan berhenti sampai Anda menekan enter (atau CTRL-C, CTRL-D, dll). Anda dapat membaca pesan yang dicetak di layar. Jika ada lebih dari satu layar penuh teks, Anda dapat melihat terminal scrollback dengan menekan Shift+PgUp
. Jika ini masih belum cukup, ada cara untuk meningkatkan ukuran buffer scrollback (mungkin pertanyaan yang berbeda).
Untuk melakukan hal yang sama ketika sistem reboot, Anda harus mengedit /etc/init.d/reboot
file. Perintah yang digunakan di sini tentu saja reboot
bertentangan halt
dan harus lagi berada di akhir do_stop
fungsi. Bagi saya, intinya adalah:
reboot -d -f -i
Sekali lagi cukup masukkan berikut ini pada baris baru di atas:
read -p "Press enter to reboot" reply
Perhatikan juga bahwa file-file ini terdaftar sebagai paket untuk initscripts
paket. Pengeditan ini tidak akan musnah secara default ketika paket ditingkatkan, meskipun mereka akan menyebabkan konflik.
Solusi yang lebih lengkap adalah dengan menggunakan skrip berikut:
#! /bin/sh
### BEGIN INIT INFO
# Provides: pause_hook
# Required-Start:
# Required-Stop: halt reboot
# Default-Start:
# Default-Stop: 0 6
# X-Stop-After: umountroot
# X-Interactive: true
# Short-Description: Pause before halt or reboot
# Description:
### END INIT INFO
do_stop () {
[ -r /etc/pause_hook.conf ] && . /etc/pause_hook.conf
[ "$PAUSE_HOOK_ENABLED" = true ] && read -p "Press enter to continue" reply
}
case "$1" in
start)
# No-op
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
Ini harus ditempatkan di /etc/init.d/pause_hook
dan dapat diaktifkan untuk berjalan di shutdown / reboot dengan perintah berikut:
sudo update-rc.d pause_hook defaults
Untuk mengaktifkan kait yang sebenarnya, buat file yang /etc/pause_hook.conf
berisi baris:
PAUSE_HOOK_ENABLED=true
Proses shutdown / reboot sekarang harus berhenti sesaat sebelum skrip halt
atau reboot
dipanggil, memberikan waktu untuk melihat pesan. Itu juga dapat dengan mudah dinonaktifkan / diaktifkan kembali dengan mengomentari / membatalkan perintah pada baris yang diaktifkan /etc/pause_hook.conf
. Juga tidak akan ada dpkg
konflik conffile selama peningkatan dengan cara ini.