本文共 2821 字,大约阅读时间需要 9 分钟。
定时执行任务是指在预定时间自动执行计划好的工作,如系统备份、缓存清理等。常用的工具包括 at
命令、batch
命令、crontab
命令以及 CentOS 7 中的 timer
命令。以下将详细介绍 at
命令和 crontab
命令的使用方法。
进入终端后执行以下命令安装 at
软件包:
# yum安装at软件包[root@centos7 ~]# yum install -y at
atd 是 atd 服务的依赖。执行以下命令查看服务状态:
# 查看atd服务状态[root@centos7 ~]# systemctl status atd● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since 六 2020-04-25 21:41:37 CST; 4s ago Main PID: 21972 (atd) CGroup: /system.slice/atd.service └─21972 /usr/sbin/atd -f# 启用atd服务[root@centos7 ~]# systemctl start atd[root@centos7 ~]# systemctl status atd● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since 六 2020-04-25 21:41:37 CST; 4s ago Main PID: 21972 (atd) CGroup: /system.slice/atd.service └─21972 /usr/sbin/atd -f
at 命令支持通过 /etc/at.allow
和 /etc/at.deny
实现用户访问控制。默认情况下,只有在 /etc/at.deny
中存在且未被 /etc/at.allow
过盖的用户才能使用 at 命令。
# 查看at.deny文件[root@centos7 ~]# ls /etc/at.deny/etc/at.deny[root@centos7 ~]# cat /etc/at.deny
使用 at
命令添加定时任务:
# basic format[root@centos7 ~]# at [options] [时间]
常用选项:
-m
:执行完成后以 E-mail 通知用户。-c Work
:显示命令的实际输出。-t time
:指定执行时间,格式如 HH:MM
。-d
:删除任务,需提供任务 ID。-l
:列出当前任务。-f file
:运行指定的脚本文件。在 21:50 执行 ls /root
命令,并将结果写入 /root/at.txt
文件。
[root@centos7 ~]# at 21:50at> ls /root >> /root/at.txtat>
执行完成后,输出如下:
[root@centos7 ~]# atq2 Sat Apr 25 21:50:00 2020 a root[root@centos7 ~]# cat /root/at.txtabc
使用 atrm
或 -d
选项删除任务:
[root@centos7 ~]# atrm 2[root@centos7 ~]# at -l3 Sun Apr 26 21:01:00 2020 a root[root@centos7 ~]# at -d 3
crontab 是用于周期执行定时任务的工具,其依赖 crond 服务。crond 会每分钟检查一次任务列表并执行。
crond 默认自启动,确保其处于运行状态:
# 启用crond服务并查看状态[root@centos7 ~]# systemctl start crond[root@centos7 ~]# systemctl status crond
crontab 命令通过 /etc/cron.allow
和 /etc/cron.deny
文件设置访问控制。
crontab 命令格式如:crontab [options] [file]
,其中 [file]
是定时任务文件。
-u user
:指定用户。-e
:编辑任务文件。-l
:显示任务列表。-r
:删除任务文件。-i
:确认删除提示。使用 crontab -e
编辑任务文件,并输入以下内容以定时执行脚本:
# 进入crontab编辑界面[root@centos7 ~]# crontab -e# 输入任务时间格式* * * * * 执行的命令
任务格式为:
分钟、小时、日、月、星期## 命令
特殊符号:
*
:表示所有值,
:表示精确值-
:表示范围/
:表示间隔在每天 4:40 执行脚本 /root/test.sh
:
*/10 4:* * * * sh /root/test.sh
在每周一至周五的 8:00 执行任务:
0 8 * * 1-5 /root/test.sh
查看当前任务:
[root@centos7 ~]# crontab -l*/1 * * * * sh /root/test.sh
删除任务文件:
[root@centos7 ~]# crontab -r
系统级定时任务配置在 /etc/crontab
文件中,只能由 root
用户定义。
# 示例配置文件SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# 定时任务示例*/10 * * * * sh /root/test.sh
执行 task 文件后,可通过终止进程将其停止:
[root@centos7 ~]# kill -9 1234
通过 at 命令和 crontab 命令,可以轻松完成定时任务配置。选择合适工具根据需求进行设置。
转载地址:http://rowfk.baihongyu.com/