场景假设:在摆设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 编辑器完成:
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 脚本可实行权限,并运行它:
可以发现脚本已经运行在背景了,脚本的进程号为144907。
说明:例如输出的进程pid为144907,假如后期不想让该项目运行在背景了,就可以通过kill -9 <pid>来竣事运行,即此处应是kill -9 144907
但是请留意,假如你的脚本不在当前目录下,或者当前目录不在 PATH 环境变量中,你需要利用 sh run.sh 或者 bash run.sh 来实行。
4. 查抄脚本是否精确启动
运行脚本后,查抄 nohup.log 文件以确认脚本是否已精确启动:
[code][/code]
可以看到项目运行的一些脚本环境。
二、相关说明
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:允许你在退出终端之后继承运行命令。共同 & 利用,可以确保即使你关闭终端,命令也会继承运行。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |