Mengapa kita memerlukan fungsi reboot di binari yang berbeda?

12

Mengapa kita memerlukan fungsi reboot di binari yang berbeda?

shutdown -r

dan

reboot

Atau apakah mereka berbeda dalam sesuatu?

LanceBaynes
sumber
1
Lihat unix.stackexchange.com/questions/8690/… untuk perbedaannya - perintah dapat berperilaku berbeda tergantung pada sistem operasi (tetapi umumnya melakukan hal yang sama di Linux).
PleaseStand
Seperti disebutkan di bawah dan dijelaskan secara rinci di unix.stackexchange.com/a/196014/5132 , premis pertanyaan ini salah pada sistem operasi sistem Linux. Ini bukan binari yang berbeda pada sistem seperti itu.
JdeBP

Jawaban:

15

Kami tidak perlu keduanya, tetapi kami memiliki keduanya karena sejarah Unix, dan banyaknya versi.

Dari halaman manual masing-masing:

  • Utilitas shutdown muncul di 4.0BSD.
  • Utilitas reboot muncul di Versi 6 AT&T UNIX.

shutdown lebih bertujuan umum, dan lebih kuat, sedangkan reboot lebih ramah dan mudah diingat.

shutdown memungkinkan Anda untuk menentukan argumen temporal (untuk memulai kembali dalam 5 menit, misalnya) dan memungkinkan Anda untuk melakukan banyak hal selain reboot, termasuk:

  • Anda hanya dapat memulai pengguna dan tidak benar-benar mematikan
  • Anda dapat membuat sistem tidur daripada mematikan
  • Anda cukup mematikan tanpa me-reboot (seperti perintah berhenti)
  • Anda dapat memasukkan pesan peringatan khusus untuk pengguna di sistem

Namun, jika Anda hanya ingin me-reboot sistem sekarang, lebih mudah untuk mengetik rebootdaripada shutdown -r now.

iconoclast
sumber
1
Fakta menyenangkan: Beberapa versi shutdownpenggunaan sekarang sebagai default. Jangan mencoba untuk mendapatkan bantuan untuk shutdown shutdown -h, terutama tidak pada server di suatu tempat di pusat data.
Residuum
6

Kedua perintah melakukan sesuatu yang berbeda, namun mereka akhirnya dapat saling memanggil, itulah sebabnya mereka tampaknya melakukan hal yang sama!

rebootakan meminta kernel untuk memicu reboot perangkat keras. Namun, itu hanya akan melakukan ini jika sistem siap untuk dimatikan - semua daemon dan proses pengguna harus dihentikan, sistem file di-unmount, dll. Jadi ia memeriksa runlevel sistem, dan jika bukan 0 atau 6, maka ia akan benar-benar memanggil yang shutdownperintah untuk Anda.

shutdownmenyebabkan runlevel sistem diubah. Perubahan runlevel (ke 0 untuk berhenti atau 6 untuk reboot) menjalankan banyak skrip di /etc/rc0.d atau rc6.d yang mematikan daemon, unmount filesystems, dll. Akhirnya skrip ini memanggil haltatau reboot- kali ini sistem berada dalam runlevel yang benar dan mereka memerintahkan kernel untuk reboot (atau menghentikan).

Richard Downer
sumber
6

Selain apa yang ditulis iconoclast, ada perbedaan penting antara kedua program: shutdownada di /sbin, sementara rebootada di/usr/bin .

Mengapa ini penting, Anda bertanya? Saya akan memberitahu Anda.

Hal-hal di bawah ini /usradalah hal-hal yang tidak harus tersedia sampai sistem di-boot cukup jauh sehingga sistem berfungsi minimal. Direktori tingkat atas yang secara tradisional tidak pernah dipasang pada filesystem terpisah - /bin, /etc, /sbin, dll - yang diharapkan akan tersedia sementara sistem mencapai keadaan ini minimal berguna. Ada berbagai implikasi dari desain ini; misalnya, itu adalah gaya yang buruk untuk menulis klausa "stop" dari skrip init SysV yang menggunakan program di /usr/binjika ada alternatif di /binatau /sbin.

shutdownadalah utilitas utama, yang selalu tersedia. rebootadalah utilitas kenyamanan saja.

Warren Young
sumber
1
rebootada di /sbindalam Debian (dengan SysVinit) dan Ubuntu (dengan pemula).
Gilles 'SANGAT berhenti menjadi jahat'
Oke, jadi meta-jawaban: kenali sistemmu. :) Saya paling sering menggunakan CentOS.
Warren Young
Sama untuk Arch (systemd), keduanya di / sbin
daisy
Memang, pada systemd sistem operasi Linux tidak ada utilitas utama, seperti dengan systemd semua perintah ini (seperti yang dimiliki systemd doco) "kompatibilitas" perintah. Memang, premis dari pertanyaan itu salah. Mereka tidak berada dalam binari yang berbeda. Untuk detailnya, lihat unix.stackexchange.com/a/196014/5132 .
JdeBP