Python守护进程异常排查:Ubuntu终端状态查看与日志获取
Python守护进程状态查看与问题排查
1. Ubuntu终端查看Python守护进程状态的方法
- 使用
ps命令过滤Python进程:- 执行
ps aux | grep python,可列出所有Python相关进程,结合脚本名get.py或进程PID区分目标守护进程。 - 若已知主进程PID,执行
pstree -p <主进程PID>,能直观查看主进程下的子进程(含守护进程)的层级结构。
- 执行
- 使用
top命令实时监控:- 启动
top后,按u键输入用户名过滤进程,或按P/M分别按CPU、内存占用排序,快速定位目标Python进程。
- 启动
- 使用
pgrep精准匹配:- 执行
pgrep -f get.py,直接返回与get.py相关的进程PID;加上-l参数显示进程名,-a参数显示完整命令行。
- 执行
2. 进程停止原因排查与日志处理
Python默认不会自动保存进程异常日志,需手动配置日志记录,同时结合系统工具排查:
排查步骤
- 捕获目标函数异常并记录日志:
修改fun函数,用try-except包裹核心逻辑,将异常信息写入日志文件,示例代码:import logging # 配置日志输出到文件 logging.basicConfig( filename='daemon_process.log', level=logging.ERROR, format='%(asctime)s - %(process)d - %(levelname)s - %(message)s' ) def fun(self, queue_from_cam): try: # 原有的txt文件I/O操作逻辑 ... except Exception as e: # 记录异常详情,包括调用栈 logging.error(f"进程执行失败: {str(e)}", exc_info=True) - 检查系统层面的进程退出信号:
- 执行
dmesg | grep -i python,查看内核日志中是否有进程被OOM Killer(内存不足时系统自动终止进程)杀死的记录。 - 查看系统日志文件
/var/log/syslog,执行grep -i <进程PID> /var/log/syslog,查找进程退出的相关系统信息。
- 执行
- 监控进程退出码与资源占用:
- 在
new_process函数中,process.join()后打印process.exitcode:非0值通常表示异常退出(如-9为被SIGKILL终止,-15为被SIGTERM终止)。 - 执行
ps -o %cpu,%mem -p <进程PID>,查看进程运行时的CPU、内存占用情况,排查资源耗尽问题。
- 在
- 检查文件I/O隐性问题:
- 确保文件操作使用
with语句自动管理文件句柄,避免句柄泄漏;执行lsof -p <主进程PID>,查看主进程打开的文件描述符数量是否异常。
- 确保文件操作使用
内容的提问来源于stack exchange,提问作者Vishak Raj
相关产品推荐
相关产品推荐

