如何在 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

相关内容