Debian: 명령을 "항상 시작"으로 설정(업데이트 시 다시 시작)

Debian: 명령을 "항상 시작"으로 설정(업데이트 시 다시 시작)

다음 위치에 REST API가 정의되어 있다고 가정해 보겠습니다.

rest-api.py

나는 "영원히"를 만들고 싶다:

setsid rest-api.py 2>&1 > /var/rest-api/log.0
logrotate rest-api.conf

# now: command to watch rest-api.py for failure and re-up

다음으로, 쓰기 타임스탬프가 수정되면(즉, 변경 사항을 저장할 때) 코드를 다시 시작하고 싶습니다. 어떻게 해야 하나요?

사용할 수 있다는 것을 알고 있지만 make이것이 cron최선의 방법입니까?

답변1

inotifywait -e modify rest-api.py

모든 작업을 수행하는 데 필요한 몇 가지 다른 세부 사항이 있습니다.

rest_api=$(pwd)/rest-api.py
rest_api_conf=$(pwd)/rest-api.conf
rest_api_log=/var/log/rest-api/rest-api.log

# log
mkdir -p /var/log/rest-api
logrotate $rest_api_conf

# daemon
setsid $rest_api 2>&1 >> $rest_api_log &
pid=$!
trap "kill $pid" exit

while true; do
  inotifywait -e modify $rest_api
  kill $pid
  setsid $rest_api 2>&1 >> $rest_api_log &
  pid=$!
  trap "kill $pid" exit
done

마지막으로 백그라운드 프로세스나 데몬으로 실행합니다.

./rest-api.sh &
setsid ./rest-api.sh 2>&1 >/dev/null

관련 정보