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. -oSeçenek, çıktı biçimini belirtir commkomut adını anlamına gelir.
Ayrıca bakınız: ps- Açık Grup Bazında Teknik Özellikler Sayı 6
commandBunun 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.
commikili dosyanın adını verir ve command0 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 -aTerminal ile ilişkili tüm işlemleri listeler, giriş yapmaz.
psversiyona 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
psgö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, initiş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, grepbirç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) psvar -pbu 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 grepkendisi 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é
psveyals -l /proc/$PID/exe