在我的公司,允许一些命令与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)
现在尝试杀死该过程.
只需运行kill通过sudo,以及:
sudo kill -2 $!
Run Code Online (Sandbox Code Playgroud)
这样,该kill进程将有权将信号发送到以root身份运行的进程.