繁体   English   中英

用于cron任务的bash脚本

[英]bash script for cron task minutely

我有一个Paas cron服务,只能按小时,每小时,每天,每周运行。 我希望我的脚本每隔15分钟在上午8点,上午9点,上午10点,上午11点,下午4点和下午5点运行o。 我怎么做。 这是我不工作的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

为什么不只使用crontab的功能?

将此行添加到crontab

*/15 8,9,10,11,16,17 * * * /path/bin/yourscript.sh

我会看一些像(每分钟由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}构造只是从小时中删除任何前导零,因此0809可以用于算术比较而不被视为无效的八进制(同上分钟)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM