Saya baru-baru ini harus berurusan dengan klien / server NFS sial, terputus-putus tergantung masalah titik. Ketika masalah terjadi pada klien saya tidak bisa melepas, bersama dengan beberapa perilaku aneh lainnya. Satu-satunya resolusi langsung yang saya miliki hingga saat ini adalah me-reboot kotak klien.
Tetapi shutdown -r now
tidak bekerja sama sekali. Sejak saya temukan reboot -f
, yang melakukan reboot sistem. Mengapa? Saya telah membaca halaman manual tetapi sepertinya tidak ada yang menjawab pertanyaan saya.
Mengapa shutdown -r now
berperilaku berbeda dari reboot -f
?
(Saya terus menyelesaikan masalah NFS, tapi itu bukan pertanyaan saya di sini.)
shutdown
menginstruksikaninit
untuk memulai prosedur mematikan, yang melibatkan membiarkan pengguna yang masuk tahu bahwa sistem dimatikan, membunuh semua proses dengan anggun, melepas dan menyinkronkan drive, dan sebagainya. Anda terhenti di sini karena proses macet menunggu IO cenderung sangat sulit untuk dibunuh, dan NFS mount Anda yang macet tidak dapat dilepas.reboot -f
, di sisi lain, segera reboot server tanpa melakukan semua itu. (reboot
adalahinit
panggilan program untuk mematikan server. Tanpa-f
tanda, itu akan memeriksa untuk melihat apakahinit
mengira sedang me-reboot, dan jika tidak, ia akan memanggilshutdown
untuk memulai proses).sumber
Karena 'reboot -f' tidak masuk ke runlevel 0 - ia memberi tahu OS untuk menginisialisasi ulang CPU secara langsung. Halaman manual di kotak Linux terdekat saya mengatakan:
Halaman manual shutdown menjelaskan lebih lanjut.
sumber
Jika Anda menggunakan
intr
opsi pada NFS mounts Anda, makashutdown -r now
harus dapat mematikan proses yang menunggu di NFS IO untuk menyelesaikan. Ini dapat menyebabkan file korupsi, tetapi kemungkinan tidak lebih darishutdown -f
menciptakan.sumber