Linux定时任务Cron
cron简介
cron是一个linux下的定时执行工具,和window下的计划任务差不多,可以在无需人工干预的情况下运行作业。
linux任务调度的工作主要分为以下两类:
* 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
* 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
基本管理命令
chkconfig --add crond //添加到自动启动
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
控制命令
直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
- 比如说root查看自己的cron设置:crontab -l
- 比如说root查看postgres用户的cron设置:crontab -u postgres -l
编辑方式
- 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
- 直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
定时语法
分 |
小时 |
日 |
月 |
星期 |
命令 |
0-59 | 0-23 | 1-31 | 1-12 | 0-6 | command |
每个字段代表的含义如下:
- Minute 每个小时的第几分钟执行该任务
- Hour 每天的第几个小时执行该任务
- Day 每月的第几天执行该任务
- Month 每年的第几个月执行该任务
- DayOfWeek 每周的第几天执行该任务
- Command 指定要执行的程序
特殊符号的含义
- "*"代表取值范围内的数字,
- "/"代表"每",
- "-"代表从某个数字到某个数字,
- ","分开几个离散的数字
部分例子
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。
对于不指定的字段,要用“*”来填补其位置。举例如下:
- 5 * * * * ls 指定每小时的第5分钟执行一次ls命令
- 30 5 * * * ls 指定每天的 5:30 执行ls命令
- 30 7 8 * * ls 指定每月8号的7:30分执行ls命令
- 30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
- 30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
- 30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
- 25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
- */15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
- 30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
编辑/etc/crontab 文件配置cron
- 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
- 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
- 22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
- 42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
常用
每周1,5 2:10 备份清空
10 2 * * 1,5 /database/pgsql/bin/cleandump.sh
每3个小时分析一次查询日志
0 */3 * * * /database/pgsql/bin/tranlog.sh
每周2,4 2:10 备份
10 2 * * 2,4 /database/pgsql/bin/dumpallsql.sh
10 2 * * 1,5 /database/pgsql/bin/cleandump.sh
10 */3 * * * /database/pgsql/bin/tranlog.sh
10 2 * * 2,4 /database/pgsql/bin/dumpallsql.sh