sudo shutdown -h now
Saya tidak menyarankan untuk melakukan hal berikut jika Anda tidak dipaksa oleh alasan yang sangat khusus:
kill -SEGV 1 # should generate a core dumps and kernel panic
kill -ABRT 1 # should generate a core dumps and kernel panic
kill -9 1 # On old systems worked nowadays not
Ini kasar, brutal dan dapat dianggap setara dengan mencabut kabel listrik ...
Cara yang benar adalah shutdown -h now
dengan sudo
sebelumnya bila diperlukan.
Mungkin saya harus mengatakan dengan cara yang sah; lihat di bawah atau lebih baik tl;dr.
Beberapa kata lagi , alias Cerita, Bab I
Awalnya adalah init dan akan terus sampai akhir.
Seluruh Linux bergantung pada perhatian penuh kasih dari init . Meskipun demikian dan bukan tanpa rasa tidak berterima kasih, ada saat di mana Tuan yang baik pengguna root bisa mengkhianati cinta ini dan tiba-tiba kill
init dengan tak terbantahkan (-9
) memesan.
(Kitab Etiket mengatur untuk pengguna count, duke, dan marquise untuk memanggil sebelum sudo
).
Kemudian beberapa penyihir membuat jimat untuk melindungi init (dari Buku man 2 init
)
Satu-satunya sinyal yang dapat dikirim ke ID proses 1, proses init, adalah yang init telah menginstal penangan sinyal secara eksplisit. Hal ini dilakukan untuk memastikan sistem tidak dirobohkan secara tidak sengaja.
bahwa init akan menangani 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Jadi Tuan yang baik pengguna root pelajari berita dan ubah perintah di kill -ABRT 1
atau kill -SEGV 1
yang biasanya menghasilkan kepanikan kernel dan core dump.
Ini berfungsi karena init adalah proses pertama yang dijalankan dan mengambil nomor PID 1 .
Ini tidak aman, tidak bijaksana, dan Anda merasa ini pertanda buruk dan kutukan, tetapi jika Anda tidak dapat mengangkat tangan dan mencabutnya secara material...
Kutukan :itu tidak akan menulis di log, itu tidak akan membunuh semua proses &menunggu akhir mereka, itu tidak akan menulis di HDD dengan benar memperbarui inode juga tidak akan meng-unmount sistem file; bahkan tidak keberatan itu akan menyimpan opsi jendela grafis dan riwayat shell, dan banyak lainnya di luar imajinasi kita ... seperti yang kami katakan setara dengan mencabut power chord, atau baterai jika laptop.
Cara yang benar
Yang halal cara (benar) adalah dengan menggunakan shutdown
sudo shutdown -h now
shutdown mengatur agar sistem diturunkan dengan cara yang aman. Semua pengguna yang masuk akan diberi tahu bahwa sistem akan mati dan...
tetapi dengan -h now
mereka tidak akan punya cukup waktu untuk melakukan begitu banyak...
Beberapa kata lagi , alias Cerita, Bab II
Suatu ketika beberapa langkah logika terasa dari langit di atas orang-orang unix:
Setelah proses sistem dimatikan dan sistem file telah dilepas, sistem berhenti/mati atau reboot secara otomatis. Ini dilakukan dengan menggunakan perintah stop atau reboot, yang menyinkronkan perubahan ke disk dan kemudian melakukan penghentian/matikan atau reboot yang sebenarnya.
Memang, saat ini, kami tidak lagi mempercayai keberadaan ketiga Moirai dari dunia Linux , reboot
,poweroff
dan halt
:sains modern dari ls -l $(which poweroff halt reboot)
dan salah satu dari man reboot
, menyebarkan cahaya baru di zaman kegelapan ini dan mengungkapkan kepada kita bahwa hanya ada satu perintah sejati yang mem-parsing semua opsi mereka sehingga kita akhirnya bebas untuk meminta tindakan yang bertentangan dengan nama perintah mereka! (halt -p
atau reboot -p
untuk poweroff
, shutdown -r
untuk reboot
...)
Sekarang semuanya tampak jelas dan nyaman untuk semua, desas-desus mengklaim bahwa di dunia bawah dari perangkat sistemd sebuah revolusi dilakukan tanpa disadari oleh seluruh dunia luar . Berkat sepasukan pergeseran kompatibilitas mundur kami tidak memperhatikan sama sekali bahwa reboot, poweroff, stop dan bahkan telinit dan shutdown semuanya sudah terikat dengan raja baru systemctl . Tolong dengarkan keseluruhan cerita dari suara asli JdeBP The Bard karena saya tidak punya nafas lagi.
Jika Anda adalah pengikut kultus Ubuntu Anda mungkin masih tetap sadar untuk sementara waktu dari semua klaim tersebut.
Bumi tengah halt -f
, init
, telinit
, systemctl
Mencari solusi lebih cepat dari yang benar tetapi juga bijaksana.
systemctl --force --force poweroff # the most close to kill -9 1
systemctl --force poweroff # rough but still safe
sudo halt -f # rough
sudo telinit 0 # or 6 # safe
kill -SIGINT 1 # cause reboot as the reboot command
kill -SIGRTMIN+4 1 # cause shutdown as the halt command
Bahwa Anda berada di bawah systemd atau tidak, Anda harus dapat menghentikan komputer tanpa menjalankan semua prosedur shudown yang benar (dan lebih cepat):
-
halt -f
:menentukan opsi-f
(perhatikan bahwa Anda memerlukan-f
untuk menghindari prosedur mematikan) dengan perintah di atas, dengansudo poweroff -f
atau bahkan mungkin dengansudo reboot -f -h
.Memang bisa kita baca dariman reboot
(dan yang setara) tentang perlunya menentukan opsi-f
untuk menghindari memanggil shutdown:Saat dipanggil dengan --force atau ketika dalam runlevel 0 atau 6, alat ini memanggil panggilan sistem reboot(2) itu sendiri (dengan argumen REBOOTCOMMAND diteruskan) dan langsung mem-boot ulang sistem .
Jika tidak, ini hanya akan memanggil alat shutdown(8) dengan argumen yang sesuai tanpa meneruskan argumen REBOOTCOMMAND.
-f, --force
Tidak memanggil shutdown(8) dan sebagai gantinya melakukan tindakan aktual yang Anda harapkan dari nama . -
Apalagi Anda bisa menggunakan
telinit
(atauinit
langsung)sudo telinit 0 # or 6
untuk memberi tahu init agar mengubah runlevel... tetapi jika demikian, mengapa tidak membunuhnya secara langsung?
-
Di bawah systemd Anda dapat menggunakan opsi ganda yang tidak bijaksana
--force --force
systemctl --force --force poweroff
Membaca dari manual systemctl
-f, --kekuatan
Saat digunakan dengan mengaktifkan, timpa symlink konflik yang ada.
Saat digunakan denganhalt
,poweroff
,reboot
atau kexec, jalankan operasi yang dipilih tanpa mematikan semua unit. Namun, semua proses akan dimatikan secara paksa dan semua sistem file di-unmount atau di-remount hanya-baca. Oleh karena itu, ini merupakan opsi yang drastis tetapi relatif aman untuk meminta reboot segera. Jika --force ditentukan dua kali untuk operasi ini, mereka akan segera dieksekusi tanpa menghentikan proses apa pun atau melepaskan sistem file apa pun. Peringatan:menentukan --force dua kali dengan salah satu dari operasi ini dapat mengakibatkan hilangnya data.
Ps> Ambil inspirasi tentang varian dari ekor JdeBP The Bard .
Anda dapat segera mematikan mesin tanpa menyinkronkan disk dengan menulis "o" ke /proc/sysrq-trigger sebagai root.
Sebagai skrip shell akan terlihat seperti
#!/bin/sh
echo o >/proc/sysrq-trigger
Jika Anda memiliki izin pada /proc/sysrq-trigger, Anda tidak perlu mengaktifkannya melalui sysctl. Opsi itu hanya memengaruhi pemicuan dengan keyboard.
Saya tidak menyarankan melakukan ini pada mesin dengan sistem file apa pun yang ingin Anda baca nanti.
Saya menggunakan ini di Google Compute Engine untuk menyembelih instans bertemplate tepat sebelum tanda sepuluh menit guna memaksimalkan efektivitas biaya tugas cluster, ini berfungsi dengan baik.