プロセス作成時のpidと名前の印刷

プロセス作成時のpidと名前の印刷

問題の観点からここpidof、OPはシェルスクリプトでプロセスのpidを繰り返しポーリングしようとします。もちろん、これはpidofプログラムの新しいプロセスが毎秒数回開始される必要があるため、非効率的です(これが質問のCPUスパイクの原因であるかどうかはわかりませんが、可能になります)。

通常、シェルスクリプトでこの種の問題を解決する方法は、単一のプログラムを使用して必要なデータを出力し、stdout必要に応じていくつかのテキスト処理を実行することです。これには、より多くのプログラムを同時に実行することが含まれますが、ポーリング目的で新しいプロセスが継続的に生成されないため、CPU使用率が少なくなる可能性があります。

したがって、上記の問題に対する解決策の1つは、プロセスの作成時にプロセスの名前とPIDを出力するいくつかのプログラムを使用することです。これにより、次のことができます。

pids-names |
  grep some_program |
  cut -f 2 |
  while read pid; do
    process-pid "$pid"
  done

これに関する問題は、より基本的な質問が提起されることです。 PIDとプロセス名が生成されたときにどのように印刷しますか?

というプログラムが見つかりましたps-watcher。別のオプションは、ログが直接渡される場合を使用することです。理想的な解決策はこれよりもシンプルで移植性が高いですが、これが最良のオプションであれば受け入れます。perlpsauditdtail -fauditd

ベストアンサー1

Linux関連の回答:

perf-toolsにモニタリングの実行それがまさにそれがすることです。 ftraceなど、さまざまなLinux関連機能を使用します。 Debian では次の場所にあります。パフォーマンスツールが不安定です。パック。

man catたとえば、別の端末で実行しました。

root@Zia:~# execsnoop 
TIME        PID   PPID ARGS
17:24:26  14189  12878 man cat 
17:24:26  14196  14189 tbl 
17:24:26  14195  14189 preconv -e UTF-8 
17:24:26  14199  14189 /bin/sh /usr/bin/nroff -mandoc -Tutf8 
17:24:26  14200  14189 less 
17:24:26  14201  14199 locale charmap 
17:24:26  14202  14199 groff -mtty-char -Tutf8 -mandoc 
17:24:26  14203  14202 troff -mtty-char -mandoc -Tutf8 
17:24:26  14204  14202 grotty 

これを行うポータブルな方法があるかどうか疑われます。

おすすめ記事