Làm thế nào để tiêu diệt tất cả các quá trình python ngoại trừ một từ bash


11

Làm thế nào tôi có thể giết từ bash tất cả các quy trình python ngoại trừ một tập lệnh python. (Tôi biết tên của nó, nhưng đôi khi nó có thể được thay đổi).

Tôi cần loại pkill -f "python"nhưng không bao gồm kịch bản cụ thể python.

Xin tư vấn.

Câu trả lời:


13

ps aux |grep python |grep -v 'pattern_of_process_you_dont_want_to_kill' |awk '{print $2}' |xargs kill

Cập nhật: giải thích từng bước theo yêu cầu trong các bình luận

  • ps aux |grep python- hiển thị tất cả các quy trình phù hợp với pythonmẫu
  • grep -v 'pattern_of_process_you_dont_want_to_kill' - loại trừ quá trình bạn không muốn giết
  • awk '{print $2}' - hiển thị trường đầu ra thứ hai, đó là PID.
  • xargs kill- áp dụng killlệnh cho từng đối số đầu vào (PID).

Nếu bạn không quen với xargslệnh, tôi khuyên bạn đừng lo lắng nếu bạn không hiểu nó ngay lập tức. Nó có thể xuất hiện khá khó khăn lần đầu tiên. Tôi đã đăng ví dụ rất đơn giản về cách sử dụng của nó, bạn có thể google để biết thêm.


1
Tuyệt vời, nhưng bạn có thể giải thích cách thức hoạt động của nó không, ví dụ như awk '{print $ 2}' và xargs kill là gì?
user370717

awk '{print $2}' - in trường psđầu ra thứ hai , trong trường hợp hiện tại là PID. xargsáp dụng killlệnh cho mỗiPID
user1700494 16/8/2016

1
Đặt nó trong một bình luận là tốt, nhưng tôi muốn bỏ phiếu cho câu trả lời của bạn sau khi bình luận có định dạng tốt được tích hợp vào câu trả lời của bạn.
gà con
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.