Jika saya melihat proses berjalan menggunakan ps, bagaimana saya bisa menemukan executable?


11

Jika saya dapat melihat proses berjalan menggunakan ps -e, bagaimana saya bisa menemukan file yang meluncurkannya?


2
OS apa ini? Linux, BSD, Solaris ...
Patrick

linux ... tetapi solusi cross-unix diterima.
interstar

Jawaban:


15

Di Linux: jika Anda tahu PID, Anda bisa menyimpan file cmdline untuk file itu. Misalnya:

cat /proc/PID/cmdline

Ini mungkin akan gagal jika biner dipindahkan setelah program dimulai.

Dan tentu saja:

lsof -n | grep PID | grep ' txt '

dan:

ls -la /proc/PID/exe

yang merupakan tautan simbolis ke executable.


1
Catatan yang /proc/PID/cmdlinetidak memiliki karakter baris baru, jadi Anda mungkin ingin melakukan sesuatu seperti cat /proc/PID/cmdline ; echo ''.
Keith Thompson

Sebenarnya, ia memiliki karakter NUL yang memisahkan argumen, sehingga Anda mungkin menginginkan sesuatu yang lebih rumit sepertitr '\0' ' ' < /proc/PID/cmdline ; echo ''
Keith Thompson

2

Salin id proses dari ps -eperintah dan kemudian jalankan yang berikut:

ps x | grep <process-id>

Bukankah itu akan gagal jika aplikasi mengedit argv [0]? iirc sendmail melakukan itu.
Folkert van Heusden

Ya, itu adalah probabilitas. Tidak ada yang kurang ini berguna hampir setiap waktu.
Aditya Patawari

0

Tak satu pun dari metode ( ls, lsofatau cat) dalam jawaban lain bekerja untuk saya. Bila saya lakukan:

$ nano test.txt

Ini adalah pemenang saya ,:

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

Atau, untuk mendapatkan hanya PID untuk menggunakannya dalam pemrograman:

$ pgrep -f test
3074

Diuji pada Kali Linux v1.0.6 (berbasis Debian).
Dibandingkan dengan yang sederhana ls, saya harus akui itu bukan solusi yang sangat portabel, tetapi setidaknya itu berfungsi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.