目录
2.在/etc/systemd/system/目录下新建service文件即可创建我们的服务
3.刚刚我们建立好了服务配置,现在就可以使用了!在此之前需要先使用下列命令让系统重新读取所有服务文件
7.我们查看之前创建的log.txt文件日志,进行服务是否再执行
1.Linux自定义系统服务的概念
在Linux中,自定义系统服务是指用户根据特定需求创建的后台服务或任务,并使用 Systemd 来管理这些服务的启动、停止、重启和状态。 Systemd 是一种系统和服务管理器,它负责系统引导过程中的启动、守护进程管理、维护系统状态等任务。自定义系统服务允许用户将自己的应用程序或脚本作为服务运行,并受到 Systemd 的管理和监控。
2.Linux自定义系统服务的作用
1.提供特定功能:自定义系统服务可以实现用户自定义的功能,如监控、数据处理、定时任务等。用户可以编写自己的服务程序或脚本,并将其注册为系统服务,以便系统在需要时启动和运行。
2.简化管理:通过将常用功能封装成系统服务,可以简化系统管理和维护的流程。用户可以通过服务管理命令(如systemctl)方便地启动、停止、重启或查看服务的状态,而无需手动操作每个功能模块。
3.提高可靠性:将功能模块化并以服务的形式运行,可以提高系统的可靠性和稳定性。系统服务通常具有自动重启功能,一旦服务异常退出,系统会自动尝试重新启动服务,从而减少因服务故障而导致的系统中断或异常。
4.实现自动化任务:自定义系统服务可以用于实现各种自动化任务,如定时备份、数据同步、日志轮转等。用户可以编写脚本并将其注册为服务,以便系统在预定的时间自动执行这些任务,提高系统的效率和可靠性。
5.集成日志管理: Systemd可以集成系统日志,并提供统一的日志管理和查看方式。通过Systemd,可以轻松查看服务的日志输出,帮助诊断和排查问题。
3.Linux自定义系统服务操作步骤
1.在目录下新建一个文件夹,编辑你需要的服务
这里随便命名的(我们以写入时间为例,写入代码)内容如下:
vim mydate.sh
#! /bin/bash
while true; do
echo `date` >> /root/log.txt
sleep 2
done
该代码意思是在/tmp临时目录下的log.txt文件输出时间,所以我们也要在/tmp下创建一个log.txt文件夹(注意:date上的为反引号不是单引号,如果打为单引号就会直接输出date这个字符)
2.在/etc/systemd/system/目录下新建service文件即可创建我们的服务
cd /etc/systemd/system
根据自己的需求写入配置
vim mydate.service
[Unit]
Description=mydate
[Service]
Type=simple
ExecStart=/root/mydate.sh
[Install]
WantedBy=multi-user.target
解释:每一个服务在Linux有它自己的对应的配置文件,这个文件可以通过文本编辑器编辑,扩展名为xxx.servive(xxx为服务名称)。这些文件位于/usr/lib/systemd/system目录下。
服务脚本说明
主要分成三个部分:[Unit] [Service] [Install]
Unit表明该服务的描述,服务的依赖关系。比较典型的情况是单元A要求在单元B启动之后再启动。这种设置是通过Unit下面的Requires、After、Before、Wants来调整的。常用的命令有:
Description:一般是服务简短的描述。
Documentation:一般是服务文档的链接等。
Requires:一般写本服务依赖的其他服务,启动本服务时,一般会并行的启动该服务和它所依赖的服务,如果它依赖的服务启动失败了,本服务将无法启动成功。
Wants:与Requires类似,但是相对宽松一些,即使依赖的服务启动失败了,本服务也可以继续正常启动,一般的依赖都推荐使用这个命令。
BindsTo:和Requires=类似,但是如果依赖的服务停止了,本服务也会停止。
Before和After:这两个需要和上面描述依赖关系的命令一起使用,表示依赖的当前服务与依赖的服务启动的先后顺序,Before表示当前服务启动成功后才可以启动依赖服务,After则相反。
Conflicts:这个命令后面跟的服务将不能和当前服务同时运行,如果当前服务运行则会导致该命令列举的服务被停止。
Condition…:这个命令往往和许多其他命令一起使用,用来测试一些条件,比如测试当前的操作系统。如果条件不满足,则跳过当前服务的启动。
Assert…:和Condition…类似,但是如果条件检测不满足会导致失败。
3.刚刚我们建立好了服务配置,现在就可以使用了!在此之前需要先使用下列命令让系统重新读取所有服务文件
执行:systemctl daemon-reload 进行读写
systemctl daemon-reload
4.开启你的自定义服务
systemctl start mydate.service
5.查看服务状态
systemctl status mydate.service
6.如果执行失败的话看一下你的权限是否开启了
getenforce
执行getenforce后为Permissive则是开启了,如果不是Permissive,执行setenforce 0为自己提供权限
setenforce 0
在重新启动服务
7.我们查看之前创建的log.txt文件日志,进行服务是否再执行
执行 tail -f /root/log.txt
tail -f /root/logtxt
可见我们自己写的服务也在运行了!!!
4.总结
通过这个实验,你学会了如何创建并管理自定义的Linux系统服务。这个过程涵盖了编写服务脚本、创建Systemd服务单元文件、加载和启用服务以及验证服务状态的步骤。自定义系统服务可以帮助你实现自动化管理和监控,在Linux系统中更高效地运行和维护你的应用程序或任务。