次のコマンドを使用して、現在のVMベースのインフラストラクチャをDockerベースのインフラストラクチャに移行しようとしています。ドッカーベースの画像、runit / runsvを使用してシステムサービスを開始して監視します。今は明らかですが非常にサービスで書かれたPythonプログラムをインストールするのは簡単ですが、/etc/init.d/*
スクリプトをrunitサービスに変換するのが困難です。
時には簡単でリストもありますhttp://smarden.org/runit/runscripts.htmlしかし、一部のスクリプトはUbuntuパス(最新バージョン)で動作しない場合があり、時にはプロセスをchrootに含める必要があるのか、別のユーザーとして実行する必要があるのか疑問に思うかもしれません。
それでは、Ubuntuのinitスクリプトを単純なrunit実行可能スクリプトに変換する安全で信頼性の高い方法はありますか?
ベストアンサー1
短い答え
現在runitのための自動化された方法はありません。
長い答え
この問題を解決する方法はいくつかあります。
プリビルドスクリプトの使用
1つ目は、事前に作成されたスクリプトセットを持つことです。これは他のプロジェクトから抽出できます。 Void Linux は runit をデフォルトの初期化とハイパーバイザーとして使用するので、興味があるかもしれません。 Githubには次のプロジェクトがあります。実行スクリプト必要なものがあるかもしれません。そして私は自分のプロジェクトのための恥ずかしいプラグを作ります。監督スクリプト、プロジェクトはまだ開発中ですが、いくつかは事前に焼かれてすぐに使用することができます。
フレームの使用
2番目は、スクリプトに簡単に切り替えることができるフレームワークを提供することです。 火をつける可能性だ。また、狩りの四つ葉のクローバー監督スクリプトフレームワーク(私のプロジェクトと混同しないでください。)あなたが探しているものを提供することもできます。この場合、事前に作成された定義はありませんが、この変換をより簡単にするのに役立ついくつかのシェルスクリプト(および他のプログラム)を入手できます。
既存のスクリプトとツールのレンタル
3番目は、他のプロジェクトのスクリプトを借りることです。それは出て実際にそれらを見つけることを意味します。そこにいくつかありますが、実際に見てください。
頑張ってください
最後に、時には自分で書く必要があるかもしれません。正直に言うと、切迫している場合は、元の/etc/init.d/(何でも)ファイルをコピーして別々に保管しておき、そのファイルを編集してください。通常、init.dスクリプトの一番下にはCASEステートメントと友達があります。そこではいけませんが、存在する奇妙な組み込みコマンドラインスイッチがあるかどうかを確認できます。監督者を使用する場合は適用されませんので、内部start)
と内部にあるものを超えてすべてを無視してください。stop)
周りを見て、/var/run/(何でも)ディレクトリを設定する必要があることを確認してください。それも常に重要です(作成した場合は、所有権を設定することを忘れないでください!)。一番上には、作成者が正しく実行した場合、通常は以下を含む一連の環境変数があります。本物デーモンの名前とそのオプションです。そこでは、通常、小さなスクリプトをすばやく一緒に作成できます。