Tin tức và phân tích của tất cả các thiết bị di động

Cách tắt một tiến trình trong Linux

Tất cả chúng ta đều từng trải qua những ngày máy tính chạy cực kỳ chậm và gặp khó khăn khi thực hiện ngay cả những tác vụ cơ bản. TRONG Windowsbạn chỉ có Windows Trình quản lý tác vụ để kiểm tra và tiêu diệt các tiến trình không quá quan trọng nhưng tiêu tốn lượng bộ nhớ khổng lồ. Tuy nhiên, trong Linux, bạn có toàn bộ kho lệnh và công cụ GUI để quản lý các tác vụ này. Trong bài viết này, chúng tôi sẽ trình bày một số phương thức dòng lệnh (CLI) dễ dàng cũng như các phương thức GUI về cách tắt một tiến trình trong Linux.

Chấm dứt quy trình trong Linux (2023)

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

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

Trong Linux, mỗi phiên bản hiện đang chạy của một chương trình được gọi là một “quy trình”, trong khi mỗi tệp thực thi được gọi là một chương trình. Khi bất kỳ chương trình nào được thực thi, một tiến trình sẽ được tạo ra và mỗi tiến trình được gán một mã duy nhất 5-số nhận dạng chữ số được gọi là “ID tiến trình”. Khi một tiến trình đã thực thi xong hoặc bị chấm dứt một cách 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 dòng.

Giết tiến trình thông qua dòng lệnh trong Linux

Mặc dù việc sử dụng thiết bị đầu cuối đôi khi có vẻ khó khă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 quy 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.

Tín hiệu chấm dứt

Khi bạn cố gắng tắt một tiến trình từ GUI hoặc CLI trong Linux, kernel sẽ gửi tín hiệu kết thúc tới tiến trình đó. Quá trình hoạt độ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 có thể hiểu nhanh chóng. Có nhiều loại tín hiệu kết thúc, nhưng chúng tôi chỉ giải thích những loại tín hiệu thiết yếu ở đây:

Giá trị số Tín hiệuMô tả
ĐĂNG KÍ1Nó là viết tắt của ‘Tín hiệu gác máy’
Nó được gửi khi thiết bị đầu cuối được đóng lại.
ĐĂNG NHẬP2Nó là viết tắt của ‘Ngắt tín hiệu’
Nó được gửi khi người dùng kết thúc quá trình.
SIGKILL9Nó là viết tắt của ‘Tín hiệu tiêu diệt’
Nó được gửi khi bạn cần thoát khỏi một tiến trình ngay lập tức
SIGTERM15Nó là viết tắt của ‘Chấm dứt tín hiệu’
Nó được gửi khi bạn cần chấm dứt một quá trình và giải phóng các tài nguyên đã tiêu thụ
SIGSTOP19 – dành cho ARM, x86
17 – cho ALPHA
23 – đối với MIPS
24 – cho PA-RISC
Nó là viết tắt của ‘Dừng tín hiệu’
Nó được gửi khi bạn cần tạm dừng một quá trình và tiếp tục lại nó sau

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

Trước khi kết thúc một tiến trình, bạn cần biết một số chi tiết của tiến trình như ID tiến trình, thời gian chạy, v.v. Để biết chi tiết về 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 quy trình bằng cách cuộn và ghi lại tên của nó, việc này có thể gây khó khăn. Thay vào đó, bạn thậm chí có thể sử dụng lệnh grep với lệnh ps trong một đường dẫn, như minh họa bên dưới:

ps | grep

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

pidof

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

giết

Tham số là tùy chọn và lệnh kill sẽ 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 theo giá trị số hoặc tên tín hiệu thực tế từ bảng trên.

Chấm dứt quá trình sử dụng lệnh pkill

Nếu bạn cảm thấy việc tìm kiếm id tiến trình 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 đó loại bỏ nó. Cú pháp sử dụng lệnh pkill là:

pkill

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

Tùy chọnMô tả
-NChỉ chọn các quy trình mới nhất khớp với id quy trình
-uChọn các quy trình thuộc sở hữu của một người dùng cụ thể
-xChọn các quy trình khớp chính xác với mẫu

Đ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 không mong muốn. Ví dụ: trong ảnh chụp màn hình bên dưới, chúng tôi đang loại bỏ phiên bản “gedit” do người dùng ‘intel’ sở hữu bằng cách sử dụng lệnh pkill trong Linux:

pkill -u intel gedit

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. Theo mặc định, nó sẽ 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ự hủy nhưng có thể chấm dứt các trường hợp 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 để ghép nối với lệnh killall là:

Tùy chọnMô tả
-rGiải thích tên tiến trình dưới dạng mẫu biểu thức chính quy và sau đó loại bỏ các quy trình khớp với mẫu đó
-ugiết chết quá trình được chỉ định thuộc sở hữu của một chủ sở hữu được chỉ định.
-oGiết các quy trình được chỉ định cũ hơn (bắt đầu trước) so với thời gian cụ thể.
-yGiết các tiến trình được chỉ định sớm 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 quy trình giống nhau hoặc thậm chí tất cả các quy 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 sẽ loại bỏ tất cả các quá trình “ngủ trong 500 giây” bằng cách sử dụng lệnh killall trong Linux:

killall -v ngủ

Chấm dứt tiến trình Linux bằng lệnh top/htop

