Linux程序进程被杀,日志突然中止,可以考虑是否因为程序占用内存过高,导致系统内存不足,为避免系统崩溃,系统寻找内存占用最大的进程kill掉。
也可能存在运行程序时没有使用nohup ( no hang up) command &将进程提交到后台运行,一旦控制台关闭,任务进程就会停止运行。
问题排查:
1、排查是否因为程序问题导致系统内存占用过高而被系统主动杀死,通过查看Linux 系统日志的方式查看。
如果日志中存在 Out of memory: Kill process等关键词则说明进程被系统主动杀死。
2、对应没有使用nohup command &的情况
排查在Linux环境下运行程序时有没有使用nohup command &命令,将进程提交Linux后台中运行,并且在使用nohup命令时,退出服务器终端连接客户端时有没有使用 exit命令正常退出。
解决:
1、对于程序占用系统内存太大,导致系统主动杀死程序进程的情况,应该主动排查程序中代码是否存在迭代,循环或者内存泄露的可能,从代码的角度对程序重构。
2、对于没有正确使用nohup命令导致的进程异常退出,参考如下命令正确的使用nohup将程序放Linux后台中运行
补充命令 ctrl + z Ctrl+c
ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
Ctrl+c
终止前台命令。
jobs
查看当前有多少在后台运行的命令。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
原文链接:https://blog.csdn.net/ispringmw/article/details/112719262