2012-05-24 3 views
8

Если я запускаю скрипт bash в качестве дочернего элемента, я могу передать его собственный pid родительскому элементу с помощью $$.есть ли способ узнать pid запущенной программы?

Есть ли способ, чтобы найти PID программы, которые я запустить из сценария в фоновом режиме как:

ping x.x.x.x & 

что Идентификатор этого пинг?

(я просто надеюсь, что я выразил себя правильно ... мой английский не самый лучший)

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

СПАСИБО! это решает это ... и (покраснеть) я не знаю, как я пропустил это – THESorcerer

+1

@THESorcerer: Не забудьте отметить ответ, как принято. –

6

Используйте это: $! сразу после выполнения команды, чей идентификатор вы хотите. Это означает, что вам нужно использовать амперсанд (&) после команды, чтобы запустить его в фоновом режиме. Например:

my_command & CMDPID=$! 
echo "$CMDPID" 
Смежные вопросы