首页 > 代码库 > ubuntu12.04 Daemon的简单实现

ubuntu12.04 Daemon的简单实现

使用命令 start-stop-daemon

官方文档:http://manpages.ubuntu.com/manpages/lucid/en/man8/start-stop-daemon.8.html

Usage: start-stop-daemon [<option> ...] <command>Commands:  -S|--start -- <argument> ...  start a program and pass <arguments> to it  -K|--stop                     stop a program  -T|--status                   get the program status  -H|--help                     print help information  -V|--version                  print versionMatching options (at least one is required):  -p|--pidfile <pid-file>       pid file to check  -x|--exec <executable>        program to start/check if it is running  -n|--name <process-name>      process name to check  -u|--user <username|uid>      process owner to checkOptions:  -g|--group <group|gid>        run process as this group  -c|--chuid <name|uid[:group|gid]>                                change to this user/group before starting                                  process  -s|--signal <signal>          signal to send (default TERM)  -a|--startas <pathname>       program to start (default is <executable>)  -r|--chroot <directory>       chroot to <directory> before starting  -d|--chdir <directory>        change to <directory> (default is /)  -N|--nicelevel <incr>         add incr to the process‘ nice level  -P|--procsched <policy[:prio]>                                use <policy> with <prio> for the kernel                                  process scheduler (default prio is 0)  -I|--iosched <class[:prio]>   use <class> with <prio> to set the IO                                  scheduler (default prio is 4)  -k|--umask <mask>             change the umask to <mask> before starting  -b|--background               force the process to detach  -m|--make-pidfile             create the pidfile before starting  -R|--retry <schedule>         check whether processes die, and retry  -t|--test                     test mode, don‘t do anything  -o|--oknodo                   exit status 0 (not 1) if nothing done  -q|--quiet                    be more quiet  -v|--verbose                  be more verboseRetry <schedule> is <item>|/<item>/... where <item> is one of -<signal-num>|[-]<signal-name>  send that signal <timeout>                       wait that many seconds forever                         repeat remainder foreveror <schedule> may be just <timeout>, meaning <signal>/<timeout>/KILL/<timeout>The process scheduler <policy> can be one of:  other, fifo or rrThe IO scheduler <class> can be one of:  real-time, best-effort or idleExit status:  0 = done  1 = nothing done (=> 0 if --oknodo)  2 = with --retry, processes would not die  3 = troubleExit status with --status:  0 = program is running  1 = program is not running and the pid file exists  3 = program is not running  4 = unable to determine status

  

demo:

odoo的启动脚本

#!/bin/sh### BEGIN INIT INFO# Provides:             openerp-server# Required-Start:       $remote_fs $syslog# Required-Stop:        $remote_fs $syslog# Should-Start:         $network# Should-Stop:          $network# Default-Start:        2 3 4 5# Default-Stop:         0 1 6# Short-Description:    Enterprise Resource Management software# Description:          Open ERP is a complete ERP and CRM software.### END INIT INFOPATH=/bin:/sbin:/usr/binDAEMON=/opt/openerp/server/openerp-serverNAME=openerp-serverDESC=openerp-server# Specify the user name (Default: openerp).USER=openerp# Specify an alternate config file (Default: /etc/openerp-server.conf).CONFIGFILE="/etc/openerp-server.conf"# pidfilePIDFILE=/var/run/$NAME.pid# Additional options that are passed to the Daemon.DAEMON_OPTS="-c $CONFIGFILE"[ -x $DAEMON ] || exit 0[ -f $CONFIGFILE ] || exit 0checkpid() {    [ -f $PIDFILE ] || return 1    pid=`cat $PIDFILE`    [ -d /proc/$pid ] && return 0    return 1}case "${1}" in        start)                echo -n "Starting ${DESC}: "                start-stop-daemon --start --quiet --pidfile ${PIDFILE}                         --chuid ${USER} --background --make-pidfile                         --exec ${DAEMON} -- ${DAEMON_OPTS}                echo "${NAME}."                ;;        stop)                echo -n "Stopping ${DESC}: "                start-stop-daemon --stop --quiet --pidfile ${PIDFILE}                         --oknodo                echo "${NAME}."                ;;        restart|force-reload)                echo -n "Restarting ${DESC}: "                start-stop-daemon --stop --quiet --pidfile ${PIDFILE}                         --oknodo                sleep 1                start-stop-daemon --start --quiet --pidfile ${PIDFILE}                         --chuid ${USER} --background --make-pidfile                         --exec ${DAEMON} -- ${DAEMON_OPTS}                echo "${NAME}."                ;;        *)                N=/etc/init.d/${NAME}                echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2                exit 1                ;;esacexit 0

  

ubuntu12.04 Daemon的简单实现