追加読書

追加読書

systemdユーザーインスタンス(systemd --user)を使用すると、ユーザーが作成した各デーモンはそのインスタンスの所有です。たとえば、

  1. デーモンを生成しましょうnohup sleep 100 0<&- &>/dev/null &。 PIDがあります12549。親端末プロセスを終了するか、シェルを直接終了してデーモンプロセスにします。
  2. このプロセスの新しい親はsystemdユーザーインスタンスです。

    UID        PID  PPID  C STIME TTY          TIME CMD
    phylliade   12549 20280  0 17:21 ?        00:00:00 sleep 100
    phylliade   20280     1  0 09:23 ?        00:00:00 /usr/lib/systemd/systemd --user
    

では、どのようにこのようなことが起こりましたか?プロセス親プロセスが終了すると、カーネルは通常init(ここではデフォルトのsystemd)を新しい親プロセスとして指定し、systemdはユーザーsystemdにデーモンプロセスを割り当てますか?

ベストアンサー1

親プロセスを終了して[...]デーモンにします。

いいえ、ありません。デーモンは制御端末またはログインセッションに関連付けられていません。実行中のプロセスはnohupまだ存在します。結局、そうでなかったら体操には意味がないでしょう。制御端子停止を無視

親プロセスが終了すると、カーネルは通常init [...]を新しい親プロセスとして割り当てます。

いいえ、ありません。子の死神としてマークされた最も近い祖先プロセスを割り当てるか、そのような祖先プロセスがない場合は、プロセス#1に置き換えられます。世界は変わりました。

Upstart、nosh toolset service-manager、およびsystemdはすべてこれを利用します。 3つのプロジェクトすべてのユーザー固有のサービス管理には、ローカルハーベスターが含まれます。

追加読書

おすすめ記事