私のマシンでは( Debianテスト )、私がするとき
ps aux | grep pam
私は得る
orto 609 0.0 0.0 58532 2148 ? S 08:06 0:00 (sd-pam)
orto 5533 0.0 0.0 12724 1948 pts/1 S+ 16:51 0:00 grep pam
(sd-pam)
は、プロセスの奇妙な名前のようです。これを読むと forum ですが、この名前はsystemdによって意図的に設定されていることがわかります。 source code に
/* The child's job is to reset the PAM session on
* termination */
/* This string must fit in 10 chars (i.e. the length
* of "/sbin/init"), to look pretty in /bin/ps */
rename_process("(sd-pam)");
/bin/ps
できれいに見えるとはどういう意味ですか。また、名前として(sd-pam)
だけでなくsd-pam
を選択する理由は何ですか。名前を括弧で囲むことは、このプロセスがカーネルスレッドのような特別な何かを持っていることを示しているようです。 [kintegrityd]
。
名前を括弧で囲むことは、このプロセスに特別な何かがあることを示しているようです
2つのケースがあります。
(...)
PID 1がサービスバイナリを開始すると、最初にプロセスを分岐し、次にサービス構成に従ってプロセスのパラメーターを調整し、最後にexecve()を呼び出して実際のサービスプロセスを実行します。 forkとexecの間の時間に、PR_SET_NAMEを使用してプロセスの名前を開始される名前に変更し、これを開始される最終的なサービスに簡単にマッピングできるようにします。ただし、「通信」名(つまり、PR_SET_NAMEで設定できるプロセス名、つまり「トップ」が表示するプロセス名)には厳密なサイズ制限があるため、切り捨てる必要があることに注意してください。通常は接尾辞の方が興味深いので、文字列の先頭を削除します(そうしないと、systemdのさまざまなサービスはすべて「(systemd-)」と表示されますが、これは特に便利ではありません)。名前が()で囲まれているのは、これが最終的に指定されたプロセスになるプロセスであることを明確にするためですが、まだではありません。
https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html を参照してください
(sd-pam)
は特殊なケースです空でない 'PAMName ='でユニットを生成する場合、子プロセスinsideをフォークして、セッションを監視する '(sd-pam)'と呼ばれるユニットを作成します。メインプロセスが終了するのを待ってから、pam_close_session(3)を介して終了します。
/ bin/psで見た目がきれいで、名前としてsd-pamだけでなく(sd-pam)を選択する理由は何ですか?名前を括弧で囲むことは、このプロセスに特別な何かがあることを示しているようです
はい、特別なものがあります。これは架空の名前であり、notは既存のバイナリの名前です。つまり、「sd-pam」ファイルはどこにもありません。このプロセスはPID 1の分岐です。
括弧はおそらくこれを示すためのものです。