Lệnh top trong Linux

Giới thiệu

Trong lab này, chúng ta sẽ khám phá lệnh top của Linux, một công cụ mạnh mẽ để theo dõi hiệu suất hệ thống và việc sử dụng tài nguyên. Chúng ta sẽ bắt đầu bằng cách hiểu chức năng cơ bản của lệnh top, bao gồm khả năng hiển thị thông tin thời gian thực về các tiến trình đang chạy, CPU, bộ nhớ và các tài nguyên hệ thống khác. Sau đó, chúng ta sẽ đi sâu vào các tùy chọn và tùy chỉnh khác nhau có sẵn để điều chỉnh đầu ra của lệnh top cho phù hợp với nhu cầu cụ thể của mình, cho phép chúng ta phân tích hiệu quả hiệu suất hệ thống và xác định các tắc nghẽn tiềm ẩn.

Tìm hiểu lệnh top

Trong bước này, chúng ta sẽ tìm hiểu về lệnh top, một công cụ mạnh mẽ để giám sát hiệu suất hệ thống và việc sử dụng tài nguyên trong Linux. Lệnh top cung cấp thông tin thời gian thực về các tiến trình đang chạy, CPU, bộ nhớ và các tài nguyên hệ thống khác.

Hãy bắt đầu bằng cách chạy lệnh top:

$ top

Ví dụ đầu ra:

top - 14:22:37 up 1 day, 12:34,  0 users,  load average: 0.00, 0.01, 0.05
Tasks: 101 total,   1 running,  99 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1992.0 total,   1537.0 free,    235.0 used,    220.0 buff/cache
MiB Swap:   2047.9 total,   2047.9 free,      0.0 used.   1555.3 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     1 root      20   0    8788   5688   3828 S   0.0   0.3   0:02.14 systemd
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
     3 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
     4 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
     5 root      20   0       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq

Lệnh top hiển thị nhiều thông tin hệ thống khác nhau, bao gồm:

  • Uptime: Thời gian kể từ lần khởi động lại hệ thống gần nhất.
  • Tasks: Tổng số các tiến trình đang chạy, sleeping, stopped và zombie.
  • CPU utilization: Tỷ lệ phần trăm thời gian CPU được sử dụng ở chế độ user, chế độ system, chế độ nice, idle, waiting, hardware interrupts và software interrupts.
  • Memory usage: Tổng dung lượng bộ nhớ, bộ nhớ trống, đã sử dụng và bộ nhớ được buffered/cached.
  • Swap usage: Tổng dung lượng swap, swap trống và swap đã sử dụng.
  • Process list: Danh sách các tiến trình tốn nhiều tài nguyên nhất, được sắp xếp theo mức sử dụng CPU hoặc bộ nhớ.

Bạn có thể tùy chỉnh đầu ra của lệnh top bằng cách nhấn các phím khác nhau, chẳng hạn như:

  • h: Hiển thị menu trợ giúp
  • 1: Chuyển đổi giữa mức sử dụng CPU trên mỗi CPU và tổng hợp
  • f: Quản lý các cột được hiển thị
  • o: Tùy chỉnh thứ tự sắp xếp
  • u: Lọc các tiến trình theo một user cụ thể

Để thoát lệnh top, hãy nhấn q.

Khám phá các Tùy chọn và Tùy chỉnh của Lệnh top

Trong bước này, chúng ta sẽ khám phá các tùy chọn và tùy chỉnh khác nhau có sẵn trong lệnh top để điều chỉnh đầu ra cho phù hợp với nhu cầu cụ thể của bạn.

Hãy bắt đầu bằng cách hiển thị menu trợ giúp:

$ top -h

Thao tác này sẽ hiển thị cho bạn tất cả các tùy chọn có sẵn và mô tả của chúng. Một số tùy chọn thường được sử dụng bao gồm:

  • -d: Đặt độ trễ giữa các lần cập nhật (mặc định là 3 giây)
  • -n: Chỉ định số lần lặp lại (mặc định là không giới hạn)
  • -p: Giám sát các ID tiến trình cụ thể
  • -u: Hiển thị các tiến trình thuộc sở hữu của một user cụ thể
  • -o: Sắp xếp danh sách tiến trình theo một cột cụ thể

Ví dụ: để hiển thị 5 tiến trình hàng đầu được sắp xếp theo mức sử dụng bộ nhớ, bạn có thể chạy:

$ top -o %MEM -n 5

Ví dụ đầu ra:

