プロセス名を括弧で囲むのはなぜですか?


19

私のマシン(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]


「これを行う目的は何ですか」とはどういう意味ですか?それは名前であり、おそらくそれが何をするかに似ています(SessionDestroy-PAM?)。
コス

発言を考慮して質問を修正しました。
Ortomala Lokni

申し訳ありませんが、あなたが括弧について話しているとは理解していませんでした。正直なところ私は知りません:によると、このことは ps、括弧や印刷物へのプロセスの会計名前を囲む場合に表示されるプロセスはの名前が変更された場合ことpsはもう元の名前でプロセスを見つけることができないが、しかし、このコースのこれがpamのソースコードで行われている理由を説明していませんps
コス

1
@kosのコメントを無意識に読んだかもしれませんが、sd-pamと呼ばれるバイナリを無駄に探している人を避けるためだと言ったところです。psがすでにまったく同じ構文を使用していることを読んだ後、それは十分に意図的なものかもしれません。確かに、括弧を追加しない他のプロセス一覧ツールがあります。(systemd-cgls?)
sourcejedi

2
@kos:「sd」はsystemdの略であり、「セッションの破棄」の略ではありません。
intelfx

回答:


15

名前を括弧で囲むと、このプロセスに何か特別なものがあることを示しているようです

次の2つの場合があります。

  • (...)

PID 1がサービスバイナリを開始すると、まずプロセスを分岐し、次にサービス構成に従ってプロセスのパラメーターを調整し、最後にexecve()を呼び出して実際のサービスプロセスを実行します。forkとexecの間では、PR_SET_NAMEを使用してプロセスの名前を開始されるものに変更し、これを開始される最終的なサービスに簡単にマップできるようにします。ただし、「comm」名(つまり、PR_SET_NAMEで設定されるプロセス名、つまり「top」が示すもの)には厳密なサイズ制限があるため、切り捨てる必要があることに注意してください。通常は接尾辞の方が面白いため、文字列の先頭を切り捨てます(そうでない場合、systemdのさまざまなサービスはすべて「(systemd-)」として表示されます。これは特に有用ではありません)。

https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.htmlを参照してください

  • (sd-pam) 特別な場合です

空でない「PAMName =」を持つユニットを生成する場合、セッションを監視する「(sd-pam)」として知られるユニットの子プロセスを分岐します。メインプロセスが終了するのを待ってから、pam_close_session(3)で終了します。


5

/ bin / psで見た目がきれいなことと、名前としてsd-pamだけでなく(sd-pam)を選択する理由は何ですか?名前を括弧で囲むと、このプロセスに何か特別なものがあることを示しているようです

はい、何か特別なものがあります。これは既成の名前であり、既存のバイナリの名前ではありません。つまり、「sd-pam」ファイルはどこにもありません。このプロセスはPID 1の分岐です。

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


同じ規則を使用している他のプロセスがあり、これが標準の規則であるかどうかを知っていますか?
Ortomala Lokni

@OrtomalaLokni:そのようなプロセスの命名規則は知りません。ただし、これは規約がないことを意味するものではありません。
intelfx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.