Một ứng dụng được khởi chạy từ menu ứng dụng hay từ dòng lệnh bất kỳ nào đó, khi bắt đầu sử dụng ứng dụng nó đột nhiên bị ngừng hoạt động, crash hay thiết bị của bạn bị khóa. Lúc này, bạn có thể chạy lại ứng dụng, nhưng thực chất ứng dụng gốc chưa hoàn toàn tắt hẳn.
Bạn cần chấm dứt hẳn tiến trình hoạt động của nó, nhưng không biết phải làm sao? Thật may mắn khi Linux đã hỗ trợ cho người dùng những công cụ cần thiết để loại bỏ đi tiến trình đang lỗi. Để làm điều này đòi hỏi bạn cần hiểu rõ tiến trình hoạt động của từng lớp.
Trong bài viết này, BKHOST sẽ giới thiệu cho bạn công cụ kill process trong linux (có thể áp dụng trên hầu hết các thiết bị và các bản phân phối của Linux). Ok, cùng bắt đầu ngay thôi nào.
Bước 1: Định vị tiến trình
Để chấm dứt một tiến trình hoạt động lỗi của một ứng dụng, bước đầu tiên bạn cần xác định vị trí tiến trình. Bạn có hai lệnh để định vị tiến trình là Top và Ps.
Trong đó, top là loại công cụ mà hầu hết các quản trị viên nên biết về nó. Nó cung cấp cho người dùng các thông tin cần thiết về tiến trình đang chạy.
Từ hình bên dưới ta thấy, dòng lệnh khi nhấn vào top sẽ xuất hiện danh sách các tiến trình đang chạy.
Danh sách thông tin của top sẽ mang lại cho bạn nhiều dữ liệu quan trọng. Ví dụ: Trong trường hợp Chrome không phản hồi, theo thông tin của top có thể thấy được Chrome đang chạy với bốn trường hợp của bốn PID là 3827, 3919, 10764 và 11679. Nhờ vào thông tin này có thể xác định được phương pháp cụ thể để hủy tiến trình.
Tuy top mang đến những thông tin hữu ích, nhưng nó không phải là phương tiện tuyệt đối, đôi khi nó không mang đến cho người dùng những thứ mà họ cần.
Ví dụ: Bạn muốn hủy tiến trình hoạt động của Chrome nhưng lại không muốn xem thông tin của tiến trình theo thời gian thực. Lúc này, top không đáp ứng được buộc bạn phải dùng lệnh khác và có thể sử dụng ps và lọc đầu ra nhờ grep.
ps sẽ cung cấp cho bạn tất cả các danh sách ảnh chụp của tiến trình hoạt động, grep sẽ có nhiệm vụ lọc các mẫu khớp với dòng lệnh.
Ví dụ là liên kết với Chrome. Lệnh này có dạng như sau:
{{EJS0}}
Sau đây là các tùy chọn của aux:
- a = hiển thị tiến trình cho tất cả người dùng
- u = hiển thị người dùng / chủ sở hữu của tiến trình
- x = hiển thị các tiến trình không được kết nối với thiết bị đầu cuối
Khi bạn cần tìm các thông tin về các ứng dụng đồ họa thì tùy chọn x là rất quan trọng.
Với lệnh trên, những thông tin mà bạn nhận được sẽ nhiều hơn những gì mà bạn mong muốn để hủy một tiến trình. Đôi khi, nó còn tuyệt vời hơn cả việc sử dụng lệnh top.
Bước 2: Hủy tiến trình
Khi đã định vị được vị trí của tiến trình, bây giờ là lúc hủy tiến trình. Hai thông tin sau đây sẽ giúp bạn loại bỏ đi tiến trình đang bị lỗi:
- Process name: Tên tiến trình
- Process ID: ID tiến trình
Tiếp theo là xác định lệnh để kết thúc tiến trình. Tại đây có hai lệnh được dùng để kết thúc một tiến trình:
- Kill: Hủy một tiến trình bằng id
- Killall: Hủy một tiến trình theo tên.
Từ hai lệnh hủy khác nhau, bạn sẽ gửi đi các tín hiệu khác nhau. Dựa vào tín hiệu bạn gửi đi mà sẽ nhận về kết quả bạn mong muốn từ lệnh hủy.
Ví dụ: Bạn cần khởi động lại tiến trình, bạn có thể gửi tín hiệu HUP đến lệnh hủy, lúc này lệnh sẽ giúp bạn thực hiệu điều đó một cách hiệu quả.Khi bạn đưa ra các lệnh hủy, bạn sẽ nhận về danh sách tất cả các thông báo mà bạn có thể gửi đi.
Sau đây là một số tín hiệu được sử dụng phổ biến:
Signal Name | Single Value | Effect |
SIGHUP | 1 | Hangup |
SIGINT | 2 | Interrupt from keyboard |
SIGKILL | 9 | Kill signal |
SIGTERM | 15 | Termination signal |
SIGSTOP | 17, 19, 23 | Stop the process |
Ngoài ra, bạn có thể sử dụng tên tín hiệu thay vì dùng giá trị tín hiệu. Bây giờ, hãy bắt đầu sử dụng lệnh hủy cùng với tín hiệu để loại bỏ phiên bản Chrome mà bạn muốn hủy. Cấu trúc lệnh này như sau:
{{EJS1}}
Trong đó SIGNAL là tên tín hiệu được gửi đi, PID sẽ là ID sẽ được loại bỏ trong tiến trình.
Từ lệnh ps, bạn có được thông tin PID mà Chrome đang chạy là 3827, 3919, 10764 và 11679. Để gửi tín hiệu hủy đến các ID trên, bạn làm theo cấu trúc lệnh:
{{EJS2}}
Sau khi bạn thực hiện các câu lệnh trên, ngay lập tức các tiến trình đang chạy của Chrome sẽ được ngắt kết nối thành công.
Ngoài ra, bạn có thể sử dụng lệnh killall để hủy tiến trình một cách nhanh chóng. Khi đã xác định được đối tượng bạn muốn hủy là Chrome, chỉ cần dùng killall kèm theo tín hiệu phù hợp là có thể kết thúc được tiến trình hoạt động của Chrome.
Ví dụ: killall -9 chrome
Tuy nhiên, sử dụng lệnh killall có thể không hủy được tất cả tiến trình của Chrome. Bạn có thể kiểm tra bằng cách sử dụng lệnh ps aux | grep chrome, nếu như thấy các tiến trình còn lại vẫn đang chạy tức là chưa hủy được triệt để. Lúc này, chỉ còn cách quay về lệnh kill và gửi tín hiệu 9 đến từng PID để kết thúc tiến trình.
Kết quả: Tiến trình sẽ được kết thúc dễ dàng
Như bạn có thể thấy, việc kết thúc triệt để một tiến trình đang hoạt động ngầm không khó khăn như bạn nghĩ, mà có thể nói là vô cùng dễ dàng. Đối với một tiến trình đơn giản, cách hiệu quả và nhanh nhất là sử dụng lệnh killall để chấm dứt nó. Tuy nhiên, đối với các tiến trình phức tạp, để tiêu diệt triệt để bạn nên sử dụng lệnh kill và gửi tín hiệu trên từng PID để đảm bảo từng hóa trình đã được chấm dứt.
Tổng kết về cách kill process trong Linux
Bài viết này đã tổng hợp các thông tin kill command cần thiết cho bạn. Nếu bạn còn bất cứ câu hỏi nào liên quan đến CLI, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất. Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.