Ваш bash скрипт вставляет свой собственный pid в ваш файл pid. Кроме того, процесс php следует отправлять в фоновый режим при использовании monit, поскольку monit - это инструмент мониторинга, а не супервизор.
#!/usr/bin/env bash
case $1 in
start)
php /home/rabter/core/artisan websockets:serve & 2>&1 >/tmp/laravelwebsocket.out
echo $! > /var/run/laravelwebsocket.pid;
;;
stop)
kill $(cat /var/run/laravelwebsocket.pid) ;;
*)
echo "usage: $(basename $0) {start|stop}" ;;
esac
exit 0
Затем сделайте этот файл исполняемым с помощью chmod +x FILEPATH
.
Теперь это должно работать:
check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
start program "/home/rabter/laravelwebsocket.sh start"
stop program "/home/rabter/laravelwebsocket.sh stop"
if failed port 6001 then restart
if 4 restarts within 8 cycles then timeout
Используете ли вы monit как init-system для контейнера? Если это так, пожалуйста, дайте мне знать. Затем примените еще несколько деталей.