top - 14:30:37 up 1 day, 12:42,  0 users,  load average: 0.00, 0.00, 0.00
Tasks: 101 total,   1 running,  99 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1992.0 total,   1537.0 free,    235.0 used,    220.0 buff/cache
MiB Swap:   2047.9 total,   2047.9 free,      0.0 used.   1555.3 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     1 root      20   0    8788   5688   3828 S   0.0   0.3   0:02.14 systemd
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
     3 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
     4 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
     5 root      20   0       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq

Bạn cũng có thể tùy chỉnh các cột được hiển thị bằng cách nhấn phím f khi đang ở trong lệnh top. Thao tác này sẽ cho phép bạn thêm, xóa hoặc sắp xếp lại các cột cho phù hợp với nhu cầu của mình.

Để thoát lệnh top, hãy nhấn q.

Phân tích Hiệu suất Hệ thống bằng top

Trong bước cuối cùng này, chúng ta sẽ sử dụng lệnh top để phân tích hiệu suất hệ thống và xác định bất kỳ tắc nghẽn hoặc sự cố tiềm ẩn nào.

Hãy bắt đầu bằng cách theo dõi hiệu suất tổng thể của hệ thống:

$ top

Hãy chú ý đến các số liệu chính sau:

  • CPU utilization: Tỷ lệ phần trăm thời gian CPU được sử dụng ở chế độ user, chế độ system, chế độ nice, idle, waiting, hardware interrupts và software interrupts. Mức sử dụng CPU cao có thể cho thấy một tiến trình hoặc ứng dụng bị ràng buộc bởi CPU.
  • Memory usage: Tổng dung lượng bộ nhớ, bộ nhớ trống, đã sử dụng và bộ nhớ được buffered/cached. Mức sử dụng bộ nhớ cao có thể cho thấy một tiến trình sử dụng nhiều bộ nhớ hoặc rò rỉ bộ nhớ tiềm ẩn.
  • Swap usage: Tổng dung lượng swap, swap trống và swap đã sử dụng. Việc sử dụng swap quá mức có thể cho thấy thiếu bộ nhớ vật lý.
  • Process list: Danh sách các tiến trình tốn nhiều tài nguyên nhất, được sắp xếp theo mức sử dụng CPU hoặc bộ nhớ. Xác định bất kỳ tiến trình nào đang tiêu thụ một lượng đáng kể tài nguyên hệ thống.

Để điều tra sâu hơn một tiến trình cụ thể, bạn có thể sử dụng các tùy chọn sau:

  • k: Kill một tiến trình
  • r: Renice một tiến trình (thay đổi mức độ ưu tiên của nó)
  • f: Quản lý các cột được hiển thị
  • o: Tùy chỉnh thứ tự sắp xếp

Ví dụ: để xem 5 tiến trình hàng đầu được sắp xếp theo mức sử dụng CPU:

$ top -o %CPU -n 5

Ví dụ đầu ra:

top - 14:36:37 up 1 day, 12:48,  0 users,  load average: 0.00, 0.00, 0.00
Tasks: 101 total,   1 running,  99 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1992.0 total,   1537.0 free,    235.0 used,    220.0 buff/cache
MiB Swap:   2047.9 total,   2047.9 free,      0.0 used.   1555.3 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     1 root      20   0    8788   5688   3828 S   0.0   0.3   0:02.14 systemd
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
     3 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
     4 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
     5 root      20   0       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq

Điều này sẽ giúp bạn xác định bất kỳ tiến trình nào đang tiêu thụ một lượng đáng kể tài nguyên CPU.

Để thoát lệnh top, hãy nhấn q.

Tóm tắt

Trong lab này, trước tiên chúng ta đã tìm hiểu về lệnh top, một công cụ mạnh mẽ để theo dõi hiệu suất hệ thống và việc sử dụng tài nguyên trong Linux. Chúng ta đã khám phá các thông tin hệ thống khác nhau được hiển thị bởi lệnh top, bao gồm thời gian hoạt động, thống kê tác vụ, mức sử dụng CPU và bộ nhớ và danh sách các tiến trình tốn nhiều tài nguyên nhất. Chúng ta cũng đã khám phá cách tùy chỉnh đầu ra của lệnh top bằng cách sử dụng các phím khác nhau, chẳng hạn như chuyển đổi giữa mức sử dụng CPU trên mỗi CPU và tổng hợp, quản lý các cột được hiển thị và tùy chỉnh thứ tự sắp xếp của danh sách tiến trình.

400+ câu lệnh phổ biến trong Linux