マイコンピュータ(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)
これはプロセスの奇妙な名前のように見えます。この記事を読んでください法廷、私はこの名前がsystemdによって意図的に設定されていることを発見しました。存在するソースコードみよう
/* 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]
答え1
名前の周りに括弧を入れることは、プロセスに何か特別なものがあることを示すようです。
2つの状況があります。
(...)
PID 1がサービスバイナリを起動すると、まずプロセスを分岐し、サービス構成に従ってプロセスのパラメータを調整し、最後にexecve()を呼び出して実際のサービスプロセスを実行します。フォークと実行の間にPR_SET_NAMEを使用してプロセス名を開始する名前に変更することで、最終的に開始されるサービスに簡単にマッピングできます。ただし、「comm」名(たとえば、PR_SET_NAMEに設定したプロセス名、「上部」に表示されているプロセス名)には厳密なサイズ制限があるため、切り捨てる必要があります。通常、サフィックスがより面白いので、文字列の先頭を切り取ります(そうでなければ、systemdのさまざまなサービスがすべて「(systemd-)」と表示されるため、特に役に立ちません)。これは最終的に指定されたプロセスになるプロセスですが、まだではないことを明確にするために()の中に名前を入れます。
バラよりhttps://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html
(sd-pam)
特別な場合です。
空でない「PAMName =」を使用してユニットを作成すると、子プロセスがフォークされます。~へこのユニットは「(sd-pam)」と呼ばれ、セッションの監視を担当します。メインプロセスが終了するのを待ってから、pam_close_session(3)を介して完了します。
答え2
/ bin / psで良いことは何を意味し、なぜsd-pamの代わりに(sd-pam)を名前で選択したのですか?名前の周りに括弧を入れることは、プロセスに何か特別なものがあることを示すようです。
はい、何か特別なものがあります。これは仮想の名前です。いいえ既存のバイナリファイルの名前です。つまり、「sd-pam」ファイルはどこにもありません。プロセスはPID 1のフォークです。
括弧はおそらくこれを表すためのものです。