[PS Command] Những tùy chọn hữu ích khi sử dụng lệnh PS

30/12/2020

Đối với dân sysadmin nói riêng và người dùng Linux nói chung, lệnh PS có thể nói là một trong những “lệnh bất ly thân” mà anh/em nào dùng Linux cũng đều từng dăm ba lần sử dụng. Tuy nhiên, lệnh PS có rất nhiều tùy chọn, dùng sao cho hiệu quả và phát huy được tác dụng của lệnh PS nhỉ? Trong bài viết trước, Onet đã giới thiệu phần cơ bản về lệnh PS. Còn trong bài viết này, chúng tôi sẽ lọc ra các lệnh ps với các tùy chọn hoặc kết hợp cùng các lệnh khác để xử lý mỗi khi cần.

Lệnh PS phát huy trong các ngữ cảnh khi bạn cần xử lý các sự cố, xử lý các phản hồi của người dùng về tình trạng máy bị treo hoặc khi nghi ngờ có các tiến trình lạ do bị xâm nhập trái phép (hack) gì đó.

Do vậy một trong các bước kiểm tra căn bản là quan sát các tiến trình thông qua lệnh ps.

Nếu chỉ quan sát thông thường thì ta chỉ cần gõ lệnh ps với một vài tùy chọn dạng như sau

ps -xau  hoặc   ps -eof  hoặc thậm chí đơn giản nhất là  ps 

Tuy nhiên, với các lệnh trên thì hiển thị của PS vẫn chưa xoáy được vào các mục tiêu ta cần theo dõi. Ví dụ ở một số tình huống:

  • Tôi muốn biết tiến trình nào đang dùng nhiều RAM?
  • Tôi muốn biết tiến trình nào đang dùng nhiều CPU?
  • Tiến trình cha đang sinh ra các tiến trình con nào?
  • Tôi muốn quan sát theo thời gian thực (1s một lần) các tiến trình đang dùng nhiều RAM hoặc CPU nhất.
  • Tiến trình nào đang treo do I/O đang quá tải (tạm hiểu là disk đang quá tải ở việc đọc ghi).

Lệnh PS có làm được các việc trên không nhỉ? Câu trả lời chắc chắn là CÓ. Sau đây là các tùy chọn mà Onet cảm thấy ưng ý nhất, mời các bạn theo dõi và cùng thực hành.

1. Hiện thị các process và tiến trình con của nó

Nếu không có thêm tùy chọn, ta chỉ nhìn thấy các process và không hiển thị các tiến trình con của chúng. Để hiển thị tiến trình con nằm trong các tiến trình cha nào thì ta dùng tùy chọn ps -aef --forest.

Việc hiển thị này hữu ích khi ta xử lý tìm các tiến trình lạ và mối liên quan của chúng khi tìm hiểu các nguyên nhân chiếm nhiều CPU, RAM.

Ví dụ, tìm các tiến trình con của process có tên là nginx ta sẽ thực hiện như sau

ps -aef --forest | egrep nginx

Kết quả ta sẽ thấy như bên dưới

Nên sử dụng thêm lệnh grep để lọc theo tên các tiến trình cho gọn gàng.

2. Hiển thị các process sử dụng nhiều RAM nhất theo thứ tự từ cao xuống thấp.

 ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

Kết quả:

3. Hiển thị các process sử dụng nhiều CPU nhất từ cao tới thấp

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

Kết quả: Ta thấy tiến trình có PID 169789 đang sử dụng 67% CPU.

Đối với việc sử dụng thuần lệnh PS ở trên ta xem ở dạng tĩnh , để xem dạng thời gian thực ta dùng kết hợp với lệch watch.

4. Theo dõi xem process nào đang sử dụng nhiều CPU nhất

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu'

Kết quả của lệnh trên sẽ hiển thị giống như bên dưới, dữ liệu được cập nhật 1 giây một lần.

Để thoát khỏi cửa sổ trên, nhấn tổ hợp phím CTL + C để thoát.

5. Theo dõi xem process nào đang sử dụng nhiều RAM nhất

Sử dụng lệnh watch với tùy chọn -n 1 để hiển thị 1 giây một lần.

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem'

Kết quả của lệnh trên hiển thị như ảnh dưới

Để thoát khỏi cửa sổ trên, nhấn tổ hợp phím CTL + C để thoát.

6. Kiểm tra xem có process nào bị treo bởi trạng thái IOWait

Đây là trạng thái mà tiến trình gặp phải khi xuất hiện hiện tượng IOWait cao (thường là do ổ cứng bị quả tải về I/O). Lệnh này hữu ích khi kiểm tra xem hoạt động của database có bị chậm hay không.

Ta dùng một trong các cách bên dưới để kiểm tra

ps aux | awk '{if ($8 ~ "D") print $0}'

hoặc

watch -d -n 1 "(ps aux | awk '$8 ~ /D/ { print $0 }')"

Trong hướng dẫn này Onet đã chia sẻ lại các tùy chọn với PS mà chúng tôi dùng trong quá trình quản trị & vận hành các hệ thống. Nếu bạn thấy tâm đắc các tùy chọn với lệnh ps hoặc các lệnh khác, xin hãy để comment ở bên dưới nhé.

Tham khảo

  1. https://8gwifi.org/docs/linux-ps-commands.jsp
  2. https://onet.vn/ps-command-tim-hieu-va-huong-dan-su-dung/
ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

[Graylog] [Lab] [Phần 5] Hướng dẫn tạo Grok patterns với log SSH

Grok patterns là kỹ thuật xác định cấu trúc log data, có thể sử dụng grok pattens sẵn có hoặc tạo...
30/12/2020

Meet the Self-Hosted Movement

Cloud adoption rates have been growing for many years now, with 73 percent of companies planning to move to a fully software-defined...
28/12/2020

Setup VIM for Python Development

How to Set Up VIM Editor for Python Programming VIM is a customizable programmable text editor. You can do anything you...
28/12/2020