Вопрос по bash – есть ли способ узнать pid запущенной программы?

9

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

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

ping x.x.x.x &

что такое ping этого пинга?

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

PS. Я ищу простое и чистое решение, я могу представить что-то вроде:

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

но это слишком сложно, также даже то, что я использовал переключатели для персонализации, это не чисто, это может перехватить другие процессы в системе

pgrepесли есть, то лучше чемgrepпингps. Dennis Williamson

Ваш Ответ

2   ответа
18

Переменная$! имеет PID последнего фонового процесса, который вы начали.

Error: User Rate Limit Exceeded THESorcerer
Error: User Rate Limit Exceeded
6

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

my_command & CMDPID=$!
echo "$CMDPID"

Похожие вопросы