“Reboot” atau “shutdown -r now”: perintah restart apa yang lebih aman?

50

Kami memiliki di organisasi kami sekitar ~ 500 mesin RedHat Linux.

Di semua mesin kami menginstal aplikasi dan layanan di bawah /etc/init.d, dan server RAC oracle. Kami bermaksud melakukan pembaruan yum di semua mesin dan setelah itu melakukan boot ulang.

Jadi saya bertanya-tanya perintah apa yang lebih aman:

reboot

atau

shutdown -r now
dandan
sumber
1
kami memiliki semua jenis - seperti redhat
4,5,6,7
6
Mari kita mundur: Mengapa Anda berpikir mungkin ada perbedaan dalam keamanan?
underscore_d
2
@underscore_d: tidak masuk akal untuk berpikir bahwa seseorang mungkin merupakan perintah "hanya penggunaan internal" yang tidak melakukan semua langkah-langkah shutdown bersih yang sama. Misalnya mungkin yang satu menggunakan yang lain setelah melakukan beberapa langkah pembersihan awal. Tentu saja, halaman manual menjelaskan bahwa rebootitu hanya perintah warisan dan masih ada hanya untuk compat mundur.
Peter Cordes
1
@pengetahuan Sebuah pertanyaan tidak dapat merupakan duplikat dari sebuah pertanyaan di situs yang berbeda ..
Gila

Jawaban:

50

Untuk sistem Red Hat, tidak ada perbedaan fungsional antara rebootdan shutdown -r now.

Lakukan apa pun yang lebih mudah bagi Anda.

putih
sumber
13
Tapi satu membuat Anda mengetik lebih banyak dan pada dasarnya 'lebih dingin'!
Gila
Satu membutuhkan akses pengguna super, yang lain dapat dieksekusi oleh pengguna mana pun (kecuali dibatasi) dari sesi X.
Burhan Khalid
2
@ BurhanKhalid Jika Anda memiliki orang acak yang masuk ke sesi X di server, maka Anda mungkin memiliki masalah lebih besar daripada bertanya-tanya mana dari dua perintah yang "lebih aman".
CVn
1
Setidaknya pada Debian (meskipun saya akan dengan mudah mengakui bahwa saya tidak tahu tentang Red Hat, tetapi jawaban Janne Pikkarainen menunjukkan itu mungkin serupa tetapi berbeda) halt,, rebootdan powerofftidak menerima pesan alasan atau waktu, seperti dijelaskan Mikhail T. . Saya pikir saya akan mempertimbangkan satu alat untuk dapat melakukan sesuatu yang lain tidak memungkinkan untuk menjadi "perbedaan fungsional".
CVn
88

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 boot ulang terjadwal - dengan menentukan sesuatu selain nowsebagai waktu boot ulang:

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

Kemudian pengguna Anda akan mendapatkan pengingat berkala untuk keluar dan seterusnya - prosesnya akan lebih teratur dan profesional.

Mikhail T.
sumber
13

Jika Anda melihatnya, di RHEL 7 keduanya /sbin/shutdowndan /sbin/rebootsebenarnya hanya symlinks ke systemctlperintah systemd . Jadi, gunakan apa pun yang Anda inginkan. Tidak ada perbedaan fungsional seperti yang dikatakan ewwhite, bahkan pada rilis RHEL sebelumnya yang belum menggunakan systemd.

Janne Pikkarainen
sumber
12
Saya tidak menemukan argumen ini sangat menarik: itu jelas bahwa /sbin/shutdowndan /sbin/rebootjangan tidak berperilaku sama dalam semua kasus (khususnya: /sbin/shutdown! Tidak restart secara default), jadi jika mereka symlinked ke executable yang sama, maka yang dieksekusi keharusan memeriksa ARGV[0]dan menyesuaikan perilakunya sesuai. Meskipun hal itu tentu saja mengurangi risiko perbedaan yang tidak disengaja , itu bukan bukti kuat bahwa tidak ada perbedaan fungsional yang disengaja yang mungkin ingin diketahui OP.
ruakh
3
Waspadalah dengan asumsi symlink menyiratkan kesetaraan, terutama jika ada nama yang berbeda yang terlibat.
mckenzm
ruakh benar - pikirkan sebentar, meskipun rebootdisinkronkan dengan systemctl, Anda tidak dapat menggunakan misalnya reboot status whatever.serviceseperti yang Anda lakukan dengan yang terakhir, bukan?
grawity
9

Menggunakan rebootlebih aman.

Menggunakan rebootmaksud Anda jelas dan tidak ada cara untuk salah ketik untuk hal lain seperti shutdown -t nowyang dapat menyebabkan beberapa sakit kepala jika Anda menggunakan pada server jauh dengan kontrol terbatas.

Antzi
sumber
2
Jawaban IMHO diremehkan. Sangat sering kita lupa betapa pentingnya untuk membuat niat menjadi jelas dan berapa banyak waktu dan makian kata-kata yang dihemat dalam jangka panjang!
RoughTomato
1

Untuk RHEL modern, Anda disarankan untuk menggunakan perintah systemctl seperti dirangkum di sini : [terkini] Distribusi RHEL harus menggunakan perintah systemctl baru untuk mengeluarkan poweroff / reboot. Sebagaimana dinyatakan dalam halaman reboot dan shutdown mereka adalah "perintah warisan yang tersedia hanya untuk kompatibilitas."

Namun, jika Anda menggunakan banyak distribusi yang berbeda, atau distribusi dari berbagai vintages, maka mungkin bertahan shutdown -r now 'reason for shutdown'.

Alasan utama untuk menggunakan rebootadalah untuk menghindari risiko lupa menambahkan -r ketika menggunakan shutdown -rpada mesin jarak jauh, yang dengan mudah dapat mengakibatkan tidak dapat login lagi dan harus menggunakan admin jarak jauh (jika tersedia) untuk memulai kembali mesin.

Robocat
sumber
0

Sistem yang lebih tua jelas membuat perbedaan antara shutdowndan reboot. Yang terakhir tidak akan mematikan layanan atau bahkan harus menyinkronkan buffer disk. Dalam lingkungan yang heterogen - atau untuk menghindari preseden yang bisa berbahaya di masa depan ketika menghadapi implementasi * ix lainnya - ada nilai dalam membiasakan diri shutdown.

pengguna19151
sumber