選択したプログラムで呼び出し側チェーンを検索するためのユーティリティはありますか?

選択したプログラムで呼び出し側チェーンを検索するためのユーティリティはありますか?

Unixには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のトレースとパフォーマンスのコレクションにあるスクリプトの1つ。上記と同じ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...

おすすめ記事