目录
前言
本文介绍了三种在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创建定时器
详细步骤请见如下博客地址:
CSDNhttps://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
后记
新手写作,不喜勿喷,谢谢^_^