2011-12-28 37 views

Trả lời

89
kill $(ps -e | grep dmn | awk '{print $1}') 
+5

Sử dụng cú pháp '$()' mới hơn: 'kill $ (ps -e | grep dmn | awk '{print $ 1}') '. – Stratus3D

+4

fwiw cho những người khác, tôi đã phải sửa đổi câu trả lời này để làm cho nó hoạt động: 'kill $ (ps -efw | grep dmn | grep -v grep | awk '{print $ 2}')' không chắc chắn tại sao và không quan tâm đủ quá nhìn xa hơn vào nó. – joshweir

+1

@joshweir Đó là bởi vì nếu không 'giết' đã cố gắng để giết ngay cả quá trình 'grep' mà đã cố gắng để tìm kiếm các mô hình – meain

13

Bạn có thể sử dụng

pkill dmn 

nếu hệ thống của bạn có pkill command.

+0

+1 cho pkill thay vì killall. Nó có sẵn trên nhiều nền tảng mà không có "ý nghĩa" khác nhau ([killall] (http://bama.ua.edu/cgi-bin/man-cgi?killall) trên Solaris tương đương với [killall5] (http: // linux. die.net/man/8/killall5) trên Linux chẳng hạn - Tức là, giết * ALL * quy trình) – plundra

+0

pkill –9 –f [d] mn – Mitch1077487

27

Trong trường hợp có nhiều quy trình mà bạn muốn loại bỏ, bạn có thể sử dụng này:

ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill 

Lưu ý: Bạn cần phải loại bỏ quá trình grep chính nó từ đầu ra, đó là lý do tại sao grep -v grep được sử dụng.

+11

Bạn có thể tránh grep hiển thị trong grep của bạn bằng cách đặt char đầu tiên bên trong dấu ngoặc vuông, như: grep [d] mn – Oldskool

+1

@Oldskool Nice trick. Sử dụng metacharacteres để làm cho biểu thức chính quy grep không phù hợp với chính nó là một ý tưởng hay. – jcollado

+0

@Oldskool, +1, bạn là một thiên tài! – jcr

1

Bạn cũng có thể sử dụng killall:

killall dmn 
-1
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done 

chào bạn bè .. chúng ta có thể làm điều đó bằng vòng lặp for.

"Một số tìm kiếm" ở đây là bất kỳ tên quy trình nào bạn muốn tìm kiếm, ví dụ "java", vì vậy hãy nói số lượng quá trình java là 200+ vì vậy hãy giết từng người một sẽ quá điển hình.

để bạn có thể sử dụng lệnh trên.

Cảm ơn.

4

Chỉ cần thêm vào người khác, nhưng tôi thích cách sử dụng tính năng regex suất awk của:

kill $(ps | awk '/dmn/{print $1}') 
-1

Sử dụng pgrep với tùy chọn -f. kill $(pgrep -f dmn)

+1

Nếu bạn có 'pgrep', tại sao không chỉ' pkill -f dmn'? – muru

1

Nếu bạn có lệnh pidof trên hệ thống của bạn (Tôi biết vỏ như ZSH đi kèm với điều này bằng cách mặc định, trừ khi tôi là nhầm lẫn), bạn có thể làm một cái gì đó như thế nào.

kill -9 $(pidof dmn) 
-1

Đối với mục đích này, tôi đã tạo ra một kịch bản python

#!/usr/bin/python3 
from os import system as sy 
from sys import argv 
sy("ps ax | ag "+argv[1]+" | awk '{print $1}' | xargs kill 9") 
Các vấn đề liên quan