加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在bash中使用杀死SIGUSR2?

发布时间:2020-12-13 19:43:51 所属栏目:Linux 来源:网络整理
导读:我用iptraf来监控 linux中的网络流量,shell命令是(make iptraf在后台运行): iptraf -s eth0 -f -B -L ./traffic.dat 如果我想得到结果,我必须先停止iptraf,所以我使用shell命令: kill -SIGUSR2 $pid 但是,如果我将这些shell命令移动到bash脚本文件(net.sh)
我用iptraf来监控 linux中的网络流量,shell命令是(make iptraf在后台运行):
iptraf -s eth0 -f -B -L ./traffic.dat

如果我想得到结果,我必须先停止iptraf,所以我使用shell命令:

kill -SIGUSR2 $pid

但是,如果我将这些shell命令移动到bash脚本文件(net.sh)中,我无法阻止iptraf,并且我收到错误:

kill: SIGUSR2: invalid signal specification

我在脚本文件(net.sh)中使用’kill -l’,我发现没有参数名称是SIGUSR2.如果我使用USR2或-9,我什么也得不到.

完整的脚本文件是:

iptraf -s eth0 -f -B -L ./temp.txt
    pid=`ps -ef | grep iptraf | grep -v grep | awk '{print $2}'`
    kill -USR2 $pid
    cat temp.txt

这些命令后我什么都没得到.

如果我想得到结果,我该怎么办?

解决方法

SIGUSR2依赖于体系结构,其值可以是31,12或17.这在 man 7 signal中有描述.您必须找出适合您系统的值.通常这是通过查看:
/usr/include/asm/signal.h

在我的系统上 – Ubuntu 12.04 AMD 64 – 它的值为12:

#define SIGUSR2     12

一旦知道系统上SIGUSR2的正确数值,就可以使用以下命令发送此信号:

kill -SIGNO PID
# In this case
kill -12 PID

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读