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

embedded/2025/3/12 8:31:51/

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

1. 使用 nohup 命令

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

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

2. 使用 screen 命令

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

# 安装 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. 创建一个新的服务文件:
sudo vi /etc/systemd/system/my_python_service.service
  1. 在文件中添加以下内容:
[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 配置:

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

4. 使用 tmux 命令

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

# 安装 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 是最健壮的解决方案,适合长期运行的守护进程。

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


http://www.ppmy.cn/embedded/171986.html

相关文章

手势即命令:基于 OpenCV 和 MediaPipe 的智能关机系统

前言 有没有遇到过这样的场景:加班到深夜,鼠标在桌面上划半天,却无法点到关机按钮?又或者,朋友借用电脑,怕其乱翻,只希望一个手势便触发关机操作?不必担心,今天我们用 OpenCV + MediaPipe 打造一款“手势即命令”的智能关机系统,只需轻抬手指,电脑便乖顺应命令。这…

使用dify的api连接外部知识库,dify连接ragflow的知识库(附java代码)

dify的知识库一般般,但是ragflow的知识库很强大,今天教大家如何使用dify连接ragflow的知识库 一.ragflow的准备工作 1.在ragflow建立一个知识库,拿到知识库的id,红框圈出来的地方就是这个知识库的id,后面要用到 2.拿到ragflow的api的key 二.写代码,将ragflow的接口返回的内容…

Leetcode-146.LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 …

【RabbitMQ】事务

事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c…

鸿蒙系统中的持续部署

鸿蒙操作系统,作为一款面向未来的分布式操作系统,旨在为不同的设备提供统一的操作系统平台。它支持多种终端设备,包括但不限于智能手机、平板电脑、智能穿戴设备和物联网(IoT)设备等,并且能够实现跨平台的无…

通过AudioTrack计算剩余播放时间的实现

在Android中,通过AudioTrack计算剩余播放时间的关键步骤如下: 1. 核心思路 已播放帧数:通过getPlaybackHeadPosition()获取当前播放的音频帧数(需注意32位溢出问题)。 剩余帧数:总帧数(数据总量…

Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节

Phi-4-Multimodal 是一种参数高效的多模态模型,通过 LoRA 适配器和模式特定路由器实现文本、视觉和语音/音频的无缝集成。训练过程包括多阶段优化,确保在不同模式和任务上的性能,数据来源多样,覆盖高质量网络和合成数据。它的设计…

如何在Spring Boot中校验用户上传的图片文件的两种方法

在现代应用中,用户上传图片是一个常见的需求。无论是社交平台、电子商务网站还是任何需要用户交互的应用,图片上传功能都显得尤为重要。但合理地校验用户上传的图片文件是必不可少的步骤,避免不合规的文件影响系统的稳定性和安全性。本文将介…