Phương pháp tiêu diệt tiến trình này rất hữu ích khi bạn không biết tiến trình nào đang tiêu tốn tối đa tài nguyên. 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 một cách nhanh chóng. Để sử dụng lệnh top để giám sát tài nguyên của bạn, hãy sử dụng cú pháp trong Terminal:

đứng đầu

Hiểu đầu ra:

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

  1. PID – hiển thị ID tiến trình của tiến trình đang chạy
  2. Người dùng – hiển thị chủ sở hữu của quá trình
  3. quan hệ công chúng – hiển thị giá trị ưu tiên của tiến trình được hệ điều hành chỉ định
  4. NI – hiển thị các giá trị Nice giống như gán các giá trị khoảng cách giữa người dùng để kiểm soát mức độ ưu tiên của tác vụ theo cách thủ công.
  5. VIRT – hiển thị dung lượng bộ nhớ ảo được sử dụng bởi tiến trình.
  6. RES – hiển thị dung lượng bộ nhớ vật lý được sử dụng bởi tiến trình
  7. SHR – hiển thị dung 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 quá trình có thể là:
    • D – giấc ngủ không bị gián đoạn
    • R – đang chạy
    • S – ngủ
    • T – dừng lại
    • Z – xác sống
  9. %CPU – Hiển thị số lượng CPU được sử dụng bởi tiến trình theo tỷ lệ phần trăm
  10. %MEM – Hiển thị dung lượng RAM được sử dụng bởi tiến trình theo tỷ lệ phần trăm
  11. THỜI GIAN+ – Hiển thị tổng thời gian chạy của tiến trình
  12. Yêu cầu – 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ụ mình muốn loại bỏ, 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 quy trình trong bảng quy trình trong Linux.

Để tìm kiếm tên quy trình, nhấn ‘L’ trên bàn phím và nhập tên quy trình bạn muốn tìm kiếm. Một khi bạn tìm thấy quá trình bất chính, nhấn ‘k’ trên bàn phím để kết thúc quá trình. Bây giờ, hãy nhập ID tiến trình hoặc để nó ở quy trình hiện được đánh dấu và nhấn ‘ENTER’. Tiếp theo, nhập tín hiệu kết thúc rồi nhấn ‘ENTER’ để tắt chương trình. Để quay lại thiết bị đầu cuối, nhấn ‘q’ trên bàn phím.

Mặc dù lệnh trên cùng hiển thị các chi tiết như ID tiến trình, mức tiêu thụ bộ nhớ, v.v. cho tất cả các tiến trình đang chạy, nhưng nó không phù hợp lắm cho người mới bắt đầu vì nó không hiển thị bất kỳ ánh xạ chính 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 hơn với người dùng, ngay cả đối với một công cụ dòng lệnh. Ngoài ra, 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:

cài đặt sudo apt -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

Để tắt chương trình, hãy điều hướng đến tên quy trình bạn muốn chấm dứt, nhấn ‘F9’ rồi nhấn Enter. Nếu bạn cần tìm kiếm và hủy 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. Các tên quy trình sẽ được đánh dấunhấn F9 rồi nhấn Enter trên bàn phím để kết thúc quá trình.

Giết một tiến trình thông qua System Monitor trong Linux

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

1. Khi công cụ giám sát hệ thống mở ra, bạn sẽ thấy ba tab ở trên cùng có tên – Quy trình, Tài nguyên và Hệ thống tệp. Để quản lý các quy trình của bạn, hãy đi tới Tab “Quy trình”. Tại đây, bạn sẽ thấy tất cả các tiến trình hiện đang chạy của mình. Nhấn ‘CTRL+F’ để tìm kiếm tên quy trình. Nhấp vào tên quy trình bạn muốn chấm dứt và nhấp vào “Kết thúc quá trình”.

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

Các câu hỏi thường gặp

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ừ các tiến trình đăng nhập shell, init và kernel cụ thể) 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

killall -u

Nếu bạn cần tắ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.

Có thể kết thúc một quá trình?

Khi bạn đóng bất kỳ quy trình nền không cần thiết nào hoặc quy trình người dùng đang tiêu tốn nhiều bộ nhớ hệ thống, bạn sẽ giải phóng các tài nguyên mà giờ đây các quy trình khác có thể sử dụng. Tuy nhiên, 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 tắt một tiến trình thiết yếu của hệ điều hành.

Các 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.

Quá trình zombie là gì?

Một tiến trình đã bị người dùng giết chết nhưng vẫn đang chiếm giữ bộ nhớ được gọi là tiến trình zombie.

CTRL + Z làm gì trong Linux?

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

Tiêu diệt các tiến trình trong Linux một cách dễ dàng

Việc loại bỏ các tiến trình ngốn bộ nhớ là một nhiệm vụ khá quan trọng mà mọi người dùng nên tìm hiểu. 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ư killall và pkill, cũng như các phương thức GUI để hủy các tiến trình trong Linux. Chúng tôi thậm chí còn trình bày chi tiết cách sử dụng các công cụ phổ biến như top và htop để quản lý các quy trình trên PC Linux của bạn. Nếu bạn gặp phải bất kỳ vấn đề nào khi sử dụng các công cụ này để hủy một quy trình, hãy cho chúng tôi biết trong phần nhận xét bên dưới.