2012-05-24 8 views
8

bash 스크립트를 자식으로 실행하면 $$를 사용하여 자체 pid를 부모에게 전달할 수 있습니다. 그 핑의 PID 무엇시작한 프로그램의 PID를 알 수있는 방법이 있습니까?

ping x.x.x.x & 

:

내가 좋아하는 배경 에서 스크립트에서 실행 프로그램의 PID를 찾을 수있는 방법이 있습니까?

PS (난 그냥 ... 내 영어 최고의 아니다 제대로 내 자신을 표현 바란다). 이 시스템의 다른 프로세스를 잡을 수있다, 나는 깨끗하지 개인화 스위치를 사용하는 것이

ping -t10000 -W10 x.x.x.x & 
then 
ps ax | grep 'ping -t10000 -W10 x.x.x.x'$ 

하지만도 또한 너무 복잡 : 나는 단순하고 깨끗한 솔루션을 찾고 있어요, 내가 좋아하는 뭔가를 상상할 수

+0

'pgrep'이 가능한 경우'grep'ping'ps'보다 좋습니다. –

답변

17

변수 $!에는 시작한 마지막 백그라운드 프로세스의 PID가 있습니다.

+0

감사합니다! 이 문제를 해결하고 ... (blushing) 나는 그것을 놓친 방법을 모르겠다. – THESorcerer

+1

@THESorcerer : 답변을 수락 된 것으로 표시하는 것을 잊지 마십시오. –

6

다음을 사용하십시오 : $! 원하는 PID의 명령을 실행 한 직후. 즉, 명령 뒤에 앰퍼샌드 (&)를 사용해야 백그라운드에서 시작할 수 있습니다. 예 :

my_command & CMDPID=$! 
echo "$CMDPID" 
관련 문제