내 프로세스 이름은 입니다 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
. 찾지 못하면 스크립트를 종료합니다. 그렇지 않으면 sleep
10분 동안 기다립니다.
종료하지 않았다면 pgrep
성공한 것입니다. 그래서, echo success
.