特定のプログラムを実行するプログラムを見つける方法は?

特定のプログラムを実行するプログラムを見つける方法は?

どのプログラムが私のスクリプトを実行しているかを調べる方法はありますか?

私はウィンドウマネージャとしてI3を実行しており、i3configの代わりにbyndキーを使用したいのですが、sxkhd何かが私のsxkhd byndを置き換え続けるので、それが何であるかを追跡したいと思います。たぶんそれを使用するかもしれませんが、straceまだ方法が見つかりませんでした。

答えてくれてありがとう。

編集:
以前のプロセスを終了していないsxkhdので、以前のプロセスが私のスクリプトを実行したことがわかりましたが、
まだこれらの実行を追跡する方法は疑問に思います。

ベストアンサー1

$PPIDLinuxでは、変数または/proc/pid/statusから親プロセスのPIDを取得できます。たとえば、デーモンの場合、親プロセスは常に呼び出しプロセスではないが、通常はそうです。つまり、各プログラムを親プロセスのPIDを最初にファイルに書き込んでから、元のバイナリを実行するラッパーに変換することができます。私はsxkhdを使用しませんが、X11を使用するときにxeyesを例に挙げます。xeyes次の内容を含むスクリプトを作成して実行可能にします。

#!/usr/bin/env sh

printf "PPID: %d\n" "$PPID" >> /tmp/XEYES_RUN
xeyes.orig "$@"

ここで、元の xeyes バイナリの名前を xeyes.orig に変更します。

sudo mv "$(command -v xeyes)" "$(dirname $(command -v xeyes))"/xeyes.orig

xeyesソースをスクリプトラッパーに置き換えます。

sudo cp ./xeyes "$(dirname $(command -v xeyes.orig))"

一般通貨xeyes

xeyes

xeyes が実行されるたびに、親プロセスの PID が /tmp/XEYES_RUN に追加されます。コマンドラインから起動すると、/bin/bash と同じシェルの PID になります。

おすすめ記事