CentOS 6および新興企業


18

新しいCentOS 6には、initに代わるUpstartが付属しています。/ etc / inittabファイルを新しいupstart形式に変換しようとしています。この特定のサーバーには15個程度のinittabエントリしかありませんが、他のサーバーには30個以上あります。私たちは主にinittabとupstartの「再スポーン」の部分を望んでいます。しかし、私は見つけることができるすべての新興企業のドキュメントを読んでおり(Ubuntuに基づいており、明らかに古いバージョンの新興企業に基づいています)、どこにもアクセスできません。構成ファイルを作成できます(/etc/init/test.confと呼びます)。ファイルにはこれが含まれています(注、匿名)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

私が発行した場合initctl reload-configuration、ジョブは認識されます。電話をかけるinitctl start testと開始でき、ジョブが開始されます。

ただし、これは再起動では機能せず、手動でのみ機能します。開始コマンドを次のように変更しようとしましたが、すべて運がありません

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

さまざまな例で言及されている他の約12の方法を参照してください。スクリプトを開始するものはありません。(test.confは、このフォルダー内の他のすべてのファイルと同様に、rootが所有し、644)

私は明らかに明白な何かを見逃していますか?

回答:


32

私は、将来問題を抱えている人々のための非常に、非常に、非常に役立つアップスタートスクリプトを見つけました。これを/ etc / init /に入れます

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

このスクリプトは、基本的に開始または停止するすべてのジョブを記録します。CentOS 6はランレベルについて何も「出力」しないことがわかりました。(また、私が試した他の一般的なイベントのいくつかも。)デバッグジョブが/tmp/log.fileに作成するログファイルを確認することは非常に役立ちました。スクリプトの開始を次から変更することにより:

start on runlevel [345]

start on started sshd

すべてのジョブが正しく起動するように見えます。私が見つけたすべての例は前者の構文を使用していたため、これは後部の苦痛でした。


私がそれを複数回投票できれば、私はそうするでしょう。
ピーターMounce

15

ネクロポストで申し訳ありませんが、次の方法でこの問題を解決できました。

start on stopped rc RUNLEVEL=[345]

「停止」はタイプミスではありません。rcはランレベルに入ると停止するようです。


2
ヒントをありがとう!ネクロポスティングは役に立ちます!
ブライアン

5

これは、リスポーンの問題をデバッグするために私がやったことです(CentOS 6、Upstart 0.6.5)。別の端末で、

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