¿Por qué agregar paréntesis alrededor del nombre de un proceso?

19

En mi máquina ( prueba de Debian ), cuando lo hago

ps aux | grep pam

yo obtengo

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)Parece un nombre extraño para un proceso. Al leer este foro , veo que este nombre está establecido a propósito por systemd. En el código fuente vemos

/* 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é significa mirada bonita en /bin/psy por las que elegir (sd-pam)y no sólo sd-pamcomo un nombre? Poner paréntesis alrededor del nombre parece indicar que este proceso tiene algo especial como un hilo del núcleo, por ejemplo [kintegrityd].

Ortomala Lokni
fuente
¿Qué quiere decir con "¿cuál es el propósito de hacer esto"? Es un nombre, que posiblemente sólo se asemeja a lo que hace (SessionDestroy-PAM?).
kos
He modificado mi cuestión, teniendo en cuenta su observación.
Ortomala Lokni
Disculpas Ah, yo no entendieron que estaban hablando del paréntesis. Honestamente, no sé: de acuerdo con esto, ps encerra el nombre contable del proceso entre paréntesis e imprime que si el proceso a mostrar ha sido renombrado si psya no puede encontrar el proceso por su nombre original, sin embargo, esto por supuesto no explica por qué esto se hace en pamel código fuente, que no tiene nada que ver con ps.
kos
1
Tal vez leí el comentario de @kos de manera inconsciente, pero estaba a punto de decir que es probable que a las personas a evitar que buscan en vano un binario llamado SD-PAM. Después de leer que ps ya usa exactamente la misma sintaxis, eso puede ser deliberado. Ciertamente habría otras herramientas de la lista proceso que no aportan los soportes. ( systemd-cgls?)
sourcejedi
2
@kos: "sd" muy probablemente significa systemd, no para "destruir sesión".
intelfx 01 de

Respuestas:

15

Poner paréntesis alrededor del nombre parece indicar que este proceso tiene algo especial

Hay dos casos:

  • (...)

Cuando PID 1 se inicia un servicio de primera binaria que se bifurcará en marcha un proceso, y luego ajustar los parámetros del proceso de acuerdo con la configuración de servicio y finalmente de invocar execve () para ejecutar el proceso real del servicio. En el tiempo entre el tenedor y el ejecutivo, utilizamos PR_SET_NAME para cambiar el nombre del proceso a lo que va a ser iniciado, para hacer más fácil a este mapa al servicio eventual comenzado. Nota sin embargo, que hay un límite estricto de tamaño en él nombre de "comunicación" (es decir, el nombre del proceso que mi montarse con PR_SET_NAME, es decir, el "top" muestra), lo que significa que tenemos que truncado. Cortamos el principio de la cadena, ya que por lo general el sufijo es más interesante (de lo contrario, todos los diversos servicios de systemd haría aparece como "(systemd-)" - que no es particularmente útil).

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

  • (sd-pam) es el caso especial

Si engendramos una unidad con un 'PAMName =' no vacío, bifurcamos un proceso hijo dentro de la unidad, conocido como '(sd-pam)', que observa la sesión. Espera a que salga el proceso principal y luego lo termina a través de pam_close_session (3).

Evgeny Vereshchag
fuente
5

¿Cómo se ve bastante media en / bin / ps y por qué para elegir (SD-PAM) y no sólo SD-PAM como un nombre? Poner paréntesis alrededor del nombre parece indicar que este proceso tiene algo especial

Sí, tiene algo especial. Este es un nombre inventado y no un nombre de cualquier binario existente. En otras palabras, no hay un "SD-PAM" en cualquier lugar del archivo; Este proceso es una bifurcación de PID 1.

Los paréntesis probablemente están destinados a indicar esto.

intelfx
fuente
¿Sabes si hay otros procesos que usan la misma convención y si esta es una convención estándar?
Ortomala Lokni
@ OrtomalaLokni: No conozco ninguna convención para nombrar dichos procesos. Sin embargo, esto no significa que no haya convenciones.
intelfx