确定一个程序用来启动另一个程序的命令行参数?
Determine command line arguments a program uses to launch another one?
动机:当我运行grub-mkrescue
时,它在内部启动xorriso
写一个iso文件。我想查看正在传递的命令行参数 xorriso
。我知道我可以查看 grub-mkrescue
的来源,但我现在对通用解决方案很感兴趣。我尝试使用 strace
但输出没有说明。
strace grub-mkrescue -o foo.iso iso/
有办法吗?
您可以将 xorriso 替换为更详细的 xorriso:
which xorisso
cd $(dirname $(which ps))
mv xorisso xorisso.org
test -f xorisso | echo "mv failed, stop here"
cat <<'@' > xorisso
echo "[=10=] $@" > /tmp/xorisso_call.tmp
"[=10=].org" "$@"
@
chmod +x xorisso
一个进程会在 运行 execve
之前 fork,所以它不会出现在 parent 的 strace 中。
使用 strace -f
也可以关注 children。
动机:当我运行grub-mkrescue
时,它在内部启动xorriso
写一个iso文件。我想查看正在传递的命令行参数 xorriso
。我知道我可以查看 grub-mkrescue
的来源,但我现在对通用解决方案很感兴趣。我尝试使用 strace
但输出没有说明。
strace grub-mkrescue -o foo.iso iso/
有办法吗?
您可以将 xorriso 替换为更详细的 xorriso:
which xorisso
cd $(dirname $(which ps))
mv xorisso xorisso.org
test -f xorisso | echo "mv failed, stop here"
cat <<'@' > xorisso
echo "[=10=] $@" > /tmp/xorisso_call.tmp
"[=10=].org" "$@"
@
chmod +x xorisso
一个进程会在 运行 execve
之前 fork,所以它不会出现在 parent 的 strace 中。
使用 strace -f
也可以关注 children。