ps command in linux

Lệnh ps trong Linux: "Soi" quy trình hệ thống từ A đến Z

Bạn có bao giờ tò mò về những gì đang diễn ra "hậu trường" trên hệ thống Linux của mình? Liệu có ứng dụng nào đang "ngốn" quá nhiều tài nguyên, hay quy trình nào "treo" cứng khiến máy tính chậm chạp? Câu trả lời nằm trong lệnh ps – một công cụ mạnh mẽ giúp bạn "soi" tận tường mọi quy trình đang chạy.

Trong bài viết này, chúng ta sẽ cùng nhau khám phá lệnh ps từ cơ bản đến nâng cao, từ cách liệt kê các quy trình đơn giản đến việc lọc và sắp xếp thông tin để tìm ra chính xác những gì bạn cần. Hãy cùng bắt đầu nhé!

ps là gì và tại sao nó lại quan trọng?

Lệnh ps (viết tắt của "process status") là một tiện ích dòng lệnh trong Linux và các hệ điều hành Unix-like khác, cho phép bạn xem thông tin về các quy trình đang chạy trên hệ thống. Nó cung cấp một "bức tranh" toàn cảnh về các quy trình, bao gồm ID quy trình (PID), người dùng sở hữu, mức sử dụng CPU và bộ nhớ, trạng thái hiện tại và lệnh đã được sử dụng để khởi động quy trình.

Tại sao ps lại quan trọng? Nó giúp bạn:

  • Giám sát hệ thống: Theo dõi các quy trình đang chạy để phát hiện các vấn đề tiềm ẩn như quá tải CPU hoặc bộ nhớ.
  • Gỡ lỗi: Xác định các quy trình gây ra lỗi hoặc treo máy.
  • Quản lý tài nguyên: Kiểm soát việc sử dụng tài nguyên của các quy trình để tối ưu hóa hiệu suất hệ thống.
  • Bảo mật: Phát hiện các quy trình lạ hoặc độc hại có thể đang chạy trên hệ thống.

Cú pháp cơ bản của lệnh ps

Cú pháp đơn giản nhất của lệnh ps là:

ps [options]

Trong đó, options là các tùy chọn để điều chỉnh đầu ra của lệnh. Nếu không có tùy chọn nào được chỉ định, ps sẽ hiển thị các quy trình đang chạy thuộc sở hữu của người dùng hiện tại trong phiên terminal hiện tại.

Các tùy chọn thường dùng của lệnh ps

Lệnh ps có rất nhiều tùy chọn, nhưng dưới đây là một số tùy chọn phổ biến nhất mà bạn sẽ thường xuyên sử dụng:

  • ps aux: Hiển thị thông tin về tất cả các quy trình đang chạy trên hệ thống, bất kể người dùng sở hữu. a hiển thị quy trình của tất cả người dùng, u hiển thị thông tin chi tiết, x hiển thị quy trình không gắn với terminal.
  • ps -ef: Tương tự như ps aux, nhưng sử dụng định dạng đầu ra khác (System V). e hiển thị quy trình của tất cả người dùng, f hiển thị thông tin đầy đủ (full format).
  • ps -u [username]: Hiển thị các quy trình thuộc sở hữu của người dùng được chỉ định. Ví dụ: ps -u john.
  • ps -p [pid]: Hiển thị thông tin về quy trình có ID quy trình (PID) được chỉ định. Ví dụ: ps -p 1234.
  • ps --forest: Hiển thị các quy trình dưới dạng cây, giúp bạn dễ dàng thấy mối quan hệ cha-con giữa các quy trình.
  • ps -o [format]: Chỉ định các cột thông tin nào sẽ được hiển thị. Ví dụ: ps -o pid,user,cpu,mem,command.

Ví dụ thực tế và cách sử dụng lệnh ps

Để hiểu rõ hơn về cách sử dụng lệnh ps, hãy cùng xem một số ví dụ cụ thể:

  1. Liệt kê tất cả các quy trình đang chạy:
    ps aux

    Lệnh này sẽ hiển thị một danh sách dài các quy trình, với các cột thông tin như USER (người dùng sở hữu), PID (ID quy trình), %CPU (mức sử dụng CPU), %MEM (mức sử dụng bộ nhớ), VSZ (kích thước bộ nhớ ảo), RSS (kích thước bộ nhớ thực), TTY (terminal liên kết), STAT (trạng thái quy trình), START (thời gian bắt đầu) và COMMAND (lệnh đã sử dụng để khởi động quy trình).

  2. Tìm quy trình đang sử dụng nhiều CPU nhất:
    ps aux --sort=-%cpu | head -10

    Lệnh này sẽ sắp xếp các quy trình theo mức sử dụng CPU giảm dần (--sort=-%cpu) và hiển thị 10 quy trình đầu tiên (head -10).

  3. Tìm quy trình đang sử dụng nhiều bộ nhớ nhất:
    ps aux --sort=-%mem | head -10

    Tương tự như trên, nhưng sắp xếp theo mức sử dụng bộ nhớ giảm dần.

  4. Tìm quy trình có tên "firefox":
    ps aux | grep firefox

    Lệnh này sử dụng grep để lọc danh sách quy trình và chỉ hiển thị các quy trình có chứa từ "firefox" trong tên.

  5. Hiển thị thông tin chi tiết về một quy trình cụ thể (ví dụ, PID 1234):
    ps -p 1234 -o pid,user,cpu,mem,command

    Lệnh này chỉ hiển thị thông tin về quy trình có PID là 1234, và chỉ hiển thị các cột PID, USER, CPU, MEM và COMMAND.

