유닉스에 mf cobol 프로그램이 있습니다. 호출된 프로그램이 몇 개나 호출되었는지, 호출된 프로그램 내에서 어떤 프로그램이 호출되었는지 알아내야 합니까?
답변1
명령으로 시작된 모든 프로그램을 보려면 하위 키를 따르는 옵션을 사용할 수도 있습니다 strace
.-f
예를 들어, bash -c
명령의 모든 출력을 파일로 수집 하려면 다음을 수행하십시오 /tmp/out
.
$ strace -f -o /tmp/out -e execve bash -c 'ls -d . | cat -n; date'
$ grep 'execve(' /tmp/out
명령과 해당 매개변수가 표시됩니다.
758 execve("/usr/bin/bash", ["bash", "-c", "ls -d . | cat -n; date"], ) = 0
759 execve("/usr/bin/ls", ["ls", "-d", "."], <unfinished ...>
760 execve("/usr/bin/cat", ["cat", "-n"], <unfinished ...>
761 execve("/usr/bin/date", ["date"], ) = 0
또는 커널이 CONFIG_FTRACE로 구성되어 있다고 가정하면 다음을 사용할 수 있습니다.모니터링 실행 시스템에서 실행되는 모든 명령을 표시하는 Brendan Gregg의 추적 및 성능 컬렉션에 있는 스크립트 중 하나입니다. 위와 동일한 2개의 명령을 실행할 때의 출력 예:
$ sudo /opt/perf-tools-master/bin/execsnoop
Tracing exec()s. Ctrl-C to end.
Instrumenting sys_execve
PID PPID ARGS
1567 2134 strace -f -o /tmp/out -e execve bash -c ls -d . | cat -n; date [...]
1569 1567 bash -c ls -d . | cat -n; date
1570 1569 ls -d .
1571 1569 cat -n
1572 1569 date
1575 2134 grep execve( /tmp/out
^C
Ending tracing...
답변2
이것이 당신이 원하는 것인지 확실하지 않지만 사용할 수 있습니다
pstree <name_of_your_cobol_program_process>
그러면 프로그램에서 호출한 모든 하위 프로세스의 트리가 표시됩니다.