Hướng Dẫn Chi Tiết Cách “Giết” Tiến Trình Trong Linux: CLI và GUI (2025)

Hướng Dẫn Chi Tiết Cách “Giết” Tiến Trình Trong Linux: CLI và GUI (2025)

Chắc hẳn ai trong chúng ta cũng từng trải qua những ngày máy tính chạy chậm một cách bất thường, giật lag ngay cả với những tác vụ cơ bản nhất. Trong Windows, bạn có Task Manager để kiểm tra và tắt các tiến trình không quan trọng nhưng lại “ngốn” quá nhiều bộ nhớ. Tuy nhiên, trong Linux, bạn có cả một “kho vũ khí” các lệnh và công cụ GUI để quản lý các tác vụ này. Bài viết này sẽ hướng dẫn bạn các phương pháp dòng lệnh (CLI) và giao diện đồ họa (GUI) đơn giản để “giết” (terminate) một tiến trình trong Linux.

Nhưng trước khi đi sâu vào thế giới quản lý tiến trình trong Linux, hãy cùng tìm hiểu chính xác một tiến trình là gì và ID tiến trình (process ID) là gì trong hệ thống Linux.

Tiến Trình Trong Linux Là Gì?

Trong Linux, mỗi phiên bản đang chạy của một chương trình được gọi là “tiến trình” (process), trong khi mỗi tệp thực thi được gọi là một chương trình (program). Khi một chương trình được thực thi, một tiến trình sẽ được tạo và mỗi tiến trình được gán một số nhận dạng duy nhất gồm 5 chữ số, được gọi là “ID tiến trình” (process ID). Khi một tiến trình hoàn thành việc thực thi hoặc bị chấm dứt cưỡng bức, ID tiến trình của nó sẽ được gán cho tiến trình tiếp theo trong hàng đợi.

“Giết” Tiến Trình Qua Dòng Lệnh (CLI) Trong Linux

Mặc dù sử dụng terminal đôi khi có vẻ khó khăn hơn so với việc sử dụng các công cụ GUI cho các tác vụ cơ bản, nhưng việc quản lý các tiến trình khác nhau sẽ trở nên dễ dàng hơn nhiều khi bạn nắm bắt được các lệnh và các tùy chọn khác nhau của chúng.

Các Tín Hiệu Kết Thúc Tiến Trình (Termination Signals)

Khi bạn cố gắng “giết” một tiến trình từ GUI hoặc CLI trong Linux, kernel sẽ gửi một tín hiệu kết thúc (termination signal) đến tiến trình đó. Tiến trình sẽ hành động tương ứng, tùy thuộc vào tín hiệu nhận được. Mỗi tín hiệu này được gán một số cụ thể để chương trình hiểu nhanh chóng. Có rất nhiều loại tín hiệu kết thúc, nhưng chúng ta sẽ chỉ giải thích những tín hiệu cần thiết nhất ở đây:

Tín Hiệu Giá Trị Số Mô Tả
SIGHUP 1 Viết tắt của ‘Signal Hangup’. Được gửi khi terminal bị đóng.
SIGINT 2 Viết tắt của ‘Signal Interrupt’. Được gửi khi người dùng chấm dứt tiến trình.
SIGKILL 9 Viết tắt của ‘Signal Kill’. Được gửi khi bạn cần thoát một tiến trình ngay lập tức. Lưu ý: Sử dụng SIGKILL có thể gây mất dữ liệu nếu tiến trình đang thực hiện các thao tác ghi.
SIGTERM 15 Viết tắt của ‘Signal Termination’. Được gửi khi bạn cần chấm dứt một tiến trình và giải phóng tài nguyên tiêu thụ. Đây là tín hiệu được khuyến nghị sử dụng đầu tiên để tắt một tiến trình một cách “lịch sự”.
SIGSTOP 19 Viết tắt của ‘Signal Stop’. Được gửi khi bạn cần tạm dừng một tiến trình và tiếp tục nó sau. Tiến trình bị tạm dừng có thể được tiếp tục bằng tín hiệu SIGCONT.

Các tín hiệu được sử dụng phổ biến nhất là SIGKILL (9) và SIGTERM (15).

Xác Định ID Tiến Trình (Process IDs)

Trước khi bạn chấm dứt một tiến trình, bạn cần biết một số chi tiết của tiến trình đó, chẳng hạn như ID tiến trình, thời gian chạy, v.v. Để biết chi tiết của một tiến trình, hãy sử dụng lệnh ps:

ps

Với lệnh ps, bạn cần tìm kiếm tiến trình bằng cách cuộn và ghi lại tên của nó, điều này có thể khá rườm rà. Thay vào đó, bạn thậm chí có thể sử dụng lệnh grep với lệnh ps trong một pipeline, như hình dưới đây:

