Summary
- 在CentOS系统上安装:
yum install crontabs
- 系统中的每个用户可以有一个自己的 crontab 文件,他们可以利用该文件来实现不同日期、不同时间的多个事件的调度。
- crontab 文件的6个字段的含义如下:
第1列分钟:范围是 0~59
第2列小时:范围是 0~23
第3列日期:范围是 1~31
第4列月份:范围是 1~12
第5列星期:范围是 0~7(0和7表示星期天),从星期天开始
第6列要运行的命令
理解
- 该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔.该文件中所有的注释行要在行首用#来表示.
- 分钟列必须有数字,否则星号代表每分钟都执行,如果设置了小时任务,分钟列还是星号,那么到目标小时后,每分钟都会执行
- 可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示.
- 在域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1,4来表示.
- 但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件.系统管理员是通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件.
crontab -l # 查看当前用户的定时任务
crontab -e # 编辑当前用户的定时任务
crontab -u # 用户名,当前登录用户不用填写用户名
crontab -r # 删除crontab文件, 慎用!慎用!慎用!慎用!! 注意备份
Demo
# 每分钟执行
* * * * * /opt/task/startup.sh
# 每晚的21:30运行
30 21 * * * /opt/task/startup.sh
# 每月1,10,22日的4:45运行
45 4 1,10,22 * * /opt/task/startup.sh
# 每周六,周日的1:10运行一个find命令,删除一些内容
10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
# 每天18:00至23:00之间每隔30分钟运行
0,30 18-23 * * * /opt/task/startup.sh
# 每星期六的23:00运行
0 23 * * 6 /opt/task/startup.sh
特别的标签
# 在开机的时候执行一次
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh
# 每小时运行,对应的是 0 * * * *
@hourly /opt/task/startup.sh
# 其他
@yearly 对应 0 0 1 1 * 每年运行一次
@annually 对应 0 0 1 1 * 每年运行一次
@monthly 对应 0 0 1 * * 每月运行一次
@weekly 对应 0 0 * * 0 每周运行一次
@daily 对应 0 0 * * * 每天运行一次
@hourly 对应 0 * * * * 每时运行一次
其他内容
- at 命令 使她在一个特定的时间执行一个特殊的任务
- & 使用它在后台运行一个占用时间不长的进程
- Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响