1.crontab定时调用
1.1crontab安装与使用
Ubuntu下安装crontab可以通过apt安装:
安装:sudo apt install cron
crontab 常使用的命令选项有:
crontab -e #新建/编辑一个定时任务表
crontab -l #列出当前正在执行的任务表
crontab -r #移除当前正在执行的任务表
提示:第一次使用crontab -e创建一个需要执行的任务表时会想让你选择使用哪一种编辑器,通过输入对应数字进行选择,如下图所示:
之后如果我们想要修改默认的编辑器可以使用select-editor命令进行修改。编辑时间和任务后保存退出该文件即可定时执行,例如添加如下内容:
* * * * * date >> /tmp/time.txt #每隔一分钟执行一次 将当前时间打印到/tmp/time.txt
等待几分钟后既可以在指定文件中看到如下内容:
1.2crontab 中触发时间设置
时间设置
# 计划任务定义的例子:
# .---------------- 分 (0 - 59)
# | .------------- 时 (0 - 23)
# | | .---------- 日 (1 - 31)
# | | | .------- 月 (1 - 12)
# | | | | .---- 星期 (0 - 7) (星期日可为0或7)
# | | | | |
# * * * * * 执行的命令
*/1 * * * * date >> /tmp/log.txt #每隔一分钟执行一次
0 * * * * echo "An hour is up" >> /tmp/log.txt #但到达整点时间执行一次
在crontab中每条指令对应一个要定时执行的任务,* * * * * 执行的命令
。其中五个星号分别表示分/时/日/月/星期,执行方式可以分为、
1.指定执行的时间间隔,如上面所示第一个*/1 表示每隔一分钟执行一次,以此类推需要每隔5分钟执行一次及应该设置为:*/5 * * * * 执行的命令
。注意若需要每个小时执行一次则需要改写为0 */1 * * * 执行的命令
需要将分钟为设置为0 ,否则表示在指定小时下的每一分钟都执行一次。
2指点执行的时间时刻,如上面所示第一个0 * * * *
表示到每个整点执行一次(分钟数为0)。
2.调用shell脚本
0 * * * * /tmp/test.sh >> /tmp/log.txt 2>&1
通过crontab调用shell脚本时要注意
1.将标准错误流进行重定向
上面的示例代码表示每隔一个小时执行一次test.sh 将脚本的标准输出写入到log.txt中,当加上2>&1表示执行出错时的错误流输出重定向到标准输出中最终也会写入到log.txt中。
2.调用时只需要指定需要执行的文件位置,不需要向shell脚本一样指定命令
3.在crontab中必须调用的SHELL位置,以及全局环境如下所示:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
4.在脚本test.sh首行必须加上#!/bin/sh
,并确保test.sh的执行权限