ps | grep

Để mọi thứ đơn giản hơn, có một lệnh riêng biệt chỉ hiển thị ID tiến trình của bất kỳ tiến trình đang chạy nào bạn cần biết. Cú pháp để sử dụng lệnh pidof là:

pidof

Xác định ID tiến trình trong LinuxXác định ID tiến trình trong Linux

Chấm Dứt Tiến Trình Bằng Lệnh kill

Khi bạn đã ghi lại ID tiến trình của tiến trình bạn muốn chấm dứt, lệnh phổ biến nhất được sử dụng để chấm dứt các chương trình trên hệ thống Linux của bạn là lệnh kill. Cú pháp để sử dụng lệnh kill là:

kill

Tham số là tùy chọn và lệnh kill gửi tín hiệu SIGTERM (15) theo mặc định. Bạn có thể gửi bất kỳ tín hiệu nào khác bằng giá trị số của nó hoặc tên tín hiệu thực tế từ bảng trên.

Chấm dứt tiến trình bằng lệnh kill trong LinuxChấm dứt tiến trình bằng lệnh kill trong Linux

Chấm Dứt Tiến Trình Bằng Lệnh pkill

Nếu bạn cảm thấy việc tìm kiếm ID tiến trình là bất tiện, bạn có thể sử dụng lệnh pkill. Nó tìm kiếm các tiến trình khớp với một mẫu và sau đó “giết” nó. Cú pháp để sử dụng lệnh pkill là:

pkill

Một số tùy chọn phổ biến để kết hợp với lệnh pkill là:

Tùy Chọn Mô Tả
-n Chỉ chọn các tiến trình mới nhất khớp với ID tiến trình.
-u Chọn các tiến trình thuộc sở hữu của một người dùng cụ thể.
-x Chọn các tiến trình khớp chính xác với mẫu. Điều này rất hữu ích để tránh “giết” nhầm các tiến trình có tên tương tự.

Điều này đặc biệt quan trọng khi nhiều người dùng đang làm việc trên các phiên bản khác nhau của cùng một chương trình trong cùng một hệ thống và một trong các phiên bản bắt đầu có một số hành vi bất ngờ. Ví dụ: trong ảnh chụp màn hình bên dưới, chúng ta đang “giết” phiên bản “gedit” thuộc sở hữu của người dùng ‘intel’ bằng lệnh pkill trong Linux:

pkill -u intel gedit

Giết tiến trình gedit bằng lệnh pkill trong LinuxGiết tiến trình gedit bằng lệnh pkill trong Linux

Chấm Dứt Tiến Trình Bằng Lệnh killall

Lệnh killall hoạt động tương tự như lệnh kill, nhưng nó “giết” tất cả các tiến trình khớp với tên tiến trình bất kể người dùng nào. Theo mặc định, nó gửi tín hiệu SIGTERM nếu không được chỉ định khác. Một điều thú vị cần lưu ý là lệnh killall không bao giờ có thể tự “giết” chính nó, nhưng có thể chấm dứt các phiên bản khác của lệnh killall. Cú pháp để sử dụng lệnh killall là:

killall

Một số tùy chọn để kết hợp với lệnh killall là:

Tùy Chọn Mô Tả
-r Giải thích process_name như một mẫu regex và sau đó “giết” các tiến trình khớp với mẫu đó. Cẩn thận khi sử dụng tùy chọn này, vì nó có thể “giết” các tiến trình không mong muốn.
-u “Giết” tiến trình được chỉ định thuộc sở hữu của một chủ sở hữu được chỉ định.
-o “Giết” các tiến trình được chỉ định cũ hơn (bắt đầu trước) một thời gian cụ thể.
-y “Giết” các tiến trình được chỉ định trẻ hơn (bắt đầu sau) thời gian cụ thể.

Lệnh killall có thể hữu ích để chấm dứt một loạt các tiến trình giống nhau hoặc thậm chí tất cả các tiến trình thuộc sở hữu của một chủ sở hữu cụ thể. Ở đây trong ví dụ của chúng tôi, chúng tôi đang “giết” tất cả các tiến trình “sleeping for 500 seconds” bằng lệnh killall trong Linux:

killall -v sleep

Giết tất cả các tiến trình có tên là sleep trong LinuxGiết tất cả các tiến trình có tên là sleep trong Linux

Chấm Dứt Tiến Trình Linux Bằng Lệnh top/htop

