プロセスが独自にデーモン化できない場合は、initスクリプトでバックグラウンドジョブを作成するのが良い方法ですか?

プロセスが独自にデーモン化できない場合は、initスクリプトでバックグラウンドジョブを作成するのが良い方法ですか?

私は* nixに初めてアクセスし、100%実行する必要があるいくつかのプロセスを削除する必要がある状況にありました。バックグラウンドで使用してください&

これを行うには、init.dスクリプトで次の行を使用します(userとして実行user

su -c 'process arg1 arg2 -w - | process2 arg1 -r - &' user

(-wはSTDOUT、STDINを書き込み、-rはSTDOUT、STDINを読み込みます)

特に、これらのプロセスは外部の影響から十分に保護されていないため、一般的に許容できないことがわかっています。

「サービス」のバックグラウンドジョブを作成することは許可されますか?

プロセス間通信を処理するには、FIFO/名前付きパイプを使用する必要がありますか?

それでは、これら2つのプロセスをバックグラウンドジョブとして作成する必要がありますか?これは安定していますか?

詳細については、次を参照してください。このメーリングリストのトピック

ありがとう、

マット

ベストアンサー1

特に、これらのプロセスは外部の影響から十分に保護されていないため、一般的に許容できないことがわかっています。

「サービス」のバックグラウンドジョブを作成することは許可されますか?

他の方法がない場合(つまり、サービスが独自にフォークされない場合)、おそらくそうです。 Debian にはこの状況のパラメータがstart-stop-daemonあります。--background

   -b, --background
          Typically used with programs that don't  detach  on  their  own.
          This option will force start-stop-daemon to fork before starting
          the  process,  and  force  it  into  the  background.   WARNING:
          start-stop-daemon  cannot  check  the exit status if the process
          fails to execute for any reason. This is a last resort,  and  is
          only  meant  for  programs  that either make no sense forking on
          their own, or where it's not feasible to add the code  for  them
          to do this themselves.

おすすめ記事