SMFを初めて学んだ後、Upstartを学んでいます。
もちろん、私は彼らが同じ目的を達成すると仮定していますが、それが私が間違っていることを知っています。
理想的には、Upstartに存在しない機能を掘り下げる必要がないように、誰かが比較を書くことを願っています。 Solarisにはカーネルに組み込まれた契約サブシステムというものがありますが、これは実際にSMFのほとんどの機能が実装される方法です。おそらくLinuxには似たようなものがないことを知っています。したがって、サービスの停止、サービスの監視、および失敗時に再起動の観点から、Upstartが何を期待しているのかを判断することはできません。
より具体的に言えば、Upstartで実際に把握できないことは次のとおりです。
止める。 SMFを使用すると、SMFに停止プロセスを実行させるのに非常に慣れています。私は実際に特定の終了スクリプトを書いたことがなく、PIDを追跡する必要もなく、プロセスが作成された回数などを知る必要もありません。これはUpstartのDIYプロセスと似ています。正しいですか?
エラーの再起動。これがUpstartの機能なのか本当に理解できません。私はLinuxの人々がUpstartをある種のユーザー領域プロセス監視メカニズムと組み合わせることを見ました。たぶんこれが私がすべきことでしょうか?
より。私は
svcs -p <servicename>
(現在の)サービスのすべてのプロセスを見ることができるSMFコマンドが好きです。 Upstartでは、「service」=「process」だと思います。これは、Upstartでコマンドがinitctl status <jobname>
常に単一のプロセスのみを表示することを意味します。サービスがオペレーティングシステムの観点から見て2つの別々のプロセスである場合はどうなりますか?インスタンスが1つだけ保証される。ほとんどのデーモンと同様に、インスタンスが1つだけ起動されるようにする必要があります。一部のサービスでは、2番目のインスタンスを起動しようとすると致命的になる可能性があります。私はUpstartにこれを知らせ、Upstartにこれについて確信したいと思います。したがって、演算子が実行されてすでに実行されてい
service xyz start
てxyz
も、他のインスタンスが起動を試みたり、xyz
再起動を試みたりしてはいけませんxyz
。私はこれを行うことができますか?代表団。 SMFを使用すると、特定のサービスに対する責任を権限のないユーザーに委任します。たとえば、自分のポート80 Webサーバーを起動/停止する権限を付与された権限を持たないユーザーで構成される小規模なグループがあります。このサービスに特権ポート(ポート番号< 1024)にバインドする機能を割り当てることでこれを実行しました。 いいえサービスにルートと同様の追加権限を割り当てます。次に、役割を介してサービスの開始/停止権限をユーザーグループに委任します。 Upstartで同じ結果を得るには、いくつかのsudoスクリプトを実行する必要があるとします。
cron
もう少し詳しく見てみると、UpstartにはSMFにない短期作業や繰り返し作業の概念があります。 SMFは名前が示すように、純粋に次に焦点を当てます。提供するつまり、長期実行プロセスです。これはおそらく私を混乱させるようです。しかし、今では、これらの長期実行プロセスを構成する方法に焦点を当てています。私は私のサービスをOSに説明し(例:前提条件、起動、停止、委任、承認方法など)、OSがそこでサービスを処理できるようにする方法を探しています。
アップデート1:詳細:これはLinuxでは確かに一様ではありません。言い換えれば、Linuxコミュニティではこの問題に対する合意はありません。これは、CentOSと時々少しのRedHat(どちらもバージョン6シリーズ)ディストリビューションについて知らせる必要があることを意味します。
アップデート2:RedHat(およびCentOSも含む)がUpstartという新しいバージョンを好み、次のメジャーリリースからUpstartを削除することに気づいたか、少なくとも一部の人々は言いますsystemd
。これが私をさらに混乱させます。今CentOS / RHで安定したサービスを構築したい場合はどうすればよいですか?