İşlem adının etrafına neden parantez eklemelisiniz?


19

Makinemde ( Debian testi )

ps aux | grep pam

Elde ederim

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)bir işlem için garip bir isim gibi görünüyor. Bu forumu okurken , bu adın systemd tarafından özel olarak ayarlandığını görüyorum. In kaynak kodu gördüğümüz

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

Ne güzel görünüyor ve sadece bir isim olarak değil, /bin/psneden seçilmeli ? Parantezin adının etrafına konulması, bu işlemin çekirdek bir iş parçacığı gibi özel bir şeye sahip olduğunu gösterir .(sd-pam)sd-pam[kintegrityd]


"Bunu yapmanın amacı nedir" ile ne demek istiyorsun? Bu bir isim, muhtemelen ne yaptığına benziyor (SessionDestroy-PAM?).
kos

Yorumunuzu dikkate alarak sorumu değiştirdim.
Ortomala Lokni

Özür dilerim, parantez hakkında konuştuğunu anlamadım. Dürüst bilmiyorum: göre bu ps parantez ve baskılar içine sürecinin muhasebe adını çevreler bu sürecin eğer yeniden adlandırıldı gösterilmesini ise psancak bu tabii ki, artık orijinal adıyla sürecini bulmak mümkün değildir bunun neden pamhiçbir ilgisi olmayan kaynak kodunda yapıldığını açıklamıyor ps.
kos

1
Belki de @kos tarafından bilinçaltında yorum okudum, ama muhtemelen insanların sd-pam adlı bir ikili için boşuna bakmalarını önlemek olduğunu söylemek üzereydim. Bu ps zaten aynı sözdizimini kullandığını okuduktan sonra, bu kasıtlı olabilir. Kesinlikle köşeli parantez eklemeyen başka işlem listeleme araçları olacaktır. ( systemd-cgls?)
sourcejedi

2
@kos: "sd" büyük olasılıkla "oturum yok etme" değil, systemd anlamına gelir.
intelfx

Yanıtlar:


15

Parantezin adın etrafına konulması, bu sürecin özel bir şeye sahip olduğunu gösteriyor

İki durum söz konusudur:

  • (...)

PID 1 bir servis ikili dosyası başlattığında, önce bir işlemi keser, ardından işlemin parametrelerini servis yapılandırmasına göre ayarlar ve son olarak gerçek servis işlemini yürütmek için execve () işlevini çağırır. Çatal ve exec arasında, sürecin adını başlatılacak olan adla değiştirmek ve bunu başlatılan hizmetle eşleştirmeyi kolaylaştırmak için PR_SET_NAME kullanırız. Bununla birlikte, "comm" adında (yani PR_SET_NAME ile ayarlanacak olan işlem adının, yani bir "üst" gösterisinin) katı bir boyut sınırı olduğuna dikkat edin, bu da kısalmamız gerektiği anlamına gelir. Dizenin başlangıcını keseriz, çünkü genellikle sonek daha ilginçtir (aksi takdirde, tüm systemd'nin çeşitli hizmetleri "(systemd-)" olarak görünür - ki bu özellikle yararlı değildir).

Bkz. Https://lists.freedesktop.org/archives/systemd-devel/2016-Nisan/036322.html

  • (sd-pam) özel durum

Boş olmayan bir 'PAMName =' değerine sahip bir birim oluşturursak, birimin içinde '(sd-pam)' olarak bilinen ve oturumu izleyen bir alt işlem kaldırırız . Ana işlemin çıkmasını bekler ve ardından pam_close_session (3) ile bitirir.


5

/ Bin / ps'de güzel görünmek ne anlama geliyor ve neden sadece sd-pam'i ad olarak değil (sd-pam) seçmelisiniz? Parantezin adın etrafına konulması, bu sürecin özel bir şeye sahip olduğunu gösteriyor

Evet, özel bir şeyi var. Bu, mevcut bir ikilinin adı değil, tamamlanmış bir addır. Başka bir deyişle, hiçbir yerde "sd-pam" dosyası yoktur; bu işlem PID 1'in bir çataldır.

Parantez muhtemelen bunu belirtmek içindir.


Aynı sözleşmeyi kullanan başka süreçler olup olmadığını ve bunun standart bir sözleşme olup olmadığını biliyor musunuz?
Ortomala Lokni

@OrtomalaLokni: Bu süreçleri adlandırmak için herhangi bir sözleşmenin farkında değilim. Ancak bu, hiçbir sözleşmenin olmadığı anlamına gelmez.
intelfx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.