Khi làm việc trên dòng lệnh Linux, có thể có lúc bạn muốn kiểm tra các chi tiết liên quan đến quy trình, chẳng hạn như quy trình nào đang sử dụng nhiều CPU hoặc bộ nhớ nhất? Vâng, có một lệnh - được gọi là top - cho phép bạn thực hiện việc này một cách dễ dàng. Trong hướng dẫn này, chúng ta sẽ thảo luận về công cụ này bằng một số ví dụ dễ hiểu.
Nhưng trước khi thực hiện, cần đề cập rằng tất cả các ví dụ được đề cập trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 16.04 LTS.
Và đây là những gì trang hướng dẫn của công cụ nói về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh top hoạt động.
Đây là đầu ra mà nó tạo ra trên hệ thống của tôi:
Lưu ý rằng những gì bạn thấy trong ảnh chụp màn hình chỉ là ảnh chụp nhanh đầu ra theo thời gian thực (thay đổi sau một khoảng thời gian cố định) được tạo ra.
Dòng thứ hai chứa thông tin (theo thứ tự đó) về tổng số quy trình, số quy trình đang chạy, số quy trình đang ngủ, số quy trình đã dừng và số quy trình ở trạng thái zombie.
Dòng thứ ba chứa thông tin sử dụng CPU. Sau đây là các chi tiết:
Hai dòng tiếp theo hiển thị thông tin liên quan đến việc sử dụng bộ nhớ RAM và bộ nhớ hoán đổi. Và cuối cùng, là thông tin liên quan đến quy trình, bao gồm (theo thứ tự đó) ID quy trình, người dùng sở hữu quy trình, mức độ ưu tiên của quy trình, giá trị nice của quy trình, bộ nhớ ảo, vật lý và chia sẻ được quy trình sử dụng, trạng thái quy trình (Ngủ, Chạy hoặc Zombie), mức sử dụng CPU và RAM, thời gian hoạt động và lệnh khởi tạo quy trình.
Vì vậy, bạn thấy đấy, bạn có thể nhập ID quy trình hoặc theo mặc định, top sẽ thử giết (bằng cách gửi SIGTERM) quy trình đầu tiên trong danh sách. Sau khi tín hiệu được gửi, một thông báo tương tự như sau sẽ được tạo ra.
Vì vậy, nhập PID hoặc top sẽ thử renice mức độ ưu tiên của quy trình đầu tiên trong danh sách theo mặc định. Ví dụ, tôi đã truyền một PID, sau đó top yêu cầu tôi nhập giá trị nice mới.
Chỉ cần cung cấp một giá trị, và nhấn enter, và bạn sẽ thấy giá trị tốt cho quy trình đang đề cập sẽ được thay đổi.
Chỉ cần nhập giá trị, và nhấn enter. Vậy là xong.
Chỉ cần nhập tên người dùng vào dòng trên và nhấn enter, bạn sẽ thấy đầu ra chỉ chứa những quy trình thuộc sở hữu của người dùng có tên bạn đã nhập.
Ví dụ, tôi đã nhập 'root' và đây là đầu ra:
Vì vậy, bây giờ bạn có thể thấy đường dẫn lệnh đầy đủ cũng như các đối số dòng lệnh trong đầu ra.
Nhưng trước khi thực hiện, cần đề cập rằng tất cả các ví dụ được đề cập trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 16.04 LTS.
Lệnh top của Linux
Lệnh top hiển thị danh sách các quy trình hoặc luồng hiện đang được hạt nhân Linux quản lý, cùng với thông tin hữu ích liên quan đến chúng. Sau đây là cú pháp của công cụ:
Mã:
top [options]
Mã:
Chương trình top cung cấp chế độ xem thời gian thực động của hệ thống đang chạy. Nó có thể hiển thị thông tin tóm tắt hệ thống cũng như danh sách các quy trình hoặc luồng hiện đang được hạt nhân Linux quản lý. Các loại thông tin tóm tắt hệ thống được hiển thị và các loại, thứ tự và kích thước thông tin được hiển thị cho các quy trình đều có thể cấu hình được bởi người dùng và cấu hình đó có thể được duy trì trong suốt quá trình khởi động lại. Chương trình cung cấp một giao diện tương tác hạn chế để thao tác quy trình cũng như một giao diện mở rộng hơn nhiều để cấu hình từng cá nhân -- bao gồm mọi khía cạnh của hoạt động của nó.
Câu hỏi 1. Sử dụng top như thế nào?
Đơn giản, chỉ cần thực hiện lệnh 'top' mà không có bất kỳ tùy chọn nào:
Mã:
top
Lưu ý rằng những gì bạn thấy trong ảnh chụp màn hình chỉ là ảnh chụp nhanh đầu ra theo thời gian thực (thay đổi sau một khoảng thời gian cố định) được tạo ra.
Câu hỏi 2. Làm thế nào để hiểu đầu ra của lệnh top?
Chúng ta hãy bắt đầu với dòng đầu tiên. Nó chứa các mục nhập cho (theo thứ tự đó), thời gian hiện tại, thời lượng kể từ khi hệ thống hoạt động, phiên người dùng đang hoạt động và tải trung bình trên hệ thống (lần lượt là một phút, năm phút và mười lăm phút trước).Dòng thứ hai chứa thông tin (theo thứ tự đó) về tổng số quy trình, số quy trình đang chạy, số quy trình đang ngủ, số quy trình đã dừng và số quy trình ở trạng thái zombie.
Dòng thứ ba chứa thông tin sử dụng CPU. Sau đây là các chi tiết:
Mã:
us, user : thời gian chạy các quy trình người dùng chưa được niced
sy, system : thời gian chạy các quy trình hạt nhân
ni, nice : thời gian chạy các quy trình người dùng đã được niced
id, idle : thời gian dành cho trình xử lý nhàn rỗi của hạt nhân
wa, IO-wait : thời gian chờ hoàn tất I/O
hi : thời gian dành cho việc phục vụ các ngắt phần cứng
si : thời gian dành cho việc phục vụ các ngắt phần mềm
st : thời gian bị hypervisor đánh cắp khỏi máy ảo này
Câu hỏi 3. Làm thế nào để giết một quy trình từ trong top output?
Điều này khá đơn giản - chỉ cần nhấn 'k' và top sẽ hỏi bạn PID của quy trình bạn muốn giết. Bạn sẽ thấy một thông báo tương tự như sau xuất hiện ngay phía trên dòng chứa tiêu đề cột quy trình:
Mã:
PID để báo hiệu/giết [pid mặc định = 3397]
Vì vậy, bạn thấy đấy, bạn có thể nhập ID quy trình hoặc theo mặc định, top sẽ thử giết (bằng cách gửi SIGTERM) quy trình đầu tiên trong danh sách. Sau khi tín hiệu được gửi, một thông báo tương tự như sau sẽ được tạo ra.
Mã:
Gửi tín hiệu pid 3007 [15/sigterm]
Câu hỏi 4. Làm thế nào để thay đổi mức độ ưu tiên của một quy trình?
Giống như 'k' là để giết, bạn có thể nhấn 'r' trong trường hợp bạn muốn thay đổi mức độ ưu tiên của một quy trình (hoặc bạn muốn đổi mới nó). Nhấn 'r' sẽ tạo ra một thông báo tương tự như sau:
Mã:
PID tới renice [pid mặc định = 3397]
Mã:
Renice PID 2665 tới giá trị
Câu hỏi 5. Làm thế nào để thay đổi tốc độ làm mới của lệnh top?
Theo mặc định, top làm mới đầu ra sau mỗi 3 giây, nhưng bạn có thể điều chỉnh điều này bằng cách nhấn 'd'. Lệnh sẽ yêu cầu bạn nhập giá trị độ trễ mới:
Mã:
Thay đổi độ trễ từ 3.0 thành
Câu hỏi 6. Làm thế nào để giới hạn đầu ra của lệnh top cho một người dùng?
Theo mặc định, lệnh top hiển thị tất cả các quy trình. Tuy nhiên, bạn có thể giới hạn đầu ra cho một người dùng cụ thể bằng cách nhấn 'u'.
Mã:
Người dùng nào (để trống cho tất cả)
Ví dụ, tôi đã nhập 'root' và đây là đầu ra:
Câu hỏi 7. Làm thế nào để top hiển thị lệnh hoàn chỉnh cùng với các đối số?
Bạn có thể thực hiện việc này bằng cách nhấn 'c'. Sau đây là một ví dụ:Vì vậy, bây giờ bạn có thể thấy đường dẫn lệnh đầy đủ cũng như các đối số dòng lệnh trong đầu ra.