Jika saya memiliki nomor PID untuk suatu proses (pada mesin UNIX), bagaimana saya bisa mengetahui nama proses terkait?
Apa yang harus saya lakukan?
ps -fp PID
akan menampilkan perintah penuh
Jika saya memiliki nomor PID untuk suatu proses (pada mesin UNIX), bagaimana saya bisa mengetahui nama proses terkait?
Apa yang harus saya lakukan?
ps -fp PID
akan menampilkan perintah penuh
Jawaban:
Pada semua sistem yang mendukung POSIX, dan dengan Linux, Anda dapat menggunakan ps
:
ps -p 1337 -o comm=
Di sini, proses dipilih oleh PID dengan -p
. The -o
pilihan menentukan format output, comm
yang berarti nama perintah.
Lihat juga: ps
- Spesifikasi Basis Grup Terbuka Masalah 6
command
bukan perbaikan itu.
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; yang artinya bukan sekitar 15 karakter, mungkin hanya nama biner vs. path lengkapnya.
comm
berikan nama biner dan command
kembalikan argumen 0
Anda dapat menemukan nama proses atau perintah yang digunakan oleh id-proses atau pid dari
/proc/pid/cmdline
dengan melakukan
cat /proc/pid/cmdline
Di sini pid adalah pid yang ingin Anda cari nama
Untuk exmaple:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Untuk menemukan nama proses yang digunakan oleh pid 2480 Anda dapat menggunakan
# cat /proc/2480/cmdline
gnome-terminal
Untuk mendapatkan jalur program menggunakan pid tertentu, Anda dapat menggunakan:
ps ax|egrep "^ [PID]"
atau Anda dapat menggunakan:
ps -a [PID]
ps -a
daftar semua proses yang terkait dengan terminal, tidak mengambil input apa pun.
ps
versi, procps version 3.2.7
bekerja dengan baik.
# ls -la /proc/ID_GOES_HERE/exe
Contoh:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
readlink /proc/1337/exe
. readlink - cetak tautan simbolik yang diselesaikan atau nama file kanonik.
Anda dapat menggunakan pmap. Saya mencari PID 6649. Dan memotong detail proses ekstra.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
perintah semua Anda hanya akan melihat java
, tetapi sisa parameter yang dilewati akan ditampilkan sepenuhnya dengan pmap
.
Anda juga dapat menggunakan awk dalam kombinasi dengan ps
ps aux | awk '$2 == PID number for a process { print $0 }'
contoh:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
untuk mencetak HEAD LINE yang bisa Anda gunakan
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
ps ax | grep 1
dan lihat apakah itu benar-benar mengembalikan init
proses, misalnya. (Dalam kasus saya, ia mengembalikan 119 baris — tidak diinginkan.)
ps aux | awk 'NR==1 || $2==PID'
- dan tidak perlu mengatakan {print $0}
karena itu adalah default. Tapi seperti yang Anda komentari, -p
itu lebih baik.
Mirip dengan Jawaban slhck , tetapi mengandalkan operasi file alih-alih permintaan perintah:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init, bukan / sbin / init. Jawabannya menyertakan versi yang lebih panjang. Tapi +1 tetap.
Anehnya, tidak ada yang menyebutkan opsi -f (perintah penuh) untuk ps. Saya suka menggunakannya dengan -e (semuanya) dan menyalurkan hasilnya ke grep sehingga saya dapat mempersempit pencarian saya.
ps -ef | grep <PID>
Ini juga sangat berguna untuk melihat perintah penuh yang dijalankan seseorang yang mengambil banyak sumber daya di sistem Anda. Ini akan menunjukkan kepada Anda opsi dan argumen yang diteruskan ke perintah.
-e -f
tersedia, grep
dapat menghasilkan banyak kecocokan salah, misalnya grep 33
termasuk pid = 933 atau 339, ppid = 33 atau 933 atau 339, waktu 33 detik atau 33 menit, atau nama program atau argumen yang mengandung 33 - termasuk grep
dirinya sendiri. Semua (AFAIK) ps
miliki -p
, jadi adil ps -fp 33
.
Saya menemukan metode termudah untuk menjadi dengan perintah berikut:
ps -awxs | grep pid
ps -p${pid}
, ini akan mengambil banyak positif palsu - termasuk grep
itu sendiri.
buat skrip sederhana untuk menemukan PID dan gunakan dalam skrip bash ...
gunakan dengan hati-hati !!
Tangkapan layar: http://pastebin.com/Cm9YH67U
André
ps
atauls -l /proc/$PID/exe