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

【新教程】非root用户给Ubuntu server设置开机自启服务-root用户给Ubuntu server设置开机自启服务

1 思路

使用systemd用户服务

2 过程

1、创建用户服务文件:

mkdir -p ~/.config/systemd/user
vim ~/.config/systemd/user/my_app.service

用户服务文件模板:

[Unit]
Description=SSH_ct
After=default.target

[Service]
ExecStart=/home/wlg/Softwares/wyc/wyc_linux_64 -token=xx
Restart=always
Environment=PATH=/usr/bin:/bin
WorkingDirectory=/home/wlg/Softwares/wyc
StandardOutput=file:/home/wlg/Softwares/wyc/sshlog.out
StandardError=file:/home/wlg/Softwares/wyc/sshlog.err

[Install]
WantedBy=default.target

上述文件是我想使用的一个内网穿透服务开机自启的服务配置。
其中,比较重要的项目如下:
Description=SSH_ct:描述该服务的功能。
After=default.target:指定服务的启动顺序,表示此服务应该在 default.target 启动后再启动。default.target 通常是用户环境的默认目标.
ExecStart:指定启动服务时要执行的命令。同时根据命令的要求直接传递参数。
Restart:定义服务失败后的重启策略。always 表示服务无论是失败还是正常退出,都会自动重启。
Environment:设置服务运行时的环境变量。
WorkingDirectory:指定服务的工作目录。如果命令需要相对路径访问文件或其他资源,这一点很重要。
StandardOutput:将服务的标准输出 (stdout) 重定向到指定的文件
StandardError:将服务的标准错误输出 (stderr) 重定向到指定的文件
WantedBy:指定该服务在哪个目标(target)下启用。default.target 是系统的默认目标,通常对应于多用户图形界面或命令行登录环境。当启用服务时,会创建一个符号链接,将服务关联到 default.target.wants/ 目录中,从而实现开机启动。
2、刷新 systemd 配置:

systemctl --user daemon-reload

3、启动服务

systemctl --user start SSH_ct.service

4、设置开机自启动:

systemctl --user enable SSH_ct.service

5、检查服务状态:

systemctl --user status SSH_ct.service

3 整体流程

整体流程
当系统达到 default.target 时(通常是启动完成后,进入多用户环境),systemd 会检查 default.target.wants/ 下的服务列表。
它会按照 After=default.target 的依赖顺序启动 SSH_ct 服务。
服务会执行 ExecStart 定义的命令,日志会根据 StandardOutput 和 StandardError 重定向到对应文件。
如果服务意外退出,Restart=always 会让服务自动重启。

4 如何服务需要使用root权限

配置模板:

[Unit]
Description=Resume SLURM nodes on startup
After=network.target slurmctld.service
Requires=slurmctld.service

[Service]
Type=oneshot
ExecStart=/usr/bin/scontrol update NodeName=ubuntu_server State=RESUME
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

注意服务配置文件放置位置不同:创建 systemd 服务文件 编辑 /etc/systemd/system/slurm_resume.service(需要 root 权限)


http://www.kler.cn/a/446629.html

相关文章:

  • HIPT论文阅读
  • 深入浅出支持向量机(SVM)
  • 面试题整理4----lvs,nginx,haproxy区别和使用场景
  • nginx自定义错误日志
  • 点击展示大图预览
  • 基于蓝牙通信的手机遥控智能灯(论文+源码)
  • ArcGIS计算土地转移矩阵
  • 详细解释爬虫中的异常处理机制?
  • Rabbitmq实现延迟队列
  • Leetcode2545:根据第 K 场考试的分数排序
  • 26、基于SpringBoot的在线文档管理系统的设计与实现
  • R 基础运算
  • 基于卷积神经网络(CNN)和ResNet50的水果与蔬菜图像分类系统
  • 机器视觉检测相机基础知识 | 颜色 | 光源 | 镜头 | 分辨率 / 精度 / 公差
  • Leetcode 串联所有单词的子串
  • 【windows】sonarqube起不来的问题解决
  • 人脸修复与增强腾讯开源项目GFPGAN介绍
  • python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
  • Java爬虫实战:深度解析Lazada商品详情
  • 解决ubuntu22.04常见问题
  • Qt之串口设计-线程实现(十二)
  • 深入浅出:内网黄金票据与白银票据
  • ubuntu批量依赖库拷贝(ldd)
  • S32K324 Stack异常分析及解决方案
  • 数据结构十大排序之(冒泡,快排,并归)
  • C#.NET使用multipart/form-data方式上传文件及其他数据