Linux: Tiêu diệt quá trình dựa trên các đối số


54

Làm thế nào tôi có thể giết một quá trình dựa trên các đối số dòng lệnh của nó? killall, pgreppkilldường như chỉ hoạt động dựa trên tên quy trình.

Tôi cần điều này để có thể phân biệt giữa một số ứng dụng chạy bên trong các máy ảo Java, nơi javacó thể tìm thấy tên quy trình cho tất cả chúng và tên ứng dụng thực tế bằng cách xem các đối số dòng lệnh.

Điều này có thể được thực hiện thủ công với ps aux | grep myapp.jarvà sau đó giết thủ công pid từ đầu ra, nhưng tôi muốn một lệnh tự động làm một cái gì đó tương đương.

Câu trả lời:


69

pgrep/ pkilllấy -fcờ Từ mantrang:

-f    The pattern is normally only matched against the process name.
      When -f is set, the full command line is used.

Ví dụ:

$ sleep 30& sleep 60&
[1] 8007
[2] 8008

$ pkill -f 'sleep 30'
[1]  - terminated  sleep 30

$ pgrep sleep
8008

+1, nhưng bash 4.1.5 của tôi không hoạt động cho dấu hai chấm sau dấu và (như trong dòng đầu tiên của ví dụ) ... bash: syntax error near unexpected token ';'... Nó hoạt động trong một tuyên bố trường hợp khi dấu và được theo sau bởi ;;... có thể bạn đang sử dụng một vỏ khác (?)
Peter.O

@ jw013 Tôi thực sự đang sử dụng zsh, hỗ trợ cú pháp tôi đã sử dụng. Mặc dù vậy, nó vẫn hoạt động, vì vậy tôi đã gỡ bỏ nó
Michael Mrozek

@MichaelMrozek ok nvm rồi :) Tôi tự hỏi nếu unix.SE có tỷ lệ zshngười dùng cao hơn những nơi khác - tôi dường như chỉ tìm thấy zshngười dùng ở đây.
jw013

4

Bạn có thể sử dụng htopđể xem tất cả các quy trình hiện đang chạy với các đối số dòng lệnh của chúng và để giết một quy trình đã chọn.


4

Thay thế argumentbên dưới bằng một biểu thức chính quy phải có nhiều dòng lệnh đầy đủ của một quy trình:

kill `ps -eo pid,args --cols=10000 | awk '/argument/ && $1 != PROCINFO["pid"] { print $1 }'`

0

Nếu bạn không có pkill hoặc bất cứ điều gì, chỉ cần sử dụng Proc / [1-9] * / cmdline

grep -a myapp.jar /proc/[1-9]*/cmdline|tr '\0' ' '|grep -v grep|awk -F/ '{print $3}'
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.