运用Linux系统中的多种工具来进行定时服务

目录

前言

一、使用cron安排周期性任务

(一)简介

(二)在etc/cron.d目录中定义个别的周期性任务

二、使用at和batch工具安排一次性任务

(一)步骤

(二)实例

三、使用systemd创建定时器

1.编写任务脚本

2.编写一个定时器单元文件

3.编写一个配套的单元服务文件

4.重新装载单元文件

5.启动定时器

 6.查看脚本运行成果


前言

本文介绍了三种在Linux系统中进行时间任务的工具

一、使用cron安排周期性任务

(一)简介

cron用来管理周期性重复执行的作业任务调度,非常适合日常系统维护工作。cron服务每分钟都检查/etc/crontab文件、etc/cron.d目录和/var/spool/cron目录中的变化。如果发现改变,就将其载入内存。这样一来更改 cron任务调度配置后,就不必重新启动cron服务。

使用配置文件/etc/crontab 定义系统级周期性任务:

cron 主要使用配置文件/ctc/crontab 来管理系统级任务调度。默认情况下,CentOS7中的该配置文件内容如下:

下面具体解释一下各字段的含义。
前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。
最后一个字段就是要执行的命令

(二)在etc/cron.d目录中定义个别的周期性任务

1.编写一个任务脚本

#! /binbash

#name:timer.sh

echo `date` >> /root/syslog.txt

该脚本的功能是将当前日期追加在syslog.txt文件里

2.输入以下命令,赋予脚本可执行权限

chmod +x timer.sh

3.使用如下命令打开你的 crontab 文件

crontab -e

在打开的编辑器中,添加一行来指定脚本的执行时间和频率。例如,如果你想每天中午 12 点执行这个脚本,你可以添加以下行:

0 12 * * * /root/timer.sh

4.然后保存退出即可

二、使用at和batch工具安排一次性任务

(一)步骤

(1)在命令行中执行at命令进入作业设置状态。at后面跟时间参数,即要执行任务的时间,可以是下面格式中任何一种:
HH:MM:某一时刻,如05:00代表5:00AM。如果时间已过,就会在第2天的这一时间执行。
MMDDYY、MM/DD/YY或MM.DD.YY:日期格式,表示某年某月某天的当前时刻。

月日年英文格式:如January15 2015,年份可选。
特定时间:midnight代表12:00AM;noon代表12:00PM;teatime 代表4:00PM。

now+:从现在开始多少时间以后执行,单位是minutes、hours、days或 weeks。如 now+3 days 代表命令应该在3天之后的当前时刻执行。
(2)出现at>提示符,进入命令编辑状态,设置要执行的命令或脚本。可指定多条命令每输入一条命令,按<Enter>键。
(3)需要结束时按<Ctrl>+<D>组合键退出。

(4)可根据需要执行命令 atg查看等待运行(未执行)的作业。
(5)如果需要取消at作业,可以在 atrm 命令后跟 atq命令输出的作业号,将该at 作业删除。

(二)实例

1.首先,输入你想要在何时执行任务的时间,例如,如果你想要在今天的14:30执行任务,可以输入:

at 14:30 today

2.接下来,输入你想要执行的命令,例如,如果你想要创建一个名为test.txt的文件,可以输入:

echo "Hello, World!" > test.txt

3.最后,按Ctrl + D组合键结束输入,at命令会将你的任务添加到系统的计划任务中。

这样,你就创建了一个简单的at配置例子,它会在指定的时间执行你指定的命令

4.batch与at一样使用atd守护进程,主要执行一些不太重要及消耗资源比较多的维护任务。配置和管理batch作业的过程与at作业类似。执行batch命令后,at>提示符就会出现,编辑要执行的命令即可。

三、使用systemd创建定时器

详细步骤请见如下博客地址:

CSDNicon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/137408666

1.编写任务脚本

 编写的内容如下:

#! /bin/bash

echo `date` >> /root/syslog.txt

编写完成后输入以下命令授予脚本执行权限

chmod +x timer.sh

 

2.编写一个定时器单元文件

命名为boot_backup.timer

保存在/etc/systemd/system目录中

编写的内容如下所示:

[Unit]

Description=Run timer.sh#本行起描述作用,内容可随意,对脚本运行影响不大

[Timer]

OnUnitActiveSec=3s#设置该定时器所激活的那个服务单元最后一次停止后,间隔3秒再运行一次

AccuracySec=1us#用于指定定时器触发任务的时间准确度为1微秒

[Install]

WantedBy=multi-user.target

 

3.编写一个配套的单元服务文件

命名为boot_backup.service

保存在/etc/systemd/system目录中

编写的内容如下所示:

[Unit]

Description=date deamon

[Service]

Type=simple

ExecStart=/bin/bash /root/timer.sh

 

4.重新装载单元文件

由于创建新的单元文件,执行以下命令重新装载单元文件

systemctl daemon-reload

 

5.启动定时器

启动的是.timer文件,而不是.service文件。因为配套的service文件由timer文件启动。

输入以下命令启动定时器

systemctl start boot_backup.timer

输入以下命令查看启动状态

systemctl status book_backup.timer

输入以下命令设置成开机自启

systemctl enable boot_backup.timer

 

 6.查看脚本运行成果

cat syslog.txt

后记 

新手写作,不喜勿喷,谢谢^_^

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A.fly默成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值