프로그램에서 생성된 모든 하위 프로세스의 이름을 보는 방법

프로그램에서 생성된 모든 하위 프로세스의 이름을 보는 방법

(TLDR Doug O'Neill이 strace -f -e execve ./myprogram내 문제를 해결했습니다)

명령줄에서 프로그램을 시작합니다. 프로그램을 실행하면 프로세스가 생성됩니다. 프로그램에 의해 생성된 모든 프로세스의 이름을 보거나 기록하고 싶습니다.

세부 사항

나는 top숲보기를 시도했다 V:

$ top -c -d 1

상위 프로그램만 잠시 표시됩니다. 새로 고침 빈도가 너무 느려 하위 프로세스를 표시할 수 없는 것 같습니다.

필터링을 시도했지만 COMMAND=myprogram이는 하위 프로세스를 필터링할 가능성이 높습니다.

상위 프로그램은 프로세스를 생성하지만 상단의 포리스트 뷰가 원래 프로세스 아래에 들여쓰기될지 아니면 이러한 새 프로세스를 독립적으로 표시할지 확실하지 않습니다. 생성된 프로세스가 상위 프로세스와 독립적일 수 있는지 확실하지 않습니다.

업데이트 #1

나는 노력했다이 답변수면을 제거합니다.

#!/bin/bash

mkdir -p "$HOME/ps_logs"

while true; do
    ps faux > "$HOME/ps_logs/ps_$(date +%Y-%m-%d_%H:%M:%S).log"
done

다음을 사용하여 출력을 필터링했습니다.

grep -rnw './' -e 'myprogam'

모든 파일에는 .만 포함되어 있습니다 . 그렇다면 프로세스가 생성되는지 myprogram어떻게 알 수 있습니까 ?myprogram

답변1

나는 일반적으로 ps auxf부모 프로세스 아래에 자식 프로세스를 시각적으로 표시하기 때문에 다음과 같이 사용하는 것을 좋아합니다.

$ ps auxf
...
root       637  0.0  0.0 110044   800 tty1     Ss+  02:50   0:00 /sbin/agetty --noclear tty1 linux
root       983  0.0  0.1 404028  1136 ?        Sl   02:50   0:11 /usr/sbin/VBoxService --pidfile /var/run/vboxadd-service.sh
root      1013  0.0  1.6 562416 16444 ?        Ssl  02:50   0:03 /usr/bin/python -Es /usr/sbin/tuned -l -P
root      1015  0.0  0.4 105996  4108 ?        Ss   02:50   0:00 /usr/sbin/sshd -D
root     20191  0.0  0.5 152116  5576 ?        Ss   10:06   0:00  \_ sshd: vagrant [priv]
vagrant  20193  0.0  0.2 152304  2872 ?        S    10:06   0:00      \_ sshd: vagrant@pts/0
vagrant  20194  0.0  0.2 115964  2644 pts/0    Ss   10:06   0:00          \_ -bash
root     20232  0.0  0.2 201844  2956 pts/0    S    10:06   0:00              \_ sudo -Es
root     20233  0.0  0.2 116208  2964 pts/0    S    10:06   0:00                  \_ /bin/bash
root     20510  0.0  0.1 151240  1932 pts/0    R+   11:01   0:00                      \_ ps auxf
root      1115  0.0  0.2  91628  2192 ?        Ss   02:50   0:00 /usr/libexec/postfix/master -w
postfix   1117  0.0  0.3  91800  4048 ?        S    02:50   0:00  \_ qmgr -l -t unix -u
postfix  20149  0.0  0.3  91776  4048 ?        S    09:39   0:00  \_ pickup -l -t unix -u
...

또는 PID + PGID 목록만 보려면 ps다음과 같이 스위치를 사용할 수 있습니다.

$ ps x -o  "%p %r %c"
  PID  PGID COMMAND
    1     1 systemd
    2     0 kthreadd
    3     0 ksoftirqd/0
    5     0 kworker/0:0H
    7     0 migration/0
    8     0 rcu_bh
  ...
  ...
  591   591 rngd
  594   594 systemd-logind
  596   596 smartd
  597   597 rsyslogd
  600   600 acpid
  616   616 abrtd
  617   617 abrt-watch-log
  630   630 atd
  637   637 agetty
  983   981 VBoxService
 1013  1013 tuned
 1015  1015 sshd
 1115  1115 master
 2426  2426 NetworkManager
 2439  2439 dhclient
 3123  3123 firewalld
 3828     0 kworker/u2:1

관련 정보