Linux下进程追踪

(~原创辛苦~各位如要转载请注明出处~asd1986_n:http://write.blog.youkuaiyun.com/postedit/6762503~)

~最近发现很多网站转载发表了此文,特此说明~


无法确定在Linux系统服务器上的某些进程是否已然死了还是仍然再运行?

某些进程出现挂死现象,但手动调用时又能正常运行,想在系统调用级别记录这些进程的运行状况。

想看看进程是否发生阻塞,阻塞在哪里。

这些情况就可以用牛x的strace命令来监控相关进程,很好用的说~

 

进行snmp监控终端时,使用strace排查:

使用strace -F -f -p 1312 -o /localhost/test/Getinfo.txt 追踪进程实际的系统调用情况。

1312实际就是运行程序的pid,o参数为制定输出路径。

日志如下:

29186 select(8, [3], NULL, NULL, {9, 992000}) = 1 (in [3], left {9, 981000})
29186 recvfrom(3, "0.\2\1\1\4\7public\242 \2\2\4\204\2\1\0\2\1\0000\0240"..., 1472, 0, {sa_family=AF_INET, sin_port=htons(161), sin
_addr=inet_addr("192.168.6.1")}, [16]) = 48
29186 getpeername(3, 0x91ea358, [256])  = -1 ENOTCONN (Transport endpoint is not connected)
29186 getpeername(3, 0x91ea358, [256])  = -1 ENOTCONN (Transport endpoint is not connected)
29186 select(0, NULL, NULL, NULL, {0, 0}) = 0 (Timeout)

。。。非常多

 

可以看到日志记录了进行的系统调用情况,recvfrom就是实际接受snmp响应的状态,端口是161。

在实际排查过程中,日志也是断在了recvfrom处,基本可以确定是snmp通讯引起了进程僵死。

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值