You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:27:54