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

embedded/2024/12/23 10:29:14/

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.ppmy.cn/embedded/148043.html

相关文章

Vue3之性能优化

Vue3作为Vue框架的最新版本,在性能上进行了大量的优化,使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例,并结合具体代码和性能测试数据,展示Vue3在实际应用中的性能优势…

键盘常见键的keyCode和对应的键名

常见键的keyCode和对应的键名 键名keyCode描述Enter13回车键Escape27Esc键Backspace8退格键Tab9Tab键Space32空格键Arrow Up38向上箭头Arrow Down40向下箭头Arrow Left37向左箭头Arrow Right39向右箭头Shift16Shift键Control17Ctrl键Alt18Alt键Caps Lock20大写锁定键F1112F1键F…

【蓝桥杯每日一题】扫描游戏——线段树

扫描游戏 蓝桥杯每日一题 2024-12-13 扫描游戏 线段树 模拟 题目大意 有一根围绕原点 O 顺时针旋转的棒 O A OA OA ,初始时指向正上方 (Y 轴正向)。 在平面中有若干物件, 第 i 个物件的坐标为 ( x i , y i ) (x_i,y_i) (xi​,yi​), 价值为 z i z_i zi​ 。当棒扫到某个 物件…

硬盘接口模式sata与ahci区别, U盘UEFI GPT与Legacy 启动项区别,硬盘格式MBR和gpt的区别

一。SATA和AHCI的主要区别在于它们的功能、接口类型和性能。‌ 功能和性能 SATA‌:Serial ATA(SATA)是一种硬盘接口标准,主要用于连接存储设备(如硬盘)到主机(如主板)。它经历了多个…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试,对输出的结果检查判断是否符合预期结果 但是在多年的工作中,从来没有哪个项目中真正系统的用到了单元测试,因此对它还是很陌生的,也就造成更加不会在项目中区使用它。 如何…

微服务设计原则——功能设计

文章目录 1.ID生成2.数值精度3.DB操作4.性能测试5.版本兼容5.1 向旧兼容5.2 向新兼容 6.异步时序问题7.并发问题7.1 并发时序7.2 并发数据竞争 参考文献 1.ID生成 在分布式系统中,生成全局唯一ID是非常重要的需求,因为需要确保不同节点、服务或实例在并…

说说你对 css3 display:flex 弹性盒模型 的理解

发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 CSS3 中的 display: flex 是一种强大的布局模式,被称为“弹性盒布局”或“Flexbox”。它允许我们通过一套简洁的规则…

软件工程复习重点(第一章 软件工程概述)

1.什么是软件?软件有什么特点? 软件分类? 计算机软件--计算机系统中的程序、数据及其文档的统称。 软件=程序数据文档 表现形式:逻辑实体、抽象性 生产方式:与硬件不同、无明显的制造过程、定制 维护机制&a…