Centos7 自定义服务,定时任务

定时任务crontab

1、crontab是比较常用的定时任务
查看系统是否有没有crontab
在这里插入图片描述
没有的话yum -y install crond
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名

2、查看当前用户是否有定时任务

crontab -l

在这里插入图片描述
如果想查看其他用户的定时任务则加选项 -u 后接用户名
其它选项:

-e ##进入任务编辑界面
-r ##清楚定时任务

3、语法

*  *  *  *  *  command

第一部分表示分钟(0-59),* 表示每分钟
第二部分表示小时(0-23),* 表示每小时
第三部分表示日(1-31), * 表示每天
第四部分表示月(1-12), * 表示每月
第五部分表示周几(0-6,0表示周日),* 表示一周中每天
第六部分表示要执行的任务

举例: */2 12-15 2-7,15-22 6-9 * command
上任务时间解释为:6至9月,的2号到7号和15号到22号,的13点到15点,每隔2分钟执行命令!

4、可以了解一下crontab的规则在这里插入图片描述
执行环境的环境和时间规则等等。。。

5、举例来理解crontab怎么创建定时任务的(这里执行的是shell脚本)

1️⃣创建一个shell脚本
在这里插入图片描述
vim hello.sh

#!/bin/bash
#file
echo "hello,world" >> /opt/shell/a.txt

特别简单的命令,应该很好理解吧。在这里插入图片描述现在就一个脚本

2️⃣

crontab -e

编辑任务;在这里插入图片描述

55 21 21 08 * /bin/bash /opt/shell/hello.sh

就这一行命令,一行命令代表一个任务.
接下来就等到时间的时候是否目录下创建了文件a.txt并且查看其内容。。。。。。。。。。。。。。。。。。。。到时间了
在这里插入图片描述
成功了哦。

定时timers

timers主要可以精确到秒,crond只能精确到分钟;timers主要基于systemd执行的,举例说明吧。

1️⃣以Apache为例 没有的话

yum -y install httpd

查看httpd状态
systemctl status httpd在这里插入图片描述没有启动,红框里可以看到httpd服务的启动是靠文件httpd.service启动的

2️⃣
进入

cd /usr/lib/systemd/system/

创建定时任务文件,必须是这个路径下

vim httpd.timers

[Unit]
Description= my httpd start file


[Timer]

OnCalendar=2019-8-22 12:00:00

Unit=httpd.service

第一行:描述文件信息
第二行:执行时间
第三行:依据的启动文件

其他一些元素之后会扩展一点;
[Unit] 标签下指定了不依赖于特定类型的通用配置信息,比如例子中两个文件都指定了一个选项Description=表示描述信息。
[Timer]标签中可以指定多种单调定时器,所谓"单调时间"的意思是从开机那一刻(零点)起, 只要系统正在运行,该时间就不断的单调均匀递增(但在系统休眠时此时间保持不变),永远不会往后退,并且与时区也没有关系。 即使在系统运行的过程中,用户向前/向后修改系统时间,也不会对"单调时间"产生任何影响。包括:

OnActiveSec=       表示相对于本单元被启用的时间点
OnBootSec=         表示相对于机器被启动的时间点
OnStartupSec=      表示相对于systemd被首次启动的时间点
OnUnitActiveSec=   表示相对于匹配单元(本标签下Unit=指定的单元)最后一次被启动的时间点
OnUnitInactiveSec= 表示相对于匹配单元(本标签下Unit=指定的单元)最后一次被停止的时间点

[Timer]标签下还可以设置基于挂钟时间(wall clock)的日历定时器OnCalendar=,所谓"挂钟时间"是指真实世界中墙上挂钟的时间, 在操作系统中实际上就是系统时间,这个时间是操作系统在启动时从主板的时钟芯片中读取的。由于这个时间是可以手动修改的,所以,这个时间既不一定是单调递增的、也不一定是均匀递增的。其时间格式可以是:

Thu,Fri 2012-*-1,5 11:12:13  #表示2012年任意月份的1日和5日,如果是星期四或星期五,则在时间11:12:13执行
*-*-* *:*:00                 #表示每分钟
*-*-* 00:00:00               #表示每天
*-01,07-01 00:00:00          #表示每半年
*:0/15                       #表示每15分钟
12,14,13:20,10,30            #表示12/13/14点的10分、20分、30分
Mon,Fri *-01/2-01,03 *:30:45 #表示任意年份奇数月份的1日和3日,如果是周一或周五,则在每小时的30分45秒执行

3️⃣查看状态

systemctl start httpd.timer

在这里插入图片描述
在这里插入图片描述我们等到12点再看一下吧
在这里插入图片描述成功的。

自定义服务,定时任务

1️⃣cd /opt/shell/
创建一个脚本
在这里插入图片描述
加权:
chmod a+x hello.sh

切换到/usr/lib/systemd/system目录,创建自定义服务
vim a.service

[Unit]
Description=shell echo

[Service]
Type=simple
ExecStart=/opt/shell/hello.sh

vim a.timer

[Unit]
Description=hello.sh


[Timer]
OnCalendar=2019-08-22 16:10:00
Unit=a.service

保存并退出;

在这里插入图片描述
等待16:10。。。。。。

在这里插入图片描述
成功的!!!!
希望自己永远是个大男孩,加油!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_Bigboy_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值