comm tampaknya memotong perintah hingga 15 karakter. Menggunakan commandbukan perbaikan itu.
Nemo
1
[Ubuntu 14.04.4 LTS] $ 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.
OmarOthman
3
Sebenarnya, commberikan nama biner dan commandkembalikan argumen 0
robbie
45
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
Hati-hati: OP menyebutkan UNIX. Tidak semua UNIX mengimplementasikan Plan 9 seperti file khusus proses. Jawaban Anda umumnya hanya berlaku untuk Linux.
slhck
3
Sementara itu benar, mereka menandai pertanyaan "linux". Siapa pun yang menggunakan OS UNIX berbasis non-Linux akan cukup terbiasa dengan harus memodifikasi jawaban sesuai dengan kebutuhan mereka
Andrew White
14
Untuk mendapatkan jalur program menggunakan pid tertentu, Anda dapat menggunakan:
Perintah ini membantu saya lebih dari yang saya butuhkan, saya memiliki garis penuh proses yang dimulai. Diberikan proses Java, dengan psperintah semua Anda hanya akan melihat java, tetapi sisa parameter yang dilewati akan ditampilkan sepenuhnya dengan pmap.
Daniel Andrei Mincă
3
Anda juga dapat menggunakan awk dalam kombinasi dengan ps
ps aux | awk '$2 == PID number for a process { print $0 }'
Ini tidak stabil karena juga akan memilih proses yang memasukkan nomor di mana saja dalam perintah mereka. Coba ps ax | grep 1dan lihat apakah itu benar-benar mengembalikan initproses, misalnya. (Dalam kasus saya, ia mengembalikan 119 baris — tidak diinginkan.)
slhck
1
@ slhck Memodifikasi jawaban ... terima kasih atas info .. ps -p 1 -o comm = adalah pilihan terbaik untuk pertanyaan ini.
Gangadhar
Kami tidak perlu dua kali menjalankan untuk mempertahankan header, alih-alih gunakan ps aux | awk 'NR==1 || $2==PID'- dan tidak perlu mengatakan {print $0}karena itu adalah default. Tapi seperti yang Anda komentari, -pitu lebih baik.
dave_thompson_085
3
Mirip dengan Jawaban slhck , tetapi mengandalkan operasi file alih-alih permintaan perintah:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, bukan / sbin / init. Jawabannya menyertakan versi yang lebih panjang. Tapi +1 tetap.
OmarOthman
2
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.
Tidak berfungsi pada BSD (mungkin termasuk MacOSX? Saya tidak yakin). Bahkan di mana -e -ftersedia, grepdapat menghasilkan banyak kecocokan salah, misalnya grep 33termasuk 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 grepdirinya sendiri. Semua (AFAIK) psmiliki -p, jadi adil ps -fp 33.
dave_thompson_085
0
Saya menemukan metode termudah untuk menjadi dengan perintah berikut:
ps
atauls -l /proc/$PID/exe
ps -fp PID
akan menampilkan perintah penuhJawaban:
Pada semua sistem yang mendukung POSIX, dan dengan Linux, Anda dapat menggunakan
ps
: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 6sumber
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 dancommand
kembalikan argumen 0Anda dapat menemukan nama proses atau perintah yang digunakan oleh id-proses atau pid dari
dengan melakukan
Di sini pid adalah pid yang ingin Anda cari nama
Untuk exmaple:
Untuk menemukan nama proses yang digunakan oleh pid 2480 Anda dapat menggunakan
sumber
Untuk mendapatkan jalur program menggunakan pid tertentu, Anda dapat menggunakan:
atau Anda dapat menggunakan:
sumber
ps -a
daftar semua proses yang terkait dengan terminal, tidak mengambil input apa pun.ps
versi,procps version 3.2.7
bekerja dengan baik.Contoh:
sumber
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.
sumber
ps
perintah semua Anda hanya akan melihatjava
, tetapi sisa parameter yang dilewati akan ditampilkan sepenuhnya denganpmap
.Anda juga dapat menggunakan awk dalam kombinasi dengan ps
contoh:
untuk mencetak HEAD LINE yang bisa Anda gunakan
sumber
ps ax | grep 1
dan lihat apakah itu benar-benar mengembalikaninit
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:
sumber
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.
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.
sumber
-e -f
tersedia,grep
dapat menghasilkan banyak kecocokan salah, misalnyagrep 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 - termasukgrep
dirinya sendiri. Semua (AFAIK)ps
miliki-p
, jadi adilps -fp 33
.Saya menemukan metode termudah untuk menjadi dengan perintah berikut:
sumber
ps -p${pid}
, ini akan mengambil banyak positif palsu - termasukgrep
itu sendiri.buat skrip sederhana untuk menemukan PID dan gunakan dalam skrip bash ...
gunakan dengan hati-hati !!
Tangkapan layar: http://pastebin.com/Cm9YH67U
André
sumber