Perché aggiungere parentesi attorno al nome di un processo?


19

Sulla mia macchina ( test Debian ), quando lo faccio

ps aux | grep pam

io ottengo

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)sembra uno strano nome per un processo. Leggendo questo forum , vedo che questo nome è impostato apposta da systemd. Nel codice sorgente vediamo

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

Cosa significa apparire belli /bin/pse perché scegliere (sd-pam)e non solo sd-pamcome nome? Mettere la parentesi attorno al nome sembra indicare che questo processo ha qualcosa di speciale come per un thread del kernel, ad es [kintegrityd].


Cosa intendi con "qual è lo scopo di fare questo"? È un nome, forse ricorda solo quello che fa (SessionDestroy-PAM?).
kos,

Ho modificato la mia domanda tenendo conto della tua osservazione.
Ortomala Lokni,

Ah scusa, non ho capito che stavi parlando della parentesi. Onestamente non lo so: secondo questo ps racchiude il nome contabile del processo tra parentesi e stampa che se il processo da mostrare è stato rinominato se psnon è più in grado di trovare il processo con il suo nome originale, tuttavia questo ovviamente non spiega perché ciò avvenga nel pamcodice sorgente, che non ha nulla a che fare con ps.
kos,

1
Forse ho letto il commento di @kos inconsciamente, ma stavo per dire che probabilmente per evitare che le persone cercassero invano un binario chiamato sd-pam. Dopo aver letto che ps usa già la stessa sintassi, potrebbe essere deliberato. Certamente ci sarebbero altri strumenti per elencare i processi che non aggiungono le parentesi. ( systemd-cgls?)
sourcejedi

2
@kos: "sd" sta molto probabilmente per systemd, non per "session destro".
intelfx,

Risposte:


15

Mettere la parentesi attorno al nome sembra indicare che questo processo ha qualcosa di speciale

Esistono due casi:

  • (...)

Quando il PID 1 avvia un servizio binario, per prima cosa interrompe un processo, quindi regola i parametri del processo in base alla configurazione del servizio e infine invoca execve () per eseguire il processo di servizio effettivo. Nel tempo che intercorre tra il fork e il exec, usiamo PR_SET_NAME per cambiare il nome del processo in quello che verrà avviato, per semplificare il mapping di questo al servizio avviato. Si noti tuttavia che esiste un limite di dimensioni rigoroso per il nome "comm" (ovvero il nome del processo che viene impostato con PR_SET_NAME, ovvero quello "in alto"), il che significa che dobbiamo troncare. Tagliamo l'inizio della stringa, poiché di solito il suffisso è più interessante (altrimenti, tutti i vari servizi di systemd apparirebbero come "(systemd-)" - che non è particolarmente utile).

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

  • (sd-pam) è il caso speciale

Se generiamo un'unità con un 'PAMName =' non vuoto, eseguiamo il fork di un processo figlio all'interno dell'unità, noto come '(sd-pam)', che controlla la sessione. Attende che il processo principale termini e poi lo termina tramite pam_close_session (3).


5

Cosa significa avere un bell'aspetto in / bin / ps e perché scegliere (sd-pam) e non solo sd-pam come nome? Mettere la parentesi attorno al nome sembra indicare che questo processo ha qualcosa di speciale

Sì, ha qualcosa di speciale. Questo è un nome inventato e non un nome di alcun binario esistente. In altre parole, non esiste un file "sd-pam" da nessuna parte; questo processo è un fork di PID 1.

Le parentesi probabilmente indicano questo.


Sai se ci sono altri processi che utilizzano la stessa convenzione e se si tratta di una convenzione standard?
Ortomala Lokni,

@OrtomalaLokni: Non sono a conoscenza di alcuna convenzione per nominare tali processi. Tuttavia, ciò non significa che non ci siano convenzioni.
intelfx
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.