Mengapa menambahkan tanda kurung di sekitar nama proses?

19

Di mesin saya ( pengujian Debian ), ketika saya melakukannya

ps aux | grep pam

Saya memperoleh

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)tampaknya nama yang aneh untuk suatu proses. Membaca forum ini , saya melihat bahwa nama ini diatur dengan sengaja oleh systemd. Dalam kode sumber yang kita lihat

/* 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)");

Apa artinya terlihat cantik /bin/psdan mengapa harus memilih (sd-pam)dan tidak hanya sd-pamsebagai nama? Menempatkan tanda kurung di sekitar nama tampaknya menunjukkan bahwa proses ini memiliki sesuatu yang istimewa seperti untuk utas kernel misalnya [kintegrityd].

Ortomala Lokni
sumber
Apa yang Anda maksud dengan "apa tujuan melakukan ini"? Itu nama, mungkin hanya menyerupai apa yang dilakukannya (SessionDestroy-PAM?).
kos
Saya telah memodifikasi pertanyaan saya dengan mempertimbangkan komentar Anda.
Ortomala Lokni
Ah maaf, saya tidak mengerti Anda berbicara tentang kurung. Jujur saya tidak tahu: menurut ini ps melampirkan nama akuntansi proses ke dalam tanda kurung dan mencetak bahwa jika proses yang akan ditampilkan telah diubah namanya jika pstidak dapat menemukan proses dengan nama aslinya lagi, namun ini tentu saja tidak menjelaskan mengapa ini dilakukan dalam pamkode sumber, yang tidak ada hubungannya dengan ps.
kos
1
Mungkin saya membaca komentar oleh @kos secara tidak sadar, tapi saya baru saja akan mengatakan itu mungkin untuk menghindari orang mencari sia-sia untuk biner yang disebut sd-pam. Setelah membaca bahwa ps sudah menggunakan sintaks yang sama persis, itu mungkin disengaja. Tentu akan ada alat daftar proses lainnya yang tidak menambahkan tanda kurung. ( systemd-cgls?)
sourcejedi
2
@kos: "sd" sangat mungkin singkatan dari systemd, bukan untuk "session destroy".
intelfx

Jawaban:

15

Menempatkan tanda kurung di sekitar nama tampaknya menunjukkan bahwa proses ini memiliki sesuatu yang istimewa

Ada dua kasus:

  • (...)

Ketika PID 1 memulai biner layanan, pertama-tama ia akan memotong suatu proses, kemudian menyesuaikan parameter proses sesuai dengan konfigurasi layanan dan akhirnya memanggil execve () untuk menjalankan proses layanan aktual. Di waktu antara garpu dan eksekutif, kami menggunakan PR_SET_NAME untuk mengubah nama proses menjadi apa yang akan dimulai, untuk memudahkan memetakan ini ke layanan akhirnya dimulai. Namun perhatikan, bahwa ada batasan ukuran yang ketat pada nama "comm" (yaitu nama proses yang akan saya setel dengan PR_SET_NAME, yaitu yang ditunjukkan "atas"), yang berarti kita harus memotong. Kami memangkas awal string, karena biasanya sufiks lebih menarik (jika tidak, semua berbagai layanan systemd akan muncul sebagai "(systemd-)" - yang tidak terlalu berguna).

Lihat https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html

  • (sd-pam) adalah kasus khusus

Jika kita menelurkan unit dengan 'PAMName =' yang tidak kosong, kita memotong proses anak di dalam unit, yang dikenal sebagai '(sd-pam)', yang mengawasi sesi. Ia menunggu proses utama untuk keluar dan menyelesaikannya melalui pam_close_session (3).

Evgeny Vereshchagin
sumber
5

Apa artinya terlihat cantik di / bin / ps dan mengapa memilih (sd-pam) dan bukan hanya sd-pam sebagai nama? Menempatkan tanda kurung di sekitar nama tampaknya menunjukkan bahwa proses ini memiliki sesuatu yang istimewa

Ya, ia memiliki sesuatu yang istimewa. Ini adalah nama yang dibuat-buat dan bukan nama dari biner yang ada. Dengan kata lain, tidak ada file "sd-pam" di mana pun; proses ini adalah garpu PID 1.

Kurung mungkin dimaksudkan untuk menunjukkan ini.

intelfx
sumber
Apakah Anda tahu jika ada proses lain yang menggunakan konvensi yang sama dan apakah ini adalah konvensi standar?
Ortomala Lokni
@OrtomalaLokni: Saya tidak mengetahui adanya konvensi untuk penamaan proses semacam itu. Namun, ini tidak berarti bahwa tidak ada konvensi.
intelfx