Nội dung
Trong Linux, việc tiêu diệt 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ề quá trình tiêu diệt tiến trình 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 trên Linux.
Linux Process là gì ?
Nói một cách đơ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ó một số nhận dạng đặc biệt riêng của mình (PID). Tuy nhiên, đôi khi một chương trình đang chạy, hoặc tiến trình, có thể xử lý không đúng cách hoặc có thể ngừng phản hồi hoặc sử dụng 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 “tiêu diệt” tiến trình và đây là nơi lệnh kill trở nên 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) đến các tiến trình đang chạy, yêu cầu chúng thoát ra lịch sự hoặc bị chấm dứt một cách mạnh mẽ.
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ỳ tiến trình tự động nào.
- Dừng một tiến trình đã bắt đầu một cách tình cờ.
- Dừng một tiến trình sử dụng quá nhiều bộ nhớ.
- Chấm dứt một cách mạnh mẽ bất kỳ tiến trình đang chạy nào trong Linux.
- Dừng một tiến trình đang chạy ẩn sau nền.
Sử dụng lệnh kill từ /usr/bin mang lại cho bạn một số tính năng bổ sung để tiêu diệt một tiến trình theo tên tiến trình bằng cách sử dụng pkill, nhận dạng tiến trình bằng tên của chúng.
Cách tìm PID hoặc tên Process
Trước khi chấm dứt một tiến trình đang chạy, việc xác định Process ID (PID) hoặc tên của nó bằng cách sử dụng lệnh ps sau đây để hiển thị thông tin về tất cả các tiến trình đang chạy trên hệ thống với PID (Process ID) và thông tin khác.
ps -ef
Nếu bạn muốn tìm một PID cụ thể theo tên tiến trình, bạn có thể sử dụng lệnh grep
sẽ liệt kê tất cả các tiến trình đang chạy trên hệ thống và lọc kết quả để chỉ hiển thị những cái chứa thuật ngữ “apache2”.
ps -ef | grep apache2
Hoặc bạn có thể trực tiếp tìm PID của một tiến trình bằng tên sử dụng lệnh pgrep
như sau.
pgrep apache2
Cách KILL một Process 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ĩ đến quyền hạn. Nếu bạn là người dùng root, 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 thông 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 chung cho lệnh kill là:
kill [signal hoặc option] PID(s)
Đối với lệnh kill, một signal có thể là:
Signal Name | Signal Value | Behaviour |
SIGHUP | 1 | Hangup |
SIGKILL | 9 | Kill Signal |
SIGTERM | 15 | Terminate |
- 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à cách ít 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 số ba cách trên, để chấm dứt một tiến trình mà không lưu lại dữ liệu.
Trong Linux, có nhiều signal 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 kill có sẵn với tên và số tương ứng của chúng bằng lệnh sau, sẽ liệt kê:
kill -l
Mặc dù có nhiều signal 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 Process ID của một tiến trình. Mỗi tiến trình trong Linux đều có một pid. Tiến trình đầu tiên bắt đầu khi Hệ thống Linux được khởi động là quá trình init, do đó nó được gán một giá trị ‘1’ trong hầu hết các trường hợp.
Init là quá trình chính và không thể bị chấm dứt theo cách này, điều này đảm bảo rằng quá 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 lệnh kill chỉ là một yêu cầu tắt máy.
Trước khi chúng ta tiến lên và thực hiện một lệnh kill, có một số điểm quan trọng cần lưu ý:
- 1 User có thể chấm dứt tất cả các tiến trình của mình.
- 1 User dùng không thể chấm dứt tiến trình của người dùng khác.
- 1 User dùng không thể chấm dứt các tiến trình mà Hệ thống đang sử dụng.
- 1 User Root 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 quá trình apache2 với PID, sử dụng lệnh kill như sau.
kill -9 874
Lệnh trên sẽ chấm dứt tiến trình có pid=874, trong đó PID là Giá trị Số của tiến trình.
Một cách khác để thực hiện chức năng tương tự có thể được viết lại như sau.
kill -SIGTERM 874
Tương tự, ‘kill -9 PID
‘ tương đương với ‘kill -SIGKILL PID
‘ và ngược lại.
Để xác nhận rằng quá trình đã kết thúc, bạn có thể sử dụng lại lệnh ps
.
ps -ef | grep apache2
Cách KILL nhiều Process trong Linux
Để chấm dứt nhiều tiến trình trong Linux bằng các Process IDs (PIDs) của chúng, bạn có thể sử dụng lệnh kill kết hợp với các số PID tương ứng.
Đầu tiên, xác định các PID của các tiến trình bạn muốn chấm dứt bằng lệnh ps
hoặc pgrep
.
ps aux | grep apache2 Hoặc pgrep apache2
Khi bạn có các PID, sử dụng lệnh kill để chấm dứt chúng.
kill -9 PID1 PID2 PID3
Cách KILL Process trong Linux bằng tên Process
Để chấm dứt một tiến trình bằng cách sử dụng tên tiến trình, chúng ta sẽ sử dụng lệnh pkill, 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 để định vị một tiến trình.
Bạn phải biết tên tiến trình trước khi chấm dứt, và nhập sai tên tiến trình có thể gây lỗi.
pkill mysqld
Nếu một tiến trình có quá nhiều phiên bản và nhiều tiến trình con, chúng ta có lệnh ‘killall‘ nhận tên tiến trình làm đối số thay vì số tiến trình.
Cách KILL một Process trong Linux bằng lệnh Killall
Sự phân biệt chính giữa killall và kill là Killall
có thể chấm dứt một tiến trình theo tên của nó, trong khi lệnh kill
phụ thuộc vào Process ID (pid).
Để chấm dứt tất cả các phiên bản mysql
cùng với các tiến trình con, sử dụng lệnh như sau.
killall mysqld Hoặc pkill mysqld
Bạn luôn có thể xác minh trạng thái của tiến trình xem nó đang chạy hay không, bằng cách sử dụng một trong những 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 trên 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 các tiến trình.
Kết thúc
Chấm dứt tiến trình trên Linux từ dòng lệnh là một kỹ năng quan trọng. Việc hiểu rõ về tín hiệu và cách chúng tương tác với các tiến trình sẽ giúp bạn quản lý hệ thống một cách hiệu quả. Hãy luôn cân nhắc và sử dụng cẩn thận khi chấm dứt một tiến trình để tránh mất dữ liệu quan trọng hoặc gây ra vấn đề không mong muốn.
Chúc bạn thực hiện thành công.
Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:
- Hotline 247: 028 888 24768
- Ticket/Email: Bạn dùng email đăng ký dịch vụ gửi trực tiếp về: support@azdigi.com.