Linux系统下Python脚本后台运行与进程管理详解

在 Linux 系统中后台运行 Python 脚本及进程管理指南

简介:在 Linux 环境下,我们常常需要让 Python 脚本在后台持续运行,以实现诸如网络服务、定时任务等功能。本文将详细介绍如何使用不同方法在后台运行 Python 脚本,并深入探讨如何对这些后台进程进行管理和监控。同时,我们还会涵盖 Python 3.7.8 的安装以及相关包的离线安装方法。

一、Python 3.7.8 安装

(一)下载安装包

1.首先,你需要从 Python 官方网站下载 Python 3.7.8 的源代码压缩包。可以使用以下命令在终端中下载(假设你使用wget工具):

wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz
  1. 解压安装包
    下载完成后,使用以下命令解压压缩包:
tar -zxvf Python-3.7.8.tgz
  1. 配置安装
    进入解压后的目录,执行配置脚本,指定安装路径(例如/usr/local/python3.7.8)
cd Python-3.7.8
./configure --prefix=/usr/local/python3.7.8
  1. 编译和安装
make
sudo make install
  1. 配置环境变量
source ~/.bashrc
  1. 验证安装
python3 --version

(二)相关包的离线安装

  1. 下载离线包
    在有网络连接的环境中,使用pip下载所需包的离线文件。例如,要下载numpy包及其依赖,使用以下命令:
pip3 download numpy -d /path/to/save/packages

这里/path/to/save/packages是你指定保存下载包的目录。你可以根据需要下载多个包,重复上述命令即可。

  1. 传输离线包
    将下载好的离线包传输到目标 Linux 系统中。可以使用 USB 存储设备、网络共享等方式进行传输。

  2. 安装离线包
    在目标系统中,进入包含离线包的目录,使用pip的–no-index和–find-links选项进行安装。例如,安装numpy包:

tar包安装

tar -zxvf pybase64-1.2.3.tar.gz
cd pybase64-1.2.3
python3 setup.py install

zip包安装

unzip hashlib-20081119.zip
cd hashlib-20081119
python3 setup.py install

whl包安装

pip3 install --user PyMySQL-1.1.1-py3-none-any.whl
  1. 安装遇到报错处理

Python 版本兼容性:确保这些包与你使用的 python3 版本兼容。

依赖问题:某些包可能依赖于其他的库,在安装过程中如果遇到依赖缺失的错误,需要先安装相应的依赖库。

环境隔离:建议使用虚拟环境(如 venv 或 virtualenv)来安装这些包,以避免不同项目之间的包冲突。

可以重新下载这些 Python 包

二、在后台运行 Python 脚本的多种方式

(一)

  1. 使用 nohup + &
    nohup 命令用于忽略挂断信号,& 符号将进程放入后台运行。
nohup python3 boot_rest.py &

说明:
输出会被重定向到当前目录的 nohup.out 文件中。
终端关闭后,进程仍会继续运行。
查看日志:tail -f nohup.out # 实时查看输出

  1. 使用systemd服务(推荐长期运行场景)
    systemd是 Linux 系统中广泛使用的系统和服务管理器,将 Python 脚本配置为systemd服务,便于进行更精细的管理和实现开机自启。
首先,创建一个服务文件,例如:
sudo nano /etc/systemd/system/boot-rest.service
在文件中写入以下内容(需根据实际路径和用户名进行修改):
[Unit]
Description=Boot REST Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /path/to/boot_rest.py
WorkingDirectory=/path/to/
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target

完成配置后,重载systemd并启动服务
sudo systemctl daemon-reload
sudo systemctl start boot-rest.service

若要设置开机自启,执行:sudo systemctl enable boot-rest.service
通过sudo systemctl status boot-rest.service命令可以查看服务的运行状态。

(二)查看后台运行的 Python 进程

当我们使用上述方法将 Python 脚本放到后台运行后,可通过以下几种方式查看进程的运行情况。

  1. 通过进程 ID(PID)查看
    使用ps命令结合grep来查找目标进程的 PID:
ps aux | grep boot_rest.py

找到 PID 后,可使用ps命令进一步查看进程的详细状态,如:ps -p 12345 -o pid,stat,cmd
这里12345是目标进程的 PID,-o用于指定要显示的列信息。

  1. 通过top或htop查看
    top命令动态显示系统中各个进程的资源使用情况。执行top命令后,可按P键根据 CPU 使用率排序,按M键根据内存使用率排序,使用/键并输入boot_rest.py来快速定位目标进程。
    htop是top的增强版,提供了更直观的界面和更多功能。使用htop命令进入界面后,同样可通过/键搜索boot_rest.py进程。

  2. 查看日志文件
    果 Python 脚本将运行信息输出到特定的日志文件中,可通过查看该日志文件了解进程的运行情况。例如,若脚本将日志输出到boot_rest.log文件,可使用以下命令实时查看日志内容:

tail -f boot_rest.log
  1. 若使用了systemd管理
    如果脚本已配置为systemd服务,可使用以下命令查看服务状态:
sudo systemctl status boot_rest.service

该命令会显示服务的详细状态信息,包括是否正在运行、最近的日志输出等。

(三)终止后台运行的 Python 进程

  1. 通过进程 ID(PID)终止
    使用ps aux | grep boot_rest.py找到进程的 PID 后,可使用kill命令终止进程。例如,温和终止进程(等待进程自行结束):
kill 46453

若要强制终止进程(可能导致数据丢失,慎用):kill -9 46453

  1. 通过进程名终止
    可使用killall或pkill命令根据进程名终止进程。例如,强制终止所有 Python3 进程(谨慎使用,可能会误杀其他无关进程):
killall -9 python3

在 Linux 系统中,灵活运用上述方法可以高效地管理 Python 脚本的后台运行,确保系统资源的合理利用和任务的稳定执行。无论是小型项目还是大型生产环境,这些技巧都能帮助开发者更好地掌控进程的生命周期。同时,掌握 Python 的安装和离线包安装方法,能让我们在不同网络环境下顺利搭建和配置 Python 开发环境。

作者:limnade

物联沃分享整理
物联沃-IOTWORD物联网 » Linux系统下Python脚本后台运行与进程管理详解

发表回复