ubuntu16定时任务crontab
缘起
最近在ubuntu16上配置了个定时任务,好长时间没配置好,
后来发现问题,cron配置文件换行符必须是 unix格式,否则执行不成功
cron文件语法
crontab是linux中周期性的执行任务的一个守护进程,与windows下的计划任务类似
crontab使用最小维度为分钟
分 | 小时 | 日 | 月 | 星期 | 命令 | 注释 |
---|---|---|---|---|---|---|
0-59 | 0-23 | 1-31 | 1-12 | 0-6 | cmd | 注释 |
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表示星期天 |
*/5 | * | * | * | * | ls | 每5分钟执行ls |
*/1 | * | * | * | * | ls | 每1分钟执行ls |
0 | * | * | * | * | ls | 每小时执行 |
0 | 0 | * | * | * | ls | 每天执行 |
0 | 0 | * | * | 0 | ls | 每周日执行 |
0 | 0 | 1 | * | * | ls | 每月执行 |
0 | 0 | 1 | 1 | * | ls | 每年执行 |
15,30,45,59 | * | * | * | * | ls | 每隔15分钟执行一次ls |
* 代表取值范围内的所有可用的值,例如*在指代month时表示每月执行
/ 代表”每”,指定步进设置,如0-59/2定义每两分钟执行一次
- 代表从某个数字到某个数字,例如1-4意思是整数1,2,3,4
, 分开几个离散的数字,如:3,4,6,8表示这四个指定整数
crontab 命令
crontab -l #列出某个用户cron服务的详细内容
crontab -r #删除某个用户的cron服务
crontab file [-u user] #用指定的文件替代目前的
crontab -e #编辑某个用户的cron服务
crontab-c dir #指定crontab的目录
举例来说明
crontab.cron 换行符必须是 unix格式,否则执行不成功
换行符错误时cron日志:(/root/crontab/syncDuser/syncDuser.sh^M)
换行符正确时cron日志:(/root/crontab/syncDuser/syncDuser.sh)
定时执行syncDuser.sh脚本
在/root/crontab下创建 crontab.cron 文件 内容见下面例子
crontab crontab.cron #将定时文件加到到订时器中
crontab -l #检测定时任务有没有加入系统中,能看到上面2个定时任务说明成功;
crontab -r #取消所有定时任务
crontab.cron内如如下
#每隔1分钟执行
*/1 * * * * /root/crontab/syncDuser/syncDuser.sh
#每天早上3点执行
0 3 * * * /root/crontab/syncDuser/syncDuser.sh
syncDuser.sh内容如下,每次执行创建一个txt文件,并写入“开始”
请先保证手动执行无误,再定时执行
#!/bin/bash
logFile=/root/crontab/syncDuser/bak/"`date +'%Y%m%d-%H-%M'`".txt;
echo "===开始==" >> ${logFile};
查看crontab日志
Ubuntu16中crontab默认日志没有开启,建议不要开
vim /etc/rsyslog.d/50-default.conf #修改rsyslog配置文件
cron.* /var/log/cron.log #将cron前面的注释符去掉
service rsyslog restart #重启rsyslog
less /var/log/cron.log #查看crontab日志