Phương pháp “giết” tiến trình này hữu ích khi bạn không biết tiến trình nào đang tiêu thụ nhiều tài nguyên nhất. Trong cả hai lệnh, bạn có thể điều hướng qua tất cả các tiến trình đang chạy hoặc thậm chí các tiến trình zombie và có thể kết thúc chúng nhanh chóng. Để sử dụng lệnh top để theo dõi tài nguyên của bạn, hãy sử dụng cú pháp trong Terminal:

top

Hiểu Đầu Ra:

Đầu ra chính của lệnh top được chia thành các cột, đó là:

  1. PID – Hiển thị ID tiến trình của tiến trình đang chạy.
  2. User – Hiển thị chủ sở hữu của tiến trình.
  3. PR – Hiển thị giá trị ưu tiên của tiến trình được hệ điều hành gán.
  4. NI – Hiển thị các giá trị “nice”, giống như gán các giá trị theo không gian người dùng để kiểm soát thủ công mức độ ưu tiên của một tác vụ.
  5. VIRT – Hiển thị lượng bộ nhớ ảo được tiến trình sử dụng.
  6. RES – Hiển thị lượng bộ nhớ vật lý được tiến trình sử dụng.
  7. SHR – Hiển thị lượng bộ nhớ được chia sẻ bởi các tiến trình khác.
  8. S – Hiển thị trạng thái hiện tại của tiến trình, có thể là:
    • D – Uninterruptible sleep (ngủ không thể gián đoạn)
    • R – Running (đang chạy)
    • S – Sleeping (đang ngủ)
    • T – Stopped (đã dừng)
    • Z – Zombie (tiến trình “xác sống”)
  9. %CPU – Hiển thị lượng CPU được tiến trình sử dụng theo tỷ lệ phần trăm.
  10. %MEM – Hiển thị lượng RAM được tiến trình sử dụng theo tỷ lệ phần trăm.
  11. TIME+ – Hiển thị tổng thời gian chạy của tiến trình.
  12. Command – Hiển thị lệnh nào đã được gọi cho tiến trình.

Nếu bạn không biết ID tiến trình của tác vụ bạn muốn “giết”, hãy điều hướng qua danh sách bằng các phím mũi tên hoặc tìm kiếm tên tiến trình trong bảng tiến trình trong Linux.

Để tìm kiếm tên tiến trình, nhấn ‘L’ trên bàn phím và nhập tên tiến trình bạn muốn tìm kiếm. Khi bạn tìm thấy tiến trình “xấu xa”, nhấn ‘k’ trên bàn phím để “giết” tiến trình. Bây giờ, hãy nhập ID tiến trình hoặc để nó ở tiến trình được đánh dấu hiện tại và nhấn ‘ENTER’. Tiếp theo, nhập tín hiệu kết thúc và sau đó nhấn ‘ENTER’ để “giết” chương trình. Để quay lại terminal, nhấn ‘q’ trên bàn phím.

Tìm kiếm tiến trình bằng lệnh top trong LinuxTìm kiếm tiến trình bằng lệnh top trong Linux

Nhập PID tiến trình bằng lệnh top trong LinuxNhập PID tiến trình bằng lệnh top trong Linux

Gửi tín hiệu kết thúc bằng lệnh top trong LinuxGửi tín hiệu kết thúc bằng lệnh top trong Linux

Mặc dù lệnh top hiển thị các chi tiết như ID tiến trình, mức tiêu thụ bộ nhớ và hơn thế nữa cho tất cả các tiến trình đang chạy, nhưng nó không phù hợp với người mới bắt đầu vì nó không hiển thị bất kỳ ánh xạ phím nào hoặc cách sử dụng nó. Mặt khác, lệnh htop có giao diện thân thiện với người dùng hơn, ngay cả đối với một công cụ dòng lệnh. Thêm vào đó, nó hiển thị tất cả các chi tiết trong một chế độ xem riêng biệt, do đó, nó không làm lộn xộn cửa sổ terminal. Nó không được cài đặt sẵn trong hầu hết các bản phân phối và bạn cần sử dụng lệnh sau để cài đặt htop trong Linux:

sudo apt install -y htop

Để sử dụng htop để quản lý các tiến trình trong Linux, hãy sử dụng lệnh bên dưới:

htop

Để “giết” một chương trình, hãy điều hướng đến tên tiến trình bạn muốn chấm dứt, nhấn ‘F9’ và sau đó nhấn Enter. Nếu bạn cần tìm kiếm và “giết” bất kỳ chương trình nào, hãy nhấn ‘F3’ trên bàn phím, nhập tên và nhấn Enter. Tên tiến trình sẽ được đánh dấu, nhấn F9 và sau đó nhấn Enter trên bàn phím để chấm dứt tiến trình.

Tìm kiếm tiến trình bằng lệnh htop trong LinuxTìm kiếm tiến trình bằng lệnh htop trong Linux

