Apakah reboot sama dengan init 6?

22

Apakah reboot sama dengan init 6 untuk ubuntu?

Saya menjalankan Ubuntu 12,04 di Amazon EC2. Ketika dimasukkan ke dalam kotak saya bisa mengetik runleveldan saya mendapatkan:

N 2

Melihat man rebootsaya melihat bahwa:

Ketika dipanggil dengan --force atau ketika di runlevel 0 atau 6, alat ini memanggil reboot (2) system call itu sendiri dan langsung reboot sistem. Kalau tidak, ini hanya memanggil alat shutdown (8) dengan argumen yang sesuai.

Jika saya membaca man shutdown 8saya melihat:

shutdown mengatur agar sistem diturunkan dengan cara yang aman. Semua pengguna yang masuk diberitahu bahwa sistem akan turun dan, dalam lima menit terakhir TIME, login baru dicegah.

Pemahaman dasar saya tentang perbedaan antara rebootdan init 6adalah:

  • Pada distro lain dan mungkin distro lama reboothanya akan melepas disk dan pada dasarnya jentikan saklar daya tanpa menjalankan skrip shutdown
  • init 6akan menjalankan semua skrip shutdown /etc/init/rc.*karena mengurangi runlevel sistem
  • Pada versi Ubuntu yang lebih baru, rebootperintah tanpa --forceatau -fakan menjalankan perintah mematikan yang pada dasarnya akan melakukan hal yang samainit 6
  • Mungkin lebih baik untuk membiasakan menggunakan init 6daripada rebootlebih aman dan akan bekerja lebih baik lintas-distro, tetapi perilaku default reboottelah diubah untuk mencoba dan mencegah kesalahan / dataloss jika seseorang menggunakannya.

Apakah itu benar? Jika tidak, apa yang saya lewatkan?

cwd
sumber

Jawaban:

23

Sebenarnya tidak pernah ada alasan kuat untuk menggunakannya init 6sebagai ganti reboot, kecuali:

  • Untuk beberapa alasan Anda kehilangan rebootexecutable, atau
  • Anda sengaja mencoba menghindari memberi tahu pengguna bahwa sistem sedang down.

reboot(selama Anda tidak lari reboot --force) sebenarnya adalah cara "lunak" untuk mematikan.

Mempertimbangkan:

init 6akan menjalankan semua skrip shutdown /etc/init/rc.*karena mengurangi runlevel sistem

Tapi yang rebootperintah , disebut tanpa satu --forcebendera, hanya langsung reboot sistem (melalui satu rebootsystem call ) ketika salah satu dari dua situasi ini berlaku:

  • Sistem berada dalam runlevel 0 (mode pengguna tunggal), sehingga tidak ada pengurangan runlevel yang dapat terjadi, sehingga tidak ada skrip shutdown yang dijalankan secara otomatis.
  • Sistemnya ada di runlevel 6. Apa init 6fungsinya untuk meletakkan sistem di runlevel 6. Sekali lagi, tidak ada yang berjalan init 6akan melakukan itu, menjalankan rebootperintah tidak akan dilakukan.

Kalau tidak, sudo rebootsetara dengan sudo shutdown -r now. Ini melakukan semua hal yang menyenangkan sudo init 6, tetapi juga:

  • memberi tahu pengguna bahwa sistem akan turun.
  • mencegah login baru (walaupun mereka mungkin juga tidak akan berhasil).
  • lebih intuitif dan mendokumentasikan diri daripadasudo init 6 .

Jika Anda menggunakan sistem dengan hanya login, dan hanya login lokal, tidak ada salahnya menggunakan init 6reboot. Jika itu yang Anda pilih untuk reboot, maka tentu saja, silakan - Anda tidak merugikan apa pun dengan melakukannya. Tetapi tidak ada yang lebih objektif daripada melakukannya dengan cara ini.

initDokumentasi sendiri mengatakan itu bukan cara normal untuk mematikan atau me-reboot sistem. Pertimbangkan bahwa ketika initdijalankan oleh pengguna (seperti saat Anda menjalankan sudo init 6), itu benar-benar berjalan telinit(lihat man init). telinitadalah apa yang sebenarnya mengubah runlevel. Dan man telinitmemberi tahu kita:

Biasanya Anda akan menggunakan alat shutdown (8) untuk menghentikan atau mem-boot ulang sistem, atau membawanya ke mode single-user.

Eliah Kagan
sumber
Saya memiliki Alienware X51 dell pc, di mana saya telah menginstal Ubuntu 13.04 dan kernel 3.11. Ketika saya melakukan $ init 6, itu reboot dan kadang-kadang BIOS terus ditampilkan selamanya. Apakah itu karena saya menggunakan init 6 dan tidak me-reboot perintah?
1
@YumYumYum Saya tidak mengerti mengapa menggunakan init 6akan menyebabkan ini. Saat Anda menggunakan rebootbukan init 6, apakah selalu melewati BIOS?
Eliah Kagan
1
Saya telah memperbarui firmware BIOS dari A00 ke A02, sejak itu reboot atau init 6 keduanya berfungsi sehingga sepertinya masalah BIOS. Terima kasih.
Menjalankan rebootpenghentian terkadang di Ubuntu Server 14.02 saya hanya untuk satu pengguna dan login lokal. Apakah aman saya selalu syncdiikuti oleh reboot -f?
user3549648