前言
有时候python脚本运行时间比较长,只会使用cron有诸多不便,探索一下临时后台运行pyhton的办法,这样断开ssh也能运行。
正文
在 Linux 服务器上后台运行 Python 脚本的方法
本指南介绍了几种在 Linux 服务器上后台运行 Python 脚本的方法,特别适用于需要在 SSH 断开后继续运行的情况。
目录
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
选择建议
临时运行脚本:使用
nohup
- 优点:简单,无需安装额外软件
- 缺点:功能简单,不易管理
开发调试阶段:使用
Screen
或Tmux
- 优点:可以随时查看和控制
- 缺点:需要学习命令和快捷键
生产环境长期运行:使用
Systemd
- 优点:专业的服务管理,自动重启,开机自启
- 缺点:配置相对复杂
注意事项
- 确保脚本有适当的错误处理和日志记录
- 定期检查日志文件大小,避免占用过多磁盘空间
- 使用适当的权限运行脚本
- 考虑添加监控和告警机制
- 重要的生产环境脚本建议使用 Systemd 服务管理