Giết tiến trình bằng lệnh htop trong LinuxGiết tiến trình bằng lệnh htop trong Linux

Làm cách nào để dừng tất cả các tiến trình trong Linux?

Nếu bạn cần dừng tất cả các tiến trình (ngoại trừ shell đăng nhập, init và các tiến trình dành riêng cho kernel) cho một người dùng cụ thể trong Linux, hãy sử dụng lệnh pkill hoặc lệnh killall theo cú pháp:

pkill -u <tên_người_dùng>

killall -u <tên_người_dùng>

Nếu bạn cần “giết” mọi tiến trình cho mọi người dùng bao gồm cả hệ thống init, hãy nhấn các phím ‘ALT + Prt Sc + o’ trên bàn phím. Lưu ý: Thao tác này có thể gây mất dữ liệu và nên được sử dụng một cách thận trọng.

Có ổn không khi kết thúc một tiến trình?

Khi bạn đóng bất kỳ tiến trình nền không cần thiết nào hoặc một tiến trình người dùng đang tiêu thụ nhiều bộ nhớ hệ thống, bạn sẽ giải phóng tài nguyên mà giờ đây có thể được sử dụng bởi các tiến trình khác. Nhưng, trước khi tắt bất kỳ tiến trình nào, hãy đảm bảo rằng bạn không “giết” một tiến trình hệ điều hành thiết yếu. Việc tắt nhầm tiến trình hệ thống có thể gây ra sự cố hoặc làm hỏng hệ thống.

Tiến trình nền trong Linux là gì?

Trong Linux, các tiến trình nền là các tiến trình có thể chạy mà không cần phiên bản shell hoặc bất kỳ sự can thiệp nào của người dùng. Chúng có thể được xem bằng bất kỳ lệnh nào – top, htop, ps, v.v.

CTRL + Z có tác dụng gì trong Linux?

Khi bạn sử dụng CTRL + Z trong Linux, nó sẽ gửi tín hiệu SIGTSTP, tín hiệu này tạm dừng tiến trình và gửi nó vào nền. Khi một tiến trình ở trạng thái tạm dừng ở nền, bạn không thể “giết” tiến trình đó cho đến khi nó được đưa trở lại tiền cảnh.

Tiến trình zombie là gì?

Một tiến trình đã bị người dùng “giết” nhưng vẫn chiếm bộ nhớ được gọi là tiến trình zombie. Các tiến trình zombie thường không gây ra vấn đề lớn, nhưng nếu có quá nhiều, chúng có thể chỉ ra một vấn đề trong chương trình.

“Giết” Tiến Trình Qua System Monitor Trong Linux

Nếu bạn cảm thấy phương pháp dòng lệnh khó khăn đối với bạn, bạn có thể sử dụng công cụ system monitor tích hợp sẵn có sẵn trên mọi bản phân phối Linux. Để tìm hiểu cách nó hoạt động, hãy mở công cụ system monitor từ menu Applications và làm theo các bước bên dưới.

1. Khi công cụ system monitor mở ra, bạn sẽ thấy ba tab ở trên cùng có tên — Processes, Resources và File System. Để quản lý các tiến trình của bạn, hãy chuyển đến tab “Processes”. Tại đây, bạn sẽ thấy tất cả các tiến trình đang chạy hiện tại của mình. Nhấn ‘CTRL+F’ để tìm kiếm tên tiến trình. Nhấp vào tên tiến trình bạn muốn chấm dứt và nhấp vào “End Process”.

Tìm kiếm tiến trình bằng System Monitor trong LinuxTìm kiếm tiến trình bằng System Monitor trong Linux

2. Sau đó, bạn sẽ nhận được một lời nhắc xác nhận xem bạn có muốn kết thúc tiến trình hay không. Hãy tiếp tục và nhấp vào nút “End Process” màu đỏ lớn để “giết” tiến trình trong Linux.

Giết tiến trình bằng System Monitor trong LinuxGiết tiến trình bằng System Monitor trong Linux

“Giết” các tiến trình “ngốn” nhiều bộ nhớ là một nhiệm vụ khá quan trọng mà mọi người dùng nên học. Trong bài viết này, chúng tôi đã trình bày cả phương pháp dòng lệnh, bao gồm các lệnh như killallpkill, cũng như các phương pháp GUI để “giết” các tiến trình trong Linux. Chúng tôi thậm chí đã trình bày chi tiết cách sử dụng các công cụ phổ biến như tophtop để quản lý các tiến trình trên PC Linux của bạn. Nếu bạn gặp bất kỳ sự cố nào khi sử dụng các công cụ này để “giết” một tiến trình, hãy cho chúng tôi biết trong phần bình luận bên dưới.