Yanıtlar:
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.
Ö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
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)
; exitPrint deyiminden sonratxtbash örneğinde olduğu gibi birkaç tane bile olsa ilk girişin yazdırılması için ekledim .