11 công dụng của lệnh ps trong Linux

Đối với quản trị viên hệ thống, ps là một công cụ được sử dụng thường xuyên. Lệnh ps trong Linux được sử dụng để liệt kê các tiến trình hiện đang chạy trên hệ thống, với nhiều chế độ lọc và hiển thị có sẵn thông qua flag và đối số.

Cú pháp của ps có thể hơi lạ. Thông thường ta sẽ tuân theo quy ước UNIX, sử dụng một dấu gạch ngang duy nhất trước mỗi flag. Cho đến nay, cú pháp đó được hỗ trợ rộng rãi nhất. Tuy nhiên, lệnh cũng có thể được chạy với cú pháp BSD, loại bỏ dấu gạch ngang có tiền tố và sử dụng cú pháp tên flag riêng biệt. Ví dụ, flag aux thay thế flag -ef phổ biến hơn. Hãy chắc chắn rằng bạn biết mình đang sử dụng cái nào.

1. Hiển thị tất cả các tiến trình

ps -ef

Hiển thị tiến trình

Lệnh ps hiển thị tất cả các tiến trình đang chạy với dữ liệu đầy đủ về mỗi tiến trình. Dữ liệu này bao gồm các cột hiển thị PID, loại terminal (TTY), thời gian chạy và tên lệnh.

2. Lọc theo người dùng

ps -e -u userName

Lệnh ps lọc kết quả và chỉ hiển thị các tiến trình thuộc sở hữu của username được chỉ định. Lệnh này cũng có thể được sử dụng mà không cần tiền tố.

3. Lọc theo tên tiến trình

Lọc tên tiến trình

ps -C name

Lệnh ps trên lọc kết quả theo tên tiến trình. Tìm kiếm không phân biệt chữ hoa chữ thường, nhưng tất cả những tên tiến trình đều ở dạng chữ thường sau khi lọc. Lệnh sẽ tìm kiếm thông qua tất cả các tiến trình mà không có tiền tố -e.

4. Lọc theo ID tiến trình

ps -ef -p 1234,5678,9012

Nếu biết ID của tiến trình đang chạy mà bạn muốn hiển thị, bạn có thể lọc một cách cụ thể bằng flag -p. Lệnh này có thể lấy nhiều PID làm đối số, được phân tách bằng một dấu phẩy và không có khoảng trắng.

5. Chuyển kết quả sang grep

ps -ef | grep worker

Chuyển kết quả sang grep

Nếu muốn linh hoạt hơn khi tìm kiếm các kết quả từ ps, bạn có thể chuyển kết quả sang grep. Mặc dù đây là sự kết hợp của nhiều lệnh, chứ không chỉ một lệnh ps thuần túy, nhưng đó là một phần thông thường của bất kỳ công cụ quản trị viên nào. Với grep, bạn có thể tìm kiếm bằng các biểu thức thông thường để tìm kết quả khớp với mẫu và hơn thế nữa.

6. Hiển thị các cột cụ thể

ps -e -o pid,uname,pcpu,pmem,comm

Hiển thị các cột

Flag -o thiết lập các tùy chọn hiển thị đầu ra cụ thể cho những kết quả của lệnh ps. Hãy xem danh sách đầy đủ các tùy chọn hiển thị tiêu chuẩn cho lệnh ps tại https://linux.die.net/man/1/ps.

7. Sắp xếp các tiến trình theo cách sử dụng

ps -e --sort=-pcpu -o pid,pcpu,comm

Cú pháp trên sắp xếp lệnh theo các cột được liệt kê. Tiền tố trừ (-) sắp xếp tính năng theo thứ tự giảm dần, còn tiền tố cộng (+) sắp xếp theo thứ tự tăng dần. Lệnh này cũng sử dụng flag -o để hiển thị các cột cụ thể, không nhất thiết phải sắp xếp.

8. Đổi tên tiêu đề cột

Đổi tiêu đề cột

ps -o pid=Process,ruser=RealUser,comm=Command

Khi sử dụng flag -o để tạo giao diện đầu ra do người dùng chỉ định, các cột có thể được đổi tên. Thêm một dấu bằng (=) và nhập tên mới mong muốn, sử dụng flag -o cho mỗi tiêu đề được đổi tên. Tiêu đề cũng có thể được ẩn trong các cột cụ thể bằng cách để trống phần tên sau dấu bằng. Bạn có thể trộn và kết hợp với các cột tên được đổi tên và theo mặc định. Chỉ cần chắc chắn sử dụng flag -o cho mỗi cột được đổi tên như dưới đây:

ps -e -o pid,pcpu=CPU -o pmem=RAM,comm

9. Hiển thị kết quả theo kiểu cây phân cấp

ps -e --forest

Sử dụng ASCII để tạo cấu trúc kiểu cây, hiển thị các tiến trình. Lệnh hiển thị những tiến trình con của các tiến trình lớn và sắp xếp những kết quả phù hợp. Để ẩn các “nhánh” con, hãy sử dụng -H thay cho --forest.

10. Hiển thị các thread bên trong tiến trình

ps -p 4041 -L

Hiển thị các thread

Flag -L chuyển đổi việc hiển thị cho mọi chức năng của ps trên màn hình. Lệnh này hữu ích nhất khi theo dõi các thread của một tiến trình cụ thể.

11. Hiển thị tất cả các tiến trình root

ps -f -U root -u root

Hiển thị các tiến trình root

Lệnh ps thực hiện tìm kiếm cho tất cả các tiến trình root đang chạy một cách hiệu quả. Lệnh này cho thấy chúng ở định dạng đầy đủ nhờ flag -f. Bạn có thể kết hợp nó với flag -o để tùy chỉnh đầu ra.

Mặc dù nhiều flag kiểu UNIX phù hợp hơn với những lệnh terminal khác, nhưng các lệnh BSD có thể hiển thị thông tin theo nhiều định dạng khác nhau và đôi khi, hữu ích hơn. Nếu bạn thích tìm hiểu về các flag kiểu BSD, hãy xem trang ps man sau: https://linux.die.net/man/1/ps.

Chúc bạn thực hiện thành công!

Thứ Tư, 22/05/2019 17:01
52 👨 638