Lịch sử xử lý trong các hệ thống Unix / Linux


11

Tôi biết rằng ps -eflhiển thị các quy trình đang chạy trên các hệ thống * nix.

Tôi muốn kiểm tra lịch sử của quá trình (trong quá khứ) đã được chạy trên một máy cụ thể, tốt nhất với tất cả các thông tin pscung cấp (ví dụ %CPU, %MEM).

Tôi có thể sử dụng tiện ích dòng lệnh nào, thông tin này được lưu trữ ở đâu đó tương tự như .bash_historytệp?


2
Trên * nix , đúng hơn là như vậy ps -efl. ps auxchỉ dành cho BSD / Linux.
Stéphane Chazelas

Bạn có khả năng có thể thiết lập SNMP và một cái gì đó để thăm dò daemon SNMP định kỳ để đạt được điều này. Tôi đã thực hiện điều này để sử dụng Bộ nhớ cho các quy trình trong một khoảng thời gian.
Lawrence

như được mô tả ở đây: serverfault.com/questions/386956/pid-history-of-a- Process , một số quy trình xuất bản có PID để syslog (hoặc có thể được thực hiện để làm như vậy).
billc

Câu trả lời:


5

Hãy thử atop. Nó có thể giữ một lịch sử cấu hình của các thông tin hệ thống khác nhau (các quy trình và sử dụng CPU, bộ nhớ, đĩa và mạng). Lưu ý: tất nhiên nó không thể ghi lại mọi thứ; nó chỉ mất "ảnh chụp" định kỳ.

EDIT: Trong trường hợp điều này không rõ ràng, có một atoptrình nền thực hiện các ảnh chụp nhanh định kỳ, được lưu trữ trong /var/log/atop(thư mục được sử dụng trong Debian).


2
Có thể đáng chú ý: nó không thể nhìn vào quá khứ, nó chỉ nhìn thấy các quy trình trong khi nó đang chạy.
guntbert

3
@guntbert Vì nó định kỳ lưu những gì nó nhìn thấy và người ta có thể phát lại điều đó với -rtùy chọn, đó là một cách để nhìn vào quá khứ.
vinc17

2
Đúng (đó là lý do tại sao tôi nói "có thể"), nhưng tất nhiên điều đó chỉ hoạt động sau khi đã bắt đầu dịch vụ, trong khi OP có thể mong đợi để xem những gì đã xảy ra trước đó.
guntbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.