Crontab简介
crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。该命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。
这里我们看一看crontab 的格式
# Example of job definition:
# .---------------- 第一个参数填写分钟 (0 - 59),填写 * 则表示每分钟执行,填写1-5,则表示从第1分钟到第5分钟都执行,填 */n 时,表示每 n 分钟个时间间隔执行一次,填a,b时,则表示第a分钟和第b分钟都执行,其他参数的规则以此类推;
# | .-------------第二个参数表示小时(0 - 23);
# | | .---------- 第三个参数表示具体日期(1 - 31);
# | | | .------- 第三个参数表示月份 (1 - 12);
# | | | | .---- 第四个参数表示星期几 (0 - 6);
# | | | | | ---- 最后面加上 要执行的命令
# * * * * * user-name command to beexecuted
例子:
×/1 * * * * touch /home/$(date +\%Y\%m\%d\%H\%M\%S) 每隔1分钟生成一个以当前时间命名的文件
0 3 * * * service tomcat restart 每天凌晨三点重启tomcat服务
0 2 1 * * * /home/backup_mysql.sh 每月1号的凌晨2点执行mysql数据库备份脚本
crontab 使用
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
-e : 建立的Crontab文件,编写具体的任务计划
-r : 删除当前所有的任务计划
-l : 列出当前所有的任务计划
每个用户使用 crontab -e
添加计划任务,都会在 /var/spool/cron/crontabs
中添加一个该用户自己的任务文档,这样目的是为了隔离;
如果是系统级别的定时任务,应该如何处理?只需要以 sudo 权限编辑 /etc/crontab
文件就可以。
cron 服务监测时间最小单位是分钟,所以 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron/crontabs 里面的內容。
在 /etc 目录下,cron 相关的目录有下面几个:
- /etc/cron.daily,目录下的脚本会每天执行一次,在每天的6点25分时运行;
- /etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的17分钟时运行;
- /etc/cron.monthly,目录下的脚本会每月执行一次,在每月1号的6点52分时运行;
- /etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的6点47分时运行;
系统默认执行时间可以根据需求进行修改。