Cách sử dụng lệnh kill trong Linux
Trong bài này chúng ta sẽ tìm hiểu cách dùng lệnh kill trong Linux, đây là lệnh rất hữu ích được dùng để giết một quy trình hoặc một công việc gì đó ngay lập tức.
Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không phải là hoàn hảo. Đôi khi, một số ứng dụng có thể bắt đầu hoạt động thất thường, không phản hồi hoặc tiêu tốn nhiều tài nguyên hệ thống. Ta không thể khởi động lại những ứng dụng đó, vì Linux nhận biết rằng ứng dụng đó chưa được tắt. Giải pháp duy nhất là khởi động lại hệ thống hoặc tắt nó một cách ép buộc.
1. Cú pháp lệnh killl trong Linux
Lệnh kill là một build-in shell nên nó có trên hầu hết tất cả các bản phối khác nhau của Linux. Cú pháp của nó như sau:
kill [OPTIONS] [PID]...
Lệnh kill sẽ gửi một tín hiệu đến các tiến trình hoặc nhóm tiến trình được chỉ định (PID).
Bài viết này được đăng tại [free tuts .net]
Các tín hiệu được sử dụng phổ biến nhất là:
- 1 (HUP) - Khởi động lại tién trình.
- 9 (KILL) - Dừng tiến trình ngay lập tức.
- 15 (TERM) - Dừng quá trình nhẹ nhàng hơn.
Để xem danh sách tất cả các tín hiệu có sẵn trên hệ thống thì hãy chạy lệnh sau:
kill -l
Các tín hiệu có thể được trình bày qua ba cách khác nhau dưới đây:
- Sử dụng số (
-1
hoặc-s 1
) - Sử dụng SIG prefix (
-SIGHUP
hoặc-s SIGHUP
). - Bỏ qua SUG prefix (
-HUP
hoặc-s HUP
)
Vậy, chúng ta có được các cách viết như sau:
kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER
Các PID cung cấp cho lệnh kill có được xác định như sau:
- Nếu PID lớn hơn 0, tín hiệu được gửi đến tiến trình với ID bằng PID.
- Nếu PID bằng 0, tín hiệu được gửi đến tất cả các tiến trình trong nhóm tiến trình hiện tại. Nói cách khác, tín hiệu được gửi đến tất cả các tiến trình thuộc GID của shell đã gọi lệnh kill. Sử dụng lệnh
ps -efj
để xem ID nhóm tiến trình (GID). - Nếu PID bằng -1, tín hiệu được gửi đến tất cả các tiến trình có cùng UID khi người dùng gọi lệnh.
- Nếu PID nhỏ hơn -1, tín hiệu được gửi đến tất cả các tiến trình trong nhóm tiến trình với GID bằng giá trị tuyệt đối của PID.
Người dùng thông thường có thể gửi tín hiệu đến tiến trình của riêng họ, nhưng không gửi tín hiệu đến quy trình của người dùng khác, trong khi người dùng root có thể gửi tín hiệu đến quy trình của người dùng khác.
2. Các bước thực hiện lệnh kill trong Linux
Để chấm dứt hoặc hủy một tiến trình bằng lệnh kill, trước tiên bạn cần tìm số ID của quy trình (PID). Bạn có thể thực hiện việc này bằng các lệnh khác nhau như top
, ps
, pidof
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 Firefox. Để tìm PID của trình duyệt, hãy sử dụng lệnh pidof
:
pidof firefox
Lệnh này sẽ in ra các PID của trình duyệt Firefox như sau:
6263 6199 6142 6076
Khi ta đã biết danh sách các PID rồi thì dễ dàng chấm dứt nó bằng lệnh kill.
kill -9 6263 6199 6142 6076
Thay vì tìm kiếm PID và sau đó kill các tiến trình thì bạn có thể kết hợp các lệnh trên thành một:
kill -9 $(pidof firefox)
3. Sử dụng lệnh kill để reload các tiến trình
Một giải pháp khác để giải quyết là ta sẽ gửi tính hiệu HUB để các tiến trình sẽ reload lại.
Ví dụ: Để reload Nginx service thì bạn cần gửi tín hiệu đến tiến trình chính. ID quy trình của quy trình chính Nginx có thể được tìm thấy trong file nginx.pid
, nó thường nằm trong thư mục /var/run
.
Sử dụng lệnh cat để tìm PID chính:
cat /var/run/nginx.pid
Kết quả:
30251
Sau khi bạn tìm thấy PID chính, hãy reload lại Nginx bằng cách nhập:
sudo kill -1 30251
Lệnh trên được chạy bởi người dùng root có đặc quyền sudo.
Như vậy là chúng ta đã tìm hiểu xong cách sử dụng lệnh kill trong Linux, đây là lệnh rất hay dùng để xử lý các tiến trình / ứng dụng bị đơ hoặc nó chiếm quá nhiều tài nguyên.