在 CentOS 上,常用几种方法来确保 Python 脚本在断开终端后继续运行

在 CentOS 上,你可以使用以下几种方法来确保 Python 脚本在断开终端后继续运行:

1. 使用 nohup 命令

nohup 命令可以让进程在终端关闭后继续运行。

bash 复制代码
nohup python main.py > output.log 2>&1 &
  • nohup:忽略挂断信号,使进程在终端关闭后继续运行。
  • > output.log:将标准输出重定向到 output.log 文件。
  • 2>&1:将标准错误输出重定向到标准输出(即 output.log 文件)。
  • &:将进程放到后台运行。

2. 使用 screen 命令

screen 是一个终端多路复用器,可以让你在断开终端后重新连接到会话。

bash 复制代码
# 安装 screen
sudo yum install screen

# 启动一个新的 screen 会话
screen -S mysession

# 在 screen 会话中运行 Python 脚本
python main.py

# 按下 Ctrl+A 然后按 D 来分离 screen 会话

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

3. 使用 systemd 服务

systemd 是 CentOS 的初始化系统,可以用来管理守护进程。

  1. 创建一个新的服务文件:
bash 复制代码
sudo vi /etc/systemd/system/my_python_service.service
  1. 在文件中添加以下内容:
ini 复制代码
[Unit]
Description=My Python Script
After=network.target

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

[Install]
WantedBy=multi-user.target
  • ExecStart:指定要运行的命令。
  • WorkingDirectory:指定脚本的工作目录。
  • Restart=always:确保脚本在崩溃或系统重启后自动重启。
  • User:指定运行脚本的用户。
  1. 保存并退出编辑器。

  2. 重新加载 systemd 配置:

bash 复制代码
sudo systemctl daemon-reload
  1. 启动服务:
bash 复制代码
sudo systemctl start my_python_service
  1. 设置服务开机自启动:
bash 复制代码
sudo systemctl enable my_python_service

4. 使用 tmux 命令

tmux 是另一个终端多路复用器,类似于 screen

bash 复制代码
# 安装 tmux
sudo yum install tmux

# 启动一个新的 tmux 会话
tmux new -s mysession

# 在 tmux 会话中运行 Python 脚本
python main.py

# 按下 Ctrl+B 然后按 D 来分离 tmux 会话

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

总结

  • nohup 是最简单的解决方案,适合临时任务。
  • screentmux 适合需要交互的会话。
  • systemd 是最健壮的解决方案,适合长期运行的守护进程。

根据你的需求选择合适的方法。

相关推荐
卷无止境1 小时前
智能体开发环境ADE浅析,编程工具的下一次范式跃迁
后端·python
彧azz3 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
嵌入式学习菌3 小时前
Modbus‑RTU 数据类型分析
开发语言·单片机·bug
matlab代码4 小时前
基于matlab数字图像处理的指纹识别系统【源码68期】
开发语言·matlab
2601_962300814 小时前
机器学习贴士:使用Python编写MapReduce
hadoop·python·机器学习·mapreduce·数据处理
matlab代码5 小时前
基于matlab的水果识别系统(苹果香蕉菠萝梨桃子)【源码65期】
开发语言·matlab
xyz_CDragon5 小时前
GitHub上4个爆款AI开源Skill:拍照后不用P图,用Codex一键生成高级海报(附效果图+使用教程)
人工智能·python·github·codex·skill
wuyk5555 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
weixin199701080165 小时前
[特殊字符]《跨境二手ERP对接Back Market:标准化API + 7~10工作日技术合规审核实录》(附Python源码)
开发语言·python·pandas
尘客-追梦5 小时前
Day 01:插件化之前,先看清 ABI 这堵墙
开发语言·c++·qt