每5分钟检查一次特定的循环过程,持续30分钟

时间:2019-10-03 06:28:27

标签: linux bash shell scripting ksh

您好,我要求在初始服务器配置期间必须在何处执行此Shell脚本。 我需要每隔5分钟检查一次代理(ps -ef | grep代理)。如果安装了代理,则需要运行/home/usr/job.ksh并退出脚本。 如果30分钟未安装代理,则需要输入消息“代理未安装”并退出。

请对此shell脚本的逻辑提供帮助。

3 个答案:

答案 0 :(得分:0)

可能会看到“ flock”命令吗?

flock -w10 /var/tmp/job.lock /home/usr/job.ksh

-w10-等待10秒钟(如果未开始,则尝试开始)(如果需要,请更改30分钟)

每隔5分钟将此字符串添加到/ etc / crontab中:

*/5 * * * * root /bin/ksh /home/usr/job.ksh

答案 1 :(得分:0)

您可以尝试以下方法:

#!/bin/bash
for _ in {1..180}; do
    if pgrep agent &>/dev/null; then
        /home/usr/job.ksh
        exit
    fi
    sleep 10
done
echo "agent not intalled"

运行循环180次,并检查代理是否正在运行。在两次检查之间睡眠10秒钟。

答案 2 :(得分:0)

您可以执行以下操作:

for _ in {1..6}                         # Run loop for 6 times (6*300=1800s ~ 30min)
do
    if [ $(ps -ef|grep agent|egrep -v grep|wc -l) -ge 1 ]
    then
        /home/usr/job.ksh
        exit 0
    else
        sleep 300                       # Sleep for 5min
    fi
done
echo "agent not installed"
exit 1