Yanıtlar:
Tüm POSIX uyumlu sistemlerde ve Linux'ta aşağıdakileri kullanabilirsiniz ps
:
ps -p 1337 -o comm=
Burada işlem PID ile birlikte seçilir -p
. -o
Seçenek, çıktı biçimini belirtir comm
komut adını anlamına gelir.
Ayrıca bakınız: ps
- Açık Grup Bazında Teknik Özellikler Sayı 6
command
Bunun yerine kullanmak onu düzeltir.
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; bu, yaklaşık 15 karakter değil, belki de sadece ikili dosya adı ile tam yol arasındaki anlamına gelir.
comm
ikili dosyanın adını verir ve command
0 argümanını döndürür
İşlem adı veya işlem kimliği veya pid tarafından kullanılan komutu
/proc/pid/cmdline
yaparak
cat /proc/pid/cmdline
Burada pid, ismini bulmak istediğiniz
pid'dir. Örneğin:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Kullandığınız 2480 numaralı pid tarafından kullanılan işlem adını bulmak için
# cat /proc/2480/cmdline
gnome-terminal
Programın yolunu belli bir pid kullanarak almak için kullanabilirsiniz:
ps ax|egrep "^ [PID]"
alternatif olarak kullanabilirsiniz:
ps -a [PID]
ps -a
Terminal ile ilişkili tüm işlemleri listeler, giriş yapmaz.
ps
versiyona bağlı procps version 3.2.7
.
# ls -la /proc/ID_GOES_HERE/exe
Örnek:
# 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 - yazdırılan sembolik linkleri veya kanonik dosya isimlerini yazdırabilir.
Pmap kullanabilirsiniz. PID 6649'u arıyorum. Ekstra işlem ayrıntılarını keserek.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
göreceğiniz tüm komut ile sadece java
, ama geçen parametrelerin tamamı ile birlikte gösterilecektir pmap
.
Ayrıca awk'yi ps ile birlikte kullanabilirsiniz.
ps aux | awk '$2 == PID number for a process { print $0 }'
örnek:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
HEAD LINE yazdırmak için kullanabilirsiniz
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
, init
işlemi gerçekten döndürüp döndürmediğini kontrol etmeye çalışın . (Benim durumumda 119 satır döndürüyor
ps aux | awk 'NR==1 || $2==PID'
- ve söylemeliyiz {print $0}
çünkü bu varsayılandır. Ama yorumda bulunduğun gibi -p
, yine de daha iyi.
Slhck'ın Yanıtına Simmilar , ancak komut çağrıları yerine dosya işlemlerine güveniyor:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init, / sbin / init değil. Onun cevabı dahil daha uzun sürüme sahiptir. Ama yine de +1.
Şaşırtıcı bir şekilde, hiç kimse ps için -f (tam komut) seçeneğinden bahsetmedi. -E (her şey) ile kullanmayı seviyorum ve sonuçları grep için kullandım, böylece aramamı daraltabilirim.
ps -ef | grep <PID>
Bu, sisteminizde çok fazla kaynak alan birinin çalıştırdığı komutların tümüne bakmak için de çok faydalıdır. Bu, komuta iletilen seçenekleri ve argümanları gösterir.
-e -f
, grep
birçok yanlış eşleşme üretebilir grep 33
; örneğin , pid = 933 veya 339, ppid = 33 veya 933 veya 339, 33 saniyelik veya 33 dakikalık zamana sahip olanlar veya 33'ü içeren programın adı veya argüman grep
. Tümü (AFAIK) ps
var -p
bu yüzden sadece, ps -fp 33
.
Aşağıdaki komutla olması en kolay yöntemi buluyorum:
ps -awxs | grep pid
ps -p${pid}
, bu durum grep
kendisi de dahil olmak üzere birçok yanlış pozitif tespit edecektir .
PID bulmak ve bash scriptleri içinde kullanmak için basit bir script yaptım ...
dikkatli kullanın!
Ekran Görüntüsü: http://pastebin.com/Cm9YH67U
André
ps
veyals -l /proc/$PID/exe