マニュアルページには次のようsystemd
に記載されています。
--system, --user
For --system, tell systemd to run a system instance, even if the
process ID is not 1, i.e. systemd is not run as init process.
--user does the opposite, running a user instance even if the
process ID is 1.
pidが1でpidが1以外のプロセスでsystemdを実行する方法は?
pidが1以外のシステムインスタンスはどういう意味ですか? pid 1のシステムインスタンスと共存できますか?
システムインスタンスは、euid / ruidがrootであるプロセスを意味しますか?
ユーザーインスタンスは、euid / ruidがルートではなくプロセスであることを意味しますか?
ありがとうございます。
ベストアンサー1
初心者のため
UNIXシステム(Linuxを含む)では、すべてのプロセスにプロセス識別子またはPID。実行時にプロセスを参照するために使用される番号。プロセスがどのPIDを持つかを予測することは不可能なことがよくあります。
ただし、PIDが常に1の特定のプロセスが1つあります。初期化プロセス、これはシステムの起動中に開始される最初のプロセスです。すべての重要なバックグラウンドプロセスを開始することに加えて、いくつかの異なる目的/作業があります。
systemdは、プロセス1で実行できるいくつかのプログラムの1つです。ただし、アドオンとして「ユーザー固有モード」で実行して、特定のユーザーに必要なバックグラウンドプロセスを管理することもできます(たとえば、スマートフォンに接続する - これにはLinux上の特別なサーバーが必要です)。一般に、PIDを介して何をすべきかを知ることができます。これらのコマンドラインスイッチを使用すると、それを上書きできます。
これを行う理由と方法の詳細については、次のことをお勧めします。Arch Linux Wikiのこのページ。 Archはエリート主義的で難しいディストリビューションと見なされていますが、ドキュメントは非常に素晴らしく驚くほどアクセスしやすいです。
特定の質問に答えるには:
pidが1でpidが1以外のプロセスでsystemdを実行する方法は?
PID 1でsystemdを実行するには、initプログラムである必要があります。ほとんどのLinuxディストリビューションには選択可能な複数のサービスがあります(他のサービスにはSysV Init、Upstart、runit、およびOpenRCが含まれます)、通常systemdはデフォルトです。したがって、この問題がコンピュータに発生した可能性があります。
1以外のPIDでsystemdを実行したい場合は、別の状況で実行してください。繰り返しますが、主なディストリビューションも上記のユーザー固有のモードでsystemdを使用しているため、この現象はお使いのコンピュータですでに発生している可能性があります。これでできることについては、上記のリンクされたArch Wikiページをご覧ください。
システムインスタンスは、euid / ruidがrootであるプロセスを意味しますか?ユーザーインスタンスは、euid / ruidがルートではなくプロセスであることを意味しますか?
システムインスタンスのUIDとEUIDは、開始プログラムに必要なすべての権限を提供できるように常に0(root)です。 Linux(およびほとんどのUNIXシステム)では、フル権限で始まり、実際に必要な権限を除くすべての権限を放棄するのが一般的です。
ただし、UID 0を持つユーザーごとに最大1つのsystemdインスタンスがある可能性があります。ルートは別のユーザーにすぎないことを覚えておいてください。ほとんどの最新のLinuxディストリビューションでは、これが起こらないようにデフォルトでアクションを実行しますが、rootとしてログインすることも可能です。
最後の警告
欲しくない、いずれにせよ、重要なタスクに使用しているマシンでsystemdを使用したり、rootとしてログインしたり、他の起動またはルート関連のタスクを試してみてください。