注:私はRed Hat 6.7を実行しています。
コンピュータの起動時にプロセスがサービスとして起動するように、Linux initシステムを使用してサービスを設定しました。これは、コマンドラインからのワンタイム設定を介して行われます。
ln -snf /home/me/bin/my_service /etc/init.d/my_service
chkconfig --add my_service
chkconfig --level 235 my_service on
オペレーティングシステムが再起動すると、サービスは期待どおりに起動します。
また、競合が発生した場合は、サービス(my_service)を再起動する必要があります。私が読んだことによれば、私がしなければならないことは、次のように/ etc / inittabにエントリを追加するだけです。
mysvc:235:respawn:/home/me/bin/my_service_starter
my_service_starterは次のとおりです。
#!/bin/bash
/home/me/bin/my_service start
my_serviceスクリプトは次のとおりです。
#!/bin/bash
"/usr/java/bin/java" /home/me/bin/my_service.jar start
私が理解しているのは、initシステムがmy_serviceが実行されていないことを検出すると、「my_service_starter」を実行して再起動しようとすることです。
しかし、これはうまくいかないようです。つまり、オペレーティングシステムを再起動してもサービスは開始されません。
サービスがクラッシュしたときにLinux初期化システムにサービスを再起動するように指示する方法を理解する必要があります。
答え1
Red Hat 6はどのような用途に使用されますか?突然現れる初期化システムとして。
提供されたファイルはinittab
次の行で始まります。
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
init
(注/etc/init
:いいえ /etc/init.d
)。
たとえば(ただし、デバッグが必要な場合があります)/etc/init/myservice
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /home/me/bin/my_service_starter