web-dev-qa-db-ja.com

Ubuntu 16.04 LTSでpstreeコマンドがinitを表示しないのはなぜですか?

pstreeコマンドからの出力を調べようとしています。しかし、何らかの理由で、初期化ではなく、常にsystemdと呼ばれるものから開始されます。 ps auxコマンドを使用してinitとsystemdの両方のプロセスIDを確認しました。initのPIDは1で、systemdには他のPIDがあります。では、pstreeの出力にinitが表示されないのはなぜですか?提供する必要があるオプションはありますか?

また、systemdとinitの論争についても読みましたが、ubuntu 16.04 LTSはinitを使用してすべてを正しく開始しますか?

PIDが異なる理由を更新しますか?

私が考えていたさまざまなPIDが私の無知の一部であることがわかりました。 initにはPID 1がありましたが、systemdは私が話していたものではありませんでした。代わりにps aux|grep systemdを実行したときに、/lib/systemd/systemd-*のPIDが見つかりました。ここで、*は余分な文字を意味します。だから、私が話していたのはsystemdではなく、systemdの拡張機能(正しい言葉ですか?)であった他のプロセスです。

その*のいくつかの例は次のとおりです

/lib/systemd/systemd-journald
/lib/systemd/systemd-udevd
/lib/systemd/systemd-timesyncd
2
posixKing

15.04以降、Ubuntuのinitはsystemdです。 pstartを使用できます ですが、デフォルトはsystemdです。たとえば、/sbin/init/lib/systemd/systemdへのリンクになります。 /sbin/{shutdown,reboot,telinit,halt,runlevel,poweroff}/sbin/systemctlへのリンクです。 16.04でも、Upstartはsession initとして使用されていたため、Upstartがグラフィカルログインで親プロセスまたは祖先プロセスとして表示される場合があります(ただし、 16.10で変更されたようです )。

表示される他のプロセスはsystemdコンポーネントです。それらはsystemdとともに開発および配布されますが、systemdをinitとして実行するのに不可欠なものは多くありません。多くのコンポーネントは交換または無効にできます。 systemdホームページ を引用するには:

systemdは、Linuxシステムの基本的なビルディングブロックのスイートです。 PID 1として実行され、システムの残りを起動するシステムおよびサービスマネージャーを提供します。 ...その他の部分には、ロギングデーモン、ホスト名、日付、ロケールなどの基本的なシステム構成を制御するユーティリティ、ログインしているユーザーおよび実行中のコンテナと仮想マシンのリストの管理、システムアカウント、ランタイムディレクトリと設定、および簡単なネットワーク構成、ネットワーク時間の同期、ログ転送、名前解決を管理します。

このブログ投稿 systemd(Lennart Poettering)の作成者の1人から:

  1. 神話:systemdでは、そのコンポーネントを置き換えることはできません。

    事実ではありませんが、systemdのほとんどの部分をオフにして置き換えることができますが、例外はほとんどありません。また、これらの例外(journaldなど)を使用すると、通常、適切に協力しながら代替のサイドバイサイドを実行できます。

3
muru