PS kullanarak çalışan bir işlem görürsem, yürütülebilir dosyayı nasıl bulabilirim?


11

Kullanarak çalışan bir işlem görürsem ps -e, başlatan dosyayı nasıl bulabilirim?


2
Bu hangi işletim sistemi? Linux, BSD, Solaris ...
Patrick

linux ... ama çapraz unix çözümleri hoş karşılanıyor.
interstar

Yanıtlar:


15

Linux'ta: PID'yi biliyorsanız, o dosya için cmdline dosyasını kullanabilirsiniz. Örneğin:

cat /proc/PID/cmdline

Program başlatıldıktan sonra ikili dosya taşındıysa bu muhtemelen başarısız olur.

Ve tabi ki:

lsof -n | grep PID | grep ' txt '

ve:

ls -la /proc/PID/exe

çalıştırılabilir öğenin simgesel bağlantısıdır.


1
Bunun /proc/PID/cmdlineyeni satır karakteri olmadığını unutmayın , bu nedenle muhtemelen böyle bir şey yapmak isteyeceksiniz cat /proc/PID/cmdline ; echo ''.
Keith Thompson

Aslında, argümanları ayıran NUL karakterleri var, bu yüzden daha ayrıntılı bir şey isteyebilirsiniztr '\0' ' ' < /proc/PID/cmdline ; echo ''
Keith Thompson

2

İşlem kimliğini ps -ekomuttan kopyalayın ve aşağıdakileri çalıştırın:

ps x | grep <process-id>

Bir uygulama argv [0] 'ı düzenlerse bu başarısız olmaz mı? iirc sendmail bunu yapar.
Folkert van Heusden

Evet, bir olasılık. Hiçbiri daha az bu neredeyse her zaman kullanışlı geliyor.
Aditya Patawari

0

Yöntemlerin (hiçbiri ls, lsofya da catdiğer yanıtlar) benim için çalışıyor. Eğer yaparsam:

$ nano test.txt

Bu benim kazancım ,:

$ pgrep -f -l test
3074 nano test.txt

Veya yalnızca PID'yi programlamada kullanmak için:

$ pgrep -f test
3074

Kali Linux v1.0.6 (Debian tabanlı) üzerinde test edilmiştir.
Bir basit ile karşılaştırıldığında ls, o kadar taşınabilir bir çözüm olmadığını itiraf etmeliyim, ama en azından işe yarıyor.

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.