私はブート時に自動起動に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
スクリプトには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>
を実行できます。
カトリエルはすでにinitスクリプトを作成するために最低限必要なことでこれに答えていますが、/etc/init.d/skeleton
を使用して、initスクリプトのベースとなるテンプレートとして使用します。最終的には、はるかに一貫性があり、読みやすいスクリプトになります。
Geoの特定の問題はすでに解決されているようですが、Rails app with sidekiq
with a managed service。I'll私のような他の初心者を助ける場合に備えて、ここで私の解決策を説明してください。
私は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
に保存しました(他のすべてのスクリプトと同様にrootが所有)。
しかし、この新しいサービスを登録しようとすると、chkconfigエラーが発生しました。
Sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig
後にいくつかの追加の読み取り をした後、各chkconfigスクリプトの上部で定義された優先順位番号は一意である必要があることを発見しました。より明確なエラーメッセージが表示されたと思います。別のスクリプトはシャットダウンの優先度レベル75だったので、私のものを76に変更して再試行しました。これが私のinitスクリプトの頭です:
#!/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 sidekiq
を実行すると、sidekiqサービスが適切なランレベルのon
として表示されました。
優先番号は一意である必要はありません。それらはサービスの順序を表すだけです。
ls -l /etc/rc.d/rc3.d/*Oracle lrwxrwxrwx 1ルートルート16 Sep 16 12:28 /etc/rc.d/rc3.d/S99Oracle-> ../init.d/Oracle
ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1ルートルート12 Sep 16 12:36 /etc/rc.d/rc3.d/S99it-> ../init.d/it
Chkconfigには「it」サービスの追加に関する問題はありませんでした。それ以外の場合は、100サービスに制限されます。
また、私の例では、スクリプトがアルファベット順に実行されるため、Oracleより前に実行されます。