start-stop-daemon 守护进程管理

start-stop-daemon 守护进程管理

start-stop-daemon 作为系统自带,简单实用 结合systemctl,用起来很是不错.

示例

PIDFILE=/var/run/nginx.pid
DAEMON=/usr/local/nginx
DAEMON_OPTS="-c /tmp/nginx/nginx.conf"
start-stop-daemon --start --quiet --make-pidfile  --pidfile $PIDFILE --exec $DAEMON/sbin/nginx -- $DAEMON_OPTS

上面执行指令通过 start-stop-daemon 来启动一个nginx进程,并且生成一个pid文件。

注意这里只是一个实例,用来说明 start-stop-daemon 的运作方式,真实环境中Nginx不需要这样启动。

参数介绍

  • --start 启动一个守护进程
  • --stop 终止一个守护进程
  • --status 查看一个守护进程运行状态
  • --pidfile 记录进程号(pid)的文件
  • --exec 启动进程的入口
  • --user 启动进程的用户
  • --make-pidfile 如果进程自己不创建pidfile,可以通过该参数指定
  • --quiet 不输出警告信息
  • --retry 启动失败后重试的次数
  • --background 指定为后台运行模式,如果进程不是后台模式则需加如这个参数
  • -- 空格之后的参数是传给--exec 的 如上列也就是/usr/local/nginx/sbin/nginx

--status 的几个状态说明

   0      Program is running.
   1      Program is not running and the pid file exists.
   3      Program is not running.
   4      Unable to determine program status.

一个完整的例子

cat /etc/init.d/frpc

#!/bin/sh

### BEGIN INIT INFO
# Provides:          frpc
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      slapd cups
# Should-Stop:       slapd cups
# Short-Description: Frpc keep service
# Description: server to provide Frpc
### END INIT INFO


PIDDIR=/var/run/frp
FRPCPID=$PIDDIR/frpc.pid

# clear conflicting settings from the environment
unset TMPDIR

# See if the daemons are there
test -x /home/makeit/apps/frp_0.27.0_linux_amd64/frpc || exit 0

. /lib/lsb/init-functions

case $1 in
    start)

        log_daemon_msg "Starting frpc daemon" frpc
        # Make sure we have our PIDDIR, even if it's on a tmpfs
        install -o root -g root -m 755 -d $PIDDIR

        if ! start-stop-daemon --start  --background --retry 30 --make-pidfile   --pidfile $FRPCPID --exec /home/makeit/apps/frp_0.27.0_linux_amd64/frpc -- -c /etc/frpc.ini ; then
            log_end_msg 1
            exit 1
        fi

        log_end_msg 0
        ;;
    stop)

        log_daemon_msg "Stopping FRPC daemon" frpc

        start-stop-daemon --stop  --pidfile $FRPCPID
        #kill `cat $FRPCPID`
        # Wait a little and remove stale PID file
        sleep 1
        if [ -f $FRPCPID ] && ! ps h `cat $FRPCPID` > /dev/null
        then
            # Stale PID file, remove it (should be removed by
            # smbd itself IMHO).
            rm -f $FRPCPID
        fi

        log_end_msg 0

        ;;
    reload)
        log_daemon_msg "Reloading /etc/frpc.ini" frpc
        $0 restart
        ;;
    restart|force-reload)
        $0 stop
        sleep 1
        $0 start
        ;;
        status)
        status_of_proc -p $FRPCPID /home/makeit/apps/frp_0.27.0_linux_amd64/frpc frpc
        exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/frpc {start|stop|reload|restart|force-reload|status}"
        exit 1
        ;;
esac

exit 0

注意修改完 要执行 systemctl daemon-reload 重载修改的文件

转载于:https://www.cnblogs.com/lovesKey/p/11335085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值