Hướng dẫn sử dụng lệnh kill của Linux dành cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Đôi khi, khi làm việc trên máy Linux, bạn sẽ thấy một ứng dụng hoặc một tiến trình dòng lệnh bị kẹt (không phản hồi). Khi đó, cách duy nhất để thoát khỏi những trường hợp đó là chấm dứt tiến trình đó. Dòng lệnh Linux cung cấp một tiện ích mà bạn có thể sử dụng trong những tình huống này. Tiện ích đó có tên là kill.

Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh kill bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ trong bài viết đều đã được thử nghiệm trên máy Ubuntu 16.04.

Lệnh kill của Linux​

Lệnh kill thường được dùng để kill một tiến trình. Về mặt nội bộ, nó sẽ gửi một tín hiệu và tùy thuộc vào mục đích bạn muốn thực hiện, có nhiều tín hiệu khác nhau mà bạn có thể gửi bằng công cụ này. Sau đây là cú pháp của lệnh:
Mã:
kill [tùy chọn] 
 [...]
Và đây là cách trang hướng dẫn của công cụ mô tả nó:
Mã:
Tín hiệu mặc định cho lệnh kill là TERM. Sử dụng -l hoặc -L để liệt kê các tín hiệu khả dụng. Các tín hiệu 
đặc biệt hữu ích bao gồm HUP, INT, KILL, STOP, CONT và 0. Có thể chỉ định các tín hiệu thay thế theo ba cách:
-9, -SIGKILL hoặc -KILL. Có thể sử dụng các giá trị PID âm để chọn toàn bộ nhóm quy trình; hãy xem cột PGID
trong đầu ra lệnh ps. PID bằng -1 là đặc biệt; nó chỉ ra tất cả các quy trình ngoại trừ chính quy trình kill
và init.
Các ví dụ theo kiểu Hỏi & Đáp sau đây sẽ giúp bạn hiểu rõ hơn về cách lệnh kill hoạt động.

Câu hỏi 1. Làm thế nào để kết thúc một tiến trình bằng lệnh kill?​

Điều này rất dễ - tất cả những gì bạn cần làm là lấy pid của tiến trình bạn muốn kill, sau đó truyền nó cho lệnh kill.
Mã:
kill [pid]
Ví dụ, tôi muốn kill tiến trình 'gthumb' trên hệ thống của mình. Vì vậy, trước tiên tôi sử dụng lệnh ps để lấy pid của ứng dụng, sau đó truyền nó cho lệnh kill để kết thúc tiến trình đó. Đây là ảnh chụp màn hình hiển thị tất cả những điều này:




Câu hỏi 2. Làm thế nào để gửi tín hiệu tùy chỉnh?​

Như đã đề cập trong phần giới thiệu, TERM là tín hiệu mặc định mà lệnh kill gửi đến ứng dụng/tiến trình đang đề cập. Tuy nhiên, nếu muốn, bạn có thể gửi bất kỳ tín hiệu nào khác mà lệnh kill hỗ trợ bằng tùy chọn dòng lệnh -s.
Mã:
kill -s [signal] [pid]
Ví dụ, nếu một tiến trình không phản hồi tín hiệu TERM (cho phép tiến trình thực hiện dọn dẹp cuối cùng trước khi thoát), bạn có thể sử dụng tín hiệu KILL (không cho phép tiến trình thực hiện bất kỳ dọn dẹp nào). Sau đây là lệnh bạn cần chạy trong trường hợp đó.
Mã:
kill -s KILL [pid]

Câu hỏi 3. Bạn có thể gửi tất cả các tín hiệu nào khi sử dụng lệnh kill?​

Tất nhiên, câu hỏi hợp lý tiếp theo xuất hiện trong đầu bạn là làm thế nào để biết bạn có thể gửi tất cả các tín hiệu nào khi sử dụng lệnh kill. May mắn thay, có một tùy chọn dòng lệnh -l liệt kê tất cả các tín hiệu được hỗ trợ.
Mã:
kill -l
Sau đây là kết quả mà lệnh trên tạo ra trên hệ thống của chúng tôi:


Câu hỏi 4. Có những cách nào khác để gửi tín hiệu?​

Trong một ví dụ trước, chúng tôi đã nói với bạn rằng nếu bạn muốn gửi tín hiệu KILL, bạn có thể thực hiện theo cách sau:
Mã:
kill -s KILL [pid]
Tuy nhiên, cũng có một số giải pháp thay thế khác:
Mã:
kill -s SIGKILL [pid]
Mã:
kill -s 9 [pid]
Có thể biết số tương ứng bằng cách sử dụng tùy chọn -l mà chúng ta đã thảo luận trong ví dụ trước.

Câu hỏi 5. Làm thế nào để giết tất cả các tiến trình đang chạy cùng một lúc?​

Trong trường hợp người dùng muốn giết tất cả các tiến trình mà họ có thể (điều này phụ thuộc vào cấp độ đặc quyền của họ), thì thay vì chỉ định một số lượng lớn ID tiến trình, họ có thể chỉ cần truyền tùy chọn -1 để giết.

Ví dụ:
Mã:
kill -s KILL -1

Kết luận​

Lệnh kill khá dễ hiểu và dễ sử dụng. Có một đường cong học tập nhỏ về danh sách các tùy chọn tín hiệu mà nó cung cấp, nhưng như chúng tôi đã giải thích ở đây, cũng có một tùy chọn để xem nhanh danh sách đó. Chỉ cần thực hành bất cứ điều gì chúng ta đã thảo luận và bạn sẽ ổn thôi. Để biết thêm thông tin, hãy truy cập trang hướng dẫn của công cụ.
 
Back
Bên trên