Linuxサービスをchkconfigでサポートするには何が必要ですか?


36

ブート時に自動起動にLinuxサービスを追加しようとしています

chkconfig -add <servicename> 

と言うメッセージが表示されます

service <servicename> does not support chkconfig

Red Hat Enterprise 4を使用しています。ブート時に自動起動に追加しようとしているスクリプトは次のとおりです。

#!/bin/sh

soffice_start() {   if [ -x /opt/openoffice.org2.4/program/soffice ]; then
        echo "Starting Open Office as a Service"
        #echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
        /opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard &   else
        echo "Error: Could not find the soffice program. Cannot Start SOffice."   fi }

soffice_stop() {   if [ -x /usr/bin/killall ]; then
        echo "Stopping Openoffice"
        /usr/bin/killall soffice 2> /dev/null   else
        echo "Eroor: Could not find killall.  Cannot Stop soffice."   fi }

case "$1" in  'start')    soffice_start    ;;  'stop')    soffice_stop    sleep 2    ;;  'restart')    soffice_stop    sleep 5  soffice_start    ;;  *)    if [ -x /usr/bin/basename ]; then
        echo "usage: '/usr/bin/basename $0' start| stop| restart"    else
        echo "usage: $0 start|stop|restart"    fi esac

init.d /でのサービスです
ルンガノ09年

回答:


74

スクリプトには2行が必要です。

# chkconfig: <levels> <start> <stop>
# description: <some description>

例えば:

# chkconfig: 345 99 01
# description: some startup script

345 - levels to configure
99 - startup order
01 - stop order

上記のヘッダーを追加したら、実行できますchkconfig --add <service>


2行目の余分なスペースは
マークダウン

2
実行レベルなどに関する詳細情報を次に示します。tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html
Pred

上記は適切なkillスクリプトを追加するようには見えません。killスクリプトを明示的に取得するには、chkconfig <service> --level 06 offが必要です。
user239558

4

katrielはinitスクリプトを作成するために最低限必要なものでこれにすでに答えていますが、initスクリプトの/etc/init.d/skeletonベースとなるテンプレートとしてそれを見て使用することもあなたに役立つと思います。一貫性のある読みやすいスクリプトが作成されます。


5
理論的には良いアドバイス/etc/init.d/skeletonですが、RHELシステムには存在せず、Debianおよび関連するものにのみ存在します(Ubuntu、私は思う)。
ハーラン

1

Geoの特定の問題はすでに解決されているように思えますがsidekiq、マネージドサービスとしてRailsアプリをセットアップしようとしたときに、同様のメッセージに遭遇しました。私のような他の初心者に役立つ場合の解決策をここで説明します。

私はCentOSのインストールに取り組んでおり、chkconfigはすでにhttpd、mysql、redisなどの他のサービスでセットアップされています。ほとんどのサービスは唯一のランレベルで有効にする必要があることに注意して3通過5

chkconfig --list
> httpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
> mysqld            0:off   1:off   2:on    3:on    4:on    5:on    6:off
> redis-server      0:off   1:off   2:on    3:on    4:on    5:on    6:off
> (etc...)

sidekiqサービス用の新しいスクリプトを追加する必要があったので、https://gist.github.com/CD1212/5326706でスクリプトを取得し、アプリのパラメーターに合うように変更して、/etc/rc.d/init.d/sidekiq(すべての他のスクリプトがあります)。

ただし、この新しいサービスを登録しようとすると、chkconfigエラーが発生しました。

sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig

少し読んだ後、各chkconfigスクリプトの上部で定義された優先順位番号は一意でなければならないことを発見しました。より明確なエラーメッセージがあればよかったでしょう!別のスクリプトのシャットダウン優先度レベルは75だったので、私は76に変更して再試行しました。これが私の初期化スクリプトの頭です:

#!/bin/bash
#
# sidekiq    Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#

今回sudo chkconfig --add sidekiqは、苦情はありませんでした。次に、実行すると、適切なランレベルに関してsudo chkconfig --list sidekiqsidekiqサービスが表示されonました。


0

優先順位番号は一意である必要はありません。それらはサービスの順序のみを表します。

ls -l /etc/rc.d/rc3.d/*oracle lrwxrwxrwx 1 root root 16 Sep 16 12:28 /etc/rc.d/rc3.d/S99oracle-> ../init.d/oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 root root 12 Sep 16 12:36 /etc/rc.d/rc3.d/S99it-> ../init.d/it

Chkconfigには、「it」サービスの追加に関する問題はありませんでした。それ以外の場合は、100サービスに制限されます。

また、私の例では、スクリプトはアルファベット順に実行されるため、oracleの前に実行されます。

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