2017-09-12 1 views
0

を「上始めた」私はsystemdスクリプトに私のupstartスクリプトを翻訳していると私は、次のtransaltingのベストプラクティスは何かwondringています「停止の」成り上がりのsystemdに同等とは何ですか:

start on started postgresql 
stop on stopping postgresql 

ですが、 Requires=セクションは私のための権利ですか、より良いセクションがありますか? upstartに応じ

+0

は 'Requires'はsystemdにの単位のセクションではありません。これは、ユニットAがユニットBに厳密に依存していることを指定する依存指定子です。ユニットBがアクティブ化に失敗した場合、ユニットAも失敗します(厳密な依存関係)。私は新興企業に精通していませんが、 'systemd.unit(5)'を見てください。 – direprobs

答えて

0

start onstart on started:このスタンザは、ジョブが自動的に起動されるようになりますイベントのセットを定義し

6.33スタート。
...
6.33.2スタートは別のサービスに
start on started other-service

に依存だからあなたの場合には、start on started postgresqlは、それはそれに依存しているため PostgreSQLが正常に起動した後を開始する必要があることを意味します。

[Unit] 
Requires=postgresql 
After=postgresql 

systemd.unit man pageによるので:

After=,Before= ...単位のfoo.serviceは=バーの前に設定が含まれている場合だろうにsystemdで

。サービスが開始され、両方のユニットが起動されると、bar.serviceの起動はfoo.serviceが起動されるまで遅延されます。 は、[...] =後は=前の逆数、すなわちですしばらく=上場ユニットは=が反対を確保する前に構成されたユニットが完全に前に起動されていることを、起動が完了した後に構成されたユニットが開始されることを保証しますリストされたユニットが開始されます。
...
Requires=他のユニットに要件の依存関係を設定します。このユニットがアクティブになると、ここにリストされているユニットもアクティブになります。他のユニットの1つが起動に失敗し、失敗したユニットの後の順序依存性が設定されている場合、このユニットは開始されません。 [...]ユニットfoo.serviceは=が必要で構成され、単位bar.serviceを必要とし、順序付けをした後に設定されていない=または=の前に、両方のユニットが同時に開始され、それらの間の任意の遅れがなければ、場合foo.serviceがアクティブになります。 upstartに従って

stop onstop on stoppedについては


6.34ストップこのスタンザは、それがある場合、ジョブは自動的に停止させることになるイベントのセットを定義します既に実行中。
...
6.34。

After=,Before=[...]注意ときに、2つのこと:上記After=postgresqlはあなたが覆われ、再び、systemd.unit man pageによるので、持っているストップ


stop on stopped other-service

依存サービスの後に3それらの間の順序依存関係を持つユニットはシャットダウンされ、起動順序の逆が適用されます。すなわちユニットが他のユニットのAfter =で構成されている場合、ユニットは両方ともシャットダウンされると後者の前で停止する。

関連する問題