自作サービス開始時の「SYSVの起動失敗」


0

システム起動後にmonetdbデータベースを自動的に起動するサービスをrootでセットアップしようとしています。なぜなら、monetdbはそのようなメカニズムを提供していないからです。私が作った /etc/init.d/monetdb スクリプトファイル

#!/bin/sh
#
# /etc/init.d/monetdb
# Subsystem file for "MonetDB" starter
#
# chkconfig: 2345 95 05
#
# processname: MonetDB
# pidfile: /var/run/MonetDB.pid

. /etc/init.d/functions

case "$1" in
start)
        su - monetka -c ". start.sh"

        touch /var/lock/subsys/monetdb
        ;;
stop)
        su - monetka -c ". stop.sh"

        rm -f /var/lock/subsys/monetdb
        ;;
status)
        status monetdb
        ;;
restart|reload|condrestart)
        /etc/init.d/monetdb stop
        /etc/init.d/monetdb start
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|reload|status}"
esac
exit 2

自作しています start.sh そして stop.sh にあるスクリプト monetka 毎回正常に実行しているユーザー。しかし、私が自分のサービスを開始したいとき、私はエラーと次の情報を得ています。

monetdb.service - SYSV: MonetDB starter
   Loaded: loaded (/etc/rc.d/init.d/monetdb)
   Active: failed (Result: exit-code) since śro 2015-04-29 14:36:30 CEST; 16min ago
  Process: 5390 ExecStart=/etc/rc.d/init.d/monetdb start (code=exited, status=2)

kwi 29 14:36:30 yamny.centOS systemd[1]: Starting SYSV: MonetDB starter...
kwi 29 14:36:30 yamny.centOS su[5391]: (to monetka) root on none
kwi 29 14:36:30 yamny.centOS monetdb[5390]: [śro, 29 kwi 2015, 14:36:30 CEST] MonetDB: dbfarm jest już ur...miona
kwi 29 14:36:30 yamny.centOS monetdb[5390]: [śro, 29 kwi 2015, 14:36:30 CEST] MonetDB: baza demo jest już...miona
kwi 29 14:36:30 yamny.centOS systemd[1]: monetdb.service: control process exited, code=exited status=2
kwi 29 14:36:30 yamny.centOS systemd[1]: Failed to start SYSV: MonetDB starter.
kwi 29 14:36:30 yamny.centOS systemd[1]: Unit monetdb.service entered failed state.

また、上記のレポートによると、 start.sh スクリプトは(私が前に述べたように)うまくやっています。

私がこれまでにやったこと:

  1. 作成した /etc/init.d/monetdb ルート上のスクリプト
  2. とサービスを追加しました chkconfig --add monetdb
  3. でサービスを開始 systemctl start monetdb.service

回答:


0

わかりました、私はからいくつかの行を削除した後問題を解決しました /etc/init.d/monetdb スクリプト

#!/bin/sh
#
# /etc/init.d/monetdb
#
# chkconfig: 2345 95 05
# description: MonetDB starter
#
case "$1" in
start)
        su - monetka -c ". start.sh"
        ;;
stop)
        su - monetka -c ". stop.sh"
        ;;
restart)
        /etc/init.d/monetdb stop
        /etc/init.d/monetdb start
        ;;
esac

それからサービスを追加しました chkconfig --add monetdb、そして systemctl start/stop monetdb 魅力のように動作します...


それでは、スクリプトの最初のバージョンの問題は何でしたか?
Bilthon

0

元のスクリプトが失敗する原因となる "/etc/init.d/functions"が存在しなかった可能性があります。

Ramhoundのコメントを考えると、私は自分の答えについてもっと明確になったかもしれないことを理解しています。私はまったく同じ問題に出くわしました、そして私の場合は/etc/init.d/functionsファイルが存在しなかったのでスクリプトは失敗しました。 (私のCentOS 6.7では/etc/rc.d/init.d/functionsにあります)。 Yammyが(問題のある/etc/init.d/functions参照を含む)元のスクリプトから「いくつかの行を削除する」ことによって自分の問題を自己解決したことを考えると、他のユーザーはより具体的な回答で助けになるかもしれません。

とは言っても、スクリプトには追加の問題がある可能性があります。そのため、私は答えを「それは可能性があります...」と言いました。

Ramhoundが私の回答で答えが得られないこと、そして質問者からの説明が必要であることがわかったことに驚きました。おそらく、Ramhoundは、私の答えがオリジナルのポスターからの明確化を必要としていると感じたところについてもう少し明確化することができたでしょう。探求心は知りたいのです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.