场景:Linux 服务器,项目使用 python 虚拟环境,
uvicorn app.main:app --host 0.0.0.0 --port 8000为前台运行,关闭 SSH 终端服务就停止。uvicorn 新版本不支持自带 daemon 守护参数,有两种主流实现方式。
1、nohup(适合测试、临时运行)
命令直接后台执行,输出重定向日志文件,关闭 ssh 会话进程不退出。
bash
nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > uvicorn.log 2>&1 &
- 查看日志:
tail -f uvicorn.log - 查看进程:
ps -ef | grep uvicorn - 停止服务:
kill -9 PID - 缺点:服务器重启不会自动启动;程序崩溃不会自动恢复。
nohup:脱离 SSH 终端;> uvicorn.log 2>&1:输出、错误写入日志;末尾&放入后台。
常用操作
bash
# 实时看日志
tail -f uvicorn.log
# 查询uvicorn进程PID
ps -ef | grep uvicorn
# 停止服务,替换为查到的PID
kill -9 PID
缺点
服务器重启不会自动启动;程序异常崩溃不会自动拉起。生产不要使用。
