CentOS上如何自定义开机启动服务

devtools/2024/11/6 17:19:32/

一:简单的例子

在CentOS7之后自定义开机启动服务,可以通过创建一个systemd服务单元文件来实现。以下是创建自定义服务并设置其开机启动的步骤:

1,编辑服务文件,并添加以下内容:

[Unit]
Description=My custom startup service
After=network.target[Service]
Type=simple
ExecStart=/usr/local/bin/my_service.sh[Install]
WantedBy=multi-user.target

2,使服务文件可执行:

chmod +x /etc/systemd/system/my_service.service

3,重新加载systemd管理器配置:

systemctl daemon-reload

4,启用服务以在开机时启动:

systemctl enable my_service.service

5,(可选)立即启动服务,而不需要重启:
 

systemctl start my_service.service

二:语法

1,文件存放

CentOS 7的服务systemctl脚本存放在/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,还是存在系统服务里,即/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
 

2, gdm例子

cat gdm.service 
[Unit]
Description=GNOME Display Manager# replaces the getty
Conflicts=getty@tty1.service
After=getty@tty1.service# replaces plymouth-quit since it quits plymouth on its own
Conflicts=plymouth-quit.service
After=plymouth-quit.service# Needs all the dependencies of the services it's replacing
# pulled from getty@.service and plymouth-quit.service
# (except for plymouth-quit-wait.service since it waits until
# plymouth is quit, which we do)
After=rc-local.service plymouth-start.service systemd-user-sessions.service# GDM takes responsibility for stopping plymouth, so if it fails
# for any reason, make sure plymouth still stops
OnFailure=plymouth-quit.service[Service]
ExecStart=/usr/sbin/gdm
ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1"
KillMode=mixed
Restart=always
IgnoreSIGPIPE=no
BusName=org.gnome.DisplayManager
StandardOutput=syslog
StandardError=inherit
EnvironmentFile=-/etc/locale.conf
ExecReload=/bin/kill -SIGHUP $MAINPID[Install]
Alias=display-manager.service

首先,gdm.service是一个systemd服务单元文件,用于定义GNOME Display Manager (GDM)的启动、停止和管理方式。Systemd是Linux系统的一个初始化系统和服务管理器,它用于启动和管理系统服务。接下来,我会逐段解释这个文件的内容:

[Unit]Description=GNOME Display Manager:为服务提供一个描述,这里是“GNOME Display Manager”。
Conflicts=getty@tty1.service 和 After=getty@tty1.service:这表示GDM与getty@tty1.service有冲突,并且GDM应在getty@tty1.service之后启动。
Conflicts=plymouth-quit.service 和 After=plymouth-quit.service:同样,这表示GDM与plymouth-quit.service有冲突,并且GDM应在plymouth-quit.service之后启动。
After=rc-local.service plymouth-start.service systemd-user-sessions.service:这表示GDM应在这些服务之后启动。
OnFailure=plymouth-quit.service:如果GDM启动失败,则尝试启动plymouth-quit.service。
[Service]ExecStart=/usr/sbin/gdm:定义启动GDM的命令。
ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1":在GDM启动后执行的命令。这里使用bash来清除/dev/tty1的内容。
KillMode=mixed:定义如何停止服务。mixed意味着首先尝试SIGTERM,然后SIGKILL。
Restart=always:无论何种情况,只要GDM退出,就总是重启它。
IgnoreSIGPIPE=no:是否忽略SIGPIPE信号。在这里,我们不忽略它。
BusName=org.gnome.DisplayManager:服务的DBus名称。
StandardOutput=syslog:将标准输出发送到系统日志。
StandardError=inherit:标准错误继承父进程的设置。
EnvironmentFile=-/etc/locale.conf:加载/etc/locale.conf文件以设置环境变量。
ExecReload=/bin/kill -SIGHUP $MAINPID:重新加载服务的命令。这里发送SIGHUP信号给主进程。
[Install]Alias=display-manager.service:为服务定义一个别名,这样你可以使用display-manager.service来引用这个服务。
总的来说,这个服务单元文件定义了GDM的启动方式、依赖关系、启动后的操作以及重启策略等。它是systemd用来管理GDM服务的关键配置文件。	 


http://www.ppmy.cn/devtools/15622.html

相关文章

模拟LinkedList实现的链表(无哨兵)

1.前言 我们将LinkdList视作链表, 底层设计了内部类Node类, 我这里依然没有用到泛型, 其实加上泛型依然很简单, 即将Node节点的数据域的类型由Int转换为E(<E>), 我在此不做赘述.同时实现了增删查改, 遍历等操作. 2.链表(无哨兵)的代码实现 public class LinkListTest …

Springboot+Vue项目-基于Java+MySQL的网上购物商城系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

巧用断点设置查找bug【debug】

默认设置的断点&#xff0c;当代码运行到断点处MCU就会被挂起&#xff0c;从而停在断点处。 但在某些情况下&#xff0c;如调试FCCU时&#xff0c;如果设置断点&#xff0c;MCU停下后将会导致 FCCU 配置WDG超时。或在调试类似电机控制类的应用时&#xff0c;不适当的断点会导 致…

体验一下使用 ArkUI 进行 HarmonyOS 开发并与 Compose 简单对比

作者&#xff1a;equationl 前言 最近几年各个技术公众号和技术群都在唱衰原生安卓开发&#xff0c;疯狂贩卖焦虑。 搞得我也焦虑的不行&#xff0c;在谷歌的 Compose 推出后就赶紧去学&#xff0c;但是又觉得好像 Compose 的热度也不算太高&#xff0c;又去学 Flutter 。 转…

SQL获取最后一次的数据

问题 有个表格(id,machineName,value,updatetime)&#xff0c;里面比如有10个机台&#xff0c;里面记录了这10个机台的几十万条数据 如何获取每个机台的最后一笔数据&#xff1f; machines表 解决办法 1.首先获得每个机台最后的更新时间 select machineName,max(updatetim…

花粉过敏人群或超2亿?约克VRF中央空调助你健康鲜呼吸

“一朝春雨落,十里桃花开”,暖春、微风、阳光、花香……充满着生机的春天让人心情愉悦,然而对于易过敏人群来说却是“苦不堪言”,经常出现眼圈发红、发痒、睁不开,每天都在“流泪”中度过,同时伴随着咳嗽、打喷嚏、流鼻涕、鼻塞等症状,皮肤也可能会出现红疹、瘙痒等症状。 如何…

MyBatis基础操作

黑马程序员JavaWeb开发教程 文章目录 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求&#xff0c;完成员工管理的需求开发一、环境准备1、准备数据库表emp2、创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&…

基于SpringBoot的合家云社区物业管理平台 - 数据库设计文档

合家云数据库设计文档V1.0 社区资产模块 社区表:hjy_community字段名称字段类型是否为空值字段释义community_idbigint(20)NO小区idcommunity_namevarchar(128)YES小区名称community_codevarchar(128)YES小区编码community_provence_codevarchar(32)YES省区划码community_cit…