{"id":537,"title":"supervisor\u642d\u5efa\u53ca\u914d\u7f6e\u7ba1\u7406swoole\u670d\u52a1","good":0,"bad":0,"hit":2059,"created_at":"2021-05-22 02:53:39","content":"

\u5b89\u88c5\uff1a<\/p>

apt-get install supervisor<\/p>

<\/p>

\u542f\u52a8\uff1a<\/p>

service supervisor start<\/p>

service supervisor stop<\/p>

<\/p>

supervisorctl:<\/p>

supervisorctl shutdown #\u5173\u95ed\u6240\u6709\u4efb\u52a1<\/p>

supervisorctl stop|start program_name #\u542f\u52a8\u6216\u505c\u6b62\u670d\u52a1<\/p>

supervisorctl status #\u67e5\u770b\u6240\u6709\u4efb\u52a1\u72b6\u6001<\/p>

$supervisorctl reload #\u91cd\u65b0\u8f7d\u5165\u914d\u7f6e<\/p>

<\/p>

\u914d\u7f6e\u793a\u4f8b\u6587\u4ef6\uff08\/etc\/supervisor\/conf.d\/test.conf)<\/p>

[program:taibao_]<\/p>

process_name=listen-auto-call-mq-save-to-ftp<\/p>

command=php \/data\/www\/artisan taiBao:listen-auto-call-mq-save-to-ftp<\/p>

autostart=true<\/p>

autorestart=true<\/p>

user=root#\u6ce8\u610f\u8fd9\u91cc\u6700\u597d\u914d\u7f6e\u6210root,\u4e0d\u7136\u6267\u884cnetstat\u7b49\u547d\u4ee4\u53ef\u80fd\u62a5\uff1aNot all processes could be identified, non-owned process info will not be shown, you would have to be root to see it al<\/p>

numprocs=1<\/p>

redirect_stderr=true<\/p>

stdout_logfile=\/etc\/supervisor\/conf.d\/supervisor.log<\/p>

<\/p>

[program:taibao_]<\/p>

process_name=shell-run-artisan<\/p>

command=sh \/data\/www\/crontab.sh<\/p>

autostart=true<\/p>

autorestart=true<\/p>

user=root<\/p>

numprocs=1<\/p>

redirect_stderr=true<\/p>

stdout_logfile=\/etc\/supervisor\/conf.d\/supervisor.log<\/p>

startsecs=10<\/p>

startretries=3<\/p>

<\/p>

[program:taibao]<\/strong><\/p>

process_name=supervisor-artisan<\/strong><\/p>

command=php \/data\/www\/artisan taiBao:supervisor-artisan<\/strong><\/p>

autostart=true<\/strong><\/p>

autorestart=true<\/strong><\/p>

user=root<\/strong><\/p>

numprocs=1<\/strong><\/p>

redirect_stderr=true<\/strong><\/p>

startsecs=10<\/strong><\/p>

startretries=3<\/strong><\/p>

stdout_logfile=\/etc\/supervisor\/conf.d\/supervisor.log<\/strong><\/p>

<\/p>

<\/p>

<\/p>

tip1:swoole\u7684daemonize\u53c2\u6570\u8981\u8bbe\u7f6e\u4e3a0\uff0c\u5426\u5219supervisor\u7ba1\u7406\u4e0d\u5230\uff0csupervisor\u505c\u6b62\u540eserver\u8fd8\u5728\u8dd1<\/p>

$serv->set(array(<\/p>

            'worker_num' => 1,<\/p>

            'daemonize' => 0,<\/p>

            'backlog' => 128,<\/p>

        ));<\/p>

<\/p>

tip2:<\/p>

supervisor\u5b98\u65b9\u6587\u6863\uff1ahttp:\/\/supervisord.org\/configuration.html<\/p>

<\/p>

tip3:\u65e5\u5fd7\u5b9a\u65f6\u5907\u4efd\u811a\u672c<\/p>

#!\/bin\/bash<\/p>

        logfile=\/var\/log\/app.log<\/p>

        if [ -s $logfile ];then<\/p>

          rm -f $logfile<\/p>

        fi<\/p>

        touch $logfile<\/p>

        chmod a+w $logfile<\/p>

<\/p>

        _START () {<\/p>

          echo "$(date +"%F %H:%M:%S") INOF Start collecting logs in file $logfile" >\/proc\/1\/fd\/1<\/p>

          tail -F $logfile >\/proc\/1\/fd\/1 2>\/dev\/null &<\/p>

        }<\/p>

        while true<\/p>

        do<\/p>

          ps aux|grep "tail -F "|grep -v grep >\/dev\/null 2>&1<\/p>

          if [ $? -ne 0 ];then<\/p>

                echo "$(date +"%F %H:%M:%S") ERROR collection process is not running" >\/proc\/1\/fd\/2<\/p>

                _START<\/p>

          fi<\/p>

          sleep 30<\/p>

          if [ -s $logfile ];then<\/p>

                 Size=$(stat -c "%s" $logfile)<\/p>

                 if [ $Size -ge 110000000 ];then<\/p>

                        echo "$(date +"%F %H:%M:%S") WAR clean file $logfile" >\/proc\/1\/fd\/2<\/p>

                        >$logfile<\/p>

                 fi<\/p>

          else<\/p>

                 echo "$(date +"%F %H:%M:%S") WAR log file $logfile is not found" >\/proc\/1\/fd\/2<\/p>

          fi<\/p>

        done<\/p>

<\/p>"}