qbit
在使用 Python 的 FastAPI 框架,在 Python 脚本中用 os.system
调用了 uvicorn
启动程序,调用链条大致如下
python3 main.py # 进程 1
-- sh python3 uvicorn # 进程 2
-- python3 uvicorn # 进程 3
qbit
发现直接 kill
进程 1 或 进程 2,并不能终止进程 3。即 kill
某个进程,并不一定能终止该进程的子进程和孙子进程。- 于是通过找到孙子进程的方式来终止进程
- 编写重启脚本如下
echo "重启 run_qbit 进程"
echo "获取进程 ID"
pid=`pgrep -f run_qbit`
# 杀掉孙子进程
if [ -z "$pid" ]; then
echo "未找到需 kill 的 run_qbit 进程"
else
echo "找到进程:"$pid", 即将 kill ..."
kill `pgrep -P $(pgrep -P $pid)`
fi
echo "即将启动 run_qbit 进程 ..."
export CfgFile=/home/qbit/config.toml
nohup python /home/qbit/app/main.py run_qbit > /dev/null 2>&1 &
- 脚本中的
run_qbit
是为了唯一定位入口进程,跟 Python 程序本身无关
qbit snap
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。