Pourquoi ajouter des parenthèses autour d'un nom de processus?

19

Sur ma machine ( test Debian ), quand je le fais

ps aux | grep pam

j'obtiens

orto        609  0.0  0.0  58532  2148 ?        S    08:06   0:00 (sd-pam)  
orto       5533  0.0  0.0  12724  1948 pts/1    S+   16:51   0:00 grep pam

(sd-pam)semble un nom étrange pour un processus. En lisant ce forum , je vois que ce nom est défini exprès par systemd. Dans le code source, nous voyons

/* The child's job is to reset the PAM session on
 * termination */

/* This string must fit in 10 chars (i.e. the length
 * of "/sbin/init"), to look pretty in /bin/ps */
rename_process("(sd-pam)");

Qu'est-ce que cela veut dire joli /bin/pset pourquoi choisir (sd-pam)et pas seulement sd-pamcomme nom? Mettre des parenthèses autour du nom semble indiquer que ce processus a quelque chose de spécial comme pour un thread noyau par exemple [kintegrityd].

Ortomala Lokni
la source
Que voulez-vous dire par «quel est le but de faire cela»? C'est un nom, il ressemble peut-être juste à ce qu'il fait (SessionDestroy-PAM?).
kos
J'ai modifié ma question en tenant compte de votre remarque.
Ortomala Lokni
Ah excuses, je n'ai pas compris que tu parlais des parenthèses. Honnêtement, je ne sais pas: selon cela, ps le nom comptable du processus est mis entre parenthèses et imprime que si le processus à afficher a été renommé s'il psn'est plus en mesure de trouver le processus par son nom d'origine, cependant cela bien sûr n'explique pas pourquoi cela se fait dans pamle code source de, ce qui n'a rien à voir avec ps.
kos
1
J'ai peut-être lu le commentaire de @kos inconsciemment, mais j'étais sur le point de dire que c'était probablement pour éviter que les gens recherchent en vain un binaire appelé sd-pam. Après avoir lu que ps utilise déjà exactement la même syntaxe, cela pourrait bien être délibéré. Il y aurait certainement d'autres outils de listage de processus qui n'ajouteraient pas les crochets. ( systemd-cgls?)
sourcejedi
2
@kos: "sd" signifie très probablement systemd, pas "session destroy".
intelfx

Réponses:

15

Mettre des parenthèses autour du nom semble indiquer que ce processus a quelque chose de spécial

Il y a deux cas:

  • (...)

Lorsque PID 1 démarre un binaire de service, il va tout d'abord créer un processus, puis ajuster les paramètres du processus en fonction de la configuration du service et enfin appeler execve () pour exécuter le processus de service réel. Dans l'intervalle entre le fork et l'exec, nous utilisons PR_SET_NAME pour changer le nom du processus en ce qui va être démarré, pour faciliter le mappage de cela au service éventuellement démarré. Notez cependant qu'il y a une limite de taille stricte pour le nom "comm" (c'est-à-dire le nom du processus que je peux définir avec PR_SET_NAME, c'est-à-dire celui "top" indiqué), ce qui signifie que nous devons tronquer. Nous coupons le début de la chaîne, car généralement le suffixe est plus intéressant (sinon, tous les différents services de systemd apparaîtraient comme "(systemd-)" - ce qui n'est pas particulièrement utile).

Voir https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html

  • (sd-pam) est le cas particulier

Si nous générons une unité avec un 'PAMName =' non vide, nous dérivons un processus enfant à l' intérieur de l'unité, connu sous le nom de '(sd-pam)', qui surveille la session. Il attend la fin du processus principal puis le termine via pam_close_session (3).

Evgeny Vereshchagin
la source
5

Qu'est-ce que cela signifie être joli dans / bin / ps et pourquoi choisir (sd-pam) et pas seulement sd-pam comme nom? Mettre des parenthèses autour du nom semble indiquer que ce processus a quelque chose de spécial

Oui, il a quelque chose de spécial. Il s'agit d'un nom composé et non du nom d'un binaire existant. En d'autres termes, il n'y a aucun fichier "sd-pam" nulle part; ce processus est un fork du PID 1.

Les parenthèses sont probablement censées l'indiquer.

intelfx
la source
Savez-vous s'il existe d'autres processus utilisant la même convention et s'il s'agit d'une convention standard?
Ortomala Lokni
@OrtomalaLokni: Je ne connais aucune convention pour nommer de tels processus. Cependant, cela ne signifie pas qu'il n'y a pas de conventions.
intelfx