每 5 分钟检查一次循环中的特定进程,持续 30 分钟
Check particular process in loop for every 5 min for 30 min
您好,我要求在初始服务器配置期间必须执行此 shell 脚本。
我需要每 5 分钟检查一次代理(ps -ef|grep 代理)..如果安装了代理,我需要 运行 /home/usr/job.ksh 并退出脚本。
如果 30 分钟内未安装代理,我需要输入消息 'agent not installed' 并退出。
请帮助解释此 shell 脚本的逻辑。
你能看到 '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
你可以试试这个:
#!/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 次并检查 agent 是否为 运行。在检查之间休眠 10 秒。
你可以这样做:
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
您好,我要求在初始服务器配置期间必须执行此 shell 脚本。 我需要每 5 分钟检查一次代理(ps -ef|grep 代理)..如果安装了代理,我需要 运行 /home/usr/job.ksh 并退出脚本。 如果 30 分钟内未安装代理,我需要输入消息 'agent not installed' 并退出。
请帮助解释此 shell 脚本的逻辑。
你能看到 '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
你可以试试这个:
#!/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 次并检查 agent 是否为 运行。在检查之间休眠 10 秒。
你可以这样做:
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