Linux의 기본 스크립트에 있는 fisr 스크립트를 기반으로 두 번째 스크립트를 제어하는 ​​방법

Linux의 기본 스크립트에 있는 fisr 스크립트를 기반으로 두 번째 스크립트를 제어하는 ​​방법

스크립트에 익숙하지 않습니다.. 서버에서 서비스를 모니터링하고 싶습니다. 두 개의 스크립트가 있습니다. 1 - 서비스가 실행 중인지 확인하기 위한(checking.sh) 2 - 서비스 시작하기(start.sh)

두 개의 스크립트를 하나로 결합하고(monitor.sh) 이를 예약/크론하고 싶습니다. 첫 번째 스크립트의 결과를 기반으로 두 번째 스크립트를 실행하는 방법 첫 번째 스크립트의 결과가 0인 경우 서비스를 시작해야 합니다(첫 번째 스크립트의 결과가 1인 경우 두 번째 스크립트를 실행해야 함). , 두 번째 스크립트를 실행하고 기본 서버를 종료할 필요가 없습니다.

답변1

이게 뭐야?종료 코드그렇습니다. 따라서 모니터링 스크립트를 위해 다음을 수행할 수 있습니다.

#!/bin/bash
# monitor.sh  -- checks if a Thing is doing its Thing
if [[ -r /var/run/myjob.pid ]]; then
    if kill -0 $( cat /var/run/myjob.pid ); then
        exit 0   # The process is alive, job is presumably running
    else
        exit 1   # Well, we had a PID file, but it was orphaned.
    fi
else
    exit 2 # no PID file, job presumably not running
fi

처리하려는 각 상태에 대해 서로 다른 종료 코드를 사용합니다. 그런 다음 서비스 검사관의 경우:

#!/bin/bash
# check.sh -- Checks to see if Thing is Thinging and, if not, start it
if ! /path/to/monitor.sh; then
    /path/to/start.sh
fi

이제 작업 스크립트를 실행합니다.

#!/bin/bash
# start.sh - do a Thing
if [[ -r /var/run/myjob.pid ]]; then
    echo "A Thing is already being done!" 1>&2
    exit 1 
else
    echo $$ > /var/run/myjob.pid
    trap 'rm /var/run/myjob.pid' EXIT
    do_Thing_related_things
fi

관련 정보