首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >信号从哪里来?

信号从哪里来?
EN

Stack Overflow用户
提问于 2011-11-10 11:27:25
回答 1查看 1.7K关注 0票数 1

我在solaris服务器上运行了一个shell脚本,这是一个非常复杂的脚本,它会调用一些其他的shell或perl脚本,整个执行过程需要很长时间--几个小时。

奇怪的是,它总是异常退出。我使用truss命令记录shell进程的系统调用。它表明原因似乎是信号#15信号到达。但是我不知道15号信号是从哪里来的?有没有办法可以检测到来自哪个过程的信号?

我的服务器信息:

代码语言:javascript
运行
复制
uname -a
SunOS zsups379 5.10 Generic_144488-07 sun4u sparc SUNW,Sun-Fire-880

桁架输出的切片(23528为主进程,25213是23528的子进程):

代码语言:javascript
运行
复制
25213/2:        read(8, "17A6 G8A078A 58E15 P9E 5".., 8192)     = 8192

25213/1:            Received signal #15, SIGTERM, in lwp_wait() [caught]

23528:      Received signal #15, SIGTERM, in waitid() [caught]

25213/2:        write(9, " X #85 f @F5 Z88CAFB J\n".., 515)     = 515

23528:  waitid(P_ALL, 0, 0xFFBFD958, WEXITED|WTRAPPED|WSTOPPED|WCONTINUED) Err#91 ERESTART

25213/1:        lwp_wait(2, 0xFFBFD39C)                         Err#91 ERESTART

25213/1:        lwp_sigmask(SIG_SETMASK, 0xFFBFFEFF, 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF]

23528:  lwp_sigmask(SIG_SETMASK, 0x00004000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF]
....
EN

Stack Overflow用户

回答已采纳

发布于 2011-11-10 15:40:43

您可以使用与该脚本类似的dtrace脚本轻松跟踪发送到进程的所有信号:

代码语言:javascript
运行
复制
proc:::signal-send
/ args[2] == 15 /
{
    printf("Process %d (%s) killing %d (%s)\n",
            pid, execname, args[1]->pr_pid, args[1]->pr_fname);
}
票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8074660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档