web-dev-qa-db-fra.com

Sortie incohérente pour le nom du processus init avec "ps"

Je suis sous Ubuntu 16.04 et je suis le chapitre "Démarrage et arrêt" de la Bible Linux (9ème édition). J'essaie de trouver le type de démon init que j'ai (init ou systemd), ce qui m'oblige à rechercher le processus dont le PID est égal à 1. Toutefois, j'obtiens 2 résultats différents, en fonction de l'exécution de la commande. ...

webmaster@my-site:~$ ps -p1
  PID TTY          TIME CMD
    1 ?        00:00:29 systemd
webmaster@my-site:~$ ps -F -p1
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  9420  5336   0 Feb23 ?        00:00:29 /sbin/init

Il indique systemd pour PID1 après l'exécution de la première commande, mais /sbin/init pour PID1 après l'exécution de la deuxième commande.

5
Cod3Citrus
                        GRUB(GRand Unified Bootloader)
                                       |                                                          
                                       |
                                       |                                                  
                                       V
                                     Kernel
                                       |
                                Hardware check
                                       |
                            -----------------------
                            |init processes start |
                            -----------------------
                                      /|\
                                     / | \
                            SysVinit   |  systemd
                        init scripts   |
                                    Upstart

Laissez-moi essayer d’expliquer avec le diagramme ci-dessus . Maintenant, dans Ubuntu, tout a commencé avec SysVinit, puis Upstart et enfin Systemd. Chacun de ceux-ci gérera le processus init qui commence par tout les choses Linux et Ubuntu en général.

Maintenant, Ubuntu s'éloigne progressivement de Upstart vers Systemd et constitue le contrôleur actuel init sur Ubuntu Xenial. Le processus init démarre tout (ou la plupart, car le noyau a son propre processus qui n'est pas lié à init), mais ce qui gère ou contrôle que le processus init est soit SysVinit, Upstart ou Systemd selon votre version d'Ubuntu. Dans votre cas, c'est le plus récent Systemd. Mais gardez bien à l'esprit que vous verrez également des restes de l'ancien système, où des commandes telles que initctl, service etc. sont toujours exécutées.

Donc, pour que les fonctions ou services système initiaux soient opérationnels, Ubuntu utilise maintenant systemd le remplacement de init daemon d’ancien. Mais pour la compatibilité ascendante, init fonctionne toujours en arrière-plan.

Selon man ps, le passage d'un drapeau -F entraîne l'impression du command arguments. Donc, dans ce cas, la commande est vue avec:

ps -p 1

#Result
PID TTY          TIME CMD
1 ?        00:00:02 systemd

Ensuite, pour voir les arguments passés à cette commande:

ps -F -p 1

#Result
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0 46414  6336   1 05:48 ?        00:00:02 /sbin/init splash

Donc, ps -p 1 ==> command, et ps -F -p 1 ==> arguments passed. Longue histoire courte -F Format très complet, affichant davantage d'informations relatives à la commande ps -p 1 ou systemd. Ce que vous voyez est un processus init sous-jacent exécuté par systemd sur Ubuntu Xenial. Notez le HEURE: 00:00:02, qui est identique pour systemd et /sbin/init dans les deux formes de ps.

Veuillez regarder ceci page et vous verrez pourquoi /sbin/init apparaît lorsque l’option -F est utilisée. Systemd s'exécute avec PID 1 as /sbin/init.

La source:

man ps

https://wiki.ubuntu.com/SystemdForUpstartUsers

2
George Udosen

Pour Ubuntu 16.04, init par défaut est systemd

~$ ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Oct  3 20:44 /sbin/init -> /lib/systemd/systemd

systemd est celui qui tourne vraiment. L'option -F permet à ps d'afficher la ligne de commande exacte (arguments compris) utilisée pour le lancer.

2
user.dz