ฉันจะค้นหากระบวนการด้วยชื่อโดยไม่ต้องใช้ grep ได้อย่างไร


62

เพื่อค้นหากระบวนการคุณสามารถใช้กับpsgrep

ตัวอย่างเช่นการค้นหา firefox

ps aux | grep firefox

วิธีการได้รับคำตอบเดียวกันโดยไม่ต้องใช้grep?


1
ฉันอยากรู้ว่าทำไมคุณต้องการทำเช่นนี้เพราะps/grepวิธีการแก้ปัญหาทำงานได้ดี?
neuronet

OP ต้องการคำสั่งที่สั้นกว่าฉันเดา หากมีสิ่งเช่นps -n <process name>นั้นที่จะตอบสนองความต้องการของเขา ps -n firefoxสั้นกว่าps | grep firefoxเล็กน้อย psสามารถกรองpidหรือประมวลผลสำหรับ ID ผู้ใช้ได้แล้วดังนั้นจึงเป็นคำถามที่สมเหตุสมผลในการกรองชื่อกระบวนการ
Jochem Schulenklopper

คำตอบ:


71

pgrepคำสั่งและพี่น้องpkillมีอยู่ได้อย่างแม่นยำเพื่อวัตถุประสงค์นี้:

  • pgrep firefox จะแสดงกระบวนการทั้งหมดที่คำสั่งตรงกัน firefox
  • pgrep -f firefox จะแสดงรายการกระบวนการทั้งหมดที่บรรทัดคำสั่งทั้งหมดตรงกัน firefox
  • pgrep -x firefox จะแสดงรายการกระบวนการทั้งหมดที่คำสั่งตรงกันทั้งหมด firefox
  • ... และต่อไป

และโดยธรรมชาติpgrepจะแยกตัวเองออกจากการแข่งขันดังนั้นจึงไม่จำเป็นต้องมีgrepพิธีกรรมที่เกี่ยวข้องps | grep


ชุดเครื่องมืออื่น ๆ สำหรับสิ่งนี้คือpidofและkillallคำสั่ง เหล่านี้ไม่ได้เป็นความยืดหยุ่นเป็นและpgreppkill

  • pidof firefox จะแสดงรายการกระบวนการที่มีคำสั่ง firefox

24
ps -fC process-name

ตัวอย่าง:

ps -fC firefox

จาก man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

นี่เป็นคำตอบที่ดีที่สุด แต่น่าเสียดายที่ใช้งานไม่ได้กับ OSX การps -Cตั้งค่าสถานะBSD ทำงานแตกต่างอย่างสิ้นเชิง - "เปลี่ยนวิธีคำนวณเปอร์เซ็นต์ CPU"
mastaBlasta

2

topช่วยให้คุณค้นหาสตริงเมื่อคุณกดปุ่มตัวพิมพ์ใหญ่L; กระบวนการจะถูกเน้นและใช้ปุ่มลูกศรขึ้นและลงเพื่อเลื่อนดูรายการกระบวนการ ในทำนองเดียวกัน คำสั่งอนุญาตให้เน้นกระบวนการโดยเฉพาะอย่างยิ่งเมื่อคุณกดhtop /และ\จะกรองกระบวนการทั้งหมดด้วยสตริงเฉพาะในชื่อ

สำหรับผู้ที่ชอบ awk นี่เป็น oneliner ps -eF | awk '/process-name/ {print $11}' awk: ด้วยps -eFชื่อกระบวนการอยู่เสมอในคอลัมน์ที่ 11 อีกทางเลือกหนึ่งถ้าคุณps -eF | awk '{print $11}' | sortได้รับรายการเรียงลำดับของชื่อกระบวนการเรียงตามลำดับตัวอักษร วางลงในlessคำสั่งเพื่อดูรายการไฟล์ที่ยาวกว่าได้ง่ายขึ้น


2

เคล็ดลับเด็ด ๆ

$ps -ejH

คุณจะได้รับกระบวนการทั้งหมดที่มีชื่อ

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

เปลี่ยนเส้นทางหรือคัดลอกผลลัพธ์ไปยังไฟล์แล้วเปิดnanoกดCtrl+ W และคุณสามารถค้นหาชื่อที่คุณต้องการ


1

คุณยังสามารถใช้htopแล้วกด F4 เพื่อกรองผลลัพธ์ด้วยสตริงที่ผู้ใช้กำหนดที่ตรงกัน คุณมีฟีเจอร์การค้นหาที่กำหนดเองโดยกดปุ่ม F3


1

หากทั้งสองกระบวนการเป็นปัญหาคุณสามารถใช้grep เท่านั้น :

grep firefox /proc/*/cmdline

0

ฉันเพิ่งอ่านนามแฝง ps นี้บนบล็อก Lennart Poettering เอาต์พุตเป็นไปตามการเลี้ยงดูกลุ่มการควบคุม systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.