如何在shell中查看特定進程是否運行1小時

如何在shell中查看特定進程是否運行1小時

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

相關內容