プロセス名の周りに括弧を追加するのはなぜですか?

プロセス名の周りに括弧を追加するのはなぜですか?

マイコンピュータ(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のフォークです。

括弧はおそらくこれを表すためのものです。

関連情報