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ì tiến 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 kill
, killall
và 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
kill
, killall
và 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 15
( TERM
).
Các tín hiệu thường được sử dụng là:
1
(-HUP): để tải lại một tiến trình.9
(-KILL): để tắt một tiến trình.15
(-TERM): để dừng một tiến 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 tiến trình sử dụng lệnh kill
Để kết thúc một tiến 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ư 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 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 tiến 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 tiến 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 kill
, killall
và 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.
cho e hỏi “cách để chấm dứt một quá trình?” ạ