zoukankan      html  css  js  c++  java
  • supervisor监控gearman任务

    安装supervisor方法,可以直接用 yum install supervisord ,但是版本可能会旧一点,可以参考官方的方法:

    easy_install supervisor

    http://supervisord.org/installing.html#installing-to-a-system-with-internet-access

    加入service, vim /etc/init.d/supervisord , 修改文件属性为可执行chmod 777 /etc/init.d/supervisord

    #!/bin/bash
    #
    # supervisord   This scripts turns supervisord on
    #
    # Author:       Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd)
    #               Jason Koppe <jkoppe@indeed.com> adjusted to read sysconfig,
    #                   use supervisord tools to start/stop, conditionally wait
    #                   for child processes to shutdown, and startup later
    #
    # chkconfig:    345 83 04
    #
    # description:  supervisor is a process control utility.  It has a web based
    #               xmlrpc interface as well as a few other nifty features.
    # processname:  supervisord
    # config: /etc/supervisord.conf
    # pidfile: /var/run/supervisord.pid
    #
    
    # source function library
    . /etc/rc.d/init.d/functions
    
    # source system settings
    [ -e /etc/sysconfig/supervisord ] && . /etc/sysconfig/supervisord
    
    RETVAL=0
    
    start() {
        echo "Starting supervisord: "
        if [ -e $PIDFILE ]; then 
            echo "ALREADY STARTED"
            return 1
        fi
    
        # start supervisord with options from sysconfig (stuff like -c)
        /usr/bin/supervisord $OPTIONS
        
        # show initial startup status
        /usr/bin/supervisorctl $OPTIONS status
        
        # only create the subsyslock if we created the PIDFILE
        [ -e $PIDFILE ] && touch /var/lock/subsys/supervisord
    }
    
    stop() {
        echo -n "Stopping supervisord: "
        /usr/bin/supervisorctl $OPTIONS shutdown
        if [ -n "$WAIT_FOR_SUBPROCESSES" ]; then 
            echo "Waiting roughly 60 seconds for $PIDFILE to be removed after child processes exit"
            for sleep in  2 2 2 2 4 4 4 4 8 8 8 8 last; do
                if [ ! -e $PIDFILE ] ; then
                    echo "Supervisord exited as expected in under $total_sleep seconds"
                    break
                else
                    if [[ $sleep -eq "last" ]] ; then
                        echo "Supervisord still working on shutting down. We've waited roughly 60 seconds, we'll let it do its thing from here"
                        return 1
                    else
                        sleep $sleep
                        total_sleep=$(( $total_sleep + $sleep ))
                    fi
    
                fi
            done
        fi
    
        # always remove the subsys.  we might have waited a while, but just remove it at this point.
        rm -f /var/lock/subsys/supervisord
    }
    
    restart() {
            stop
            start
    }
    
    case "$1" in
        start)
            start
            RETVAL=$?
            ;;
        stop)
            stop
            RETVAL=$?
            ;;
        restart|force-reload)
            restart
            RETVAL=$?
            ;;
        reload)
            /usr/bin/supervisorctl $OPTIONS reload
            RETVAL=$?
            ;;
        condrestart)
            [ -f /var/lock/subsys/supervisord ] && restart
            RETVAL=$?
            ;;
        status)
            /usr/bin/supervisorctl $OPTIONS status
            RETVAL=$?
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
            exit 1
    esac
    
    exit $RETVAL

    配置一下,echo_supervisord_conf /etc/supervisord.conf

    加入gearman的任务,下面是百度云推送的任务

    vim /etc/supervisord.conf

    [program:APNS_PUSH]
    command=/usr/bin/php /data2/www/web/apns/worker_origin.php
    process_name=APNS_PUSH_%(process_num)s
    numprocs=2
    autostart=true
    autorestart=true
    user=nginx
    stdout_logfile=/data2/log/push/push_%(process_num)s.log
    stderr_logfile=/data2/log/push/push.error.log

    下面先启动gearman,启动supervisord,ps -ef |grep xxx 查看一下任务有没有执行

    另外,也可以使用gearman-monitor来查看gearman任务状态

  • 相关阅读:
    [Swift通天遁地]四、网络和线程-(4)使用Alamofire实现网络请求
    [Swift通天遁地]四、网络和线程-(3)线程组:使用DispatchGroup(调度组)对线程进行分组管理
    [Swift通天遁地]四、网络和线程-(2)通过BlockOperation实现线程的队列
    [Swift]LeetCode253.会议室 II $ Meeting Rooms II
    [Swift通天遁地]四、网络和线程-(1)线程的锁和解锁
    [Swift]LeetCode252.会议室 $ Meeting Rooms
    [Swift]LeetCode251.展平二维向量 $ Flatten 2D Vector
    [Swift]LeetCode250.计数相同值子树的个数 $ Count Univalue Subtrees
    [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings
    [Swift]LeetCode248.对称数 III $ Strobogrammatic Number III
  • 原文地址:https://www.cnblogs.com/trying/p/4038285.html
Copyright © 2011-2022 走看看