程序异常被kill,定位原因
使用pytorch训练模型,收到了对应的信号 SIGTERM,从而对应的信号处理 handler 被调用,最终使得程序运行的进程被终止。
由于输出显示程序收到了 SIGTERM 信号,所以尝试寻找发出对应信号的位置。由于发送信号需要经过操作系统 kernel,通过 dmesg 命令可以查看最近的内核操作(实际是输出了内核中记录行为的 kernel ring buffer 的内容)来查看是否存在相关的信息。
dmesg 的 -T 选项表示显示命令的操作时间。
grep:
-E 参数表示使用拓展的正则表达式进行匹配;
-i 参数表示忽略匹配的大小写问题;
-B num 参数表示在匹配行之前另外输出 num 行的数据,用来看是否有上下文的相关信息。
dmesg -T | grep -E -i -B100 'killed process'