デフォルトの起動にはランレベルは含まれません。

デフォルトの起動にはランレベルは含まれません。

起動時と呼び出し時にカスタムデーモンを実行しようとしています。 update-rc.d ydcd enable

エラーが発生しました。

update-rc.d: using dependency based boot sequencing
update-rc.d: error: MyDaemon Default-Start contains no runlevels, aborting.

私はDebian wheezyを実行しており、初期化はSysVinitです。

グーグルしても貴重な情報がなくて最後の手段としてここまで来ました。

ここで何が起こっているのでしょうか? init.dスクリプトが機能するために何を変更する必要がありますか?

編集する:

スクリプトは次のとおりです。

#!/bin/bash
#
#ydcd.daemon
#
# chkconfig: 2345 85 15
# description: MyServiceName
# processname: MyServiceName
# source function library

. /lib/lsb/init-functions

RETVAL=0
NAME=ydcd.daemon
# YOU CAN SET ANY PATH BUT IS RECOMENDED TO USE THE DISTRO'S STANDARD ONE.
DAEMON=/home/debian/yd_cd/$NAME
prog=$(basename $DAEMON)
lockfile=/var/lock/$NAM

SVC_FILE=$DAEMON
start() {
    if [ -f $SVC_FILE ]; then
      #reset
      echo -n "Starting "$SVC_FILE": "
      RETVALS=$(start-stop-daemon -S -b -x $SVC_FILE -- -r)

          Count=${#RETVALS[@]}
      RETVAL="[FAIL]"

          if [ $Count -eq 0 ]; then
        RETVAL="[OK]"
      elif [ $Count -eq 1 ]; then
        if [ ${#RETVALS[0]} -eq 0 ]; then
          RETVAL="[OK]"
        else
          iStart=${#SVC_FILE}
          iLength=${#RETVALS[0]}
          Response=${RETVALS[0]:(iStart+1):7}
          RETVAL=$Response
          if [ "$Response" == "already" ]; then
            RETVAL="[OK]"
          fi
        fi
      fi
      echo $RETVAL
          return 0
    else
      echo $SVC_ALIAS" not installed" $SVC_DIR
      exit 2;
    fi
}

stop() {
    echo -n "Shutting down "$SVC_FILE":"
    RETVALS=$(start-stop-daemon -K -x $SVC_FILE -- s)
    #additional PROCKILLS=$(killall -w -q -e $SVC_PROCESS_NAME $SVC_FILENAME)
    Count=${#RETVALS[@]}
    Index=0
    RETVAL="[FAIL]"
    if [ $Count -eq 1 ]; then
        if [ ${#RETVALS[0]} -eq 0 ]; then
            RETVAL="[OK]"
        else
            Response=${RETVALS[0]:0:2}
            RETVAL=$Response
            if [ "$Response" == "No" ]; then
                RETVAL="[OK]"
            fi
        fi
    else
        RETVAL="[OK]"
    fi

    echo $RETVAL
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $SVC_SERVICE_SCRIPT
        ;;
    restart)
        stop
        start
        ;;
    *)
    echo $SVC_ALIAS" [Invalid Startup Parameters]"
    echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?

答え1

Debian はデフォルトで systemd を使用し、「ランレベル」はありません。使用したような古いコマンドしなければならない仕事、「仕事」というあらゆる価値のため。

答え2

chkconfigスクリプトの先頭には古いスタイルのコメントブロックがあります。

SysVinitを使用しても、最新のinitスクリプト管理システムは依存関係に基づいています。つまり、サービスが依存する他のサービスが何であるかを教えてください。これには、以下に説明するように更新されたスタイルLSB互換注釈ブロックが必要ですman 5 init-d-script

### BEGIN INIT INFO
# Provides:          ydcd.daemon
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: brief one-line description
# Description:       A more verbose description of your service
#                    possibly on multiple lines.
### END INIT INFO

これにより、起動スクリプトの自動順序付けが可能になり、依存関係が許可されている場合、システムは複数の起動スクリプトを並列に実行することもできます。これには、システム起動プロセスの速度を大幅に向上させる可能性があります。真の依存関係ベースの初期化システムに切り替えるのと同じくらい高速ではありませんが、それは些細なことではありません。

関連情報