Apakah mungkin untuk mendapatkan nama file dari suatu proses menggunakan PID? ps menampilkan banyak informasi berguna tentang suatu proses, tetapi tidak memberi petunjuk tentang lokasi file yang dapat dieksekusi proses.
13
Salah satu cara untuk mendapatkan lokasi biner proses adalah dengan menggunakan lsof
dan grep
untuk txt
segmen pertama . Misalnya, dalam shell untuk melihat biner apa shell itu, gunakan PID shell di tempat $$
.
$ 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
Anda dapat melihat bahwa shell sedang digunakan /bin/bash
.
Teknik ini berfungsi jika proses diluncurkan menggunakan jalur absolut atau relatif. Misalnya, masuk ke satu shell dan berjalan
$ sleep 1234567
dan menggunakan ps
di shell lain hanya menunjukkan bagaimana diluncurkan:
$ ps auxww|grep '[s]leep'
blair 79462 0.0 0.0 600908 744 s011 S+ 11:17PM 0:00.00 sleep 1234567
menggunakan lsof
pertunjukkan biner yang dijalankannya:
$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep
Saya memiliki MacPorts coreutils + with_default_names diinstal, yang menjelaskan bahwa saya mengambil gsleep
dan tidak /bin/sleep
.
; exit
setelah pernyataan cetak sehingga hanyatxt
entri pertama yang akan dicetak walaupun ada beberapa seperti pada contoh bash.Contoh: Anda mencari nama perintah proses asosiasi untuk
PID 45109
...sumber
coba ps aux
sumber
ps -ef dengan grep bekerja untuk saya. Untuk nama file tertentu, cukup pipa melalui grep dengan demikian:
('Grep -v grep' akhir itu hanya menghentikan Anda mendapatkan perintah grep Anda sendiri di output)
sumber
ps -p <pid> -Ocommand
sumber