Lệnh TOP là một trong những lệnh cực kì quan trong cho admin quản trị hệ thống linux. top là một công cụ trong Linux giúp bạn có thể theo dõi tình trạng hệ thống, các process đang chạy, CPU, Memory theo thời gian thực.
Tương tự Task manager trên windows, Lệnh TOP giúp cho admin có thể giám sát hệ thống của mình một cách chuyên nghiệp và nắm rõ từng thông tin của hệ thống.
Khi khởi động với lệnh TOP bạn có thể thực hiện duyệt các process đang chạy trên hệ thống bằng phím PAGE UP và PAGE DOWN, để thoát khỏi giao diện chương trình TOP bạn đơn giản nhấn q hoặc nhấn tổ hợp phím ctrl + c .
Các khu vực của TOP : khu vực tổng quan.
Hang đầu tiên của giao diện top được chia thành 2 khu vực khác nhau. khu vực đầu tiên là khu vực tổng quan, giới thiệu về các thành phần ít thay đổi, sơ lược hệ thống cũng như tóm tắt về hệ thống.
Thời gian hệ thống(VPS time), thời gian hoạt động và phiên người dùng
Ở phía trên cùng bên trái của màn hình (như được đánh dấu trong ảnh chụp màn hình ở trên), trên cùng hiển thị thời gian hiện tại của VPS. Tiếp theo là thời gian hoạt động của hệ thống, cho chúng ta biết thời gian mà hệ thống đã chạy.
Chẳng hạn, như ví dụ trên, thời gian hiện tại là 14:28:19 và hệ thống đã hoạt động được 43 ngày, 22 giờ và 53 phút.
Tiếp đến là số phiên người dùng hoạt động.
ở ví dụ trên là không có phiên nào hoạt động. Các phiên này có thể được thực hiện trên TTY hoặc PTY .
Sử dụng bộ nhớ ram
Phần này hiển thị chi tiết bộ nhớ ram, swap đang được phân phối và sử dụng bao gồm: Tổng dung lượng ram/swap hiện có, số lượng đã sử dụng, trống , hoặc đang phân phối làm buff/cache.
Task.
Phần Task hiển thị số liệu thống kê về các tiến trình đang chạy trên hệ thống của bạn. Ví dụ, trong ảnh chụp màn hình ở trên, có 27 tiến trình đang chạy.
Các tiến trình thực hiện kết hợp giữa các tác vụ I/O và CPU xử lý. CPU không hoạt động khi tiến trình đang thực thi I/O, vì vậy trong khoảng thời gian đợi I/O thì CPU sẽ thực thi các tiến trình khác. Ngoài ra thì HĐH vẫn cho phép một quy trình nhất định luôn được thực thi trong một thời gian rất nhỏ và chuyển qua quy trình khác, không phải tiến trình phải thực hiện xong mới qua tiến trình khác, điều này được hiểu như multitask, giúp tối ưu hoá hiệu năng sử dụng CPU của bạn. Về cơ bản thì có các trạng thái như:
- Running (R): Một tiến trình ở trạng thái running được hiểu là tiến trình này đang thực thi hoặc đang ở trạng thái hàng đợi và sẵn sàng thực thi .
- Interruptible sleep (S): Các tiến trình ở trạng thái này đang chờ một sự kiện hoàn tất.
- Uninterruptible sleep (D): Trong trường hợp này, một quá trình đang chờ một thao tác I / O hoàn tất.
- Stopped (T): Các tiến trình này đã bị dừng bởi job control signal (chẳng hạn như bằng cách nhấn Ctrl + Z) hoặc vì chúng đang được theo dõi.
- Zombie (Z): Zombie thực chất là một phần còn sót lại của một tiến trình đã ngừng hoạt động nhưng chưa được xử lý sạch. Những chương trình sau khi thoát để lại tiến trình Zombie thì điều đó đồng nghĩa với việc chương trình đó được lập trình không tốt..
%CPUs
Dòng thứ 3 hiển thị % sử dụng CPU, bao gồm % CPU từ user (us), system (sy), low-priority processes (nice time, hoặc ni), idle time (id), wait for I/O processes (wa), time handling hardware interruptions (hi), time handling softw
Tải trung bình
Load average được tính mỗi 1, 5 và 15 phút để cung cấp cái nhìn sơ bộ toàn bộ hệ thống.
Lưu ý:
- Các con số hiển thị trong phần load average phụ thuộc vào số lượng CPU core của server. Ví dụ nếu server có 1 core thì maximum load là 1.00, với 2 core là 2.00 và cứ thế tăng dần.
- Thông thường nếu load average >= 0.7 chứng tỏ server bắt đầu có dấu hiệu quá tải. Bạn nên theo dõi và tìm hiểu tối ưu lại server hoặc code, nâng cấp phần cứng để đảm bảo load luôn dưới ngưỡng này.
Các khu vực của TOP : khu vực liệt kê các tiến trình.
Đây là vùng tóm tắt tương đối đơn giản hơn và nó chứa một danh sách các quy trình. Trong phần này, chúng ta sẽ tìm hiểu về các cột khác nhau được hiển thị trong đầu ra mặc định của đầu trang.
- PID: Process ID.
- USER: Tên người dùng thực thi task. root là từ hệ thống
- S: Tình trạng process, có thể là: running (R), sleeping and unable to be interrupted (D), sleeping and able to be interrupted (S), traced/stopped (T), or zombie (Z).
- %CPU: % sử dụng CPU
- %MEM: % sử dụng Memory
- TIME+: Tổng số thời gian process đã chạy (tính cả child process nếu có).
- COMMAND: Tên process.
Các thao tác thường sử dụng với chương trình top
Thực ra giao diện top bạn có thể quản lý các tiến trình cũng như bạn có thể kiểm soát các khía cạnh khác nhau của các tiến trình hiển thị. Trong phần này, chúng ta sẽ lấy một vài ví dụ.
Trong hầu hết các ví dụ dưới đây, bạn phải nhấn một phím để lọc các giá trị xuất ra theo mong muốn. Hãy nhớ rằng các phím bấm này có phân biệt chữ hoa chữ thường .
Kill một tiến trình.
Nếu bạn muốn kill một tiến trình, chỉ cần nhấn ‘k’ khi top đang chạy. Điều này sẽ đưa ra một lời nhắc, sẽ yêu cầu ID tiến trình của quá trình và nhấn enter để kill tiến trình.
Sắp xếp danh sách quy trình
Một trong những lý do thường xuyên nhất để sử dụng top là tìm ra tiến trình nào đang tiêu tốn nhiều tài nguyên nhất. Bạn có thể nhấn các phím sau để sắp xếp danh sách:
- ‘M’ để sắp xếp theo mức sử dụng bộ nhớ
- ‘P’ để sắp xếp theo mức độ sử dụng CPU
- ‘N’ để sắp xếp theo ID tiến trình
- ‘T’ để sắp xếp theo thời gian chạy
Theo mặc định, đầu hiển thị tất cả các kết quả theo thứ tự giảm dần. Tuy nhiên, bạn có thể chuyển sang thứ tự tăng dần bằng cách nhấn ‘R’.
Bạn cũng có thể sắp xếp danh sách với công -o
tắc. Ví dụ: nếu bạn muốn sắp xếp các quy trình theo cách sử dụng CPU, bạn có thể làm như vậy với:
top -o %CPU
Hiển thị danh sách là các thread thay vì các process.
Như các bạn đã biết một process có thể chứa nhiều thread dùng chung tài nguyên với nhau, Và nếu bạn muốn quản lý theo dạng các thread bạn có thể tại giao diện của TOP bạn bấm (H). Hoặc bạn sử dụng lệnh:
top -H
Hiển thị đường dẫn đầy đủ
Theo mặc định, top không hiển thị đường dẫn đầy đủ đến chương trình hoặc phân biệt giữa các kernelspace processes và userspace processes. Nếu bạn cần thông tin này, bấm ‘c’ trong khi đầu đang chạy giao diện top. Nhấn ‘c’ lần nữa để trở về mặc định. Hoặc bạn có thể sử dụng lệnh sau:
top -c
Tiến trình cha/ con
Đôi khi bạn muốn có cái nhìn tổng quan về tiến trình cha con, tại giao diện top bạn có thể bấn nút (V) để hiển thị mối quan hệ cha con.
Chẳng hạn như bạn có thể thấy tiến trình top là con của tiến trình sshd .
Liệt kê các tiến trình từ người dùng.
Để liệt kê các tiến trình từ một người dùng bạn có thể nhập với cú pháp
top -u tên_người_dùng
Hoặc trong giao diện top bạn bấm (u) sau đó bạn nhập tên user người dùng.
Như ví dụ dưới là các tiến trình tới từ user nginx:
Lọc các tiến trình.
Nếu bạn có quá nhiều tiến trình đang làm việc, sẽ khó để bạn lọc được kết quả như mong muốn. Trong tình huống như vậy, bạn có thể sử dụng bộ lọc bằng cách bấm (o) hoặc (O)
Biểu thức lọc là một câu lệnh chỉ định mối quan hệ giữa một thuộc tính và giá trị. Một số ví dụ về bộ lọc là:
COMMAND=nginx
: lọc các tiến trình mà có nginx trong command!COMMAND=nginx
: lọc các tiến trình mà không có nginx trong command%CPU>3.0
: lọc tiến trình sử dụng CPU hơn 3%.
Thay đổi giao diện mặc định của CPU và thống kê bộ nhớ ram.
Ta có thể thay đổi giao diện hiển thị ram và cpu bằng cách bấm (m) hoặc (t) , bạn sẽ xem giao diện hiển thị của bộ nhớ ram và cpu theo cách trực quan hơn.
Chúc mọi người thành công. !