如何让nohup进程活着?

How to make alive nohup process?

我将 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

尝试nohup python -m flask run --cert local.crt --key local.key --host=0.0.0.0 --port=443 >/dev/null 2>&1&
使用 nohup ,你应该重定向你打印到 /dev/nulllog,否则它会创建一个文件 nohup.out 占用磁盘 space.

大多数时候我们使用 gunicornsupervisor 来管理 Flask 应用程序。

假设您所有的 Flask 代码都位于文件夹 /home/abc_user/flask_app.

步骤

  1. /etc/systemd/system 中创建文件 flask-server.service

     [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
    
  2. 运行 sudo systemctl daemon-reload.

  3. 使用 systemctl start flask-server.service 启动服务。

  4. 检查它是否已由 systemctl status flask-server.service 启动。状态应为“运行ning”。

  5. 如果你想让你的烧瓶服务器在重启后自动启动,运行 systemctl enable flask-server.service

一些常用操作

  1. 检查当前状态 - systemctl status flask-server.service
  2. 启动服务 - systemctl start flask-server.service
  3. 停止服务 - systemctl stop flask-server.service
  4. 检查日志 - journalctl -u flask-server.service
  5. 流日志 - journalctl -f -u flask-server.service
  6. 检查过去 1 小时的日志 - journalctl -u flask-server.service --since "1 hour ago"

您是否关闭了 flask 服务器 运行 所在的计算机? 如果是这样,问题将通过不关闭计算机或在关闭后重新启动 flask 服务器来解决!

nohup 是一个 POSIX 命令来忽略 HUP(挂断)信号。按照惯例,HUP 信号是终端警告相关注销进程的方式。

如果尚未重定向,通常会进入终端的输出会进入名为 nohup.out 的文件。

请参阅 nohup.out 以在 ./ 或执行的目录中搜索错误。这不是 nohup 错误。查看 nohup.out 和 google 错误并将刷新问题。