IT评测·应用市场-qidao123.com
标题:
在 CentOS 上,常用几种方法来确保 Python 脚本在断开终端后继续运行
[打印本页]
作者:
慢吞云雾缓吐愁
时间:
2025-3-8 01:07
标题:
在 CentOS 上,常用几种方法来确保 Python 脚本在断开终端后继续运行
在 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 的初始化系统,可以用来管理保卫历程。
创建一个新的服务文件:
sudo vi /etc/systemd/system/my_python_service.service
复制代码
在文件中添加以下内容:
[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:指定运行脚本的用户。
生存并退出编辑器。
重新加载 systemd 配置:
sudo systemctl daemon-reload
复制代码
启动服务:
sudo systemctl start my_python_service
复制代码
设置服务开机自启动:
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 是最简朴的解决方案,适合暂时使命。
screen 和 tmux 适合必要交互的会话。
systemd 是最健壮的解决方案,适合长期运行的保卫历程。
根据你的需求选择合适的方法。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4