最近挂在后台的一个自己写的 Python 监控脚本老是莫名其妙挂掉,重新启动过段时间又没了。看它自己的输出也看不出什么问题。
最后老老实实用系统级的日志工具来查。因为我是把它做成了 systemd 的守护进程运行的,所以直接用 journalctl 命令:
1journalctl -u my_script.service -n 50 --no-pager
看了一下最后 50 行报错,破案了,是内存溢出了(OOM Killed)。因为代码里有个数组忘了清空,导致挂机时间一长直接把系统内存吃光被系统内核强制杀掉了。
排错的时候,不能只看表象,系统底层的日志往往才是最诚实的。