Apa perbedaan antara perintah Stop dan Shutdown?

97

Apa perbedaan antara perintah haltdan shutdown?

wassimans
sumber

Jawaban:

77

Secara umum, seseorang menggunakan shutdownperintah . Ini memungkinkan waktu tunda dan pesan peringatan sebelum shutdown atau reboot, yang penting untuk administrasi sistem server multiuser shell; ini dapat memberi pengguna pemberitahuan sebelumnya tentang waktu henti.

Dengan demikian, perintah shutdown harus digunakan seperti ini untuk menghentikan / mematikan komputer segera (setidaknya di Linux dan FreeBSD):

shutdown -h now

Atau untuk reboot dengan custom, peringatan 30 menit sebelumnya:

shutdown -r +30 "Planned software upgrades"

Setelah jeda, shutdownminta initdiubah ke runlevel 0 (berhenti) atau 6 (reboot). (Perhatikan bahwa menghilangkan -hatau -rakan menyebabkan sistem masuk ke mode pengguna tunggal (runlevel 1), yang membunuh sebagian besar proses sistem tetapi tidak benar-benar menghentikan sistem; itu masih memungkinkan administrator untuk tetap masuk sebagai root.)

Setelah proses sistem terbunuh dan sistem file telah dilepas, sistem berhenti / mati atau reboot secara otomatis. Ini dilakukan dengan menggunakan perintah haltataureboot , yang menyinkronkan perubahan ke disk dan kemudian melakukan penghentian / matikan yang sebenarnya atau reboot.

Di Linux, jika haltatau rebootdijalankan ketika sistem belum memulai proses shutdown, ia akan menjalankan shutdownperintah secara otomatis daripada langsung melakukan tindakan yang dimaksud. Namun, pada sistem seperti FreeBSD , perintah ini pertama-tama mencatat tindakan wtmpdan kemudian akan segera melakukan penghentian / reboot sendiri, tanpa terlebih dahulu membunuh proses atau melepas sistem file.

Tolong berdiri
sumber
Penjelasan yang bagus!
18
... tapi sekarang ketinggalan zaman. Pada sistem operasi sistem Linux, perintah ini ada (dalam kata-kata systemd doco) "hanya untuk kompatibilitas". Ada tidak terpisah halt, rebootdan shutdownprogram-program yang memanggil satu sama lain. Ada satu program tunggal, dengan banyak parser baris perintah yang menyalurkannya ke satu jalur kode secara internal. Juga tidak ada level run. Shutdown juga tidak masuk ke mode pengguna tunggal. Memang, mode pengguna tunggal itu sendiri telah berganti nama. Untuk detailnya, lihat unix.stackexchange.com/a/196014/5132 .
JdeBP
49

Masa lalu

Pada 1980-an, BSD memiliki halt, reboot, dan shutdown. Sistem 5 UNIX memiliki perangkat kompatibilitas BSD. Tetapi secara alami ia memiliki shutdownperintahnya sendiri yang berbeda ; dan tidak punya haltatau tidak rebootsama sekali. (Beberapa varian Sistem 5 memiliki hal-hal seperti milik SCO XENIX haltsys.)

BSD haltdan rebootperintah adalah level rendah, drastis, dan langsung. The perhatian cara untuk mematikan sistem BSD adalah shutdownperintah, yang melakukan semua hal yang satu mengharapkan terjadi: wallpesan ke pengguna, layanan anggun tewas, entri log ditulis, login dinonaktifkan, dan sebagainya.

Sementara BSD sebagian besar di mana kebijaksanaan yang diterima berasal bahwa " shutdowneksekutif halt/ reboot", dan bahwa yang terakhir itu harus digunakan dengan hati-hati; itu adalah System 5 dunia di mana orang belajar kebiasaan sebaliknya yang halt/ rebootitu shorthands hanya berguna dan tidak lebih: /usr/ucb/halt, dari "BSD Kompatibilitas Package", tidak berbeda berlaku untuk shutdown -h. Mereka berdua akhirnya melakukannya init 0.

Bacaan lebih lanjut

Hari ini

Saat ini, kami memiliki serangkaian perkakas manajemen sistem yang memungkinkan. BSD masih memiliki perangkat mereka, meskipun dibersihkan dari kemungkinan AT&Tisme di tahun 1990-an. Miquel van Smoorenburg pada tahun 1992 (kembali) menulis Linux init+ rc, dan alat-alat yang terkait, yang sekarang orang sebut sebagai "System 5 init", meskipun sebenarnya bukan perangkat lunak dari UNIX System 5 (dan bukan hanya init). Ada juga systemd , pemula , dan nosh , yang masing-masing memiliki implementasi sendiri dari halt, reboot, fasthalt, fastboot, dan sebagainya.

