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

一:简单的例子

在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.mzph.cn/pingmian/4507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL慢SQL优化技术深度学习指南

引言 在现代数据驱动的应用环境中,MySQL作为广泛应用的关系型数据库管理系统,其性能直接影响着整个系统的响应速度与用户体验。随着数据规模的增长和业务复杂性的提升,一些SQL查询可能会逐渐演变为慢查询,成为系统性能瓶颈。本文旨…

Ubuntu安装中文输入法

Ubuntu默认没有中文输入法, 本文将安装搜狗拼音输入法。 1 安装搜狗拼音输入法 下载安装搜狗拼音输入法: 先去官网下载安装包, 然后执行安装: sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb 2 安装fcitx sudo apt install fci…

SVM中常用的核函数及适用场景

常用的核函数 核函数(Kernel functions)在机器学习中尤其是在支持向量机(SVM)中扮演着重要的角色,它们能够将数据映射到高维空间,从而解决非线性问题。以下是一些常用的核函数及其适用场景: 线…

大模型的幻觉---探讨及解决之道

大模型「幻觉」背景 幻觉可以说早就已经是LLM老生常谈的问题了,那为什么会产生这个现象该如何解决这个问题呢?大模型幻觉产生的背景主要涉及人类视觉系统的特性和大规模机器学习模型的复杂性。以下是对大模型幻觉产生背景的详细说明和介绍: …

C语言之详细讲解文件操作

什么是文件 与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以KPEG格式保存并且文件…

第5篇:创建Nios II工程之Hello_World<四>

Q:最后我们在DE2-115开发板上演示运行Hello_World程序。 A:先烧录编译Quartus硬件工程时生成的.sof文件,在FPGA上成功配置Nios II系统;然后在Nios II Eclipse窗口右键点击工程名hello_world,选择Run As-->Nios II …

Go语言中,如何做到数据按类别分发给特定的协程处理

在 Go 语言中,如果你想按类别将数据分配给特定的协程(goroutine)进行处理,可以使用几种策略。下面我将提供一些方法和示例,说明如何根据数据类别将任务分配给不同的协程来处理。 使用通道(Channel&#xf…

C#利用IDbCommand实现通用数据库脚本执行程序

目录 关于 ExecuteNonQuery 数据库脚本程序的执行流程 范例运行环境 通用类的设计 引用 DAL类 实现代码 小结 关于 ExecuteNonQuery 在.net 应用中,在数据库中执行脚本程序是经常用到的功能,如数据操作(新增、修改、删除等&#xff0…

C语言趣味代码(四)

这一篇主要编写几个打字练习的小程序,然后通过这些小程序的实现来回顾复习我们之前学过的知识,然后通过这写打字练习的小程序来提升我们的打字技术和编程技术。 1. 打字练习 1.1 基本打字练习 1.1.1 基本实现 首先我们来制作一个用于计算并显示输入一…

github two-factor authentication是个啥?

最近在逛github时,总是时不时会弹出一下界面,很烦 看到红框里的文字,这明显是强制要求做这个认证,如果不认证4天后账号将不可访问,所以今天花点时间看看怎么做这个认证,点“Enable 2FA now”进入这个界面&a…

普通用户执行source报错,sudo: source:找不到命令的解决方案

一、问题描述 当修改/etc/profile文件(环境变量)后,想让该环境变量立刻生效。需要执行source命令。命令如下: sudo source /etc/profile 执行这个后,不像别人的执行成功,反而报错了。错误信息如下&#…

通配符模式

一、通配符介绍 通配符模式(Wildcard Pattern)是一种用于字符串匹配的通用模式规则,常见于文件系统、命令行工具以及编程语言中的文件路径匹配、配置筛选等场景。通配符模式是一种使用特殊字符来表示匹配规则的字符串语法,它允许…

linux下安装anaconda

顺手点个关注吧,谢谢! 一、下载安装包 https://repo.anaconda.com/archive/ 或者使用命令 wget https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh2.赋予权限并安装 # 给文件执行权限 chmod 777 Anaconda3-5.3.1-Linux-x86_64.sh# 执…

商汤研究院招大模型实习生

商汤研究院招大模型实习生,base上海、北京,400/day。福利:每天50租房补贴,20的餐补。晚上8点之后回去有额外的25元晚餐餐补,10点之后回去可以免费用滴滴。 组内的大模型工作大概分两个方向: 1.3B、3B等小…

基于opencv的单目相机标定

openCv版本:4.4.0 从源码处拷贝标定代码出来使用,需要拷贝samples/cpp/tutorial_code/calib3d/camera_calibration 需要的文件如下: -rw-rw-r-- 1 rog rog 28490 Jul 18 2020 camera_calibration.cpp -rw-rw-r-- 1 rog rog 3152 Jul 18 …

判断前端入参是否空否则提示前端写法

vue2中 前端先声明一个变量,用于alert判断 在templeat中定义一个提示语句 然后在点击事件时判断一下是否展示

【Linux】NFS网络文件系统搭建

一、服务端配置 #软件包安装 [roothadoop01 ~]# yum install rpcbind nfs-utils.x86_64 -y [roothadoop01 ~]# mkdir /share#配置文件修改 #格式为 共享资源路径 [主机地址] [选项] # [roothadoop01 ~]# vi /etc/exports /share 192.168.10.0/24(rw,sync,no_root_squash) #…

ubuntu安装源问题

一、 清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 二、 python镜像源 1、临时配置 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simplepip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U --trusted…

BCryptPasswordEncoder是什么如何使用(加解密)

BCryptPasswordEncoder 是 Spring Security 提供的一个密码编码器,它使用 bcrypt 算法来散列密码。bcrypt 是一种跨平台的文件加密工具,它被设计为一种安全的密码散列方法,可以有效地抵御彩虹表攻击。 在 Spring Security 中,BCr…

python数据可视化:集中趋势统计堆叠柱状图barplot()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化: 集中趋势统计 堆叠柱状图 barplot() [太阳]选择题 请问关于以下代码表述错误的选项是? import seaborn as sns import matplotlib.pyplot as plt im…