Cách Kill một tiến trình (Process) trong Linux

By | July 9, 2020
kill process

Bạn đã bao giờ phải đối mặt với tình huống bạn khởi chạy một ứng dụng, và đột nhiên trong khi bạn đang sử dụng ứng dụng, nó trở nên không phản hồi và gặp sự cố bất ngờ? Bạn cố gắng khởi động lại ứng dụng, nhưng không có gì xảy ra vì quá trình ứng dụng bạn đang chạy không sự tắt hoàn toàn.

Chà, điều đó đã xảy ra với tất cả chúng ta vào một lúc nào đó, phải không? Giải pháp là chấm dứt hoặc kill process của ứng dụng đó. Nhưng bằng cách nào?

May mắn thay, có một số tiện ích trong Linux cho phép bạn các process bị lỗi.

Trong bài viết này, tôi sẽ cho bạn thấy làm thế nào để sử dụng lệnh killkillallvà pkill để tắt một process trong Linux.

Sự khác biệt chính giữa các công cụ này là kill chấm dứt các tiến trình dựa trên số ID của tiến trình (PID), trong khi các lệnh killall và pkill chấm dứt các tiến trình đang chạy dựa trên tên của chúng và các thuộc tính khác.

Người dùng thông thường có thể chấm dứt các tiến trình của riêng họ, nhưng không phải các tiến trình thuộc về người dùng khác, trong khi người dùng root có thể chấm dứt tất cả các tiến trình.

System Kill Signals

killkillallvà pkill gửi một tín hiệu nhất định đến các tiến trình hoặc nhóm tiến trình được chỉ định. Khi không có tín hiệu nào được chỉ định, công cụ sẽ gửi 15TERM).

Các tín hiệu thường được sử dụng là:

  • 1 (-HUP): để tải lại một quy trình.
  • 9 (-KILL): để tắt một quá trình.
  • 15 (-TERM): để dừng một quá trình một cách nhẹ nhàng.

Tín hiệu có thể được chỉ định theo ba cách khác nhau:

  • Sử dụng một số (ví dụ: -1)
  • Với tiền tố SIG nghiêm trọng (ví dụ: -SIGHUP)
  • Không có tiền tố SIG hung (ví dụ: -HUP).

Sử dụng tùy chọn -l để liệt kê tất cả các tín hiệu có sẵn:

kill -l
# or
killall -l

Các bước được nêu dưới đây sẽ hoạt động trên tất cả các bản phân phối Linux.

Chấm dứt quá trình sử dụng lệnh kill

Để kết thúc một quá trình với kill trước tiên, bạn cần tìm PID của process đó. Bạn có thể làm điều này bằng các lệnh khác nhau như toppspidof, và pgrep.

Giả sử trình duyệt Firefox đã không phản hồi và bạn cần phải hủy tiến trình trình duyệt. Để tìm ID tiến trình, sử dụng lệnh pidof:

pidof firefox

Lệnh sẽ in tất cả các quy trình Firefox:

2551 2514 1963 1856 1771

Khi bạn biết Firefox xử lý các PID để chấm dứt tất cả chúng sẽ gửi TERM tín hiệu:

kill -9 2551 2514 1963 1856 1771

Chấm dứt tiến trình sử dụng killall

Lệnh killall chấm dứt tất cả các chương trình phù hợp với một tên cụ thể.

Sử dụng cùng một kịch bản như trước đây, bạn có thể chấm dứt tiến trình Firefox bằng cách nhập:

killall -9 firefox

killall chấp nhận một số tùy chọn như gửi tín hiệu đến các tiến trình thuộc sở hữu của một người dùng nhất định, khớp các tên quy trình với các biểu thức thông thường và thời gian tạo. Bạn có thể nhận danh sách tất cả các tùy chọn bằng cách nhập killall(không có bất kỳ đối số nào) trên terminal của bạn.

Ví dụ: để chấm dứt tất cả các tiến trình đang chạy với tư cách là một người dùng, bạn sẽ chạy lệnh sau:

sudo killall -u sara

Chấm dứt tiến trình sử dụng lệnh pkill

pkill chấm dứt các tiến trình khớp với mẫu được đưa ra trên dòng lệnh:

pkill -9 firefox

Tên của tiến trình không cần phải đầy đủ.

Với pkill bạn cũng có thể gửi tín hiệu đến các tiến trình thuộc sở hữu của một người dùng nhất định. Để chỉ chấm dứt các tiến trình firefox do người dùng sở hữu, bạn sẽ gõ:

pkill -9 -u sara firefox

Phần kết luận

Chấm dứt chương trình không đáp ứng bằng cách sử dụng lệnh killkillallvà pkill là một nhiệm vụ dễ dàng. Bạn chỉ cần biết tên tiến trình hoặc PID.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi, hãy để lại nhận xét.

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments