Arrêt progressif de Linux


17

J'ai entendu dire que "shutdown -h now" n'est pas une commande d'arrêt gracieuse car elle fait quelque chose de semblable à "kill -9" pour tous les processus, par opposition à "kill -15".

Est-ce vrai et, dans l'affirmative, quelle est la façon la plus gracieuse de fermer pour s'assurer que tout a le temps de se nettoyer après lui-même?

Ps Utilisation de CentOS, Ubuntu et Debian principalement.


J'attendrai que quelqu'un d'autre sonne, mais cela ne sonne pas du tout. -h lui dit simplement de mettre le système en mode HALT au lieu de redémarrer. Et "maintenant" signifie simplement qu'il n'y a pas de délai de grâce pour les utilisateurs à arrêter. Je ne sais pas comment ces éléments pourraient modifier le comportement de mise à l'arrêt réel de l'arrêt
Jeffery Smith

4
Veuillez lire la page de manuel pour shutdown ( man shutdown). Cela explique cela complètement.
Andrew Schulman

Réponses:


15

shutdown -h nowappellera /etc/rc.d/rcou /etc/init.d/rc. Le rcscript appellera les scripts kill pour le nouveau niveau d'exécution (0 pour -h, 6 pour -r), suivis de tous les scripts de démarrage.

Vous verrez S30killprocsou S00killallou quelque chose comme ça en fonction de votre distribution. Cela survient après que tous les scripts de suppression ont été appelés pour tenter d'arrêter chaque service avec élégance à son tour. Il essaiera d' kill -15abord, suivi de kill -9.

Réponse courte: shutdown -h nowou shutdown -r nowgracieuse. haltet rebootautrefois non gracieux, mais ils shutdownvous appellent à moins que vous n'utilisiez l' -foption.


12

Non, ce n'est pas vrai. shutdownchange le niveau d'initialisation qui exécute ensuite tous les scripts d'arrêt. La fonction de ces scripts dépend du script. Mais normalement, ils ne mettent pas fin aux processus mais leur envoient le signal de fin.

Voici donc l'extrait manuel pour shutdown:

   shutdown  brings  the system down in a secure way.  All logged-in users
   are notified that the system is going down, and  login(1)  is  blocked.
   It is possible to shut the system down immediately or after a specified
   delay.  All processes are first notified that the system is going  down
   by the signal SIGTERM.  This gives programs like vi(1) the time to save
   the file being edited, mail and news processing programs  a  chance  to
   exit  cleanly,  etc.   shutdown  does  its  job  by signalling the init
   process, asking it to change the runlevel.  Runlevel 0 is used to  halt
   the  system, runlevel 6 is used to reboot the system, and runlevel 1 is
   used to put to system into a state where administrative  tasks  can  be
   performed; this is the default if neither the -h or -r flag is given to
   shutdown.  To see which actions are taken on halt  or  reboot  see  the
   appropriate entries for these runlevels in the file /etc/inittab.

1
Eh bien, sur la plupart sinon toutes les distributions que j'ai utilisées, la dernière chose que le script rc runlevel 6 (reboot) fait est d'exécuter un killall global, pour attraper tous les processus persistants ou bloqués. Mais ceci est exécuté une fois tous les scripts d'arrêt normaux terminés.
adaptr

2
@adaptr Sure. Mais les processus ont pu se terminer avec grâce. S'ils ne l'ont pas fait, il n'y a pas d'autre possibilité que de les tuer.
mailq
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.