So sánh các tùy chọn ps aux, ps -ef, top và htop

Có nhiều công cụ khác nhau để giám sát quy trình trong Linux, vậy ps aux và ps -ef khác gì nhau, và chúng khác gì so với top và htop?

Công cụ Mô tả Ưu điểm Nhược điểm
ps aux Hiển thị tất cả các quy trình đang chạy, sử dụng định dạng BSD. Đơn giản, dễ sử dụng, hiển thị thông tin chi tiết. Đầu ra tĩnh, không cập nhật theo thời gian thực.
ps -ef Hiển thị tất cả các quy trình đang chạy, sử dụng định dạng System V. Tương tự ps aux, nhưng có thể hiển thị thông tin đầy đủ hơn về quy trình cha. Đầu ra tĩnh, không cập nhật theo thời gian thực.
top Hiển thị danh sách các quy trình đang chạy, được sắp xếp theo mức sử dụng CPU theo thời gian thực. Cập nhật theo thời gian thực, cung cấp thông tin tổng quan về hiệu suất hệ thống. Giao diện dòng lệnh, khó sử dụng hơn so với các công cụ đồ họa.
htop Tương tự top, nhưng có giao diện đồ họa, màu sắc và dễ sử dụng hơn. Giao diện thân thiện, dễ dàng thao tác, cung cấp nhiều thông tin chi tiết. Cần cài đặt thêm, có thể tiêu tốn nhiều tài nguyên hơn top.

Nhìn chung, ps aux và ps -ef phù hợp để xem nhanh thông tin về các quy trình đang chạy, trong khi top và htop phù hợp để giám sát hiệu suất hệ thống theo thời gian thực.

Mẹo và thủ thuật khi sử dụng lệnh ps

  • Kết hợp với grep để lọc kết quả: Sử dụng grep để tìm các quy trình cụ thể dựa trên tên, người dùng hoặc bất kỳ thông tin nào khác.
  • Sử dụng --sort để sắp xếp kết quả: Sắp xếp các quy trình theo mức sử dụng CPU, bộ nhớ hoặc bất kỳ cột thông tin nào khác để dễ dàng tìm ra các quy trình "ngốn" tài nguyên.
  • Tạo alias cho các lệnh ps phức tạp: Nếu bạn thường xuyên sử dụng các lệnh ps phức tạp, hãy tạo alias để tiết kiệm thời gian gõ lệnh. Ví dụ: alias psmem='ps aux --sort=-%mem | head -10'.
  • Sử dụng watch để theo dõi kết quả theo thời gian thực: Lệnh watch cho phép bạn chạy một lệnh định kỳ và hiển thị kết quả trên màn hình. Ví dụ: watch -n 1 'ps aux --sort=-%cpu | head -10' sẽ chạy lệnh ps mỗi giây và hiển thị 10 quy trình đang sử dụng nhiều CPU nhất.

FAQ về lệnh ps

  1. Làm thế nào để dừng một quy trình bằng lệnh ps?

    Lệnh ps chỉ dùng để xem thông tin về quy trình, không dùng để dừng quy trình. Để dừng một quy trình, bạn cần sử dụng lệnh kill hoặc killall, kết hợp với PID của quy trình (lấy từ lệnh ps). Ví dụ: kill 1234 hoặc killall firefox.

  2. Sự khác biệt giữa VSZ và RSS là gì?

    VSZ (Virtual Set Size) là kích thước bộ nhớ ảo mà quy trình đang sử dụng, bao gồm cả bộ nhớ đã được swap ra ổ cứng. RSS (Resident Set Size) là kích thước bộ nhớ thực (RAM) mà quy trình đang sử dụng.

  3. Làm thế nào để xem cây quy trình trong Linux?

    Bạn có thể sử dụng lệnh ps --forest hoặc pstree để xem cây quy trình.

Kết luận

Lệnh ps là một công cụ vô cùng hữu ích cho bất kỳ ai sử dụng Linux. Bằng cách nắm vững các tùy chọn và cách sử dụng của lệnh này, bạn có thể dễ dàng giám sát hệ thống, gỡ lỗi và quản lý tài nguyên một cách hiệu quả. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để bắt đầu sử dụng lệnh ps một cách tự tin. Chúc bạn thành công!

Last Updated : 21/08/2025