Non consiglio di fare quanto segue se non sei costretto da ragioni davvero speciali:
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
È ruvido, brutale e può essere considerato un equivalente vicino di scollegare il cavo di alimentazione ...
Il modo corretto è shutdown -h now
con sudo
prima quando necessario.
Forse dovrei dire in modo lecito ; vedi sotto o meglio tl; dr.
Qualche parola in più , alias La storia, Capitolo I
All'inizio c'era l'init e sarà fino alla fine.
L'intero Linux dipende dalla cura amorevole di init [ 1 ] [ 2 ] . Tuttavia e non senza una certa dose di ingrato, c'è stato un tempo in cui il buon utente root di Dio può tradire questo amore e improvvisamente kill
iniziare con un -9
ordine incontrovertibile ( ).
( Il Libro dell'etichetta prescrive agli utenti di conteggi, duchi e marchesi di invocare prima di a sudo
).
Quindi alcuni maghi hanno fatto un incantesimo per proteggere init (dal Libro di man 2 init
)
Gli unici segnali che possono essere inviati all'ID processo 1, il processo init, sono quelli per i quali init ha esplicitamente installato gestori di segnali. Questo viene fatto per garantire che il sistema non venga accidentalmente disattivato.
(Le nostre spie segnalano [ U1 ] che init gestirà 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Quindi il buon utente root di Lord impara le notizie e cambia il comando kill -ABRT 1
o kill -SEGV 1
che di solito genera un comando panico del kernel e un dump principale.
Funziona perché init è il primo processo da eseguire e accetta il numero PID 1 [ 2b ] .
Questo non è sicuro, non è saggio e senti che è araldo di cattivo presagio e una maledizione, ma se non puoi materialmente mettere le mani su e staccare la spina ...
La maledizione : non scriverà sul registro, non ucciderà tutti i processi e attenderà la loro fine, non scriverà sull'HDD aggiornando correttamente gli inode né smonterà i filesystem; non importa nemmeno che salverà le opzioni delle finestre grafiche e delle storie delle shell, e molte altre oltre la nostra immaginazione ... come abbiamo detto un equivalente equivalente di scollegare l'accordo di alimentazione o la batteria se un laptop.
Il modo corretto
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam.", Motto dei cavalieri templari.
Il modo lecito (corretto) è usare shutdown
[ 3 ]
sudo shutdown -h now
lo spegnimento prevede che il sistema possa essere arrestato in modo sicuro. Tutti gli utenti che hanno effettuato l'accesso vengono informati che il sistema non funziona e ...
ma con -h now
loro non avranno abbastanza tempo per fare così tanto ...
Qualche parola in più , alias The story, Chapter II
C'erano una volta alcuni passi logici percepiti dal cielo sulle persone unix:
Una volta che i processi di sistema sono stati interrotti e i filesystem sono stati smontati, il sistema si arresta / si spegne o si riavvia automaticamente. Questo viene fatto usando il comando halt o reboot, che sincronizza le modifiche ai dischi e quindi esegue l'arresto / spegnimento effettivo o riavvia. [ 4 ]
In effetti, al giorno d'oggi, non ci fidiamo più dell'esistenza dei tre Moirai [ 5 ] del mondo Linux , reboot
, poweroff
e halt
[ 6 ] : la scienza moderna della ls -l $(which poweroff halt reboot)
e quella di man reboot
, spread nuova luce su questo periodo oscuro e ci rivelano che esiste solo un vero comando che analizza tutte le loro opzioni in modo che siamo finalmente liberi di chiedere azioni in contraddizione con i nomi dei loro comandi! ( halt -p
o reboot -p
per poweroff
, shutdown -r
per reboot
...)
Ora che tutto sembra essere chiaro e accogliente per tutti, le voci sostengono [ 7 ] che negli inferi del set di strumenti di sistema [ 8 ] sia stata eseguita una rivoluzione lasciando inconsapevole l'intero mondo . Grazie a un esercito di shim di retrocompatibilità non abbiamo notato affatto che il riavvio, lo spegnimento, l'arresto [ 6 ] e persino il telinit [ 9 ] e l'arresto [ 3 ] sono già tutti legati al nuovo re systemctl [ 10 ]. Per favore, ascolta l'intera storia dalla voce originale di JdeBP The Bard [ 9 ] perché non ho più respiro.
Se sei un seguace del culto di Ubuntu potresti rimanere a conoscenza per un po 'di tutte queste affermazioni [ 11 ] .
La Terra di Mezzo di halt -f
, init
, telinit
, systemctl
Ricerca per soluzione più veloce di quella giusta ma allo stesso modo saggio.
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
Che tu sia sotto systemd o no, dovresti essere in grado di fermare il computer senza invocare tutte le corrette procedure di shudown (e molto più velocemente):
halt -f
: specifica l'opzione-f
(si noti che è necessario -f
evitare la procedura di spegnimento) con il comando sopra, con sudo poweroff -f
o forse anche con sudo reboot -f -h
. In effetti possiamo leggere da man reboot
(e equivalenti) sulla necessità di specificare l'opzione -f
per evitare di chiamare l'arresto:
Quando viene chiamato con --force o in runlevel 0 o 6, questo strumento richiama la chiamata di sistema reboot (2) stessa (con l'argomento REBOOTCOMMAND passato) e riavvia direttamente il sistema .
In caso contrario, questo invoca semplicemente lo strumento shutdown (8) con gli argomenti appropriati senza passare l'argomento REBOOTCOMMAND.
-f, --force
Non invoca l'arresto (8) e invece esegue l'azione effettiva che ci si aspetterebbe dal nome .
Inoltre puoi usare telinit
[ 2b ] (oinit
direttamente)
sudo telinit 0 # or 6
dire a init di cambiare il runlevel ... ma se è così, perché non ucciderlo direttamente?
Sotto systemd puoi usare l'opzione doppia poco saggia --force --force
systemctl --force --force poweroff
Lettura dal manuale di systemctl [ 10 ]
-f, --force
Se utilizzato con abilita, sovrascrive eventuali collegamenti simbolici in conflitto esistenti.
Quando utilizzato con halt
, poweroff
,reboot
o kexec, eseguire l'operazione selezionata senza spegnere tutte le unità. Tuttavia, tutti i processi verranno eliminati forzatamente e tutti i file system verranno smontati o rimontati in sola lettura. Questa è quindi un'opzione drastica ma relativamente sicura per richiedere un riavvio immediato. Se --force viene specificato due volte per queste operazioni, verranno eseguite immediatamente senza interrompere alcun processo o smontare alcun file system. Avvertenza: specificare --force due volte con una qualsiasi di queste operazioni potrebbe causare la perdita di dati.
Ps> Prendi ispirazione dalle varianti della coda JdeBP The Bard [ 7 ] .