Tooletset juga telah tumbuh dan berubah. Sekarang ada poweroffperintah, tidak ada di sistem operasi 1980-an karena Central Processing Unit pada kebanyakan mesin kontemporer tidak memiliki cara untuk mengendalikan pasokan listrik mereka. Khususnya, perangkat Linux memiliki perintah BSD; tetapi seperti alat kompatibilitas BSD pada Sistem 5 UNIX, mereka tidak tepat bekerja dan hal-hal sebagian besar telah diratakan.

Mendatarkan ini telah membawa kita ke titik di mana haltdan shutdownyang sebagian besar sama. Tetapi detail yang tepat bervariasi dari set alat ke set alat, dan mekanisme masing-masing set alat sedikit berbeda.

Hal ini juga membawa kami ke posisi yang sedikit memalukan di mana set perintah ini telah menjadi begitu dihiasi dengan opsi kompatibilitas yang sekarang memungkinkan orang untuk memberikan komputer petunjuk saling bertentangan seperti reboot --haltdan poweroff --reboot, seperti yang saya dicatat dalam halaman manual untuk nosh yang halt, fasthalt, reboot, fastboot, dan poweroffperintah. ☺

Toold systemd

halt, reboot, poweroff, telinit, Dan shutdownadalah semua satu program . Ini sebenarnya adalah systemctlprogram systemd sendiri . Ini memiliki beberapa parser baris perintah untuk berbagai sintaks baris perintah dari perintah-perintah itu, serta perintahnya sendiri, tetapi setelah itu sebagian besar menyalurkannya ke dalam satu jalur kode secara internal. Tidak ada perbedaan antara menggunakan haltdan opsi perintahnya untuk memicu suatu tindakan dan menggunakan shutdowndan opsi perintahnya untuk memicu tindakan yang sama.

systemd tidak menganggap mode penyelamatan (yang oleh orang-orang systemd telah berganti nama menjadi mode pengguna tunggal ) sebagai keadaan sistem mati, dan itu tidak dapat dijangkau dengan perintah-perintah ini. Opsi-kurang shutdown nowsama dengan poweroff.

Bacaan lebih lanjut:

BSD

BSD sebagian besar mempertahankan semantik tahun 1980-an. haltdan shutdowndengan demikian sangat tidak setara dalam perangkat mereka. haltdan rebootmerupakan satu program tunggal; dan masih level rendah, langsung, dan drastis. Sedangkan shutdowndan poweroff, juga satu program tunggal, melakukan semua hal yang dipertimbangkan seperti shutdown terjadwal, menulis wallpesan, aksi logging, menonaktifkan login, dan sebagainya.

Dalam BSD toolets, shutdown/ poweroffbiasanya meminta halt/ rebootuntuk memberlakukan perubahan status sistem akhir. (Sering saat ini salah) menerima kebijaksanaan yang " shutdowneksekutif halt/ reboot" pada kenyataannya masih berpegang pada NetBSD dan OpenBSD. Tetapi pada FreeBSD / TrueOS / DragonFlyBSD itu hanya terjadi jika -oopsi digunakan. Pada BSD ini, kedua program ini biasanya memberlakukan akhir perubahan sistem negara dengan mengirimkan berbagai sinyal ( INT, USR1, dan USR2) untuk memproses # 1. initapakah semua sistem manajemen negara pada sistem ini.

Pada semua dari mereka, pilihan-kurang shutdown nowtidak sama dengan salah halt, rebootatau poweroff. Ini transisi ke mode pengguna tunggal BSD , dari mana seseorang dapat beralih kembali ke mode multi-pengguna .

Bacaan lebih lanjut:

Toolset nosh

Dalam nosh sistem manajemen toolset, halt, fasthalt, poweroff, fastpoweroff, reboot, dan fastbootsemua satu program. Ini adalah shim kompatibilitas mundur yang biasanya hanya berantai shutdown, kebalikan dari kebijaksanaan yang diterima. The --forcepilihan membuatnya rantai untuk system-controlgantinya.

Jadi tidak ada perbedaan (absen --force) antara haltperintah dan shutdownperintah (dengan opsi yang setara) di set alat ini, karena set ini "BSD / System 5 kompatibilitas" perintah hanyalah lapisan shim tipis di atas shutdown.

Bacaan lebih lanjut:

Toolset pemula

Seperti halnya nosh, dalam perangkat manajemen sistem pemula, kebalikan dari kebijaksanaan BSD yang diterima berlaku. halt,, rebootdan poweroffsemuanya adalah satu program, yang biasanya berantai ke shutdown; kecuali jika --forceopsi tersebut digunakan, yang membuatnya membuat reboot()system call itu sendiri.

Jadi, sekali lagi, tidak ada perbedaan (absen --force) antara haltperintah dan dan shutdownperintah (dengan opsi yang setara) di perangkat ini. Juga lagi, pilihan-kurang shutdown now(yang tidak ada halt, rebootatau poweroffdapat berakhir memanggil mereka semua pilihan set) membawa sistem ke mode single user daripada mematikannya.

Bacaan lebih lanjut:

Linux System 5 init+ rctoolset

