最近在ubuntu服务器上跑深度学习的训练程序,运行一段时间程序就会被kill,给实验带来了不少麻烦。作为linux小白,着实是被这个问题困扰了一段时间,现将最后成功的方法记录下来。
关于这类问题,最常见的原因是系统内存不足,触发了OOM killer。于是先用htop查看系统的资源使用情况:
发现系统内存仍然是充足的,但是所有CPU核心都是100%占用。所以应该不是内存不足的问题,而是因为CPU爆满了。CPU主要是被一批“python”进程占用了。尽管这批进程的启动命令都显示为“python”,但没有参数,看起来不像正常的程序。用kill -9命令杀死这些进程,发现过一段时间又会重新出现。由于服务器之前中过挖矿病毒,所以这次也怀疑是中了挖矿病毒。
用 “ll /proc/进程ID” 查看进程信息(由于中间曾经杀死过进程,这里截的两张图的进程ID号不同):
发现进程是由/usr/bin/-bash文件启动的,且该文件已被删除。可以猜测这个文件只是一个临时文件,不是真正的病毒文件,这个路径可能也是临时的,真正的病毒文件可能每次会随机选择一个目录生成临时文件,启动进程后再把临时文件删除,以便隐藏自己。
由于这些进程被杀死后又会重新出现,所以怀疑其背后还有守护进程或者定时任务。首先查看系统的定时任务,ubuntu的/etc目录下有cron.weekly、cron.daily、cron.hourly等存放定时任务的文件夹,由于上述异常进程被杀死后不到一小时又重新出现,所以先查看cron.hourly,进入/etc/cron.hourly,查看目前都有哪些定时脚本: