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}")"

관련 정보