Apakah ada perintah / program di mana saya dapat mematikan sistem saya secara instan (1 hingga 5 detik)?
Pembaruan (2015): Terima kasih kepada mereka yang telah menyarankan untuk mematikan menggunakan soket daya. : D
Pembaruan (2016): @technophile menyarankan agar saya menambahkan beberapa informasi ke pertanyaan yang menjelaskan sifat masalah - terutama skenario mana yang saya coba selesaikan. Inilah skenario yang diajukan pertanyaan ini beberapa tahun lalu.
Kami sedang membangun sistem untuk digunakan di ruang publik seperti (bandara, hotel dll). Orang-orang dapat menggunakan sistem itu untuk berselancar di internet, memeriksa email mereka atau bahkan pemesanan dll. Menggunakan kartu kredit mereka. Sistem yang dibangun memastikan bahwa pengguna kedua sama sekali tidak dapat memperoleh informasi (email, kartu kredit) dari pengguna sebelumnya dari sistem itu bahkan jika perangkat lunak semacam keyloggers entah bagaimana dapat diinstal. Bagaimana sistem memastikannya? Nah, detail tidak dapat dibagikan karena itu bukan info publik. tapi kami mengembangkan cara untuk selalu memiliki Sistem Operasi baru (seolah-olah itu baru diinstal) untuk pengguna baru sistem. Satu-satunya masalah adalah bahwa kami harus mematikan mesin dan membawanya lagi segera setelah pengguna pertama meninggalkan mesin.
Dan saya ingin shutdown itu menjadi cepat cepat (- itu sebabnya pertanyaannya) dan boot berikutnya menjadi sangat cepat juga untuk yang saya teliti dan mencoba sejumlah besar distribusi Linux dari Damn Small Linux ke Slackware ke Debian dll. Tetapi itu adalah cerita terpisah.
sumber
Jawaban:
sumber
Saya tidak menyarankan untuk melakukan hal berikut jika Anda tidak dipaksa oleh alasan yang sangat khusus:
Itu kasar, brutal dan dapat dianggap setara dengan mencabut kabel listrik ...
Cara yang benar adalah
shutdown -h now
dengansudo
sebelum saat dibutuhkan.Mungkin saya harus mengatakan halal ; lihat di bawah atau lebih baik tl; dr.
Beberapa kata lagi , alias Ceritanya, Bab I
Pada awalnya adalah init dan itu akan sampai akhir.
Seluruh Linux tergantung dari kasih sayang dari init [ 1 ] [ 2 ] . Meskipun demikian dan bukan tanpa rasa terima kasih dalam jumlah tertentu, ada saat di mana pengguna root Lord yang baik dapat mengkhianati cinta ini dan tiba-tiba
kill
init dengan perintah (-9
) yang tak terbantahkan .( Kitab Etiket mengatur penghitungan, adipati dan marquise pengguna untuk meminta sebelum a
sudo
).Kemudian beberapa penyihir membuat mantra untuk melindungi init (dari Kitab
man 2 init
)(Mata-mata kami melaporkan [ U1 ] bahwa init akan menangani 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Jadi pengguna root Lord yang baik mempelajari berita dan mengubah perintah di
kill -ABRT 1
ataukill -SEGV 1
yang biasanya menghasilkan sebuah kernel panik dan dump inti.Ini bekerja karena init adalah proses pertama yang dijalankan dan mengambil nomor PID 1 [ 2b ] .
Ini tidak aman, tidak bijaksana dan Anda merasa itu adalah pertanda pertanda buruk dan kutukan tetapi jika Anda tidak bisa secara material meletakkan tangan dan mencabutnya ...
Kutukan : itu tidak akan menulis di log, tidak akan membunuh semua proses & menunggu berakhirnya, itu tidak akan menulis pada HDD dengan benar memperbarui inode juga tidak akan meng-unmount sistem file; bahkan tidak keberatan itu akan menyimpan opsi jendela grafis dan sejarah shell, dan banyak lainnya di luar imajinasi kita ... seperti yang kita katakan setara dengan mencabut chord daya, atau baterai jika laptop.
Cara yang benar
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam.", Templar ksatria moto.
Cara yang sah (benar) adalah dengan menggunakan
shutdown
[ 3 ]tetapi dengan
-h now
mereka tidak akan memiliki cukup waktu untuk melakukan begitu banyak ...Beberapa kata lagi , alias Ceritanya, Bab II
Suatu ketika beberapa langkah logis terasa dari langit di atas orang-orang unix:
Memang, saat ini, kita tidak percaya lagi pada adanya tiga Moirai [ 5 ] dari dunia Linux ,
reboot
,poweroff
danhalt
[ 6 ] : yang ilmu pengetahuan modern darils -l $(which poweroff halt reboot)
dan salahman reboot
, menyebar baru cahaya pada zaman kegelapan ini dan mengungkapkan kami bahwa hanya ada satu perintah yang benar yang mem-parsing semua opsi mereka sehingga kita akhirnya bebas untuk meminta tindakan yang bertentangan dengan nama perintah mereka! (halt -p
ataureboot -p
untukpoweroff
,shutdown -r
untukreboot
...)Sekarang semua tampak jelas dan nyaman untuk semua, rumor mengklaim [ 7 ] yang di bawah dari toolset systemd [ 8 ] revolusi dilakukan meninggalkan menyadari seluruh overworld . Berkat pasukan kompatibilitas mundur kita tidak melihat sama sekali bahwa reboot, poweroff, berhenti [ 6 ] dan bahkan telinit [ 9 ] dan shutdown [ 3 ] semuanya sudah terikat pada systemctl raja baru [ 10 ]. Tolong dengarkan seluruh cerita dari suara asli JdeBP The Bard [ 9 ] karena saya tidak punya nafas lagi.
Jika Anda adalah pengikut kultus Ubuntu, Anda mungkin masih tetap sadar untuk sementara waktu dari semua klaim [ 11 ] .
Tengah Bumi
halt -f
,init
,telinit
,systemctl
Mencari solusi yang lebih cepat dari yang benar tetapi juga bijaksana.
Bahwa Anda berada di bawah systemd atau tidak Anda harus dapat menghentikan komputer tanpa menerapkan semua prosedur shudown yang benar (dan lebih cepat):
halt -f
: menentukan opsi-f
(perhatikan bahwa Anda harus-f
menghindari prosedur mematikan) dengan perintah di atas, dengansudo poweroff -f
atau bahkan mungkin dengansudo reboot -f -h
. Memang kita dapat membaca dariman reboot
(dan setara) tentang perlunya menentukan opsi-f
untuk menghindari panggilan shutdown:Selain itu Anda dapat menggunakan
telinit
[ 2b ] (atauinit
langsung)untuk memberitahu init untuk mengubah runlevel ... tetapi jika demikian mengapa tidak membunuhnya secara langsung?
Di bawah systemd Anda dapat menggunakan opsi ganda yang tidak bijaksana
--force --force
Membaca dari manual systemctl [ 10 ]
Ps> Ambil inspirasi tentang varian dari ekor JdeBP The Bard [ 7 ] .
sumber
Anda dapat mematikan mesin segera tanpa menyinkronkan disk dengan menulis "o" ke / proc / sysrq-trigger sebagai root.
Sebagai skrip shell akan terlihat seperti
Jika Anda memiliki izin pada / proc / sysrq-trigger, Anda tidak harus mengaktifkannya melalui sysctl. Opsi itu hanya memengaruhi pemicuan oleh keyboard.
Saya tidak merekomendasikan melakukan ini pada mesin dengan sistem file yang ingin Anda baca nanti.
Saya menggunakan ini di Google Compute Engine untuk menyembelih templated instances tepat sebelum tanda sepuluh menit untuk memaksimalkan efektivitas biaya pekerjaan kluster, ini bekerja dengan baik.
sumber
b
alih-aliho
reboot (relevan karena pertanyaan diperbarui).Anda harus menggunakan kombinasi tombol Magic SysRq
REISUB
.Ulangi setelah saya: " Membesarkan Gajah Begitu Membosankan ... "
sumber
Ini seharusnya bekerja pada distro yang paling umum. Berbeda dengan dengan
shutdown
, pada banyak sistem Anda dapat menjalankan ini sebagai pengguna normal (tidak perlu sudo).Sunting: Bacaan lebih lanjut:
shutdown
danpoweroff
di Ubuntuhalt
,shutdown
&poweroff
pada sistem Unixsumber
Diambil dari situs SE lain:
Alt+ SysRq+ Badalah reboot instan, dan Alt+ SysRq+ Oadalah shutdown instan.
Referensi: Di Sini
sumber
Tahan tombol daya selama sekitar 4 detik, ini cukup cepat.
sumber
Pada distribusi linux tertentu, shutdown menawarkan opsi -n. (Lihat shutdown pria ). Distribusi tertentu (seperti ubuntu yang menggunakan pemula bukan sysvinit) tidak mendukung benderanya, dan bender ini (seperti yang dapat dipelajari dari halaman manual) bukan tanpa risiko. Meskipun saya telah menggunakan ini selama bertahun-tahun (di laptop saya saya tidak peduli bahwa semua daemon dihentikan dengan benar, itu hanya ingin semuanya terbunuh dan diskcache saya memerah) (lebih cepat daripada shutdown biasa, dan lebih aman daripada menarik pasang (dan teman)). Anda dapat melihat apakah ini menyelesaikan masalah Anda.
sumber
Saya menggunakan skrip kecil ini untuk mematikan sistem. Sebenarnya ini digunakan untuk lelucon pada mesin "prototyping": "Hei Bung, mari kita lihat apa yang mengagumkan. Dia lakukan!"
(Skrip ini meniru sama dengan memukul Alt+ SysRq+u / s/ oseperti yang dijelaskan sebelumnya.) Tentu saja saya tidak menyebabkan pemutusan sistem yang tidak normal (tabel mysql, dll mungkin macet), jadi gunakan hanya pada mesin dummy. Catatan: Sinkronisasi mungkin membutuhkan waktu. Saya telah melihat bahwa jika sistem memiliki banyak memori bebas (untuk cache) dan Anda menyalin banyak file ke drive pen, sinkronisasi memerlukan lebih banyak waktu, tetapi saya merekomendasikannya bahkan untuk lelucon.
Sunting: Lebih baik menggunakan
sync
daripada menulis 's' kesysrq-trigger
: menulis 's' tidak akan memblokir eksekusi skrip, jadi setelah meminta cache untuk ditulis ke dalam disk, mesin akan segera mati. Berbeda dengansync
perintah,sync
akan kembali setelah proses penulisan selesai. Jadi eksekusi skrip akan diblokir, sampai cache pembilasan selesai.sumber
SEQUENCE=(s u o); for i in "${SEQUENCE[@]}"; do sleep 3; printf "${i}" > /proc/sysrq-trigger; done