คำตอบ:
บนระบบที่สอดคล้องกับ POSIX ทั้งหมดและด้วย Linux คุณสามารถใช้ps
:
ps -p 1337 -o comm=
นี่คือกระบวนการที่จะถูกเลือกโดย PID -p
ด้วย -o
ตัวเลือกที่กำหนดรูปแบบการส่งออกcomm
ความหมายชื่อคำสั่ง
ดูเพิ่มเติมที่: ps
- ข้อมูลจำเพาะของ Open Group Base ฉบับที่ 6
command
แทนแก้ไขมัน
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; ซึ่งหมายความว่ามันไม่ได้ประมาณ 15 ตัวอักษรอาจเป็นเพียงชื่อของไบนารีกับเส้นทางแบบเต็มของมัน
comm
ให้ชื่อของไบนารีและcommand
ส่งกลับข้อโต้แย้ง 0
คุณสามารถค้นหาชื่อกระบวนการหรือคำสั่งที่ใช้โดย process-id หรือ pid จาก
/proc/pid/cmdline
จากการทำ
cat /proc/pid/cmdline
pid นี่คือ pid ที่คุณต้องการค้นหาชื่อ
exmaple:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
ในการค้นหาชื่อกระบวนการที่ใช้โดย pid 2480 คุณสามารถใช้
# cat /proc/2480/cmdline
gnome-terminal
ในการรับเส้นทางของโปรแกรมโดยใช้ pid คุณสามารถใช้:
ps ax|egrep "^ [PID]"
หรือคุณสามารถใช้:
ps -a [PID]
ps -a
แสดงกระบวนการทั้งหมดที่เชื่อมโยงกับเทอร์มินัลโดยไม่รับข้อมูลใด ๆ
ps
รุ่นในprocps version 3.2.7
ผลงานที่ดี
คุณสามารถใช้ pmap ฉันกำลังค้นหา PID 6649 และตัดรายละเอียดกระบวนการพิเศษออก
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
คำสั่งทั้งหมดที่คุณจะเห็นเป็นเพียงแต่ส่วนที่เหลือของพารามิเตอร์ผ่านจะแสดงอย่างเต็มที่กับjava
pmap
คุณยังสามารถใช้ awk ร่วมกับ ps
ps aux | awk '$2 == PID number for a process { print $0 }'
ตัวอย่าง:
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 ที่คุณสามารถใช้ได้
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
กระบวนการจริงหรือไม่ (ในกรณีของฉันก็จะส่งกลับ 119 เส้นไม่เป็นที่น่าพอใจ.)
ps aux | awk 'NR==1 || $2==PID'
- และไม่จำเป็นต้องพูด{print $0}
เพราะเป็นค่าเริ่มต้น แต่ในขณะที่คุณแสดงความคิดเห็น-p
จะดีกว่าอยู่แล้ว
Simmilar to slhck's Answerแต่อาศัยการทำงานของไฟล์แทนการเรียกใช้คำสั่ง:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init ไม่ใช่ / sbin / init คำตอบของเขามีเวอร์ชันที่ยาวกว่า แต่ +1 อยู่ดี
น่าแปลกที่ไม่มีใครพูดถึงตัวเลือก -f (คำสั่งเต็ม) สำหรับ ps ฉันชอบที่จะใช้กับ -e (ทุกอย่าง) และไพพ์ผลลัพธ์เพื่อ grep เพื่อให้ฉันสามารถ จำกัด การค้นหาของฉัน
ps -ef | grep <PID>
นอกจากนี้ยังเป็นประโยชน์อย่างมากสำหรับการดูคำสั่งทั้งหมดที่มีคนใช้ซึ่งใช้ทรัพยากรจำนวนมากในระบบของคุณ นี่จะแสดงตัวเลือกและอาร์กิวเมนต์ที่ส่งไปยังคำสั่ง
-e -f
จะมีให้บริการgrep
ก็สามารถสร้างการแข่งขันที่ผิดพลาดได้หลายอย่างเช่นgrep 33
pid = 933 หรือ 339, ppid = 33 หรือ 933 หรือ 339, ใช้เวลา 33 วินาทีหรือ 33 นาทีหรือชื่อโปรแกรมหรืออาร์กิวเมนต์ที่มี 33 - รวมถึงgrep
ตัวมันเอง ทั้งหมด (AFAIK) ps
จะมีดังนั้นเพียงแค่-p
ps -fp 33
ฉันค้นหาวิธีที่ง่ายที่สุดที่จะอยู่กับคำสั่งต่อไปนี้:
ps -awxs | grep pid
ps -p${pid}
นี้จะรับบวกเท็จมากมาย - รวมถึงgrep
ตัวเอง
ทำสคริปต์ง่าย ๆ เพื่อค้นหา PID และใช้ภายในสคริปต์ทุบตี ...
ใช้ด้วยความระมัดระวัง !!
สกรีนช็อต : http://pastebin.com/Cm9YH67U
André
ps
หรือls -l /proc/$PID/exe