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

打印 上一主题 下一主题

主题 1017|帖子 1017|积分 3051

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在 CentOS 上,你可以利用以下几种方法来确保 Python 脚本在断开终端后继续运行:
1. 利用 nohup 命令

nohup 命令可以让历程在终端关闭后继续运行。
  1. nohup python main.py > output.log 2>&1 &
复制代码


  • nohup:忽略挂断信号,使历程在终端关闭后继续运行。
  • > output.log:将标准输出重定向到 output.log 文件。
  • 2>&1:将标准错误输出重定向到标准输出(即 output.log 文件)。
  • &:将历程放到背景运行。
2. 利用 screen 命令

screen 是一个终端多路复用器,可以让你在断开终端后重新连接到会话。
  1. # 安装 screen
  2. sudo yum install screen
  3. # 启动一个新的 screen 会话
  4. screen -S mysession
  5. # 在 screen 会话中运行 Python 脚本
  6. python main.py
  7. # 按下 Ctrl+A 然后按 D 来分离 screen 会话
  8. # 重新连接到 screen 会话
  9. screen -r mysession
复制代码
3. 利用 systemd 服务

systemd 是 CentOS 的初始化系统,可以用来管理保卫历程。

  • 创建一个新的服务文件:
  1. sudo vi /etc/systemd/system/my_python_service.service
复制代码

  • 在文件中添加以下内容:
  1. [Unit]
  2. Description=My Python Script
  3. After=network.target
  4. [Service]
  5. ExecStart=/usr/bin/python3 /path/to/main.py
  6. WorkingDirectory=/path/to/your/script
  7. Restart=always
  8. User=your_username
  9. [Install]
  10. WantedBy=multi-user.target
复制代码


  • ExecStart:指定要运行的命令。
  • WorkingDirectory:指定脚本的工作目录。
  • Restart=always:确保脚本在崩溃或系统重启后主动重启。
  • User:指定运行脚本的用户。

  • 生存并退出编辑器。
  • 重新加载 systemd 配置:
  1. sudo systemctl daemon-reload
复制代码

  • 启动服务:
  1. sudo systemctl start my_python_service
复制代码

  • 设置服务开机自启动:
  1. sudo systemctl enable my_python_service
复制代码
4. 利用 tmux 命令

tmux 是另一个终端多路复用器,类似于 screen。
  1. # 安装 tmux
  2. sudo yum install tmux
  3. # 启动一个新的 tmux 会话
  4. tmux new -s mysession
  5. # 在 tmux 会话中运行 Python 脚本
  6. python main.py
  7. # 按下 Ctrl+B 然后按 D 来分离 tmux 会话
  8. # 重新连接到 tmux 会话
  9. tmux attach -t mysession
复制代码
总结



  • nohup 是最简朴的解决方案,适合暂时使命。
  • screen 和 tmux 适合必要交互的会话。
  • systemd 是最健壮的解决方案,适合长期运行的保卫历程。
根据你的需求选择合适的方法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表