프로세스 이름에 괄호를 추가해야하는 이유는 무엇입니까?


19

내 컴퓨터 ( 데비안 테스트 )에서 내가 할 때

ps aux | grep pam

나는 얻는다

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)프로세스의 이상한 이름 인 것 같습니다. 이 포럼을 읽으면이 이름이 systemd에 의해 의도적으로 설정되어 있음을 알 수 있습니다. 우리 는 소스 코드에서

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

이름이 아닌 예쁘게 보이고 /bin/ps왜 선택 해야합니까? 이름을 괄호로 묶는 것은이 프로세스가 커널 스레드와 같은 특별한 것을 가지고 있음을 나타냅니다 .(sd-pam)sd-pam[kintegrityd]


"이 작업의 목적은 무엇입니까"와 무슨 의미입니까? 그것은 이름이며, 아마도 그것이하는 것과 비슷할 것입니다 (SessionDestroy-PAM?).
kos

귀하의 의견을 고려하여 질문을 수정했습니다.
Ortomala Lokni

아 죄송합니다, 당신이 괄호에 대해 이야기하는 것을 이해하지 못했습니다. 솔직히 나도 몰라 :에 따라 ps 괄호 및 인쇄에 프로세스의 회계 이름을 둘러싸고 그 과정은 경우의 이름이 변경되었습니다 표시하는 경우 ps그러나이 과정의, 더 이상 원래의 이름으로 프로세스를 찾을 수 없습니다 이것이 왜 pam소스 코드 에서 수행되는지 설명하지 않습니다 ps.
kos

1
어쩌면 나는 @kos의 잠재 의식을 무의식적으로 읽었을 것입니다.하지만 사람들이 sd-pam이라는 바이너리를 헛되게 찾는 것을 피하려고한다고 말하고있었습니다. ps가 이미 똑같은 구문을 사용한다는 것을 읽은 후에는 의도적 일 수 있습니다. 대괄호를 추가하지 않는 다른 프로세스 목록 도구가있을 것입니다. ( systemd-cgls?)
sourcejedi

2
@kos : "sd"는 "session destroy"가 아니라 systemd를 의미합니다.
intelfx

답변:


15

이름을 괄호로 묶는 것은이 과정에 특별한 것이 있음을 나타냅니다

두 가지 경우가 있습니다.

  • (...)

PID 1이 서비스 바이너리를 시작하면 먼저 프로세스를 분기 한 다음 서비스 구성에 따라 프로세스의 매개 변수를 조정하고 마지막으로 execve ()를 호출하여 실제 서비스 프로세스를 실행합니다. 포크와 exec 사이에 PR_SET_NAME을 사용하여 프로세스 이름을 시작할 이름으로 변경하여 시작된 최종 서비스에 쉽게 매핑 할 수 있습니다. 그러나 "comm"이름 (예 : PR_SET_NAME으로 설정 한 프로세스 이름, 즉 "top"이 표시하는 프로세스 이름)에는 엄격한 크기 제한이 있으므로 잘라야합니다. 일반적으로 접미어가 더 흥미 롭기 때문에 문자열의 시작 부분을 잘라냅니다 (그렇지 않으면 systemd의 다양한 서비스가 모두 "(systemd-)"로 표시됨-특히 유용하지 않음).

https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html을 참조 하십시오.

  • (sd-pam) 특별한 경우입니다

비어 있지 않은 'PAMName ='인 유닛을 스폰하면 유닛 내부 의 자식 프로세스를 분기 하여 세션을 감시하는 '(sd-pam)'이라고합니다. 메인 프로세스가 종료 될 때까지 기다린 다음 pam_close_session (3)을 통해 완료합니다.


5

/ bin / ps에서 예쁘게 보이고 sd-pam뿐만 아니라 (sd-pam)을 선택하는 이유는 무엇입니까? 이름을 괄호로 묶는 것은이 과정에 특별한 것이 있음을 나타냅니다

예, 뭔가 특별한 것이 있습니다. 이것은 기존 바이너리의 이름이 아닌 구성 이름 입니다. 즉, "sd-pam"파일이 어디에도 없습니다. 이 프로세스는 PID 1의 포크입니다.

괄호는 아마도 이것을 나타냅니다.


동일한 규칙을 사용하는 다른 프로세스가 있고 이것이 표준 규칙인지 알고 있습니까?
Ortomala Lokni

@OrtomalaLokni : 나는 그러한 프로세스의 이름을 짓는 것에 대한 규칙을 모른다. 그러나 이것이 규칙이 없다는 것을 의미하지는 않습니다.
intelfx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.