Warum um einen Prozessnamen Klammern setzen?

19

Auf meinem Computer ( Debian-Test ), wenn ich das tue

ps aux | grep pam

Ich erhalte

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)scheint ein seltsamer Name für einen Prozess. Wenn ich dieses Forum lese , sehe ich, dass dieser Name absichtlich von systemd festgelegt wird. Im Quellcode sehen wir

/* 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)");

Was bedeutet es, hübsch auszusehen /bin/psund warum zu wählen (sd-pam)und nicht nur sd-pamals Name? Das Setzen von Klammern um den Namen scheint anzuzeigen, dass dieser Prozess etwas Besonderes wie für einen Kernel-Thread hat, z [kintegrityd].

Ortomala Lokni
quelle
Was meinst du mit "was ist der Zweck, dies zu tun"? Es ist ein Name, es ähnelt möglicherweise nur dem, was es tut (SessionDestroy-PAM?).
Kos
Ich habe meine Frage unter Berücksichtigung Ihrer Bemerkung geändert.
Ortomala Lokni
Entschuldigung, ich habe nicht verstanden, dass Sie über die Klammer sprachen. Ehrlich gesagt weiß ich nicht: nach dieser ps umschließt der Bilanzierung Namen des Prozesses in Klammern und Druck , dass , wenn der Prozess werden wurde von umbenannt angezeigt , wenn psnicht in der Lage , den Prozess durch seinen ursprünglichen Namen nicht mehr zu finden, aber dies natürlich erklärt nicht, warum dies im pamQuellcode gemacht wird, was nichts damit zu tun hat ps.
Kos
1
Vielleicht habe ich den Kommentar von @kos unterbewusst gelesen, aber ich wollte gerade sagen, es ist wahrscheinlich, um zu vermeiden, dass Leute vergeblich nach einer Binärdatei namens sd-pam suchen. Nachdem Sie gelesen haben, dass ps bereits genau dieselbe Syntax verwendet, kann dies durchaus beabsichtigt sein. Natürlich gibt es auch andere Tools für die Prozessauflistung, bei denen die Klammern nicht hinzugefügt werden. ( systemd-cgls?)
sourcejedi
2
@kos: "sd" steht sehr wahrscheinlich für systemd, nicht für "session destroy".
Intelfx

Antworten:

15

Das Setzen von Klammern um den Namen scheint darauf hinzudeuten, dass dieser Prozess etwas Besonderes hat

Es gibt zwei Fälle:

  • (...)

Wenn PID 1 eine Dienstbinärdatei startet, wird zuerst ein Prozess verzweigt, dann werden die Parameter des Prozesses gemäß der Dienstkonfiguration angepasst und schließlich execve () aufgerufen, um den tatsächlichen Dienstprozess auszuführen. In der Zeit zwischen dem Fork und dem Exec verwenden wir PR_SET_NAME, um den Namen des Prozesses in den Namen des zu startenden Prozesses zu ändern, damit dies auf einfache Weise dem eventuell gestarteten Service zugeordnet werden kann. Beachten Sie jedoch, dass es eine strenge Größenbeschränkung für den Namen "comm" gibt (dh den Prozessnamen, den ich mit PR_SET_NAME festlegen kann, dh den Namen, der "top" ist), was bedeutet, dass wir abschneiden müssen. Wir hacken den Anfang der Zeichenkette ab, da normalerweise das Suffix interessanter ist (andernfalls werden alle verschiedenen Dienste von systemd als "(systemd-)" angezeigt - was nicht besonders nützlich ist).

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

  • (sd-pam) ist der Sonderfall

Wenn wir eine Einheit mit einem nicht leeren 'PAMName =' erzeugen, lösen wir einen untergeordneten Prozess in der Einheit aus, der als '(sd-pam)' bekannt ist und die Sitzung überwacht . Es wartet auf das Beenden des Hauptprozesses und beendet ihn dann über pam_close_session (3).

Evgeny Vereshchagin
quelle
5

Was bedeutet es, in / bin / ps hübsch auszusehen und warum (sd-pam) und nicht nur sd-pam als Namen zu wählen? Das Setzen von Klammern um den Namen scheint darauf hinzudeuten, dass dieser Prozess etwas Besonderes hat

Ja, es hat etwas Besonderes. Dies ist ein erfundener Name und kein Name einer vorhandenen Binärdatei. Mit anderen Worten, es gibt nirgendwo eine "sd-pam" -Datei. Dieser Prozess ist eine Gabelung von PID 1.

Klammern sollen dies wahrscheinlich anzeigen.

intelfx
quelle
Wissen Sie, ob es andere Prozesse gibt, die dieselbe Konvention verwenden und ob dies eine Standardkonvention ist?
Ortomala Lokni
@OrtomalaLokni: Mir ist keine Konvention zur Benennung solcher Prozesse bekannt. Dies bedeutet jedoch nicht, dass es keine Konventionen gibt.
Intelfx