Ngay cả hệ điều hành mạnh mẽ như Linux đôi khi gặp sự cố khiến app hoặc chương trình bị treo (frozen).
Có vài cách kill (giết) hoặc thoát chương trình bị treo trên Linux. Bài viết này sẽ giải thích cách làm.
Dùng lệnh Kill
Trước khi dùng lệnh kill, hệ thống cần biết Process ID (PID) của chương trình không phản hồi (unresponsive).
PID là số tự động xác định mỗi tiến trình khi tạo trên bất kỳ Linux OS nào. Ưu điểm của phương pháp này là nó hoạt động trên tất cả hệ thống Linux.
Tìm tiến trình & PID
Nếu bạn không biết tiến trình nào bị treo trên Linux, hai công cụ sẽ giúp tìm tiến trình: top và ps.
Top là system monitor (giám sát hệ thống) dựa trên command line. Từ command line, gõ:
$ top
Ảnh chụp trên hiển thị nhiều thông tin. Ví dụ, giả sử Chrome là chương trình bị treo trên máy bạn.
Bạn thấy có bốn instance (thể hiện) Chrome chạy với PID sau:
- 3827
- 3919
- 10764
- 11679
Để xác định instance Chrome cụ thể bạn muốn kill, dùng lệnh ps và grep để lọc output.
Lệnh dưới sẽ hiển thị tiến trình chạy liên quan đến Chrome:
ps aux | grep chrome
Kill tiến trình
Bây giờ bạn có hai mảnh thông tin cần để kill tiến trình treo trên Linux: tên và ID. Dùng lệnh dưới:
- kill – Kill tiến trình bằng ID
- killall – Kill tiến trình bằng tên
Có signal (tín hiệu) khác bạn có thể gửi cho cả hai lệnh, tùy kết quả bạn muốn.
Ví dụ, nếu bạn muốn kill tiến trình không phản hồi và restart nó, bạn sẽ dùng signal HUP (hang up).
Signal kill khác bao gồm:
- SIGSTOP để dừng tiến trình
- SIGNINT để ngắt bàn phím (interrupt keyboard)
- SIGKILL để kill signal
Chúng ta học từ lệnh ps trên rằng PID cho các instance Chrome là 3827, 3919, 10764, và 11679.
Để gửi kill signal, chạy lệnh sau để kill thành công bốn instance Chrome:
- kill -9 3827
- kill -9 3919
- kill -9 10764
- kill -9 11679
Bạn cũng có thể dùng lệnh đơn lẻ dưới dùng killall gửi cùng signal:
killall -9 chrome
Nhấn nút X
Chương trình và app không phản hồi thường có nút/bước chọn xám (grayed-out) hoặc tùy chọn không hoạt động. Đôi khi bạn thậm chí không thể di chuyển cửa sổ app trên màn hình.
Giải pháp dễ nhất là nhấn nút X ở góc trên. Tùy OS, nút có thể ở trái hoặc phải góc trên.
Sau khi nhấn X, bạn sẽ thấy hộp thoại với hai tùy chọn: Wait hoặc Force Quit. Để kết thúc chương trình, nhấn Force Quit.
Kill tiến trình Linux dùng System Monitor
System monitor mặc định trong Ubuntu gọi là Gnome. Nó cung cấp insight (sự hiểu thấu) vào tất cả tiến trình chạy trên Ubuntu Linux.
Người dùng có thể thực hiện nhiều tác vụ dùng Giao diện đồ họa (GUI), bao gồm Stop, Continue, và Kill.
Nếu hệ thống không bao gồm app Gnome system monitor, cài nó theo bước dưới. Quy trình này hoạt động cho tất cả phiên bản Ubuntu Linux active cũng như Linux Mint và Debian.
- Dùng phím tắt Terminal CTRL+ALT+T. Sau đó dùng lệnh dưới để tải và cài Gnome System monitor.
sudo apt-get install gnome-system-monitor
- Mở system monitor dùng Command Terminal với:
gnome-system-monitor
- Hoặc, dùng GUI, điều hướng đến Applications, gõ system monitor trong hộp tìm kiếm, và nhấn vào icon để mở.
- Mở System Monitor, duyệt cột Processes tìm chương trình unresponsive hoặc frozen, chọn và chuột phải vào nó.
Bạn sẽ thấy vài tùy chọn, bao gồm:
- End Process để kết thúc ứng dụng đồng thời dọn file tạm.
- Stop Process để tạm dừng tiến trình cho phép bạn tiếp tục làm việc sau.
- Kill Process là tùy chọn cực đoan (extreme) và sẽ hoạt động để thoát chương trình treo nếu cố gắng end (kết thúc) không thành công.
Dùng lệnh xkill
Xkill là tiện ích kill Ubuntu pre-installed (cài sẵn) bạn có thể dùng để force kill (buộc kill) tiến trình Linux unresponsive. Nó là công cụ cài sẵn trong Ubuntu.
Bạn cũng có thể cài nó qua Terminal trên bản phân phối khác bằng lệnh:
sudo apt install xorg-xkill
Sau đó chạy nó bằng gõ xkill. Chuột sẽ biến thành sọ (skull) hoặc x. Chuột trái vào chương trình bị treo để đóng nó.
Dùng pgrep & pkill
Một số hệ thống Linux cung cấp shortcut (phím tắt) gọi là pkill và pgrep để thực hiện cùng tác vụ như kill và ps thảo luận trên.
Pgrep sẽ hiển thị tên tiến trình và ID. Ví dụ, chạy pgrep chrome để xem PID của tiến trình Chrome chạy. Bạn có thể dùng ID đó với lệnh kill.
pkill 7012
Hoặc, bạn có thể bỏ qua bước này và dùng lệnh dưới kill tất cả instance Chrome:
pkill chrome
Giải pháp này tốt nếu bạn chỉ có một instance ứng dụng chạy. Tuy nhiên, nếu bạn có vài cửa sổ cùng chương trình mở và chỉ muốn kill một, dùng XKill thay thế.
Khi chương trình treo, restart hệ thống không phải lúc nào cũng tiện lợi. Điều này đặc biệt đúng nếu bạn đang làm nhiều dự án cùng lúc và chưa lưu công việc.
Thử một tùy chọn trên làm alternative (lựa chọn thay thế) để thoát dễ dàng và nhanh chóng chương trình frozen hoặc không phản hồi trên Linux an toàn.