Featured image of post 后台运行python脚本

后台运行python脚本

   
文章摘要
小tips……😋

前言

​ 有时候python脚本运行时间比较长,只会使用cron有诸多不便,探索一下临时后台运行pyhton的办法,这样断开ssh也能运行。

正文

​ 在 Linux 服务器上后台运行 Python 脚本的方法

本指南介绍了几种在 Linux 服务器上后台运行 Python 脚本的方法,特别适用于需要在 SSH 断开后继续运行的情况。

目录

  1. 使用 nohup 命令(推荐)
  2. 使用 Screen 命令
  3. 使用 Tmux 命令
  4. 使用 Systemd 服务

1. 使用 nohup 命令(推荐)

nohup是最简单的后台运行方法,适合临时运行脚本。

基本用法

nohup python picX.py > picx.log 2>&1 &

命令解释

  • nohup: 让进程忽略 SIGHUP 信号(SSH 断开时的信号)
  • > picx.log: 将标准输出重定向到日志文件
  • 2>&1: 将错误输出也重定向到同一个文件
  • &: 在后台运行

相关命令

# 查看进程
ps aux | grep picX.py

# 实时查看日志
tail -f picx.log

# 如果需要停止脚本
kill $(ps aux | grep picX.py | grep -v grep | awk '{print $2}')

#或者
# 通过PID停止,写入你自己的进程id
kill id

2. 使用 Screen 命令

Screen 是一个终端复用器,可以在多个终端会话之间切换。

安装 Screen

# Ubuntu/Debian
sudo apt-get install screen

# CentOS/RHEL
sudo yum install screen

基本用法

# 创建新的screen会话
screen -S picx

# 在screen中运行脚本
python picX.py

# 分离会话:按 Ctrl+A,然后按 D

常用命令

# 列出所有会话
screen -ls

# 重新连接到会话
screen -r picx

# 终止会话
screen -X -S picx quit

常用快捷键

  • Ctrl+A, D: 分离当前会话
  • Ctrl+A, C: 创建新窗口
  • Ctrl+A, N: 切换到下一个窗口
  • Ctrl+A, P: 切换到上一个窗口
  • Ctrl+A, ?: 显示帮助信息

3. 使用 Tmux 命令

Tmux 是 Screen 的现代替代品,提供了更多功能。

安装 Tmux

# Ubuntu/Debian
sudo apt-get install tmux

# CentOS/RHEL
sudo yum install tmux

基本用法

# 创建新的tmux会话
tmux new -s picx

# 在tmux中运行脚本
python picX.py

# 分离会话:按 Ctrl+B,然后按 D

常用命令

# 列出所有会话
tmux ls

# 重新连接到会话
tmux attach -t picx

# 终止会话
tmux kill-session -t picx

常用快捷键

  • Ctrl+B, D: 分离当前会话
  • Ctrl+B, C: 创建新窗口
  • Ctrl+B, N: 切换到下一个窗口
  • Ctrl+B, P: 切换到上一个窗口
  • Ctrl+B, ?: 显示帮助信息

4. 使用 Systemd 服务

Systemd 是 Linux 系统的服务管理器,适合长期运行的服务。

创建服务文件

sudo nano /etc/systemd/system/picx.service

服务文件内容

[Unit]
Description=PicX Upload Service
After=network.target

[Service]
Type=simple
User=你的用户名
WorkingDirectory=/脚本所在的完整路径
ExecStart=/usr/bin/python3 picX.py
Restart=always

[Install]
WantedBy=multi-user.target

服务管理命令

# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start picx

# 停止服务
sudo systemctl stop picx

# 重启服务
sudo systemctl restart picx

# 查看服务状态
sudo systemctl status picx

# 设置开机自启
sudo systemctl enable picx

# 取消开机自启
sudo systemctl disable picx

查看日志

# 查看服务日志
journalctl -u picx.service

# 实时查看日志
journalctl -u picx.service -f

选择建议

  1. 临时运行脚本:使用 nohup

    • 优点:简单,无需安装额外软件
    • 缺点:功能简单,不易管理
  2. 开发调试阶段:使用 ScreenTmux

    • 优点:可以随时查看和控制
    • 缺点:需要学习命令和快捷键
  3. 生产环境长期运行:使用 Systemd

    • 优点:专业的服务管理,自动重启,开机自启
    • 缺点:配置相对复杂

注意事项

  1. 确保脚本有适当的错误处理和日志记录
  2. 定期检查日志文件大小,避免占用过多磁盘空间
  3. 使用适当的权限运行脚本
  4. 考虑添加监控和告警机制
  5. 重要的生产环境脚本建议使用 Systemd 服务管理
CC BY-NC-SA 4.0 创意的非商业派对入场券
最后更新于 2024-12-27 03:17
晚来天欲雪,能饮一杯无