일부 하위 프로세스를 생성하지만 한 번에 두 번 이상 생성하지 않는 Python 스크립트가 있습니다 n
.
주어진 시간에 하위 프로세스 이상이 없고 n
일반적으로 n
프로세스가 실행 중인지 확인하기 위해 쉘 스크립트를 작성하고 싶습니다.
쉘 스크립트에 Python 프로그램의 PID가 있는 경우 해당 PID가 현재 소유하고 있는 하위 프로세스 수를 어떻게 확인할 수 있습니까? 예를 들어
python script.py &
pid=$!
while true
do
# do something that prints number of subprocesses of
# the process $pid to stdout
sleep 1
done
답변1
ps -eo ppid= | grep -Fwc $pid
grep
지원하지 않는 경우 -w
:
ps -eo ppid= | tr -d '[:blank:]' | grep -Fxc $pid
또는
ps -eo ppid= | awk '$1==ppid {++i} END {print i+0}' ppid=$pid
또는 (위치 매개변수 중단)
set $(ps -eo ppid=); echo $#
이는 원자적이지 않으므로 데이터를 수집하는 데 걸리는 짧은 시간 내에 일부 프로세스가 종료되고 다른 프로세스가 생성되는 경우 개수가 잘못될 수 있습니다.
답변2
노력하다 ps --ppid ${pid} --no-headers | wc --lines
.
답변3
만약에pgrep
사용 가능, -P
상위 pid[ ]로 필터링됨:
sproc_pids=( $(pgrep -P $pid) ) && echo ${#sproc_pids[@]}