MacOS'ta PID'den işlem dosyası adı nasıl alınır?


13

PID kullanarak bir işlemin dosya adını almak mümkün mü? ps, bir işlem hakkında birçok yararlı bilgi görüntüler, ancak bir işlem yürütülebilir dosya konumu hakkında bir ipucu göstermez.

Yanıtlar:


13

Sürecin ikili yerini almanın bir yolu kullanımına olduğunu lsofve grepilk kez txtsegmentinde. Örneğin, kabuğun hangi ikili olduğunu görmek için kabuğun yerine PID'yi kullanın $$.

$ lsof -p $$ | grep txt
bash    78228 blair  txt    REG   14,2   1244928   6568359 /bin/bash
bash    78228 blair  txt    REG   14,2   1059792  23699809 /usr/lib/dyld
bash    78228 blair  txt    REG   14,2 136368128  81751398 /private/var/db/dyld/dyld_shared_cache_i386

Kabuğun kullandığını görebilirsiniz /bin/bash.

Bu teknik, işlem mutlak veya göreceli bir yol kullanılarak başlatıldıysa çalışır. Örneğin, bir mermiye girip

$ sleep 1234567

ve psbaşka bir kabukta kullanmak sadece nasıl başlatıldığını gösterir:

$ ps auxww|grep '[s]leep'
blair    79462   0.0  0.0   600908    744 s011  S+   11:17PM   0:00.00 sleep 1234567

kullanarak lsofo ran ikili gösterileri:

$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep

MacPorts coreutils + with_default_names yüklü, ben aldım gsleepve değil açıklar var /bin/sleep.


Awk yoluyla çıkış lsof borulama, küçük bir ek ile harika çalışıyor. ; exitPrint deyiminden sonra txtbash örneğinde olduğu gibi birkaç tane bile olsa ilk girişin yazdırılması için ekledim .
qqx

2

Örnek: için ilişkilendirme işlemi komut adının peşindesiniz PID 45109...

>    % ps awx | awk '$1 == 45109 { print $5 }'
>    /Applications/Safari.app/Contents/MacOS/Safari

2
İkili, yolu belirtmeden adla başlatılmışsa, tam ikili yolu göstermez.
grigoryvp

yol boşluk içeriyorsa doğru çalışmıyor
Peter Lapisu


1

ps -ef ile grep benim için çalışıyor. Belirli bir dosya adı için grep'ten geçmeniz yeterlidir:

MacBook:~ Me$ ps -ef | grep Safari | grep -v grep
  501 15733   301   0   0:25.76 ??         1:58.24 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_4977855

(Bu son 'grep -v grep', çıktıda kendi grep komutunuzu almanızı durdurur)


1

ps -p <pid> -Ocommand

L1A1:~ a1155344$ ps -p1 -Ocommand
  PID   TT  STAT      TIME COMMAND
    1   ??  Ss     0:02.26 /sbin/launchd
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.