创建自定义服务与创建systemd定时器

创建自定义服务

自定义服务前言:

Linux系统中也有“服务”这一说法,通过服务我们可以便捷地管理一些程序功能,也可以作为程序开机自启的一个手段之一。今天我来分享一下如何创建自己简易的Linux服务。

开机第一个程序从init完全换成了systemd这种启动方式。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。
在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的,服务又分为系统服务(system)和用户服务(user)。
文出处链接和本声明。


一、创建自定义服务

1)新建文件夹并写人代码,编辑你需要的服务

这里我们以写入时间为例子,在该文件写入执行代码

该代码意思为在chenxl.txt文件输出时间

所有我们也在/root建一个chenxl.txtx文件夹

解释:每一个服务在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…类似,但是如果条件检测不满足会导致失败。

2)在这个目录下新建service文件即可创建我们的服务

文件的内容结构如下

根据自己需求写入配置

3)刚刚建立好了我们的服务配置,现在就可以使用了!在此之前需要先使用下列命令让系统重新读取所有服务文件:

执行:systemctl daemon-reload进行读写

4)开启你自定义服务

5)查看服务状态,如同则开启成功

6)如果未成功则是系统自我保护模式开启了

这执行setenforce 0 为自己提供权限

再重新启动服务

7)我们查看之前创建的chenxl.txt文件日志,进行服务是否再执行

执行tail

由图可见我们自己写入的服务也在运行了

二、创建systemd定时器

定时器前言:

Timer定时器是一种用于定时执行任务的工具。它依赖时钟源进行计数,当达到预设值时触发事件。Timer定时器在多个领域广泛应用,如嵌入式系统、通信和自动化。它简单易用,但需注意任务执行方式可能是串行的。总体而言,Timer定时器是实现定时处理任务的有效手段。本文就会教大家如何使用timer定时器。

而定时器又分两种,分别为单调定时器与实时定时器,但本质并没有什么区别,只是单元文件不一样。

该处直接利用上述所自定义服务进行定时服务作为例子

1.创建单调定时器

单调定时器适合按照相对时间的任务管理,这里以一个定时备份任务为例,要求开机后每3s执行一次。

1)给你所需要定时的服务编写一个定时器元文件,保存在/etc/systemd/system目录下,内容如图

该意义为每3秒启动一次应用

2)由于创建新的单元文件,执行systemctl daemon-reload命令重新加载单元文件

分别执行以下命令使新建的定时器开机启动,并启动定时器:

systemctl enable qwe.timer

Systemctl start qwe.timer

3)查看服务进程的状态,处于activef则一次或多次持续执行,表示任务启动完成

执行systemctl status qwe.timer

4)然后我们也可以查看我们定时的服务日志进行确认

如图每3秒执行一次服务,则我们的定时服务完成

CRON定时器

这里我将介绍一下另一种单调定时器cron
cron用来管理周期性重复执行的作业任务调度,非常适合日常系统维护工作。计划任务分为系统的计划任务和用户自定义的计划任务。cron服务每分钟都检查/etc/crontab文件、etc/cron.d 目录和/var/spool/cron 目录中的变化。如果发现改变,就将其载入内存。这样一来更改 cron 任务调度配置后,就不必重新启动 cron服务。/var/spool/cron 目录下的任务需要通过 crontab -e命令来创建,存放在 cron.d 目录下的是任务配置文件,而不是可执行文件。通过命令创建的一般为用户任务,通过配置文件定义的则为系统级任务。


1.使用配置文件/etc/crontab 定义系统级周期性任务,初始配置文件如下

最后一段前5个字段用于表示计划时间,数字取值范围:分钟(0~59),小时(0~23),日期(1~31),月份(1~12),星期(0~7,0或7代表星期日)。尤其要注意以下几个特殊符号的用途:星号“*”为通配符,表示取值范围中的任意值;连字符“_”表示数值区间;逗号“,”用于多个数值列表;正斜线“”用来指定间隔频率。在某范围后面加上“/整数值”表示在该范围内每跳过该整数值执行一次任务。例如“*/3”或者“1-12/3”用在“月份”字段表示每3个月,“*/5”或者“0-59/5”用在“分钟”字段表示每5分钟。第6个字段表示执行任务命令的用户身份,例如root。最后一个字段就是要执行的命令。

2、在/etc/cron.d目录中定义个别的周期任务

/etc/crontab配置文件适合全局性的计划任务,如果要定制更为灵活、更具个性的计划任务,则可以考虑在/etc/cron.d/目录中添加自己的配置文件,格式同/etc/crontab,文件名可以自定义。例如添加一个文件backup用于执行备份任务,内容如下:

每月第一天4:10AM执行自定义脚本

10 4 1* * root/scripts/backup.sh

对于需要定期执行的软件,可以再此使用一个新的cron配置文件。

2.创建实时定时器

实时定时器适合安装日历时间的计划任务管理,这里也以一个备份任务为例,要求每周执行一次,且上次未执行就立即执行。实现步骤与上述单调定时器一样,只是将定时器单元文件修改即可。其内容符号定时器,修改如下:

其他与单调定时器一样,这就不多复述了。

AT与BATCH

这里我也将介绍另一种实时定时器at与batch

cron 根据时间、日期、星期、月份的组合来调度对重复作业任务的周期性执行,有时也需要安排一次性任务,在Linux系统中通常使用at工具在指定时间内调度一次性任务。另外batch 工具用于在系统平均载量降到0.8以下时执行一次性的任务。这两个工具都由at软件包提供,由at服务(守护进程名为atd)支持。

1、at

CentOS7默认安装at软件包,并自动启动at服务。下面讲解配置at作业,在某一指定时间内调度一项一次性作业任务的步骤。
(1)在命令行中执行 at命令进入作业设置状态。at 后面跟时间参数,即要执行任务的时间,可以是下面格式中任何一种。
***HH:MM:某一时刻,如 05:00代表5:00 AM。如果时间已过,就会在第2天的这一时间执行。
***MMDDYY、MM/DD/YY或 MM.DD.YY:日期格式,表示某年某月某天的当前时刻。
***特定时间:midnight代表12:00AM;noon代表12:00PM;teatime代表4:00PM。

***now+:从现在开始多少时间以后

执行,单位是minutes、hours、days或 weeks。如 now+3 days 代表命令应该在3天之后的当前时刻执行。
。月日年英文格式:如January 15 2015,年份可选。
(2)出现 at>提示符,进入命令编辑状态,设置要执行的命令或脚本。可指定多条命令,每输入一条命令,按<Enter>键。
(3)需要结束时按<Ctrl>+<D>组合键退出。
(4)可根据需要执行命令 atq查看等待运行(未执行)的作业。
(5)如果需要取消 at 作业,可以在 atrm 命令后跟 atg 命令输出的作业号,将该 at 作业
删除。

下面给出一个简单的at配置实例

该列子为10分钟后执行 ps与ls两条简单命令

我们可以通过atq来查询未执行的at作业

通过atrm来删除未执行的at作业(atrm后面加要删除的作为的编号)

2、batch

batch与at一样使用atd 守护进程,主要执行一些不太重要及消耗资源比较多的维护任务
配置和管理 batch 作业的过程与at作业类似,只不过它不用指定任务执行的时间,而是在系统空闲时自动执行指定的任务。执行 batch 命令后,at>提示符就会出现,编辑要执行的命令即可。

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值