我的進程名稱是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
。