こんにちは。実行時にjson-serverを作成し、プロセスが終了したときにjson-serverを再生成する接続保持デーモンプロセスを作成しました。
#!/usr/bin/bash
function start () {
trap 'echo "Clean up and exit"; kill $js_pid; rm js_pid; exit' TERM
exec > outfile
exec 2> errfile
exec 0< /dev/null
while true; do
(json-server --watch db.json --port 1234 &>/dev/null) &
js_pid=$!
echo $js_pid > js_pid
wait $js_pid
kill $js_pid &>/dev/null
done
}
if [ "$1" != "__forked__" ]; then
setsid "$0" __forked__ "$@" &
exit
else
shift
fi
# stop or start daemon
([ ! -f "js_pid" ] && js_pid=99999999999) || js_pid=$(cat js_pid)
case "$1" in
stop)
killall simpled.sh
;;
start)
if ! kill -0 $js_pid &>/dev/null
then
start
fi
;;
status)
if kill -0 $js_pid &>/dev/null
then
echo -e "\njson-server running: pid $js_pid"
else
echo -e "\njson-server not running"
fi
;;
*)
echo -e "\nsimpled.sh [start|stop|status]"
;;
esac
私のホスティングサーバーでこのスクリプトを実行しましたが、数日後にSSH接続が非常に遅くなり、デーモンを停止する必要がありました。私はこれがwhile trueループのためだと思います。
このスクリプトが時間の経過とともに多くのメモリを消費しないようにすることができますか?乾杯!