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

接下来,我想做的是在修改写入时间戳时(即,当我保存更改时)重新启动代码。我该怎么做呢?

我知道我可以使用makeand 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

相关内容