Apa perbedaan antara reboot, init 6 dan shutdown -r sekarang?


Jawaban:


83

Tidak ada perbedaan di dalamnya. Secara internal mereka melakukan hal yang persis sama:

  • rebootmenggunakan shutdownperintah (dengan -r switch). Perintah shutdown digunakan untuk mematikan semua proses yang berjalan, unmount semua sistem file dan akhirnya memberitahu kernel untuk mengeluarkan perintah daya ACPI. Sumbernya dapat ditemukan di sini . Dalam distro yang lebih tua, perintah reboot memaksa proses untuk keluar dengan mengeluarkan SIGKILLsinyal (masih ditemukan di sumber, dapat dipanggil dengan -fopsi), dalam kebanyakan distro baru-baru ini default ke yang lebih anggun dan ramah init init 1 -> shutdown -r. Ini memastikan bahwa daemon membersihkan diri sebelum dimatikan.

  • init 6memberitahu initproses untuk mematikan semua proses / daemon yang muncul seperti yang tertulis dalam file init (dalam urutan terbalik yang dimulai) dan terakhir memohon shutdown -r nowperintah untuk me-reboot mesin

Saat ini tidak ada banyak perbedaan karena kedua perintah melakukan hal yang persis sama, dan mereka menghormati skrip init yang digunakan untuk memulai layanan / daemon dengan menjalankan skrip shutdown untuk mereka. Kecuali untuk yang reboot -f -r nowdisebutkan di bawah ini

Ada sedikit penjelasan yang diambil dari manual mengapa reboot -ftidak aman:

  -f, --force
    Menghentikan paksa segera, matikan, reboot. Jangan hubungi sistem init.

Sunting:

Lupa menyebutkan, dalam distribusi RHEL mendatang Anda harus menggunakan systemctlperintah baru untuk mengeluarkan poweroff / reboot. Sebagaimana dinyatakan dalam halaman manual rebootdan shutdownmereka "perintah warisan yang tersedia hanya untuk kompatibilitas." dan systemctlmetode akan menjadi satu-satunya yang aman.


Kadang-kadang reboot saya hang di SIGTERM, apakah ada cara untuk mengetahui alasannya, dan apakah ada cara untuk mematikan boot ulang, sehingga jika terlalu lama, itu akan memaksa reboot?
CMCDragonkai

2
Versi RHEL itu tidak lagi "akan datang". ☺ Seperti dijelaskan lebih terinci di unix.stackexchange.com/a/196014/5132 , pada sistem operasi systemd tersebut tidak ada perbedaan sama sekali. Mereka bahkan bukan program yang berbeda.
JdeBP

Apakah Anda salah mengetik dengan mengatakan init 1 -> shutdown -r?
deed02392

Tautan Anda rusak.
whoKnows

8

Shutdown lebih disukai karena memungkinkan Anda untuk menentukan alasan tindakan drastis - sesuatu yang harus selalu Anda lakukan. Pesan akan direkam dalam log untuk anak cucu. Sebagai contoh:

shutdown -r now 'Kernel upgrade requires reboot'

Anda juga dapat melakukan reboot yang dijadwalkan - dengan menentukan sesuatu selain dari nowwaktu reboot:

shutdown -r 22:00 'Work around kernel memory leak'

Kemudian pengguna Anda akan mendapatkan pengingat berkala untuk keluar saat waktu semakin dekat - prosesnya akan lebih teratur dan profesional.


5

Pada kesatuan tradisional, rebootdan shutdown -r nowperintah yang sangat berbeda. Dalam penggunaan umum, reboothanya aman untuk digunakan dalam mode pengguna tunggal.

shutdown -r nowadalah metode kanonik untuk mematikan berbagai * nix dan lebih aman untuk digunakan secara umum dan secara fungsional setara dengan init 6.

init (8) reboot (8)


4

Di FreeBSD ada perbedaan antara rebootdan shutdown -r now. Dari reboothalaman manual:

Biasanya, utilitas shutdown (8) digunakan ketika sistem perlu dihentikan atau dihidupkan ulang, memberi pengguna peringatan lebih lanjut tentang malapetaka yang akan datang mereka dan dengan bersih menghentikan program tertentu.


1
Ini bukan pertanyaan BSD, seperti yang dibuktikan oleh tag pada pertanyaan dan penggunaan run-level System 5 di salah satu perintah. ☺
JdeBP

1
Saya tahu ini adalah pertanyaan Linux. Saya pikir seseorang mungkin berguna untuk mengetahui bahwa pada beberapa sistem lain perbedaannya.
Marián Černý
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.