一、安装与启动crontab服务
1、安装crontab服务:在CentOS中,可使用yum install crontabs
命令安装crontab服务。
2、启动并设置开机自启:安装完成后,通过systemctl start crond
命令启动crond服务,再执行systemctl enable crond
将其设为开机启动。

二、配置定时规则
1、编辑crontab文件:使用crontab e
命令进入编辑模式,可创建或修改用户的定时任务。
2、crontab文件格式:每一行代表一个任务,由分、时、日、月、周、命令六段组成,字段之间用空格分隔。*/30 * * * * /tools/backup/bkapproval.sh;0 1 * * * python /tools/backup/ClearFile.py”,前面的是定时表达式,后面的是要执行的脚本路径或命令。
3、特殊符号含义
**星号(\*):表示任意时间,如“\”代表每分钟,“*”代表每小时等。
斜杠(/):用于指定时间间隔,如“*/10”表示每隔10分钟。
逗号(,):用于分隔不同的时间点,如“0,15,30,45”表示在每小时的第0、15、30和45分钟执行。

破折号():表示时间范围,如“15”表示从1到5的范围。
问号(?):该字符只有在日期和星期字段中使用,表示不指定具体的值。
三、用户计划任务管理
1、查看用户计划任务:使用crontab l
命令可查看当前用户的定时任务列表。
2、删除用户计划任务:crontab r
命令可删除当前用户的所有定时任务。
3、管理其他用户任务:超级管理员root可用crontab u 用户名
来管理其他用户的定时任务计划。
四、系统计划任务配置
1、编辑系统crontab文件:使用vi /etc/crontab
命令编辑系统范围内的定时任务配置文件。

2、语法格式示例:文件中每行代表一个任务,格式为“分 时 日 月 周 用户名 命令”。*/30 * * * * root /usr/local/mycommand.sh”表示每天每30分钟以root用户身份执行一次命令。
五、日志查看
可通过查看/var/log/cron
目录下的日志文件,了解计划任务的执行情况及可能出现的错误。
六、环境变量问题
默认情况下,crond的任务计划不会调用用户设置的环境变量,它有自己的环境变量,若需在crontab中使用环境变量,可在/etc/crontab
中添加相应的环境变量设置,或在命令前指定完整路径。
七、一次性任务
CentOS中的一次性计划任务由at软件包提供,通过atd服务实现,使用at命令进行配置,最小化安装的系统可能需先安装at软件包,命令为yum install at
,新建任务时使用“at 时间日期”命令,查看任务用“atq”命令,删除任务则使用“atrm 任务编号”命令。
八、权限设置
默认所有用户都可执行crontab设置计划任务,若需限制,可在/etc/cron.deny
中添加用户禁止其设置计划任务,也可自行创建/etc/cron.allow
使用白名单方式允许特定用户设置计划任务。
九、配置实例
以下是一些常见的配置实例:
1、每天凌晨三点整执行命令脚本:在crontab文件中添加“0 3 * * * /usr/sbin/ntpdate ntp1.aliyun.com”。
2、每小时的1030分钟,每分钟执行一次命令脚本:添加“1030 * * * * /usr/sbin/ntpdate ntp1.aliyun.com”。
3、每隔五分钟执行一次命令:添加“*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com”。
十、FAQs
问题1:如何在CentOS中设置一个每天中午12点执行的备份任务?
答案:可以通过编辑crontab文件来实现,使用“crontab e”命令进入编辑模式,然后在文件中添加一行“0 12 * * * /path/to/backup/script.sh”,保存并退出即可,这条记录表示每天中午12点执行指定的备份脚本。
问题2:如果发现某个计划任务没有按照预期执行,应该如何排查问题?
答案:可以使用“crontab l”命令查看任务是否正确添加到crontab文件中,检查任务的命令是否正确,包括路径、参数等是否准确无误,查看/var/log/cron
目录下的日志文件,可能会有相关的错误信息提示,帮助确定问题所在,还可以检查系统的时间设置是否正确,以及是否有其他因素影响了计划任务的执行。