【发布时间】:2019-03-16 06:12:54
【问题描述】:
我有如下脚本
testscript.sh
#!/bin/bash
while true
do
/sbin/tcpdump -n -c 2 -i eth0 >/tmp/pkt_eth0
sleep 60
done
当我试图杀死它时,testscript.sh 消失但 tcpdump 等待过程仍然存在。同样对于testscript.sh,我无法使用killall,所以需要pid
$kill -15 pid
但更喜欢
$killall -15 testscript.sh
结束脚本和所有子进程。如何实现?
【问题讨论】:
-
如果您在后台运行作业(将
&附加到命令中),并使用wait命令等待完成,那么您拥有更多控制权。例如,您可以使用作业编号而不是 PIDkill。您可以使用trap在脚本中捕获信号(不是 SIGKILL)。 -
我使用trap添加了clean_up脚本,但是等待进程仍然无法以某种方式被杀死
标签: linux bash shell kill-process