Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 确定一个程序用来启动另一个程序的命令行参数?_Linux_Bash_Process_Command Line Arguments - Fatal编程技术网

Linux 确定一个程序用来启动另一个程序的命令行参数?

Linux 确定一个程序用来启动另一个程序的命令行参数?,linux,bash,process,command-line-arguments,Linux,Bash,Process,Command Line Arguments,动机:当我运行grub mkrescue时,它会在内部启动xorriso来编写一个iso文件。我想看看传递了哪些命令行参数xorriso。我知道我可以查看grub mkrescue的源代码,但我现在对通用解决方案感兴趣。我试过使用strace,但输出不起作用 strace grub-mkrescue -o foo.iso iso/ 有办法做到这一点吗?您可以用更详细的方法替换xorriso: which xorisso cd $(dirname $(which ps)) mv xorisso

动机:当我运行
grub mkrescue
时,它会在内部启动
xorriso
来编写一个iso文件。我想看看传递了哪些命令行参数
xorriso
。我知道我可以查看grub mkrescue的源代码,但我现在对通用解决方案感兴趣。我试过使用
strace
,但输出不起作用

strace grub-mkrescue -o foo.iso iso/

有办法做到这一点吗?

您可以用更详细的方法替换xorriso:

which xorisso
cd $(dirname $(which ps))
mv xorisso xorisso.org
test -f xorisso | echo "mv failed, stop here" 

cat <<'@' > xorisso
echo "$0 $@" > /tmp/xorisso_call.tmp
"$0.org" "$@"
@
chmod +x xorisso
哪个xorisso
cd$(dirname$(哪个ps))
mv xorisso xorisso.org
测试-f xorisso |回波“mv失败,停在此处”
cat/tmp/xorisso_call.tmp
$0.org“$@”
@
chmod+xorisso

进程将在运行
execve
之前分叉,因此它不会显示在父进程的区域中


strace-f
也跟着孩子们。

你能写出完整的一行吗?考虑到xorriso在运行时完成
ps-fC xorriso
所需的时间不到1秒。通常,大多数程序都有一个“详细”选项以获得更详细的输出。尝试使用-v或--verbose运行grub mkrescue。甚至可能-V。它会在execve之前分叉,所以除非您使用
-f
来跟随,否则您将无法使用strace看到它children@thatotherguy你的答案是正确的,所以我可以把这个问题标记为已解决!用
strace-f grub mkrescue-o foo.iso/| grep xorriso
调用它,这个技巧做得非常好!