定时任务是一个操作linux必须掌握的技能,下面是linux定时任务的一个知识。

 

先说一下定时任务命令的基本格式

*  *  *  *  *  command
分   时  日   月   周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示;
第2列表示小时1~23(0表示0点) ;
第3列表示日期1~31;
第4列表示月份1~12;
第5列标识号星期0~6(0表示星期天);
第6列要运行的命令;

常见命令的例子

30 21 * * * command    --------------    每晚 21:30 分执行命令
30 21 1,10,22 * * command    -----    每月 1、10、22 日的 21:30 执行命令
30 21 * * 6,0 command    -----------    每 周六周日 的 21:30 执行命令
* */1 * * * command    --------------    每小时执行一次命令

 

linux 下添加定时任务的命令是:crontab -e ;这个命令可以编辑定时任务文件。

不常见的命令例子

可以看到上面的命令最低要求是一分钟执行一次,如果我们要5秒执行一次呢?这时我们就需要写一个脚本了;如下:

#!/bin/bash

step=5 #间隔的秒数,不能大于60
selfdir="$( cd "$( dirname "$0"  )" && pwd  )" #脚本所在目录

for (( i = 0; i < 60; i=(i+step) )); do
    $(php ${selfdir}'/ceshi.php')
    sleep $step
done

exit 0

需要注意的是如果间隔的秒数不是60的整除数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。

 

如果20秒执行一次,则可以使用:

* * * * * command
* * * * * sleep 20; command
* * * * * sleep 40; command