crontab 这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑 /etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服务。
用到crontab那么就一定要知道crond,crond和crontab是不可分割的,crond我的理解是一个守护进程,或者说这才是我们定时任务的核心,crontab是一个编辑或者说是管理定时任务的工具crontab。我的理解就是crond服务处于启动状态,这个服务会默认每分钟去检测是否有需要执行的定时任务,所以crond不能守护秒级定时任务。而这个任务的具体内容是通过crontab来管理的。
一般情况下crond、crontab是安装好的,这里主要提一下万一没有crontab你别想着直接用yum去安装crond或者crontab因为你会发现找不到包,其实定时任务的包是cronie。
yum install -y cronie 这样就行了
关于crond和crondtab常用命令
systemctl start crond 启动服务
systemctl stop crond 停止服务
systemctl restart crond 重启服务
systemctl reload crond 重载配置文件
systemctl status crond 查看状态
crontab -u 设定某个用户的cron服务
crontab -l 显示crontab文件(显示已设置的定时任务)
crontab -e 编辑crontab文件(编辑定时任务)
crontab -r 删除crontab文件(删除定时任务)
crontab -i 删除crontab文件提醒用户(删除定时任务)
定时任务格式
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
用户的定时任务分6段,分别是:分,时,日,月,周,命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次
配置文件路径:/etc/crontab
在配置文件中,原本6个段的配置,我们需要在命令前面再加一个用户段
即:分 时 日 月 周 用户 命令
直接添加到最后一行即可
使用命令编辑相当于就是编辑当前用户的任务,所以不需要加用户字段,这里就是6段
* * * * * /home/wsj/scheduledTest.sh
进入/var/spool/cron
如果你执行了以上两种方式,你再进来看一下这个目录下的文件你可能会发现一点问题
这里的文件都是以用户名来命名的,你再打开你使用crontab -e 添加过任务的用户文件,原来crontab -e编辑的就是这里的文件,所以我们如果需要为哪个用户添加任务,只用编辑这个目录下对应用户的文件即可
* * * * * 每1分钟执行一次
15,30,45 * * * * 每小时的第15、30、45分执行
15,30 10-11 * * * 在上午10点到11点的第15和第30分钟执行
* */2 * * * 每两个小时执行一次
5>相关文件
#该文件中所列用户不允许使用crontab命令
/etc/cron.deny
# 该文件中所列用户允许使用crontab命令
/etc/cron.allow
#所有用户crontab文件存放的目录,以用户名命名
/var/spool/cron/
# crond日志文件
/var/log/cron