Jika saya memiliki banyak salinan dari aplikasi yang sama pada disk, dan hanya satu yang berjalan, seperti yang saya lihat ps
, bagaimana saya bisa mengetahui jalur absolut untuk membedakannya dari yang lain?
Jika saya memiliki banyak salinan dari aplikasi yang sama pada disk, dan hanya satu yang berjalan, seperti yang saya lihat ps
, bagaimana saya bisa mengetahui jalur absolut untuk membedakannya dari yang lain?
Jawaban:
% sudo ls -l /proc/PID/exe
misalnya:
% ps -auxwe | grep 24466 root 24466 0.0 0.0 1476 280? S 2009 0:00 mengawasi sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 root root 0 Feb 1 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls: cannot read symbolic link /proc/28783/exe: Permission denied
- ini bukan tentang menjalankan ls
perintah, ini tentang mengakses info proses dari proses yang bukan milik Anda. Di kotak saya, sekitar 97% dari semua proses yang terdaftar di / proc adalah proses root, dan yang lainnya didistribusikan lebih dari 11 pengguna yang berbeda.
Menggunakan:
pwdx $pid
Ini memberi Anda direktori kerja pid saat ini, bukan jalur absolutnya.
Biasanya which
perintah akan memberi tahu Anda yang sedang dipanggil dari shell:
#> which vlc
/usr/bin/vlc
$pid
?" Posting yang diedit masih belum menjawab pertanyaan. which
hanya mengatakan "Jika perintah ada di jalan, lalu apa itu?"
pwdx
kembalikan saya jalur absolut dari program exectuable dari proses tergantung pada pid pada redhat x64 6.3.
Salah satu caranya adalah ps -ef
ps auxwwwe
Sumber:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
Jawaban cepatnya adalah menggunakan ps
opsi atau /proc
info sistem file. Itu biasanya akan berhasil, tetapi tidak dijamin. Secara umum, tidak ada jawaban pasti dan pasti. Misalnya, bagaimana jika file yang dieksekusi dihapus selama eksekusi, sehingga tidak ada jalur ke file?
Lihat FAQ Unix untuk sedikit lebih detail, terutama pertanyaan 4.3 dan 4.4.
Mengapa semua orang mengharapkan Anda mengetahui PID? Inilah cara yang ramah manusia:
pwdx `pgrep ###process_name###`
ps
", sehingga mungkin akan menampilkan PID
lsof adalah pilihan. Anda dapat mencoba sesuatu seperti di bawah ini:
lsof -p PROCESS_ID
Ini akan mendaftar semua file yang dibuka oleh proses termasuk lokasi aktual yang dapat dieksekusi. Maka dimungkinkan untuk menambahkan beberapa awk, cut, grep dll. Untuk mengetahui informasi yang Anda cari.
Sebagai contoh, saya menjalankan perintah berikut untuk mengidentifikasi dari mana proses 'java' saya berasal:
lsof -p 12345 | awk '{print $ NF}' | grep 'java $'
ls
perintah.