众所周知,Linux crontab 默认只支持每分钟执行。而我们很多时候都是需要每n秒执行,我们可以用以下两种方法实现:

一、通过shell脚本实现 (推荐使用)

#!/bin/sh
#原理是通过sleep休眠指定的时间执行
#定时检测进程并重启, ProcessCheck nginx /usr/local/nginx/bin/nginx 20
function ProcessCheck()
{
    Step=$3
    if [ $Step -gt 60 ]; then
        echo '间隔秒数不能超过60,当前间隔秒数为:'$Step
        exit 0
    fi

    ProcessName=$1
    ProcessMustNum=1
    RunCommand=$2

    for (( i = 0; i < 60; i=(i+$Step) )); do
        ProcessRunNum=`ps -ef | grep -v grep | grep $ProcessName | wc -l`
        if [ $ProcessRunNum -lt $ProcessMustNum ]; then
            RunResult=`$RunCommand`
            if [ $? -ne 0 ]; then
                echo $RunCommand 'error';
            fi
        fi
        sleep $Step
    done
    exit 0
}

#10秒钟检测一次nginx
ProcessCheck 'nginx' '/usr/local/nginx/sbin/nginx' 10

Demo:ProcessCheck

[查看全文]