Unix Cron验证:不低于每30分钟

时间:2016-07-01 19:46:25

标签: java spring unix cron

我对cron表达很新。我对它的工作原理只有基本的了解。我正在实现允许用户使用pattern * * * * * *发送cron表达式值的应用程序。但该应用程序不允许cron每30分钟运行一次。

这是我写的验证方法。

private boolean checkInvalidCronExpresstion( final String value )
{
    final String[] expression = StringUtils.split( value, " " );

    // not allow case "* * * * * *"
    if ( expression[0].equals( "*" ) )
    {
        return true;
    }
    else if ( expression[0].contains( "/" ) )
    {
        final String[] minutes = StringUtils.split( expression[0], "/" );
        diff = Integer.parseInt( minutes[1] );

        // not allow case "*/x * * * * *" with x < 30
        if ( diff < 30 && expression[1].contains( "*" ) )
        {
            return true;
        }
    }
    return false;
}

我的问题是(1)上述方法是否涵盖了每隔30分钟触发cron的所有无效表达式,以及 (2)我相信可以有更优雅的方式检查表达式,例如将其转换为小时和分钟。我确实研究过Spring CronSequenceGenerator,但我认为在这种情况下它没有帮助。建议使用任何实用程序类或解决方案吗?

1 个答案:

答案 0 :(得分:0)

不要在这里重新发明轮子。使用诸如cron-utils之类的库来解析Cron表达式并对其进行验证。

Sizing Source