0

我有一个 Paas cron 服务,它只运行每分钟、每小时、每天、每周。我希望我的脚本在上午 8 点、上午 9 点、上午 10 点、上午 11 点、下午 4 点和下午 5 点每 15 分钟运行一次。我怎么做。这是我不工作的 bash 脚本。

#!/bin/bash
MINUTES=`date +%M`
HOUR=`date +%H`
for j in "08" "09" "10" "11" "13" "16" "17";do
    if [ "$HOUR" == "$j" ];then
    for i in "00" "15" "30" "45";do
        if [ "$MINUTES" == "$i" ];then
            (
            /usr/bin/notify-send "Script is running at "
            )
        fi
    done
    fi
done
4

2 回答 2

2

为什么不直接使用 crontab 的功能呢?

将此行添加到 crontab

*/15 8,9,10,11,16,17 * * * /path/bin/yourscript.sh
于 2013-02-04T09:43:48.267 回答
0

我会看类似的东西(cron每分钟运行一次):

#!/usr/bin/bash

# Exit if hour not valid.

hh=$(date +%H) ; hhn=${hh##0}

if [[ $hhn -lt 8  ]] ; then exit ; fi
if [[ $hhn -gt 17 ]] ; then exit ; fi
if [[ $hhn -eq 12 ]] ; then exit ; fi
if [[ $hhn -eq 14 ]] ; then exit ; fi
if [[ $hhn -eq 15 ]] ; then exit ; fi

# Exit if not multiple of 15 minutes.

mm=$(date +%M) ; mmn=${mm##0} ; ((mm15 = mmn % 15))
if [[ $mm15 -ne 0 ]] ; then exit ; fi

# Otherwise do something.

echo Doing something at $hh:$mm

这样做的好处是不需要做很多循环来检查你是否应该运行。

${hh##0}构造只是从小时中删除任何前导零,因此08可以09在算术比较中使用,而不会被视为无效的八进制(分钟同上)。

如果小时和/或分钟应该阻止运行,所有if语句都会过早地从脚本中退出。分钟更简单,因为它是模 15 计算。

于 2013-02-04T06:59:54.993 回答