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


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.