【发布时间】:2011-11-10 03:27:25
【问题描述】:
我在 solaris 服务器上运行了一个 shell 脚本,它是一个非常复杂的脚本,它会调用其他一些 shell 或 perl 脚本,整个执行过程会花费很长时间——几个小时。
奇怪的是,它总是异常退出。我使用“truss”命令来记录shell进程的系统调用。它表明原因似乎是信号#15 SIGTERM 的到来。但我不知道信号#15 来自哪里?有什么方法可以检测信号来自哪个进程?
我的服务器信息:
uname -a
SunOS zsups379 5.10 Generic_144488-07 sun4u sparc SUNW,Sun-Fire-880
truss输出的切片(23528为主进程,25213为23528的子进程):
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]
....
【问题讨论】:
标签: shell unix solaris signals