Вы можете использовать $!
, чтобы получить pid последнего фонового процесса (в данном случае это будет sudo), и ps --ppid
, чтобы узнать о его дочерних элементах. Так, например:
$ sudo tcpdump -i eth0 port 80 -w eth0.pcap &
$ ps --ppid $! -o pid=
16772
$ ps --pid 16772
PID TTY TIME CMD
16772 pts/3 00:00:00 tcpdump
Если вы делаете это в сценарии, вы можете использовать sleep 1
между sudo
и ps
, чтобы убедиться, что ребенок начинает.
Обратите внимание, что если вы действительно должны использовать флаг -b
для sudo, это не сработает, так как это заставит sudo выполнить дополнительный форк и немедленно завершить работу, потеряв соединение между дочерним и родительским элементами (команда tcpdump переименовать в init), что означает, что у вас не будет простого способа отличить ребенка от любой другой подобной команды.