后台运行程序-服务器、python

本文介绍了如何使用nohup命令在Linux服务器后台持续运行Python程序,即使关闭终端也不会受影响。通过示例代码展示了如何启动、查看运行状态及结束进程,并解释了相关参数的含义。

0前言

最近遇到一个需求,我有一个很小的python程序,需要一直在服务器器上跑,但是我不想一直开着浏览器或者Xshell 7,所以记录一下怎么解决的。

用到的指令是nohup

具体代码就两行

source venv/bin/activate
nohup python -u main.py > test.log 2>&1 &

source venv/bin/activate 是激活的我python环境

nohup python -u main.py > test.log 2>&1 & 就是后台运行main.py函数了,

  • “-u” 表示不启用缓存,实时输出打印信息到日志文件(如果不加-u,则会导致日志文件不会实时刷新代码中的print函数的信息)
  • “main.py”表示python的源代码文件(根据自己的文件修改) “test.log”表示输出的日志文件(自己修改,名字自定)
  • “>” 表示将打印信息重定向到日志文件
  • “2>&1”</
### 如何在 Linux 服务器上让 Python 程序后台运行 为了使 Python 脚本Linux 服务器上作为后台进程执行,有几种方法可以选择。 #### 使用 `&` 符号启动后台任务 当命令后面加上 `&` 符号时,Bash 将该作业置于后台并立即返回提示符[^1]。这种方式适用于简单的短期任务: ```bash nohup python myscript.py & ``` 这里使用了 `nohup` 命令来忽略挂起信号(即防止因终端关闭而导致程序终止),从而确保即使用户注销或者断开连接之后,Python 脚本仍然能够继续运行。 #### 利用 screen 或 tmux 创建持久会话 对于更复杂的场景或长时间运行的任务,建议采用 `screen` 或者 `tmux` 工具创建独立于当前登录状态的新窗口来进行操作。这允许用户随时重新附着到这些会话查看输出而不会影响正在执行中的应用程序。 例如通过 Screen 启动一个新的分离模式下的 shell 并在其内部调用 Python 解释器加载目标脚本: ```bash screen -dmS mysessionname bash -c 'python /path/to/myscript.py' ``` 此命令将会开启名为 `mysessionname` 的新 session,在其中异步地执行指定的 Python 文件。 #### 配置 systemd service 单元管理服务 如果计划长期部署某个特定版本的应用,则可以考虑编写自定义的服务单元配置文件给 Systemd 来实现自动化管理和监控目的。这种方法提供了更加稳定可靠的解决方案,并且易于维护更新。 下面是一个基本的例子展示如何设置一个简单的 .service 文件用于启动 Python 应用程序: ```ini [Unit] Description=My Application Service After=syslog.target network.target [Service] Type=simple User=nobody WorkingDirectory=/opt/app/ ExecStart=/usr/bin/python3 /opt/app/main.py Restart=on-failure [Install] WantedBy=multi-user.target ``` 保存上述内容至 `/etc/systemd/system/myapp.service` ,接着就可以利用 systemctl 指令完成后续的操作比如启用、重启或是停止该项服务了。 #### 修改 PYTHONPATH 变量以便正确导入模块 有时可能会遇到由于工作环境变量未被适当设定所引起的错误消息指出无法找到所需的库或资源。此时可以通过调整系统的 PYTHONPATH 来解决问题。假设要引入位于 `/full/path/dir/` 下面的 alarm_detection 包的话,可以在脚本开头加入以下几行代码临时改变解释器查找位置列表[^4]: ```python import sys sys.path.append('/full/path/dir/') from alarm_detection import some_module ``` 当然也可以把这条语句写入 `.bashrc`,`.profile` 这样的初始化脚本来达到永久性的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值