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

Linux服务器nohup运行Flask应用后捕获PID的方法

捕获Flask后台进程PID的可行方案

一、启动时直接捕获PID(推荐)

后台启动进程后,Shell的$!变量会自动保存最后一个后台进程的PID,这是最准确的方法,无需事后查找。

  • 保存到Shell变量:

    # 启动Flask应用并后台运行
    nohup python /home/app/run_flask.py > /home/temp/run_flask.out 2> /home/temp/run_flask.err &
    # 将PID存入变量
    FLASK_PID=$!
    # 可选:打印验证
    echo "Flask应用已启动,PID: $FLASK_PID"
    

    后续终止进程时直接执行:kill $FLASK_PID

  • 写入PID文件:
    如果需要跨Shell或脚本复用PID,可以写入文件持久化:

    nohup python /home/app/run_flask.py > /home/temp/run_flask.out 2> /home/temp/run_flask.err &
    # 将PID写入文件
    echo $! > /home/temp/flask_app.pid
    

    后续读取PID并终止进程:

    kill $(cat /home/temp/flask_app.pid)
    

二、事后查找已运行进程的PID

如果进程已经启动,需要事后查找,注意排除grep自身的进程(你之前的命令错误捕获了grep的PID,示例中112265是grep进程,108708才是真正的Flask进程),以下是两种可靠方法:

方法1:改进ps+grep组合

通过grep -v grep排除grep自身的进程:

FLASK_PID=$(ps -ef | grep /home/app/run_flask.py | grep -v grep | tr -s ' ' | cut -d ' ' -f2)

执行echo $FLASK_PID即可验证输出的正确PID。

方法2:用pgrep简化命令

pgrep是专门用于查找进程PID的工具,-f参数匹配整个命令行,避免误匹配:

FLASK_PID=$(pgrep -f "/home/app/run_flask.py")

该命令直接返回目标进程的PID,无需额外处理,更简洁可靠。

内容的提问来源于stack exchange,提问作者Farid Arshad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:01:24