Linux上通过nohub部署flask接口到后台(即通过nohup使得Python Flask项目在服务器上后台运行)

场景假设:在部署Python Flask项目到线上的时候,在Linux系统的虚拟环境中,运行项目可以正常访问到api,但是在Xshell中,一旦Ctrl+C或者关闭ssh,api接口停止了,api再也请求不到了。

此时我们可以

假如我们要将python脚本的flask接口run.py部署到Centos环境的后台(即退出xshell等工具程序还可以继续运行)。

在 Linux 环境下,有时我们需要长时间运行一个程序,比如训练一个深度学习模型或者执行一些长时间的任务。在这种情况下,我们通常会使用后台运行的方式,以防止因终端关闭而导致程序中断。以下是关于如何在 Linux 下使用 sh, nohup, & 等命令后台运行 Python 脚本的详细解释。

一、nohub部署

1. 创建脚本 vi run.sh

首先,我们需要创建一个 shell 脚本来执行我们的 Python 脚本。这可以通过 vim 编辑器完成:

vi run.sh

2. 填写内容并保存

在编辑器中,输入以下内容:

#!/bin/bash
nohup python3 -u run.py > nohup.log 2>&1 &
echo "Script running in background with PID $!"

这里的解释如下:

  • #!/bin/bash: 这行告诉系统这是一个 bash 脚本。
  • nohup python3 -u run.py > nohup.log 2>&1 &: 这一行是关键命令,让我们逐个解析:nohup: 允许程序在用户退出后继续运行。
    • python3 -u run.py: 执行名为 run.py 的 Python 脚本。-u 表示启用缓冲区的未缓冲模式,这对于实时输出很有用。
    • > nohup.log: 将标准输出重定向到 nohup.log 文件。
    • 2>&1: 将标准错误重定向到与标准输出相同的地方,即 nohup.log 文件。
    • &: 将整个命令放入后台运行。
  • echo "Script running in background with PID $!": 输出后台进程的 PID(进程标识号),以便于后续管理。

保存并退出编辑器(对于 vim,可以按 Esc 键,然后输入 :wq 并回车)。

3. 运行脚本

接下来,我们需要赋予 run.sh 脚本可执行权限,并运行它:

chmod +x run.sh
sh run.sh
或者可以直接运行:
./run.sh
  • 输出示例如下:

可以发现脚本已经运行后台脚本进程144907

说明:例如输出的进程pid为144907,如果后期不想让该项目运行在后台了,就可以通过kill -9 <pid>来结束运行,即此处应是kill -9 144907

但是请注意,如果你的脚本不在当前目录下,或者当前目录不在 PATH 环境变量中,你需要使用 sh run.sh 或者 bash run.sh 来执行。

4. 检查脚本是否正确启动

运行脚本后,检查 nohup.log 文件以确认脚本是否已正确启动:

cat nohup.log
 
  
  • 输出日志如下

可以看到项目运行一些脚本情况

二、相关说明

1. 关于 sh, source.命令

  • sh script.sh:使用 /bin/sh 解释器来执行脚本。这是最基本的 shell 解释器,适用于大多数 shell 脚本。
  • bash script.sh:使用 /bin/bash 解释器来执行脚本。Bash 是一个功能更强大的 shell,支持更多的特性。
  • source script.sh. script.sh:这两种方式都会使当前 shell 会话读取并执行脚本的内容。这意味着脚本中的任何环境变量更改都会影响当前会话。

2. 后台执行命令:&nohup

  • &:将命令放入后台执行。当你关闭终端时,该命令会被终止。
  • nohup:允许你在退出终端之后继续运行命令。配合 & 使用,可以确保即使你关闭终端,命令也会继续运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值