问题描述
我将 nohup
命令与 Python 和 Flask 一起用于后台进程。关闭终端后,它工作正常,但 1 或 2 天后该过程停止。有人能告诉我如何保持后台进程运行吗?我正在使用以下命令:
screen
space
nohup python -m flask run --cert local.crt --key local.key --host=0.0.0.0 --port=443 &
ctrl+a+d
解决方法
假设您的所有 Flask 代码都位于文件夹 /home/abc_user/flask_app
中。
步骤
-
在
flask-server.service
中创建文件/etc/systemd/system
。[Unit] Description=Flask server After=network.target [Service] User=abc_user Group=abc_user WorkingDirectory=/home/abc_user/flask_app ExecStart=python -m flask run --cert local.crt --key local.key --host=0.0.0.0 --port=443 Restart=always [Install] WantedBy=multi-user.target
-
运行
sudo systemctl daemon-reload
。 -
使用
systemctl start flask-server.service
启动服务。 -
检查它是否已由
systemctl status flask-server.service
启动。状态应显示“正在运行”。 -
如果您希望您的 Flask 服务器在重启后自动启动,请运行
systemctl enable flask-server.service
一些常见的操作
- 检查当前状态 -
systemctl status flask-server.service
- 启动服务 -
systemctl start flask-server.service
- 停止服务 -
systemctl stop flask-server.service
- 检查日志 -
journalctl -u flask-server.service
- 流日志 -
journalctl -f -u flask-server.service
- 查看过去 1 小时的日志 -
journalctl -u flask-server.service --since "1 hour ago"
试试nohup python -m flask run --cert local.crt --key local.key --host=0.0.0.0 --port=443 >/dev/null 2>&1&
使用 nohup
,你应该将你的打印重定向到 /dev/null
或 log
,否则会创建一个文件 nohup.out
占用磁盘空间。
大多数时候我们使用 gunicorn
和 supervisor
来管理烧瓶应用程序。
您是否关闭了运行 Flask 服务器的计算机? 如果是这样,要么不关闭计算机,要么关闭后重新启动flask服务器来解决问题!
,nohup 是一个 POSIX 命令,用于忽略 HUP(挂断)信号。按照惯例,HUP 信号是终端警告相关进程注销的方式。
如果尚未重定向,通常会发送到终端的输出会发送到名为 nohup.out 的文件。
请参阅 nohup.out 以在 ./ 或已执行目录中搜索错误。这不是 nohup 错误。查看 nohup.out 和 google 错误,将刷新问题。