스크립트에 익숙하지 않습니다.. 서버에서 서비스를 모니터링하고 싶습니다. 두 개의 스크립트가 있습니다. 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