Perilaku yang tepat dari ketiga perintah ini bervariasi dari sistem operasi ke sistem operasi.
Thorbjørn Ravn Andersen
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:
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.
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.
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.
Jawaban:
Tidak ada perbedaan di dalamnya. Secara internal mereka melakukan hal yang persis sama:
reboot
menggunakanshutdown
perintah (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 mengeluarkanSIGKILL
sinyal (masih ditemukan di sumber, dapat dipanggil dengan-f
opsi), dalam kebanyakan distro baru-baru ini default ke yang lebih anggun dan ramah initinit 1 -> shutdown -r
. Ini memastikan bahwa daemon membersihkan diri sebelum dimatikan.init 6
memberitahuinit
proses untuk mematikan semua proses / daemon yang muncul seperti yang tertulis dalam file init (dalam urutan terbalik yang dimulai) dan terakhir memohonshutdown -r now
perintah untuk me-reboot mesinSaat 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 now
disebutkan di bawah iniAda sedikit penjelasan yang diambil dari manual mengapa
reboot -f
tidak aman:Sunting:
Lupa menyebutkan, dalam distribusi RHEL mendatang Anda harus menggunakan
systemctl
perintah baru untuk mengeluarkan poweroff / reboot. Sebagaimana dinyatakan dalam halaman manualreboot
danshutdown
mereka "perintah warisan yang tersedia hanya untuk kompatibilitas." dansystemctl
metode akan menjadi satu-satunya yang aman.sumber
init 1 -> shutdown -r
?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
now
waktu 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.
sumber
Pada kesatuan tradisional,
reboot
danshutdown -r now
perintah yang sangat berbeda. Dalam penggunaan umum,reboot
hanya aman untuk digunakan dalam mode pengguna tunggal.shutdown -r now
adalah metode kanonik untuk mematikan berbagai * nix dan lebih aman untuk digunakan secara umum dan secara fungsional setara denganinit 6
.init (8) reboot (8)
sumber
Di FreeBSD ada perbedaan antara
reboot
danshutdown -r now
. Darireboot
halaman manual:sumber