目录
(1)在命令行中执行at命令进入作业设置状态。at后面跟时间参数,即要执行任务的时间。
(2)出现at>提示符,进入命令编辑状态,设置要执行的命令或脚本。可指定多条命令,每输入一条命令,按键。
(4)可根据需要执行命令atq查看等待运行(未执行)的作业。
(5)如果需要取消at作业,可以在atrm命令后跟atq命令输出的作业号,将该a作业删除。
一、Crontab周期性任务安排
1.cron介绍
cron用来管理周期性重复执行的作业任务调度,适合日常系统维护。Cron服务每分钟都检查/etc/crontab文件、etc/cron.d目录和/var/spool/cron目录中的变化。
2.配置文件/etc/crontab
Cron主要使用该文件来管理系统级任务调度。
前5个字段用于表示计划时间,数字取值范围:分钟(0~59),小时 (0~23),日期(1~31),月份(1~12),星期(0~7,0或7代表星期日)。尤其要注意以下几个特殊符号的用途:星号“*”为通配符,表示取值范围中的任意值;连字符“”表示数值区间;逗号“,”用于多个数值列表;正斜线“/”用来指定间隔频率。在某范围后面加上“/整数值”表示在该范围内每跳过该整数值执行一次任务。例如“*/3”或者“1-12/3”用在“月份”字段表示每3个月,“*/5”或者“0-59/5”用在“分钟”字段表示每5分钟。
3.在/etc/cron.d目录中定义个别的周期性任务
例如添加一个文件backup用于执行备份任务
#每月第一天4:10AM执行自定义脚本
10 4 1 * * root/scripts/backup.sh
对于需要定期执行的软件,可以使用一个新的cron配置文件
Centos7默认在该目录下创建3个配置文件:
Ohourly,raid-check和sysstat文件
其中Ohourly比较特别,配置内容如下:
#Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
Ohourly与/etc/crontab内容几乎一样,只是已经定义了一个任务。
4、使用crontab命令为普通用户定制任务调度
上述两种配置是系统级的,只有root 用户能够通过/etc/crontab 文件和/etc/cron.d/目录来定制cron任务调度。普通用户只能使用crontab命令创建和维护自己的cron配置文件。该命令的基本用法为:
crontab[-u用户名][-el-1-r]
选项-u指定要定义任务调度的用户名,没有此选项则为当前用户;-e用于编辑用户的cron。调度文件;一1用于显示cron 调度文件的内容;-e用于删除用户的cron调度文件。
5.控制对cron的访问
可通过/etc/cron.allow 和/etc/cron.deny 文件来限制用户对cron服务的使用。
二、使用at和bath工具安排一次性任务
cron根据时间、日期、星期、月份的组合来调度对重复作业任务的周期性执行,有时也需要安排一次性任务,在Linux系统中通常使用at工具在指定时间内调度一次性任务。另外batch工具用于在系统平均载量降到0.8以下时执行一次性的任务。这两个工具都由a软件包提供,由at服务(守护进程名为atd)支持。
1. at
CentOS7默认安装at软件包,并自动启动at服务。下面讲解配置at作业,在某一指定时间内调度一项一次性作业任务的步骤:
(1)在命令行中执行at命令进入作业设置状态。at后面跟时间参数,即要执行任务的时间。
(2)出现at>提示符,进入命令编辑状态,设置要执行的命令或脚本。可指定多条命令,每输入一条命令,按<Enter>键。
(3)需要结束时按<Ctrl>+<D>组合键退出。
(4)可根据需要执行命令atq查看等待运行(未执行)的作业。
(5)如果需要取消at作业,可以在atrm命令后跟atq命令输出的作业号,将该a作业删除。
与cron类似,可以通过/etc/at.allow和/etc/at.deny文件来限制用户对at服务的使用。CentOs 7默认只保留/etc/at.deny。root不受这两个控制文件的制约,总是可以使用at。
2. batch
batch与at一样使用atd守护进程,主要执行一些不太重要及消耗资源比较多的维护任务。配置和管理batch作业的过程与at作业类似。执行batch命令后,at>提示符就会出现,编辑要执行的命令即可。
三、创建systemd定时器
概述:
systemd定时器是Linux系统中一种用于调度任务的工具,它允许用户在未来的某个或多个时点预定要执行的任务,如定期清理文件、在嵌入式系统中定时调用任务采集数据等。随着systemd的兴起,systemd定时器逐渐开始取代传统的cron。systemd定时器有两种主要类型:单调定时器和实时定时器。单调定时器是从一个特定的时间(如系统启动或systemd服务单元执行的开始时间)开始后过一段时间触发;而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。这两种定时器可以满足不同要求的任务。
具体步骤:
1.登录Linux虚拟机,并进行远程连接
2.进入root模式,编写任务脚本
任务脚本的内容如下:
(脚本的用途是将日期写入临时目录下的“我的日志中”。)
编写完任务脚本后要能在指定目录中找到这个脚本,并且将它执行。
Chmod +x abc.sh
Bash abc.sh
(这里的abc.sh是任务脚本的名称)
3.编写配套的服务单元文件
这个服务单元文件在本次实验中被命名为:boot_backup.service,保存在/etc/systemd/system目录中。内容如下:
[Unit]
Description=Backup boot
[Service]
Type=simple
ExecStart=/bin/bash /root/abc.sh
4.编写定时器单元文件
这个定时器单元文件在本次实验中被命名为:boot_backup.timer,保存在/etc/systemd/system目录中。内容如下:
[Unit]
Description=Run boot backup weekly and on boot
[Timer]
OnUnitActiveSec=3s
AccuracySec=1us
Unit=boot_backup.service
[Install]
WantedBy=multi-user.target
OnUnitActiveSec在这里的意思是在多少时间后重复执行一次脚本。
AccuracySec在这里的意思是两次脚本执行时的偏差。
5.重新装载单元文件
Systemctl daemon-reload
6.列出定时器,并使定时器开机启动
Systemctl enable boot_backup.timer
Systemctl start boot_backup.timer
Systemctl start boot_backup.service
7.查看任务状态,并检验任务是否执行
Systemctl status boot_backup.timer
Tail -f /tmp/mylog.txt
综上所述,systemd定时器就创建成功了。