私は、特定のコードスニペットが約84分ごとに定期的に実行されるGentoo派生バージョンで実行される複雑な組み込みLinuxソフトウェアを持っています。このコードが実行できる場所を見つけるために基本コードをスキャンすることは失敗し、crontab
可能な説明もないようです。
私の質問:問題のコードを修正して、他のどのプロセス/コード/ファイル/サービスが最初に開始されたかを調べることは可能ですか?ディレクトリに/proc
私が使用できる情報がありますか?それとも、どのプロセスが特定のコードを実行したのかを判断することは不可能ですか?
答え1
プロセスが長く持続し、確認する時間がある場合はChrisの答えが機能しますが、短期実行コマンドの場合、プロセスがまだ生きている間にこれを把握するのは困難です。
この問題を解決する別の方法は、プログラムの周りに「ラッパー」を置くことです。
呼び出されたプログラムがあるとします/usr/bin/someprog
。
- 移動する
/usr/bin/someprog
。/usr/bin/someprog.orig
/usr/bin/someprog
たとえば、次のようにスクリプトで生成します。
#!/bin/sh
echo "My pid: $$" >> /tmp/someprog.log
ps -ef --forest >> /tmp/someprog.log
exec /usr/bin/someprog.orig
- それから
chmod a+x /usr/bin/someprog
これにより、プロセスツリーがダンプされて保存されます/tmp/someprog.log
。その後、ツリーを見て、何が生成されているかを確認できます。
答え2
親PID(PPID)を探しているようです。
$ ps -o ppid -p 5743
PPID
219
あなたは次のことも言及したからです/proc
。
$ awk '{ print $4 }' /proc/5743/stat
219