DPkg::Pre-Invoke スクリプトから現在の apt コマンドを呼び出すには?

DPkg::Pre-Invoke スクリプトから現在の apt コマンドを呼び出すには?

DPkg::Pre-Invokeスクリプト/コマンドを実行する前に実行できることを知っています。apt

DPkg::Pre-Invoke { "/tmp/pre-invoke.sh"; };

apt私のスクリプトで実行された完全なコマンドを取得したいと思います。たとえば、スクリプト内で実行すると、呼び出しコマンドが、またはであることをapt install funky確認したいと思います。apt install funkyinstall funky

可能ですか?

答え1

必要な情報を取得する方法を見つけましたが、気に入らなかった。とても陳腐だった。より良い方法があると思います。他の人が私にもっと良い方法を教えてくれるかと思います。

デフォルトでは、コマンドを使用してプロセスが見つかるまで、現在のプロセスのプロセスツリーを調べますapt

# we need to work up the process tree to find the apt command that triggered the call to this script
# get the initial PPID
PARENT_PID=${PPID}
# trim leading spacess
PARENT_PID="${PARENT_PID## }"

# if the command for this PPID is not apt
while [ "$(ps -ho comm "${PARENT_PID}")" != "apt" ] ; do
    # go up one level
    PARENT_PID=$(ps -ho ppid "${PARENT_PID}")
    PARENT_PID="${PARENT_PID## }"
done

APT_CMD="$(ps -ho args "${PARENT_PID}")"

関連情報