我的进程名称是test
。如果我使用
ps -ef | grep test
我看到该进程正在运行。现在我想每 10 分钟检查一次,持续一小时,如果成功运行一小时,则打印成功。最好的方法是什么?
答案1
您可以使用while
循环;这里我使用pgrep
它来检查进程是否正在运行:
#!/bin/bash
counter=0
while :; do
[ "$counter" -eq 6 ] && break
if pgrep <process_name> &>/dev/null; then
echo "Success !!"
(( counter += 1 ))
sleep 10m
else
echo "Process not running..exiting !!"
break
fi
done
替换<process_name>
为您要跟踪的进程的实际名称。
答案2
脚本中的一个简单循环:
#! /bin/bash
start=$SECONDS
while (( SECONDS - start < 3600 ))
do
sleep 10m
pgrep -f test &>- || exit
done
echo success
SECONDS
是 bash 中的特殊变量,包含脚本启动以来的秒数。pgrep test
检查名为 的进程test
。如果找不到,我们将退出脚本。如果没有,我们将sleep
等待 10 分钟。
如果我们没有退出,那么pgrep
就是成功的。所以,echo success
。