Giết tất cả quá trình người dùng trong Ubuntu?


20

Làm thế nào để giết tất cả quá trình của một người dùng?

Khi tôi thực hiện, ps auxtôi có được một danh sách quy trình với nhiều người dùng và tôi muốn giết tất cả quy trình của người dùng name1chẳng hạn! Lệnh nào để làm điều đó trong Ubuntu?



1
Nếu người dùng là người thật thì đây có lẽ không phải là ý hay. Tôi cũng nghĩ rằng bạn muốn giết các quá trình để tiết kiệm thời gian. Đây là một ý kiến ​​tồi. Chẳng hạn, các dịch vụ trong Ubuntu có thể bị ngừng sử dụng sudo service the-service-name stop. Quá trình giết chết có thể để lại các tệp, cơ sở dữ liệu bị hỏng, v.v.
tiktak

Câu trả lời:


27

Trong trường hợp này, nó khá đơn giản, bạn có thể sử dụng killallđể giết hoặc gửi bất kỳ tín hiệu nào khác, đến một loạt các quy trình cùng một lúc. Một trong các tùy chọn "lọc" là chủ sở hữu:killall --user name1


Tôi đã không nhận thức được cuộc --usertranh luận, cảm ơn!
jmtd

4
Cần lưu ý rằng killalltrong ví dụ Solaris Unix giết chết tất cả các quy trình đang chạy có thể! Xem: en.wikipedia.org/wiki/Killall
donothingsuccess thành công

Điều này về cơ bản đã đăng xuất trên Ubuntu 18.
Manohar Reddy Poreddy

14

Thêm tùy chọn khác vì không ai đề cập đến nó và tôi không thích killall(sử dụng nó trên solaris có thể gây ra thảm họa).

pkill dễ mang theo hơn

pkill -u username

Tôi không tìm thấy killalltrong Ubuntu, nhưng pkillđã được cài đặt.
david.perez

2

Xác định người dùng, sau đó killall -user <username>

Họ sẽ có một quy trình bash (hoặc tương tự) liên quan đến việc giết phiên đăng nhập của họ sẽ giết phiên của họ.

Để có được cái nhìn tổng quan tiềm năng tốt hơn về những gì người dùng đang làm - hãy thử pstree <username>


bạn cần hai dấu gạch ngang trước khi sử dụng ví dụ--user
jmtd

1

Cài đặt slay:

năng lực cài đặt giết

Sau đó phát hành slay some-user.

Xin lưu ý rằng nếu bạn tiêu diệt nội dung cho người dùng mà bạn không biết mục đích sử dụng, bạn có thể khiến máy của mình không sử dụng được (cho đến khi bạn khởi động lại).

Nếu bạn thực sự không muốn cài đặt slay:

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill

(chờ một chút)

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill -9

1
Btw awkcó thể grep một cái gì đó chính nó. Không cần phải làm grep smth | awk, vì bạn chỉ có thể sử dụng awk '/smth/{...}'thay thế.
vội vàng

Đây là một chức năng nhỏ tiện dụng cho bạn. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
RCjohnson
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.