2014-08-29 1 views
3

제목으로 Linux의 sh 쉘에서 위의 명령을 실행했지만 "ps -ef | grep dummy"를 실행하여 pid 7459의 하위 프로세스를 찾을 수 없습니다. 누군가이 두 명령간에 차이가있을 수있는 이유를 설명 할 수 있습니까? 그들은 활성 프로세스가 아닌 LWP (스레드)입니다. 맞습니까? 스레드를 표시하려면 어떻게해야합니까?psstef에 표시된 일부 프로세스가 ps -ef에 표시되지 않는 이유는 무엇입니까?

sh-3.2$ pstree -p 7459 
dummy(7459)-+-{dummy}(7508) 
      |-{dummy}(7528) 
      |-{dummy}(7529) 
      |-{dummy}(7530) 
      |-{dummy}(7551) 
      |-{dummy}(7552) 
      |-{dummy}(7553) 
      `-{dummy}(7554) 
sh-3.2$ ps -ef | grep dummy 
root  7459 7167 0 Aug28 ?  00:09:13 /usr/bin/dummy 
erv  23720 17254 0 13:22 pts/4 00:00:00 grep dummy 
sh-3.2$ 
+1

이 내용은 pstree의 설명서 (맨 페이지)에서 다룹니다. "프로세스의 하위 스레드는 상위 프로세스에서 발견되며 중괄호로 프로세스 이름과 함께 표시됩니다", 마찬가지로 ps의 맨 페이지는 스레드를 표시하는 방법을 알려줍니다. – nos

답변

4

@nos 이미 말한 바와 같이, 기본적으로 pstree 스레드를 표시하지만, ps -ef하지 않습니다.

ps은 스레드를 표시 할 수 있습니다. (당신이 어떤 버전을 따라 수)이 시도 :

ps -eLf 

이 모든 man page입니다.

리눅스 스레드는 다른 프로세스와 동일한 주소 공간을 공유하는 프로세스 일뿐입니다. 그것은 깨끗하게 도망 갈 수없는 포크와 같습니다. clone syscall documentation에서 자세한 내용을 볼 수 있습니다.

+0

감사합니다. @nos 및 ams. 나는 당신의 대답이 정확하다고 생각합니다! 여기에 질문을 올리는 것은 이번이 처음이며 기쁜 대답은 너무 빨리옵니다. 나는 당신이 신중하게 언급 한 man 페이지를 참조 할 것이다. – Zii

+0

스택 교환에 오신 것을 환영합니다. 다음 단계는 대답을 수락하는 것입니다. – ams

관련 문제