Home Máy chủ Linux Cách Kill Process ở Linux bằng Command Line

Cách Kill Process ở Linux bằng Command Line

by Lê Quyền
Published: Last Updated on
A+A-
Reset

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.

AZDIGI Tutorial
ps -ef
    
CleanShot 2024 01 10 at 01.53.17

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”.

AZDIGI Tutorial
ps -ef | grep apache2
    
CleanShot 2024 01 10 at 01.54.28

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.

AZDIGI Tutorial
pgrep apache2
    
CleanShot 2024 01 10 at 01.55.41

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à:

AZDIGI Tutorial
kill [signal hoặc option] PID(s)
    

Đối với lệnh kill, một signal có thể là:

Signal NameSignal ValueBehaviour
SIGHUP1Hangup
SIGKILL9Kill Signal
SIGTERM15Terminate
  • 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ê:

AZDIGI Tutorial
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)SIGTERM (15).

Cách Kill Process ở Linux bằng Command Line

Để 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.

AZDIGI Tutorial
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.

AZDIGI Tutorial
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.

AZDIGI Tutorial
ps -ef | grep apache2
    
CleanShot 2024 01 10 at 02.14.44

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.

AZDIGI Tutorial
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.

AZDIGI Tutorial
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.

AZDIGI Tutorial
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 killallkillKillall 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.

AZDIGI Tutorial
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.

AZDIGI Tutorial
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:

Đánh giá

Tham gia nhóm hỗ trợ Server - Hosting

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay

Bài viết cùng chuyên mục

AZDIGI – Không chỉ là đơn vị hàng đầu trong lĩnh vực Web Hosting và Máy chủ, chúng tôi mong muốn mang lại những kiến thức bổ ích nhất và luôn cập nhật thường xuyên cho cộng đồng người đam mê thiết kế website, công nghệ,…

Vui lòng không sao chép nội dung nếu chưa xin phép. Designed and Developed by PenciDesign