linux内置的cron可以帮我们实现定时任务(备份数据库数据、删除服务日志等),cron + shell脚本,再复杂的指令都没有问题。
1. 相关配置文件:
/var/spool/cron:该目录下,存放的是每个用户(包括root)的crontab任务,每个任务以创建者的名字命名
/etc/crontab:该文件里,存放的是系统任务的任务列表
/etc/cron.d、/etc/cron.daily、/etc/cron.weekly...:这些目录下,存放任何要执行的crontab文件或脚本(平时不太用到)
2. crontab命令使用
crontab [-u username] //省略则表示当前用户
-e:编辑工作表
-l:列出工作表
-r:删除工作表
3. crontab文件说明
crontab -e进入当前用户的工作表编辑,实际上就是/var/spool/cron/root(当前为root用户)文件,每一行是一条命令。crontab的命令构成为:时间+动作。
格式:
minute hour day month dayofweek command
时间:
分、时、日、月、周,共5种
操作符:
* 取值范围内的所有数字 / 每过多少各数字 - 从A到B ,散列数字
实例:
* * * * * myCommand # 每1分钟执行一次myCommand 3,15 * * * * myCommand # 每小时的第3和第15分钟执行 3,15 8-11 * * * myCommand # 在上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * myCommand # 每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 myCommand # 每周一上午8点到11点的第3和第15分钟执行 30 21 * * * myCommand # 每晚的21:30执行 45 4 1,10,22 * * myCommand # 每月1、10、22日的4 : 45执行 10 1 * * 6,0 myCommand # 每周六、周日的1 : 10执行 0,30 18-23 * * * myCommand # 每天18 : 00至23 : 00之间每隔30分钟执行 0 23 * * 6 myCommand # 每星期六的晚上11 : 00 pm执行 * */1 * * * myCommand # 每一小时执行 * 23-7/1 * * * myCommand # 晚上11点到早上7点之间,每隔一小时执行
4. crontab服务
- service crond start //启动服务
- service crond stop //关闭服务
- service crond status //查看服务状态
- service crond restart //重启服务
- service crond reload //重新载入配置
- 一般默认是启动的
5. 实例
假如当前为root用户,新增一个定时任务,操作步骤如下:
1. 编辑待执行的sh脚本:vim test123.sh
2. 通过chmod赋予.sh脚本可执行权限:chmod +x test123.sh
3. 编辑vim /var/spool/cron/root文件,或执行crontab -e,编辑任务列表,将第一步中的sh脚本添加到任务列表中
本例中,将sh脚本打印的hello world输出到2.log日志文件中,每分钟执行一次
4. 查看结果
可以看到,实际每分钟打印一行hello world!
ps:
如果是修改系统任务,则需要加上用户名,如下: