【问题标题】:SIGTERM unable to kill processSIGTERM 无法杀死进程
【发布时间】:2013-08-05 14:36:40
【问题描述】:

我有一个不会在 kill -TERM 时死亡的单线程进程。过程 信号掩码不显示 SIGTERM 被阻止。我正在执行“杀”为 根。我可以使用 SIGKILL 杀死进程,但这是更大的一部分 系统,我希望 SIGTERM 工作。

$ cat /proc/5105/status
Name:   task_root.nginx
State:  S (sleeping)
Tgid:   5105
Pid:    5105
PPid:   1
TracerPid:  0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 24 27 30 46 109 124 1000 
VmPeak:  3304480 kB
VmSize:  3304472 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:    249060 kB
VmRSS:       320 kB
VmData:  3228468 kB
VmStk:      1012 kB
VmExe:      3020 kB
VmLib:     30232 kB
VmPTE:      1076 kB
VmSwap:   248288 kB
Threads:    1
SigQ:   0/63014
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000004
SigIgn: 0000000000000000
SigCgt: 2000000181001cef
CapInh: 0000000000000000
CapPrm: 0000000000200000
CapEff: 0000000000200000
CapBnd: ffffffffffffffff
Cpus_allowed:   ff
Cpus_allowed_list:  0-7
Mems_allowed:   00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    16
nonvoluntary_ctxt_switches: 1

注意 Sig* 属性。 SigCgt、SigIgn 和 SigBlk 表示 SIGTERM 既没有被捕获、也没有被忽略或被阻止(位 #15 未设置 - 将最低有效位计为 #1)。由于 SIGTERM 的默认处置是终止进程,我希望它被杀死。但这不会发生 -

$ sudo kill -TERM 5105

$ cat /proc/5105/status | grep Name
Name:   task_root.nginx

进程在wait()系统调用中被阻塞,等待子进程终止:

$ sudo cat /proc/5105/stack
[<ffffffff8106bfc4>] do_wait+0x1e4/0x260
[<ffffffff8106d230>] sys_wait4+0xa0/0xf0
[<ffffffff81668d02>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff

该进程是使用带有标志 SIGCHLD | 的 clone() 创建的单线程进程。 CLONE_NEWPID |克隆_新闻。 PID 5105 是从父(默认)PID 命名空间查看的顶级 PID。

使用 SIGKILL 杀死进程表明 PID 或进程跟踪不是问题。

【问题讨论】:

  • 您是否尝试使用 strace 或 gdb 附加以查看用户空间回溯?

标签: signals kill sigkill sigterm


【解决方案1】:

您确定 SIGTERM 是您系统上的信号 15 吗?您没有在问题中指定操作系统或架构,但很可能您可以使用“kill -l”来列出信号(这是一个小写字母 L,而不是数字 1)。如果你 strace 进程,然后 kill -TERM 它会发生什么?例如:

strace -Tttf -o strace.out -p 5105 &
kill -TERM 5105

信号掩码是否正在改变? strace 也应该显示这是否正在发生。

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2015-06-08
    • 2015-06-01
    • 2016-07-13
    • 1970-01-01
    • 2015-01-06
    • 2018-05-07
    • 1970-01-01
    相关资源
    最近更新 更多