如何终止使用sudo运行的进程?Ctrl + C可以做到,但不能杀死

bla*_*ang 8 linux bash shell

在我的公司,允许一些命令与sudo一起运行,例如tcpdump.别人没有.

我希望运行tcpdump一段时间,然后停止它.当我运行tcpdump时,我可以用Ctrl + C中止它

我写了一个像这样的shell脚本 -

#!/bin/sh
sudo tcpdump -ieth1 -w ~/dump.bin
sleep 5
kill -2 $!
Run Code Online (Sandbox Code Playgroud)

它确实不起作用.tcpdump的进程以root身份运行,当前用户是普通帐户.

我的问题是:有没有办法在bash脚本中做相同的ctrl c?

编辑:

ps:作为我公司的安全策略,我不能以root身份运行kill.

小智 8

尝试-Z选项tcpdump.它指示tcpdump删除root权限并以参数中指定的用户身份运行.

sudo tcpdump -Z $USER -ieth1 -w ~/dump.bin
Run Code Online (Sandbox Code Playgroud)

现在尝试杀死该过程.


Bla*_*iev 5

只需运行kill通过sudo,以及:

sudo kill -2 $!
Run Code Online (Sandbox Code Playgroud)

这样,该kill进程将有权将信号发送到以root身份运行的进程.

  • 谢谢Blagovest,对不起,我的问题不明确!对于我公司的安全策略,我不能以root身份运行kill,也不能在sudo配置文件中添加任何命令. (2认同)