1.基本用法
crontab [-u user] file
crontab [-u user] [-e] [-l] [-r]
-e | 编辑使用者的crontab |
---|---|
-l | 列出使用者的crontab |
-r | 删除使用者的crontab |
-i | 在删除使用者的crontab前做出提示 |
-s | selinux context |
2.具体参数解释
* * * * * (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
其中前面5个星号代表的含义分别是:
* * * * *
分 时 日 月 周
3.举例说明
0 * * * * (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
每小时的0分时刻执行run.sh脚本
*/2 * * * * (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
每隔两分钟执行一次run.sh脚本
0 6,19 * * * (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
每天的06:00和19:00时刻执行一次run.sh脚本
*/30 [6-9],[18-21] * * * (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
每天06:00-09:00,18:00-21:00的时间段内每隔30分钟执行一次run.sh脚本
0 12 * 12 1-5 (cd /home/user && sh run.sh > /home/user/log/$(date -d "-1 day" +"\%Y\%m\%d")_output.log 2>&1 &)
每年12月份的每周一到周五的12:00执行run.sh脚本
4.对具体符号的解释
&& 前面的命令执行成功后才会执行后面的命令
| 是linux管道符,前一条命令的结果是下一条命令的输入
|| 前一条命令失败之后才会执行后面的命令
> 重定向,将内容可以重定向出输出到某些指定的位置,可以是文件,也可以是终端
>> 追加操作,可以向文件内追加数据
0 标准输入,从键盘输入
1 标准输出到控制台
2 错误输出到控制台
/dev/null 代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失
>/dev/null 是把错误输出为空,也就是不输出
>/dev/null 2>&1 默认情况是1,相当于 1>/dev/null 2>&1 。就是把标准输出重定向到“空”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“空”
2>&1 >/dev/null 把错误输出2重定向到标准输出1,标准输出重定向到/dev/null。相当于标准输出到空,错误输出到控制台
$(date -d "-1 day" +"\%Y\%m\%d")是取当前系统时间减去一天,也就是前一天,可以把 (-d "-1 day" ) 去掉就是获取当天的时间
再举个例子:
command >out.file是将command的输出重定向到output.log文件,输出内容不会显示在控制台,而是输出到output.log文件中。2>&1 是将错误输出重定向到标准输出,而这里的标准输出已经重定向到了output.log,所以错误输出就会输出到output.log中。
最后一个& , 是让该命令在后台执行