假设我在以下位置定义了 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
and 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