Trong Linux, việc kết thúc một tiến trình đề cập đến việc chấm dứt hoặc dừng thực thi của một chương trình đang chạy. Mỗi tiến trình đang chạy được gán một số nhận dạng duy nhất được biết đến là Process ID (PID), giúp hệ thống theo dõi các tiến trình đang hoạt động hiện tại.
Trong bài viết này, chúng ta sẽ tìm hiểu về quy trình kill trong Linux và cách tìm và chấm dứt một tiến trình bằng các công cụ và lệnh khác nhau trong Linux.
Là gì quy trình Linux
Đơn giản, một tiến trình giống như một chương trình đang chạy trên hệ thống, và mỗi tiến trình có số 'ID quy trình' (PID) riêng của nó. Tuy nhiên, đôi khi một chương trình đang chạy hoặc quy trình có thể không hoạt động đúng cách hoặc có thể ngừng phản hồi hoặc tiêu thụ quá nhiều tài nguyên hệ thống.
Khi điều đó xảy ra, chúng ta cần dừng hoặc 'kill' tiến trình và đây là nơi 'lệnh kill' hữu ích.
Lệnh Kill là gì
Lệnh 'kill' là một tiện ích quan trọng cho phép người dùng gửi các tín hiệu (dừng hoặc chấm dứt) cho các tiến trình đang chạy hiện tại, yêu cầu chúng thoát ra một cách êm đềm hoặc tắt buộc.
Lệnh kill hữu ích khi bạn cần quản lý và kiểm soát các hoạt động của các chương trình khác nhau trên hệ thống Linux của bạn như:
- Dừng bất kỳ quy trình tự động nào.
- Dừng một quy trình đã được khởi động theo ý.
- Dừng một quy trình sử dụng quá nhiều bộ nhớ.
- Chấm dứt buộc một quy trình đang chạy trong Linux.
- Dừng một quy trình đang chạy ở nền.
Sử dụng lệnh 'kill' từ '/usr/bin' sẽ cung cấp cho bạn một số tính năng bổ sung để kết thúc một tiến trình theo tên tiến trình bằng cách sử dụng 'pkill', xác định các tiến trình qua tên của chúng.
Cách Tìm ID Quy trình hoặc Tên Quy trình
Trước khi chấm dứt một tiến trình đang chạy, việc xác định ID Tiến trình (PID) hoặc tên tiến trình của nó là rất quan trọng bằng cách sử dụng lệnh 'ps' sau đây hiển thị thông tin về tất cả các quy trình đang chạy trên hệ thống với PID (ID quy trình) và các thông tin khác.
$ ps -ef
Nếu bạn muốn tìm một quy trình cụ thể theo tên PID, bạn có thể sử dụng lệnh grep sẽ liệt kê tất cả các quy trình đang chạy trên hệ thống và lọc kết quả để chỉ hiển thị những người chứa thuật ngữ 'mariadb'.
ps -ef | grep mariadb
Hoặc bạn có thể trực tiếp tìm PID của một quy trình theo tên sử dụng lệnh 'pgrep' như hình dưới đây.
pgrep mariadb
Cách Chấm dứt một tiến trình trong Linux
Trước khi bạn chấm dứt, dừng hoặc kết thúc một tiến trình, hãy nghĩ về quyền. Nếu bạn là người dùng gốc, bạn có thể dừng bất kỳ tiến trình nào, nhưng nếu bạn là người dùng bình thường, bạn cần thêm 'sudo' trước lệnh hoặc chuyển sang quyền root với 'su' để sử dụng lệnh chấm dứt.
Cú pháp thông thường cho lệnh 'kill' như sau:
kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)
Đối với lệnh 'kill', tên tín hiệu có thể là:
Rõ ràng từ hành vi trên:
- 'SIGTERM' là cách mặc định và an toàn nhất để chấm dứt một tiến trình.
- 'SIGHUP' là một cách an toàn hơn để chấm dứt một tiến trình so với 'SIGTERM'.
- 'SIGKILL' là cách không an toàn nhất trong ba trường hợp trên, chấm dứt một tiến trình mà không lưu trạng thái.
Trong Linux, có nhiều tín hiệu khác nhau bạn có thể sử dụng để dừng, kết thúc hoặc tạm dừng các tiến trình. Bạn có thể liệt kê tất cả các tín hiệu chấm dứt có sẵn cùng với tên và số tương ứng của chúng bằng cách sử dụng lệnh sau, nó sẽ liệt kê
kill -l
Mặc dù có nhiều tín hiệu khả dụng, nhưng trong hầu hết các trường hợp chúng ta chỉ sử dụng 'SIGKILL (9)' và 'SIGTERM (15)'
Để chấm dứt một tiến trình, chúng ta cần biết 'ID quy trình' của một tiến trình. Một 'Quy trình' là một phiên bản của một chương trình. Mỗi khi một chương trình bắt đầu, tự động một 'PID duy nhất' được tạo ra cho quy trình đó.
Mọi Quy trình trong Linux có một 'pid'. Quy trình đầu tiên khởi động khi Hệ thống Linux được khởi động là – 'quy trình init', vì vậy nó được gán giá trị '‘1‘' trong hầu hết các trường hợp.
'Init' là quy trình chính và không thể chấm dứt theo cách này, điều này đảm bảo quy trình chính không bị chấm dứt một cách tình cờ.' Init 'quyết định và cho phép chính nó bị chấm dứt, nơi cấp phép giảm chuẩn bị cho việc tắt hệ thống.
Trước khi chúng ta tiến hành và thực hiện một 'lệnh chấm dứt' quan trọng,
- Một người dùng có thể chấm dứt tất cả các quy trình của mình.
- Một người dùng không thể chấm dứt quy trình của một người dùng khác.
- Một người dùng không thể chấm dứt các quy trình Hệ thống đang sử dụng.
- Một người dùng gốc có thể chấm dứt quá trình cấp hệ thống và quá trình của bất kỳ người dùng nào.
Để chấm dứt quy trình 'mariadb' PID, sử dụng lệnh chấm dứt như sau.
kill -9 3383
Lệnh trên sẽ chấm dứt quy trình có 'pid' = '3383', trong đó 'PID' là một 'Giá trị Số' của tiến trình.
Một cách khác để thực hiện cùng một chức năng có thể được viết lại như sau.
kill -SIGTERM 3383
Tương tự '‘kill -9 PID‘' tương tự '‘kill -SIGKILL PID‘' và ngược lại.
Để xác nhận rằng quy trình đã bị chấm dứt, bạn có thể sử dụng lại lệnh 'ps'.
ps -ef | grep mariadb
Cách Chấm dứt Nhiều Tiến trình trong Linux
Để chấm dứt nhiều quy trình trong Linux bằng cách sử dụng các ID tiến trình (PID) của chúng, bạn có thể sử dụng lệnh 'kill' kết hợp với các số PID liên quan.
Đầu tiên, xác định PID của các quy trình bạn muốn chấm dứt bằng lệnh 'ps' hoặc 'pgrep' tương ứng.
ps aux | grep apache2
OR
pgrep apache2
Sau khi có các PID, sử dụng lệnh 'kill' để chấm dứt chúng.
kill -9 PID1 PID2 PID3
Cách Chấm dứt một Tiến trình trong Linux bằng Tên Tiến trình
Để chấm dứt một tiến trình bằng tên tiến trình, chúng tôi sẽ sử dụng lệnh 'pkill', là một phiên bản của lệnh 'kill' cho phép bạn đề cập đến tên tiến trình hoặc một mẫu để xác định một tiến trình.
Bạn phải biết tên quy trình trước khi chấm dứt, và nhập sai tên quy trình có thể gây rối cho bạn.
pkill mysqld
Nếu một quy trình có quá nhiều phiên bản và nhiều quy trình con, chúng ta có một lệnh 'killall' nhận tên quy trình làm đối số thay vì số quy trình.
Cách Chấm dứt một Tiến trình trong Linux bằng Lệnh Killall
Sự phân biệt chính giữa killall và kill là killall có thể kết thúc một quy trình theo tên của nó, trong khi lệnh kill dựa vào ID quy trình (pid).
Để chấm dứt tất cả các phiên bản mysql cùng với các quy trình con, sử dụng lệnh sau.
killall mysqld
OR
pkill mysqld
Bạn luôn có thể xác minh trạng thái của quy trình xem nó có đang chạy hay không, bằng cách sử dụng một trong các lệnh dưới đây.
systemctl status mysql
pgrep mysql
ps -aux | grep mysql
Các công cụ giám sát hệ thống đồ họa Linux như htop hoặc gnome-system-monitor cung cấp giao diện thân thiện với người dùng để tìm và chấm dứt quy trình.
Kết luận
Đó là tất cả những gì tôi có cho bây giờ. Tôi sẽ quay lại sớm với một chủ đề thú vị và bổ ích khác. Cho đến lúc đó, hãy tiếp tục theo dõi và kết nối với Tecmint, và chăm sóc sức khỏe của bạn. Đừng quên để lại phản hồi quý giá của bạn trong phần bình luận.