与monit centos一起跟踪laravel websocket

与monit centos一起跟踪laravel websocket,laravel,bash,monit,laravel-websockets,Laravel,Bash,Monit,Laravel Websockets,我试图用monit而不是supervisord来监视LaravelWebSocket,因为它提供了更多的选项 所以在my/home/ratter/laravelwebsocket.sh中: #!/bin/bash case $1 in start) echo $$ > /var/run/laravelwebsocket.pid; exec 2>&1 php /home/rabter/core/ar

我试图用monit而不是supervisord来监视LaravelWebSocket,因为它提供了更多的选项 所以在my/home/ratter/laravelwebsocket.sh中:

#!/bin/bash
case $1 in
        start)
                echo $$ > /var/run/laravelwebsocket.pid;
                exec 2>&1 php /home/rabter/core/artisan websockets:serve  1>/tmp/laravelwebsocket.out
                ;;
        stop)  
                kill `cat /var/run/laravelwebsocket.pid` ;;
        *)  
                echo "usage: laravelwebsocket.sh {start|stop}" ;;
esac
exit 0
在etc/monit.d中,我创建了一个名为cwp.laravelwebsocket的文件,其中包含代码

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
start program "/bin/bash -c  /home/rabter/laravelwebsocket.sh start"
stop program "/bin/bash -c  /home/rabter/laravelwebsocket.sh stop"
if failed port 6001 then restart
if 4 restarts within 8 cycles then timeout
不幸的是,当我运行monit时,所有的东西都开始得到monitord,但laravelwebsocket并没有启动一次,并且在我看到的前面的monit表中 进程-laravelwebsocket执行失败|不存在 在启动和出现故障、错误或崩溃时,如何使monit监视和启动laravel websocket

我已经调查过了
但是没有运气

bash脚本将自己的pid插入pid文件。此外,如果使用monit,php进程应该发送到后台,因为monit是一个监视工具,而不是一个监督者

!/usr/bin/env bash 每箱1元 开始 php/home/ratter/core/artisan WebSocket:serve&2>&1>/tmp/laravelwebsocket.out echo$!>/var/run/laravelwebsocket.pid; ;; 停止 kill$cat/var/run/laravelwebsocket.pid;; * 回显用法:$basename$0{start | stop};; 以撒 出口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系统?如果有,请告诉我。然后应用更多细节。

不幸的是,在状态为monit的情况下,我仍然看到执行失败|在用我的脚本替换您的脚本后不存在,您使用monit作为初始系统是什么意思?不存在指出了两个可能的问题:1文件不存在,2文件不可执行。您可以使用ls-l/home/ratter/laravelwebsocket.sh来确保文件存在吗?该行应以-rwx开头。关于init系统:您可以在容器内作为主服务运行monit。如果您只是在init服务(如initd、systemd等)之外使用monit,这里就没有问题了-rwxr-xr-x 1 root root 342 Mar 6 10:51 laravelwebsocket.sh这是该命令的响应,是的,我将其用于systemd。