มีทางเลือกpgrep
และpkill
คำสั่งบน Mac OS X หรือฉันควรสร้างนามแฝงแทนพวกเขาโดยใช้คำสั่งอื่น ๆ ที่มีให้สำหรับฉัน
มีทางเลือกpgrep
และpkill
คำสั่งบน Mac OS X หรือฉันควรสร้างนามแฝงแทนพวกเขาโดยใช้คำสั่งอื่น ๆ ที่มีให้สำหรับฉัน
คำตอบ:
คุณสามารถใช้MacPorts :sudo port install proctools
นี่คือผลลัพธ์ของport search pgrep
:
proctools @0.4pre1 (sysutils)
pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
brew install proctools
บน OS X Lion ด้วยHomebrew :
$ brew install proctools
ดาวน์โหลดนี้สร้างและติดตั้งpgrep
, และpkill
pfind
คุณไม่ต้องการอีกต่อไป: ตั้งแต่ MacOS 10.8 pgrep
และpkill
มีให้ใช้งานตามค่าเริ่มต้น
สมมติว่าคุณกำลังใช้ Bash รุ่นล่าสุดใน Mac คุณสามารถเขียนpgrep
เป็นฟังก์ชั่นเวอร์ชั่นของคุณเองแล้วเพิ่มลงใน.bashrc
ไฟล์ของคุณ:
function pgrep() {
ps aux | grep $1 | grep -v grep
}
ในฐานะที่pkill
คุณสามารถใช้ต่อไปนี้:
function pkill() {
local pid
pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
kill -9 $pid
echo -n "Killed $1 (process $pid)"
}
Proctoolsประกอบด้วยpgrep
และpkill
และพร้อมใช้งานสำหรับ OpenBSD และ OSX ไม่ได้รับการอัปเดตในขณะนี้ แต่ก็ยังควรใช้งานได้ (อย่างน้อยใน OSX ซึ่งไม่ค่อยปรับเปลี่ยน ABI)
คุณสามารถลองคิลล์ได้ มันฆ่ากระบวนการตามชื่อ กระบวนการใด ๆ ที่ตรงกับสตริงที่คุณส่งจะถูกฆ่า
killall httpd ( kill all apache processes )
killall php ( kill all php process )
ถ้าคุณทำ
killall -s man ( kill any manual page processes, if a user is using man [command]
มันจะแสดงรายการกระบวนการที่จะฆ่าเหมือนด้านล่าง
kill -TERM 70836
หากคุณต้องการสัญญาณอื่นให้ทำดังต่อไปนี้
killall -9 processname
นี่คือทางออกของฉันสำหรับ pkill:
#!/bin/sh
for X in `ps acx | grep -i $1 | awk {'print $1'}`; do
kill -9 $X;
done