Linux là một hệ điều hành tuyệt vời và tiên tiến, nhưng nó không hoàn hảo. Thỉnh thoảng, một số ứng dụng có thể bắt đầu hoạt động thất thường và trở nên không phản hồi hoặc bắt đầu tiêu tốn nhiều tài nguyên hệ thống. Các ứng dụng không phản hồi không thể được khởi động lại vì quy trình ứng dụng gốc không bao giờ tắt hoàn toàn. Giải pháp duy nhất là khởi động lại hệ thống hoặc tắt tiến trình ứng dụng.
Có một số tiện ích cho phép bạn chấm dứt các quá trình sai lầm với
kill
được sử dụng phổ biến nhất.
Tóm Tắt
kill
lệnh
kill
kill
là một shell được tích hợp trong hầu hết các shell có nguồn gốc từ Bourne như Bash và Zsh. Hành vi lệnh hơi khác nhau giữa các shell và thực thi độc lập
/bin/kill
.
Sử dụng lệnh
type
để hiển thị tất cả các vị trí trên hệ thống của bạn có chứa
kill
:
type -a kill
kill is a shell builtin kill is /bin/kill
Đầu ra ở trên cho biết rằng phần tử dựng sẵn có mức độ ưu tiên so với tệp thực thi độc lập và nó được sử dụng bất cứ khi nào bạn gõ
kill
. Nếu bạn muốn sử dụng nhị phân, hãy nhập đường dẫn đầy đủ đến tệp
/bin/kill
., chúng tôi sẽ sử dụng nội dung Bash.
Cú pháp của lệnh
kill
có dạng sau:
kill…
Lệnh
kill
sẽ gửi tín hiệu đến các quy trình hoặc nhóm quy trình được chỉ định, khiến chúng hoạt động theo tín hiệu. Khi tín hiệu không được chỉ định, nó mặc định là
-15
(-TERM).
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
) – Giết một quá trình.
15
(
TERM
) – Duyên dáng dừng một quá trình.
Để có danh sách tất cả các tín hiệu khả dụng, hãy gọi lệnh với tùy chọn
-l
:
kill -l
Tín hiệu có thể được chỉ định theo ba cách khác nhau:
- Sử dụng số (ví dụ:
-1
hoặc
-s 1
). Sử dụng tiền tố của SIG, (ví dụ:
-SIGHUP
hoặc
-s SIGHUP
).
Các lệnh sau tương đương với nhau:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
Các PID được cung cấp cho lệnh
kill
có thể là một trong những điều sau đây:
- Nếu
PID
lớn hơn 0, tín hiệu được gửi đến tiến trình có ID bằng với
PID
. Nếu
PID
bằng 0, tín hiệu được gửi đến tất cả các quy trình trong nhóm quy 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 quá trình thuộc GID của shell đã gọi lệnh
kill
. Sử dụng lệnh
ps -efj
để xem ID nhóm quy trình (GID). Nếu
PID
bằng
-1
, tín hiệu được gửi đến tất cả các quy trình có cùng UID khi người dùng gọi lệnh. Nếu người dùng gọi là root, tín hiệu được gửi đến tất cả các quy trình ngoại trừ init và chính quá trình
kill
Nếu
PID
nhỏ hơn
-1
, tín hiệu được gửi đến tất cả các quy trình trong nhóm quy trình eq 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 các quy trình của riêng họ, nhưng không gửi tín hiệu cho người dùng khác, trong khi người dùng root có thể gửi tín hiệu đến các quy trình của người dùng khác.
Chấm dứt quá trình sử dụng lệnh
kill
kill
Để chấm dứt hoặc giết một tiến trình bằng lệnh
kill
, trước tiên bạn cần tìm số ID tiến trình (PID). Bạn có thể làm điều 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 quy trình Firefox. Để tìm các PID trình duyệt, sử dụng lệnh
pidof
:
pidof firefox
Lệnh sẽ in ID của tất cả các quy trình Firefox:
6263 6199 6142 6076
Khi bạn biết các số tiến trình, bạn có thể chấm dứt tất cả chúng bằng cách gửi tín hiệu
TERM
:
kill -9 2551 2514 1963 1856 1771
Thay vì tìm kiếm các PID và sau đó kết thúc các tiến trình, bạn có thể kết hợp các lệnh trên thành một:
kill -9 $(pidof firefox)
Quá trình tải lại bằng lệnh
kill
kill
Một trường hợp sử dụng phổ biến khác cho
kill
là gửi tín hiệu
HUP
, thông báo cho các quá trình tải lại cài đặt của nó.
Ví dụ, để tải lại Nginx, bạn cần gửi tín hiệu đến quy trình chính. ID tiến trình của quy trình chính Nginx có thể được tìm thấy trong tệp
nginx.pid
, thường được đặt trong thư mục
/var/run
.
Sử dụng lệnh
cat
để tìm PID chính:
cat /var/run/nginx.pid
30251
Khi bạn tìm thấy PID chính tải lại cài đặt Nginx bằng cách nhập:
sudo kill -1 30251
Lệnh trên phải được chạy dưới quyền root hoặc người dùng có quyền sudo.
Phần kết luận
Lệnh
kill
được sử dụng để gửi tín hiệu đến các tiến trình. Tín hiệu được sử dụng thường xuyên nhất là
SIGKILL
hoặc
-9
, kết thúc các quá trình đã cho.
giết thiết bị đầu cuối
giết thiết bị đầu cuối