我想su -c
以 root 身份运行多个命令。我不想为此使用额外的脚本。
我尝试了以下方法:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"
但它只执行第ls
一个而不是第一个。
我尝试了以下方法:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
但它说分号有错误;
。
你知道怎么做吗?
答案1
该命令运行良好:
su root -c "date; ls -lh"
但在这个命令中:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
因为你&
之前有过;
,所以你会遇到错误。尝试删除&
并重新执行该命令。
或者您可以像这样运行命令:
su root -c "(tcpdump -i wlan0 -s 1500 -w CCCCCC &); ls -lh"
答案2
作为阿努巴瓦 说, 你的
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
命令失败,因为不允许您
&
立即执行;
.您只需直接在 shell 中输入命令即可看到这一点:
true & true
作品true & ; true
不起作用
如果您希望该tcpdump
命令在后台运行,请删除;
,如
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ls -lh;"
;
(最后你也不需要,但这并没有什么坏处)。
答案3
我认为该nohup
命令也会让您得到您想要的... tcpdump 在后台运行(不需要&符号):
su root -c "nohup tcpdump -i wlan0 -s 1500 -w CCCCCC ; ls -lh"
答案4
用于&&
分隔命令,如下所示:
$ su -c "ls && ls"