追加読書

追加読書

Linuxの(ユーザープロセス)エージェントとセキュリティデーモンのSys V Initスクリプトを探します.

  1. エージェントデーモン起動スクリプト /etc/rc.d/init.d/Agentdaemon /etc/rc.d/rc5.d/S91Agentdaemon

  2. セキュリティデーモン起動スクリプト /etc/rc.d/init.d/Securitydaemon /etc/rc.d/rc5.d/S91Securitydaemon

エージェントとセキュリティデーモンの両方が共通の親である共通エージェントが必要であるとします。再起動時にパブリックエージェントが起動しない場合、他のすべてのデーモンはパブリックエージェントを起動し、他のデーモンはパブリックエージェントの起動をスキップします。 AgentdaemonスクリプトとSecuritydaemonスクリプトで生成をスキップするために汎用エージェントが実行されていることを確認する「ps」コマンドがあります。これはRHEL 6.2で正常に動作します。ただし、RHEL 7では、2つの汎用エージェントが実行されていることがわかります。

そして、systemdがエージェントとセキュリティデーモンの両方を起動するかどうか疑われます。何とか「ps」は、ユニバーサルエージェントが実行中であることを示していません。

たとえば、ps -ef | grep common | grep -v grep | grep -v awk '{print $2}'は他のスクリプトによって開始されたパブリックプロセスを表示しないため、他のスクリプトもパブリックエージェントを起動します。

起動スクリプトを並列に実行しない方法はありますか?それともスクリプトをsystemd形式に移行する必要がありますか?迅速な修正は、Sys V init タイプのすべてのスクリプトを systemd に移行するよりも興味深いものです。

答え1

スクリプトをsystemd形式に移行する必要がありますか?

はい。

rcあなたはSystem 5スクリプトのよく知られた欠陥のために困難を経験しています。これは実際にsystemdとは関係ありません。たとえば、別の方法でスクリプトを並列に実行すると、startparこの問題が発生する可能性があります。

grepの出力は、進行中のシステム状態でも進行中のシステム状態でも、競合が発生しやすいことが ps知られています。grep数十年人々は他のシェルスクリプトを使用してこれらの同じエラーが引き続き発生することを報告します。これは愚かで間違っており、BSDのマニュアルページの「BUGS」セクションに記載されていますps。今、世界はよりよく知る必要があります。

世界はこれをよりよく理解しており、しばらくそうでした。私たちのサービスマネージャは、1990年代初頭からプロセスリストとファイル(正しい数字を含めることも含まれない場合もあります)を収集することに関連するすべてのメカニズムが一緒にリンクされていなくてもうまくいきました。あなたはする必要があります本当に、これらの競合状態やその他の競合状態が発生した場合は、不安定で失敗しやすく、一時的で混乱しているSystem 5rcスクリプトを破棄し、適切なサービス管理を使用してください。 ifsなし、butsなし、すでに使用されているbodgeの「クイック修正」なし(追加greps自体はもともとbodgeです)

そのようなサービスマネージャがたくさんあります。あなたはしません持つ体系化を使用してください。 runit、nosh、またはperp用に作成されたさまざまなスクリプトは、systemd用に作成された単位ファイルと同じくらい簡単です。

nosh と systemd が実行する方法には、セカンダリサービスを確認して実行する 2 つの基本サービスはありません。これがサービス管理システムの役割です。代わりに、あなたは単に依存関係宣言2つのプライマリサービスからセカンダリサービスまで、サービス管理システムから開始するように指示されたときに開始する必要があることAgentdaemon.serviceを確認できます。システムサービスユニットでは、または設定になります。Securitydaemon.servicecommon.serviceRequires=Wants=

追加読書

関連情報