web-dev-qa-db-ja.com

Init.dスクリプトが起動時に機能しない:SYSVの起動に失敗しました

KeystoneCMSシステムは起動時に実行できません。このinit.d起動スクリプトに問題がある可能性があります。権限を設定しましたが、まだ問題があります。

$ Sudo systemctl daemon-reload
$ Sudo service keystone start
Job for keystone.service failed. See 'systemctl status keystone.service' and 'journalctl -xn' for details.
$ Sudo service keystone status
● keystone.service - SYSV: Keystone server daemon
   Loaded: loaded (/etc/init.d/keystone)
   Active: failed (Result: exit-code) since Thu 2016-10-13 07:39:12 UTC; 16s ago
  Process: 2785 ExecStart=/etc/init.d/keystone start (code=exited, status=203/EXEC)
 Main PID: 2698 (code=exited, status=216/GROUP)

Oct 13 07:39:12 test-vm systemd[2785]: Failed at step EXEC spawning /etc/init.d/keystone: Exec format error
Oct 13 07:39:12 test-vm systemd[1]: keystone.service: control process exited, code=exited status=203
Oct 13 07:39:12 test-vm systemd[1]: Failed to start SYSV: Keystone server daemon.
Oct 13 07:39:12 test-vm systemd[1]: Unit keystone.service entered failed state.

作成されたスクリプト自体である可能性があります テンプレートから/etc/rc?.dディレクトリの1つにリンクすることも考えていました。

Debian8.6を使用しています

/etc/init.d/keystone

Subsystem file for "Keystone" server
#
# chkconfig: 2345 95 05
# description: Keystone server daemon

RETVAL=0
prog="keystone"

start() {       
        echo -n $"Starting $prog:"

        cd /home/user/keystone
        /opt/bitnami/nodejs/bin/node  /home/user/keystone/keystone.js

        RETVAL=$?
        [ "$RETVAL" = 0 ] && touch /var/lock/subsys/$prog
        echo
}

stop() {        
        echo -n $"Stopping $prog:"

        killproc $prog -TERM
        RETVAL=$?
        [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/$prog
        echo
}

reload() {
        echo -n $"Reloading $prog:"
        killproc $prog -HUP
        RETVAL=$?
        echo
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
                reload
                ;;
        condrestart)
                if [ -f /var/lock/subsys/$prog ] ; then
                        stop
                        # avoid race
                        sleep 3
                        start
                fi
                ;;
        status)
                status $prog
                RETVAL=$?
                ;;
        *)
                echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
                RETVAL=1
esac
exit $RETVAL
1
Peter Gerhat
プロセス:2785 ExecStart = /etc/init.d/keystone start(code = exited、status = 203 /EXEC)
…
 Oct 13 07:39:12 test-vm systemd [2785] :ステップEXECの生成に失敗しました/etc/init.d/keystone:EXECフォーマットエラー

…これは完全に正しいです。ファイルは実行可能スクリプトではありません。通訳が足りません。また、Debianポリシーによって古いvan Smoorenburg rcスクリプトに規定されている正しい形式ではないため、「SYSV:" (のではなく "LSB: ")systemdがその説明の前に付けている。

しかし、それを修正するのも時間の無駄です。それを捨てる。 systemdサービスユニットを作成します。

[ユニット] 
 Description = KeystoneCMS 
 Documentation = http://unix.stackexchange.com/a/316168/5132 
 
 [サービス] 
 WorkingDirectory =/home/user/keystone 
 ExecStart =/opt/bitnami/nodejs/bin/node /home/user/keystone/keystone.js 
 
 [インストール] 
 WantedBy = multi-user.target 

参考文献

2
JdeBP