本文介绍: screentmux终端多路复用器,允许您从一个会话中分离出来,并在以后重新连接这里 your_script.py 是您的Python脚本文件nohup 命令可以让您运行程序关闭终端后继续运行

场景

最近在使用ubuntu服务器部署MySQL和同步数据同步数据使用的是python,但是我不能直接操作服务器,只能通过Xshell远程访问服务器,但是启动python脚本的时候如果关掉xshell会停止Python脚本,所以如果要让python脚本继续在后台运行,有以下几种方法实现
选择哪种方法取决于您的具体需求和偏好。nohup 简单功能有限screentmux 提供更多灵活性,而 systemd 方法更适合长期运行后台服务

1.使用nohup命令

nohup 命令可以让您运行的程序在关闭终端后继续运行

nohup python3 your_script.py &

这里 your_script.py 是您的Python脚本文件

2.使用screentmux

screen 和 tmux终端多路复用器,允许您从一个会话中分离出来,并在以后重新连接

sudo apt-get install screen

sudo apt-get install tmux
screen -S session_name

tmux new -s session_name
python3 your_script.py

3.使用 systemd 服务

如果您希望脚本像服务一样运行,可以创建一个 systemd 服务单元。

1.准备你的python脚本

chmod +x /home/username/my_script.py
#!/usr/bin/env python3

2.创建Systemd服务文件

sudo nano /etc/systemd/system/my_python_script.service
[Unit]
Description=My Python Script Service

[Service]
ExecStart=/usr/bin/python3 /home/username/my_script.py
WorkingDirectory=/home/username/
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. Description 是服务的描述
  2. ExecStart 指定启动服务时执行的命令
  3. Restart 指定何时重启服务,on-failure 表示仅在失败时重启。
  4. WorkingDirectory 指定的是脚本所在目录,并且在脚本引用外部的配置文件时要写上。

3.启用服务

sudo systemctl daemon-reload
sudo systemctl start my_python_script.service
sudo systemctl status my_python_script.service
sudo systemctl enable my_python_script.service

4.管理服务

  • 停止服务:
sudo systemctl stop my_python_script.service
  • 重新启动服务:
sudo systemctl restart my_python_script.service
journalctl -u my_python_script.service

结束

主要花了很大的篇幅来介绍systemd服务,因为使用 systemd 管理Python脚本作为服务,提供了更多的控制和灵活性,例如自动重启、日志记录等。这对于生产环境中运行长期任务特别有用。

原文地址:https://blog.csdn.net/qq_42277704/article/details/134694929

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_8453.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注