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.
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
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.