Install

easy_install -U supervisor

Configure:

mkdir -p /etc/supervisor/conf.d
echo_supervisord_conf > /etc/supervisor/supervisord.conf
sed -i '$a [include]\nfiles = /etc/supervisor/conf.d/*.conf' /etc/supervisor/supervisord.conf

Add a service

vim /etc/init.d/supervisord
#! /bin/sh
#
### BEGIN INIT INFO
# Provides:          supervisor
# Required-Start:    $remote_fs $network $named
# Required-Stop:     $remote_fs $network $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop supervisor
# Description:       Start/stop supervisor daemon and its configured
#                    subprocesses.
### END INIT INFO

. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

PREFIX=/usr/local/bin
SUPERVISORD=$PREFIX/supervisord
SUPERVISORCTL=$PREFIX/supervisorctl
NAME=supervisord
PIDFILE=/var/run/supervisord.pid
OPTIONS="-c /etc/supervisor/supervisord.conf"
STOP_TIMEOUT=10
RETVAL=0

SCRIPT_OK=0
SCRIPT_ERROR=1

test -x $SUPERVISORD || exit 1

is_running() {
    # Check if the process is running looking at /proc
    # (works for all users)

    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    # Obtain the pid and check it against the binary name
    pid=`cat $PIDFILE`
    (ps aux | grep -v grep | grep $SUPERVISORD | grep -q $pid) || return 1
    return 0
}

do_start() {
    log_daemon_msg "Starting $NAME: "

    if is_running; then
        log_end_msg $SCRIPT_ERROR
        echo "$NAME is already running."
        RETVAL=0
    else
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
            --startas $SUPERVISORD -- $OPTIONS -j $PIDFILE
        [ -f $PIDFILE ] || sleep 1
        if is_running; then
            log_end_msg $SCRIPT_OK
            $SUPERVISORCTL $OPTIONS status
            RETVAL=0
        else
            log_end_msg $SCRIPT_ERROR
            RETVAL=1
        fi
    fi
}

do_stop() {
    log_daemon_msg "Stopping $NAME: "
    if is_running; then
        start-stop-daemon --stop --retry TERM/$STOP_TIMEOUT/KILL/5 --quiet --oknodo --pidfile $PIDFILE
        log_end_msg $SCRIPT_OK
        RETVAL=0
    else
        log_end_msg $SCRIPT_ERROR
        echo "$NAME is not running."
        RETVAL=0
    fi
}

chk_status() {
    echo -n "$NAME is "
    if is_running;  then
        echo "running."
        $SUPERVISORCTL $OPTIONS status
        RETVAL=0
    else
        echo "not running."
        RETVAL=0
    fi
}

case "$1" in
    start)
        do_start
        ;;
    stop)
        do_stop
        ;;
    restart)
        do_stop
        do_start
        ;;
    status)
        chk_status
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}"
        RETVAL=2
        ;;
esac

exit $RETVAL
chmod a+x /etc/init.d/supervisord

Start supervisor service

service supervisord start

Add kcptun to supervisor

vim /etc/supervisor/conf.d/kcptun-server.conf
[program:kcptun-server]
user=root
directory=/home/iflappy/programs/kcptun
command=/home/iflappy/programs/kcptun/kcptun-server -c "/home/iflappy/programs/kcptun/server-config.json"
process_name=%(program_name)s
autostart=true
redirect_stderr=true
stdout_logfile=/home/iflappy/programs/kcptun/kcptun-server.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=0

Add shadowsocks-server to supervisor

vim /etc/supervisor/conf.d/shadowsocks-server.conf
[program:shadowsocks-server]
user=root
directory=/home/iflappy/programs/shadowsocks
command=/home/iflappy/programs/shadowsocks/shadowsocks-server -c "/home/iflappy/programs/shadowsocks/config.json"
process_name=%(program_name)s
autostart=true
redirect_stderr=true
stdout_logfile=/home/iflappy/programs/kcptun/shadowsocks-server.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=0

OpenCV-Python

OpenCV-Python OpenCV-Python Installing OpenCV from prebuilt binaries Below Python packages are to be downloaded and installed to their default lo...

阅读全文

Python 乱码解决

''.decode(sys.getfilesystemencoding())

阅读全文

python hideconsole

def hideConcole(): import ctypes kernel32 = ctypes.WinDLL('kernel32') user32 = ctypes.WinDLL('user32') SW_HIDE = 0 hWnd = k...

阅读全文

欢迎留言