Existe-t-il une commande / un programme par lequel je peux arrêter mon système instantanément (1 à 5 secondes)?
Mise à jour (2015): Merci à ceux qui ont suggéré de désactiver l'utilisation de la prise de courant. :RÉ
Mise à jour (2016): @technophile a suggéré que je devrais ajouter des informations à la question décrivant la nature du problème - principalement le scénario que j'essayais de résoudre. Voici le scénario pour lequel cette question a été posée il y a quelques années.
Nous construisions un système à déployer dans des espaces publics comme (aéroports, hôtels, etc.). Les gens peuvent utiliser ce système pour surfer sur Internet, vérifier leurs e-mails ou même leurs réservations, etc. en utilisant leurs cartes de crédit. Le système construit s'assurait qu'un deuxième utilisateur ne pouvait en aucun cas obtenir des informations (e-mail, cartes de crédit) de l'utilisateur précédent de ce système, même si des types de logiciels enregistreurs de frappe étaient en quelque sorte installés. Comment le système s'en assurait-il? Eh bien, les détails ne peuvent pas être partagés car ce ne sont pas des informations publiques. mais nous avons développé un moyen d'avoir toujours un nouveau système d'exploitation (comme s'il était nouvellement installé) pour un nouvel utilisateur du système. Le seul problème est que nous avons dû arrêter la machine et la remettre en marche dès que le premier utilisateur quitte la machine.
Et je voulais que cet arrêt soit instantanément rapide (- c'est pourquoi la question) et le prochain démarrage aussi très rapide pour lequel j'ai recherché et essayé un grand nombre de distributions Linux de Damn Small Linux à Slackware à Debian etc. mais c'est un histoire distincte.
Réponses:
la source
Je ne suggère pas de faire ce qui suit si vous n'êtes pas forcé par des raisons vraiment spéciales:
C'est rude, brutal et cela peut être considéré comme un équivalent équivalent à débrancher le cordon d'alimentation ...
La bonne façon est
shutdown -h now
d'sudo
avancer en cas de besoin.Je devrais peut-être dire la manière légale ; voir ci-dessous ou mieux tl; dr.
Quelques mots de plus , alias L'histoire, Chapitre I
Au début était l'init et ce sera jusqu'à la fin.
L'ensemble de Linux dépend du soin affectueux d' init [ 1 ] [ 2 ] . Néanmoins et non sans une certaine ingratitude, il fut un temps où l' utilisateur root du bon Dieu pouvait trahir cet amour et
kill
commencer soudainement avec un ordre incontournable (-9
).( Le Book of Etiquette prescrit aux comtes, aux ducs et aux marquises les utilisateurs à invoquer avant a
sudo
).Ensuite, certains sorciers ont fait un charme pour protéger init (du livre de
man 2 init
)(Nos espions rapportent [ U1 ] qu'init va gérer 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Donc, le bon utilisateur root apprend les nouvelles et modifie la commande
kill -ABRT 1
oukill -SEGV 1
qui génère généralement un panique du noyau et vidage de mémoire.Cela fonctionne car init est le premier processus à s'exécuter et prend le numéro PID 1 [ 2b ] .
C'est dangereux, imprudent et vous sentez que cela annonce un mauvais présage et une malédiction, mais si vous ne pouvez pas matériellement mettre les mains et le débrancher ...
La malédiction : il n'écrira pas sur le journal, il ne tuera pas tous les processus et n'attendra pas leur fin, il n'écrira pas sur le disque dur en mettant correctement à jour les inodes et il ne démontera pas les systèmes de fichiers; cela ne me dérange même pas que cela sauvera les options des fenêtres graphiques et les historiques de shell, et bien d'autres au-delà de notre imagination ... comme nous l'avons dit, l'équivalent de débrancher l'accord de puissance ou la batterie si un ordinateur portable.
La manière correcte
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam.", Devise des Templiers.
La manière légale (correcte) est d'utiliser
shutdown
[ 3 ]mais avec
-h now
eux, ils n'auront pas assez de temps pour en faire autant ...Quelques mots de plus , alias L'histoire, Chapitre II
Il était une fois des pas de logique ressentis du ciel au-dessus du peuple unix:
En effet, de nos jours, nous ne faisons pas confiance plus dans l'existence des trois Moires [ 5 ] du monde Linux ,
reboot
,poweroff
ethalt
[ 6 ] : la science moderne dels -l $(which poweroff halt reboot)
et celui desman reboot
spreads nouvelle lumière sur cet âge sombre et nous révèlent qu'il n'existe qu'une seule vraie commande qui analyse toutes leurs options afin que nous soyons enfin libres de demander des actions contredisant leurs noms de commandes! (halt -p
oureboot -p
pourpoweroff
,shutdown -r
pourreboot
...)Maintenant que tout semblait être clair et confortable pour tous, des rumeurs prétendent [ 7 ] que dans le monde souterrain de l' ensemble d'outils systemd [ 8 ] une révolution a été effectuée laissant l'ignorance du monde entier . Grâce à une armée de cales à compatibilité ascendante, nous n'avons pas remarqué du tout que le redémarrage, la mise hors tension, l'arrêt [ 6 ] et même le telinit [ 9 ] et l'arrêt [ 3 ] sont déjà tous liés au nouveau système roictctl [ 10 ]. Veuillez écouter toute l'histoire de la voix originale de JdeBP The Bard [ 9 ] car je n'ai plus de souffle.
Si vous êtes un adepte du culte Ubuntu, vous pouvez toujours rester au courant pendant un certain temps de toutes ces affirmations [ 11 ] .
La Terre du Milieu
halt -f
,init
,telinit
, lasystemctl
recherche de solution plus rapide que celle correcte mais aussi sage.
Que vous soyez sous systemd ou non, vous devriez pouvoir arrêter l'ordinateur sans invoquer toutes les procédures de shudown correctes (et donc plus rapidement):
halt -f
: spécifiant l'option-f
(notez que vous devez-f
éviter la procédure d'arrêt) avec la commande ci-dessus, avecsudo poweroff -f
ou peut-être même avecsudo reboot -f -h
. En effet, nous pouvons lireman reboot
(et équivalents) sur la nécessité de spécifier l'option-f
pour éviter d'appeler l'arrêt:De plus, vous pouvez utiliser
telinit
[ 2b ] (ouinit
directement)dire à init de changer le niveau d'exécution ... mais si oui, pourquoi ne pas le tuer directement?
Sous systemd, vous pouvez utiliser l'option double imprudente
--force --force
Lecture du manuel systemctl [ 10 ]
Ps> Inspirez-vous des variantes de la queue JdeBP The Bard [ 7 ] .
la source
Vous pouvez éteindre la machine immédiatement sans synchroniser les disques en écrivant "o" dans / proc / sysrq-trigger en tant que root.
En tant que script shell, cela ressemblerait à quelque chose comme
Si vous avez des autorisations sur / proc / sysrq-trigger, vous n'avez pas besoin de l'activer via sysctl. Cette option affecte uniquement le déclenchement par clavier.
Je ne recommande pas de le faire sur une machine avec un système de fichiers que vous souhaitez lire plus tard.
J'utilise cela sur Google Compute Engine pour abattre des exemples de modèles juste avant la marque de dix minutes pour maximiser la rentabilité des travaux de cluster, cela fonctionne très bien.
la source
b
au lieu deo
redémarrer (pertinent puisque la question a été mise à jour).Vous devez utiliser la combinaison de touches Magic SysRq
REISUB
.Répétez après moi: " Élever des éléphants est tellement ennuyeux ... "
la source
Cela devrait fonctionner sur la plupart des distributions. Contrairement à avec
shutdown
, sur de nombreux systèmes, vous pouvez l'exécuter en tant qu'utilisateur normal (aucun sudo n'est nécessaire).Edit: Lectures complémentaires:
shutdown
etpoweroff
sur Ubuntuhalt
,shutdown
etpoweroff
sur les systèmes Unixla source
Tiré d'un autre site SE:
Alt+ SysRq+ Best un redémarrage instantané, et Alt+ SysRq+ Oest un arrêt instantané.
Référence: ici
la source
Maintenez la touche marche / arrêt pendant environ 4 secondes, c'est assez rapide.
la source
Sur certaines distributions Linux, l'arrêt offre l'option -n. (Voir l' arrêt de l'homme ). Certaines distributions (comme ubuntu qui utilise upstart au lieu de sysvinit) ne supportent cependant pas son indicateur, et cet indicateur n'est pas (comme on peut l'apprendre de la page de manuel) sans risque. Bien que j'utilise cela depuis des années (sur mon ordinateur portable, je ne me soucie pas que tous les démons se terminent correctement, il veut juste que tout soit tué et que mon cache de disque soit vidé) (c'est plus rapide qu'un arrêt normal et plus sûr que de tirer le plug (et amis)). Vous pouvez voir si cela résout votre problème.
la source
J'ai utilisé ce petit script pour éteindre le système. En fait, il est utilisé pour une farce sur une machine de "prototypage": "Hé mec, voyons ce que ce génial .sh fait!"
(Ce script imite la même chose que percutant Alt+ SysRq+ u/ s/ ocomme expliqué précédemment.) Bien sûr i't provoquer un blocage anormal du système (tables mysql, etc peut se bloquer), utilisez donc uniquement sur les machines factices. Remarque: la synchronisation peut prendre un certain temps. J'ai vu que si le système a beaucoup de mémoire libre (pour le cache) et que vous copiez un tas de fichiers sur une clé USB, la synchronisation prend plus de temps, mais je le recommande même pour une farce.
Edit: Il vaut mieux utiliser
sync
au lieu d'écrire 's'sysrq-trigger
: l'écriture 's' ne bloquera pas l'exécution du script, donc après avoir demandé que le cache soit écrit sur le disque, la machine s'arrêtera immédiatement. Contrairement à lasync
commande,sync
reviendra une fois le processus d'écriture terminé. Ainsi, l'exécution du script sera bloquée jusqu'à ce que le vidage du cache soit terminé.la source
SEQUENCE=(s u o); for i in "${SEQUENCE[@]}"; do sleep 3; printf "${i}" > /proc/sysrq-trigger; done