Sekali lagi, dalam perangkat ini, kebalikan dari kebijaksanaan BSD yang diterima berlaku dan haltdan reboothanya rantai ke shutdown- kecuali sistem sudah dalam poweroff atau menghentikan "run-level", dalam hal ini perintah ini benar-benar memberlakukan perubahan status sistem akhir. shutdownpada gilirannya rantai ke init.

Jadi, sekali lagi, tidak ada perbedaan (kecuali sistem sudah sebagian besar dimatikan) antara haltdan shutdownkarena yang pertama hanya memanggil yang terakhir. Dan ya, sekali lagi, pilihan-kurang shutdown now(yang tidak ada halt, rebootatau poweroffdapat berakhir memanggil mereka semua pilihan set) membawa sistem ke mode single user daripada mematikannya.

JdeBP
sumber
Inilah sebabnya mengapa sistem pemungutan suara tidak berfungsi ketika 80% pemilih
ychaouche
Anda mengatakan bahwa: "berhenti dan reboot adalah satu program tunggal, dan masih level rendah, langsung, dan drastis", yang tampaknya tidak menjadi masalah. Saya mengutip halaman berhenti manual dari dragonflyBSD yang mengatakan: Utilitas berhenti dan reboot flush cache sistem file ke disk, mengirim semua proses yang berjalan SIGTERM (dan kemudian SIGKILL) dan, masing-masing, menghentikan atau memulai kembali sistem. Tindakan dicatat, termasuk memasukkan catatan shutdown ke file wtmp (5). Lihat: dragonflybsd.org/cgi/web-man?command=halt§ion=ANY
ychaouche
Sekarang, pergilah dan bacalah jawabannya lagi, untuk serangkaian hal yang sudah secara eksplisit diberikan (dua kali lipat) yang tidak ada dalam daftar itu; yang juga dijabarkan dalam manual administrator sistem BSD yang beragam.
JdeBP
daftar apa @JdeBP?
ychaouche
11

Saya menduga ini agak tergantung pada versi UNIX / Linux yang Anda gunakan. Pada Centos (dan saya berharap Linux modern lainnya) menghentikan panggilan shutdown (asalkan Anda tidak berada di runlevel 0 atau 6) sehingga sistem Anda akan dimatikan secara bersih. Pada Solaris 10 berhenti lebih brutal, itu hanya menghapus cache disk dan mematikan sistem - tidak ada upaya untuk menjalankan skrip atau mematikan fasilitas smf .


sumber
2

Bagi mereka yang menggunakan AWS EC2: pada AWS shutdown berhenti instance, ketika halt mengakhiri itu.

dveim
sumber
Apa perbedaan antara berhenti dan berhenti ?
roaima
Itu topik yang sama sekali berbeda, berada di luar sini, itu sebabnya saya tidak menyebutkannya. Tetapi Anda dapat melihat pada docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
dveim
1
Jadi dalam jawaban Anda, Anda mengatakan bahwa stop melakukan apa yang dikatakan, dan menghentikan instance, sedangkan stop (atau dalam terminologi alternatif Anda, terminate ) menghentikan instance dan menghapusnya.
roaima
Iya. Tapi itu khusus AWS.
dveim
Ah. Saya melihat. OP belum memberikan konteks. Kamu punya. Terima kasih.
roaima
0

Di linux, "halt" dan "reboot" adalah alias dari perintah shutdown - shutdown -hdan shutdown -rmasing - masing. Bareword shutdown umumnya mengasumsikan -h.

Shadur
sumber
10
Mereka tidak aliasesdalam arti alias shell, tapi ya, haltpada dasarnya hanya panggilan shutdown -hdan rebootlari shutdown -r. Catatan bahwa jika Anda lulus -f(kekuatan) pilihan untuk haltatau reboot, shutdownyang tidak disebut.
Mikel
Sebenarnya, meskipun masih salah, pada sistem operasi systemd, deskripsi Shadur di sini lebih mendekati kebenaran daripada koreksi Mikel. Tidak ada "A just calls B". Itu semua adalah cara alternatif untuk menjalankan satu program tunggal , seperti yang dijelaskan secara lebih rinci di unix.stackexchange.com/a/196014/5132 .
JdeBP
@ JdeBP Kembali ketika saya menulis systemd ini keluar selama kurang dari satu tahun dan saya bahkan tidak pernah mendengarnya. :)
Shadur
1
@ JdeBP Saya menyamakan mereka dengan, katakanlah, sendmailperintah pada titik ini - Seperti dengan MTA, sebenarnya tidak masalah sistem init apa yang Anda gunakan karena semuanya akan mengenali keduanya shutdowndan haltkarenanya.
Shadur
1
Sebenarnya, itu penting; karena ada perbedaan yang halus, dan memang tidak halus, antara perangkat. Ironisnya, itu juga halnya dengan sendmailperintah. Ini seperti sendmailperintah, tetapi tidak dengan cara yang Anda pikirkan.
JdeBP