쉘에서 특정 프로세스가 1시간 동안 실행 중인지 확인하는 방법

쉘에서 특정 프로세스가 1시간 동안 실행 중인지 확인하는 방법

내 프로세스 이름은 입니다 test. 내가 사용한다면

ps -ef | grep test

해당 프로세스가 실행 중인 것을 확인했습니다. 이제 1시간 동안 10분마다 이를 확인하고 1시간 동안 성공적으로 실행되면 성공을 인쇄하고 싶습니다. 그렇게 하는 가장 좋은 방법은 무엇입니까?

답변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. 찾지 못하면 스크립트를 종료합니다. 그렇지 않으면 sleep10분 동안 기다립니다.

종료하지 않았다면 pgrep성공한 것입니다. 그래서, echo success.

관련 정보