当前位置: 首页 > java >正文

Ubuntu开机自启服务

一、准备启动脚本

  1. 在你的项目文件夹(例如 /home/ubuntu/Plant_Diease_Recongnization_Server_1)中创建一个启动脚本 run_ui_main.sh
#!/usr/bin/env bash
# run_ui_main.sh:激活 yolov8 环境并启动 ui_main.py# 设置 Anaconda/Miniconda 的安装路径(根据实际路径修改)
CONDA_HOME="$HOME/miniconda3"# 初始化 conda
source "${CONDA_HOME}/etc/profile.d/conda.sh"# 激活指定环境
conda activate Plant_Detect# 进入脚本所在目录(根据实际路径修改)
cd /home/ubuntu/Plant_Diease_Recongnization_Server_1# 执行脚本,并将日志输出到文件
exec python ui_main.py >> /home/ubuntu/Plant_Diease_Recongnization_Server_1/ui_main.log 2>&1# 注意需要提前创建log文件sudo touch /home/ubuntu/Plant_Diease_Recongnization_Server_1/ui_main.log
sudo chmod 666 /home/ubuntu/Plant_Diease_Recongnization_Server_1/ui_main.log
  1. 然后赋予脚本可执行权限:
chmod +x /home/ubuntu/Plant_Diease_Recongnization_Server_1/run_ui_main.sh

二、创建 systemd 服务单元

/etc/systemd/system/ 下新建一个文件 ui_main.service,内容如下:

[Unit]
Description=Auto-start ui_main.py in yolov8 Conda env
After=network.target[Service]
Type=simple
User=root
WorkingDirectory=/home/ubuntu/Plant_Diease_Recongnization_Server_1
ExecStart=/bin/bash /home/ubuntu/Plant_Diease_Recongnization_Server_1/run_ui_main.sh
Restart=on-failure
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ui_main_py_service[Install]
WantedBy=multi-user.target

三、启用并测试服务

  1. 重新加载 systemd 配置:
sudo systemctl daemon-reload
  1. 手动启动并检查状态:
sudo systemctl start ui_main.service
sudo systemctl status ui_main.service
  1. 设置开机自启:
sudo systemctl enable ui_main.service
  1. 查看运行日志:
sudo journalctl -u ui_main.service -f

四、停止与禁用服务

  1. 立即停止服务:
sudo systemctl stop ui_main.service
  1. 禁止开机自动启动:
sudo systemctl disable ui_main.service
  1. 验证服务状态:
# 检查是否已停止
systemctl status ui_main.service# 检查是否禁用了开机启动
systemctl is-enabled ui_main.service

如果输出 disabled,则表示已禁止自动启动。

http://www.xdnf.cn/news/7217.html

相关文章:

  • 【数据仓库面试题合集③】实时数仓建模思路与实践详解
  • InternLM 论文分类微调实践(XTuner 版)
  • Java设计模式之外观模式:从入门到精通(保姆级教程)
  • 基于Elasticsearch的搜索引擎简介
  • 【Android】一键创建Keystore + Keystore 参数说明 + 查询SHA256(JDK Keytool Keystore)
  • 【神经网络与深度学习】GAN 生成对抗训练模型在实际训练中很容易判别器收敛,生成器发散
  • 【物联网】 ubantu20.04 搭建L2TP服务器
  • 电脑安装程序报错写入注册表失败
  • 基于51单片机教室红外计数灯光控制—可蓝牙控制
  • 为什么wifi有信号却连接不上?
  • Oracle 数据库的默认隔离级别
  • 探索C++面向对象:从抽象到实体的元规则(上篇)
  • docker介绍与常用命令汇总
  • C语法备注01
  • 项目记录:「五秒反应挑战」小游戏的开发全过程
  • 「NameCraft · 幻想命名器」开发记:我和 CodeBuddy 的一次奇幻共创之旅
  • MySQL之函数
  • 洛谷U536262 井底之“鸡”
  • 初识 Redis
  • 云计算简介:从“水电”到“数字引擎”的技术革命
  • LeetCode 219.存在重复元素 II
  • OpenCV CUDA 模块中的矩阵算术运算-----在频域(复数频谱)中执行逐元素乘法并缩放的函数mulAndScaleSpectrums()
  • OSPF路由撤销及优化
  • 集成电路生产测试中CP针卡(Probe Card)简介
  • 深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)
  • Redis学习打卡-Day4-Redis实现消息队列
  • 企业开发工具git的使用:从入门到高效团队协作
  • RabbitMQ通信模式(Simplest)Python示例
  • Codeforces 1017 Div4(ABCDEFG)
  • 【第三十六周】LoRA 微调方法