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?
93
% 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
perintah.ls: cannot read symbolic link /proc/28783/exe: Permission denied
- ini bukan tentang menjalankanls
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:
Ini memberi Anda direktori kerja pid saat ini, bukan jalur absolutnya.
Biasanya
which
perintah akan memberi tahu Anda yang sedang dipanggil dari shell:sumber
$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
sumber
Sumber:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
sumber
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.
sumber
Mengapa semua orang mengharapkan Anda mengetahui PID? Inilah cara yang ramah manusia:
sumber
ps
", sehingga mungkin akan menampilkan PIDlsof 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 $'
sumber
Anda bisa menggunakannya
atau
untuk mendapatkan jalur absolut. PID adalah prosesnya.
sumber