DPkg::Pre-Invoke
스크립트/명령을 실행하기 전에 실행할 수 있다는 것을 알고 있습니다 .apt
DPkg::Pre-Invoke { "/tmp/pre-invoke.sh"; };
apt
내 스크립트에서 실행된 전체 명령을 얻고 싶습니다 . 예를 들어, 스크립트 내에서 실행하면 호출 명령이 , 또는 임을 apt install funky
확인하고 싶습니다 .apt install funky
install 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}")"