• startup script和cronolog日志切分


    相关参考资料: http://man.cx/start-stop-daemon(8) http://cronolog.org/usage.html http://book.opensourceproject.org.cn/lamp/ruby/railscook/opensource/0596527314/i_0596527314_chp_13_sect_6.html
    安装cronolog

    cronolog是个简单的日志切分插件,常见的经典应用就是切分apache的单个庞大日志,按日期保存
    安装:

    -----------------------------------------------------------------------------

     $ wget 
    http://cronolog.org/download/cronolog-1.6.2.tar.gz
    $ tar xvzf cronolog-1.6.2.tar.gz
    $ cd cronolog-1.6.2
    $ ./configure --prefix=/usr/local
    $ make
    $ sudo make install




    -----------------------------------------------------------------------------

    查看装在哪儿了(which也要sudo权限那):
    which cronolog

    简单测试
    $ echo "This is a test." | /usr/bin/cronolog -o /var/log/www/%Y/access.%m-%d-%y.log

    "-o" 命令才能创建文件 不加的话报错

    ok!
    为自己的web server编写自启动程序

    没有扩展名的脚本文件cam-hello :



    -----------------------------------------------------------------------------

    #! /bin/sh
    #
    example python daemon starter script
    #
    based on skeleton from Debian GNU/Linux
    #
    cliechti@gmx.net
    #
    place the daemon scripts in a folder accessible by root. /usr/local/sbin is a good idea

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON="/usr/local/hello/python_server/HelloServer"
    NAME=cam-hello
    DESC="cam hello"
    CRONOLOG="/usr/local/sbin/cronolog /var/log/www/cam/%Y/access.%m-%d-%y.log"
    test -f $DAEMON || exit 0

    set -e
    export PIDFILE=/var/run/${NAME}.pid
    case "$1" in
    start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --make-pidfile --pidfile ${PIDFILE} --exec "$DAEMON" | $CRONOLOG &
    ;;
    stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --pidfile ${PIDFILE} | $CRONOLOG
    # \ --exec $DAEMON
    echo "$NAME."
    if [ -f ${PIDFILE} ]; then
    rm ${PIDFILE}
    fi
    ### rest of shutdown ###
    exit 0
    ;;
    #reload)
    #
    #
    If the daemon can reload its config files on the fly
    #
    for example by sending it SIGHUP, do it here.
    #
    #
    If the daemon responds to changes in its config file
    #
    directly anyway, make this a do-nothing entry.
    #
    #
    echo "Reloading $DESC configuration files."
    #
    start-stop-daemon --stop --signal 1 --quiet --pidfile \
    #
    /var/run/$NAME.pid --exec $DAEMON
    #
    ;;
    restart|force-reload)
    #
    #
    If the "reload" option is implemented, move the "force-reload"
    #
    option to the "reload" entry above. If not, "force-reload" is
    #
    just the same as "restart".
    #
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --pidfile ${PIDFILE}
    # --exec $DAEMON
    sleep 1
    start-stop-daemon --start --make-pidfile --pidfile ${PIDFILE} --exec $DAEMON | $CRONOLOG &
    echo "$NAME."
    ;;
    *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
    esac

    exit 0




    -----------------------------------------------------------------------------

    --make-pidfile 才能建立自启动文件,被网上不完善程序误导,导致只能启动不能停止服务 ==!
    python脚本需更改为可执行文件 不然无法运行
    日志文件有个缓冲,达到一定长度才能写入,很无语(实验时候还以为python不能这么弄。。。。)
    部署自启动程序

    拷贝到 /etc/rc.d/init.d/
    修改脚本文件chmod 777 cam-hello

    注册:
    /etc/init.d# sudo update-rc.d cam defaults
    如果要删除start/stop links 则:
    sudo update-rc.d -f cam remove

    (注: chkconfig --add autoruntest 添加服务 这个命令有错,不用它!
    There is a loop between service apache2 and rsyslog if stopped)

    部署成功后

    /etc/init.d/cam-hello start
    /etc/init.d/cam-hello restart
    /etc/init.d/cam-hello stop
  • 相关阅读:
    About Face 摘录
    断言的使用
    C#中值传递和引用传递
    C++技巧之断言Assert
    About Face 一 目标导向设计
    About Face 二 设计行为与形态
    C++中引用传递与指针传递区别
    一个新的时代SoLoMo
    离散数学笔记算法部分
    汪教授的离散数学20110308 谓词与量词2
  • 原文地址:https://www.cnblogs.com/shenguanpu/p/2296157.html
Copyright © 2020-2023  润新知