Làm cách nào để ghi nhật ký sử dụng CPU trên mỗi quy trình?


18

Tôi có một hộp trên Linode đang trải qua hành vi kỳ lạ. Thỉnh thoảng CPU và đĩa I / O sẽ bắn tới 100% và máy chủ trở nên không phản hồi và phải được khởi động. Tôi muốn điều tra rõ hơn những gì đang diễn ra, nhưng tôi không biết làm thế nào để tìm ra người chịu trách nhiệm cho tất cả CPU và I / O đó. Tôi đang chạy Gentoo 2.6.18.

Câu trả lời:


20

Bạn có thể thử làm một cái gì đó như thế này:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

điều đó sẽ cho bạn thấy mười quy trình hàng đầu về việc sử dụng CPU. Bạn có thể thay đổi số lượng quy trình được hiển thị bằng cách thay đổi 10 trong "đầu -10" thành một số khác và tần suất cập nhật bằng cách thay đổi 3 trong "ngủ 3" hoặc loại bỏ hoàn toàn phần "ngủ 3".


5
Hãy chắc chắn rằng bạn có một số giấc ngủ trong đó, nếu không có khả năng quá trình vỏ của bạn sẽ luôn nằm trong top 10. :)
jedberg

Tôi nghĩ sort -nrsẽ làm tốt hơn để sắp xếp số lượng (ít nhất là trên boxen
ubfox

2
BTW, bạn nên ưu tiên cao nhất cho quá trình này, vì nó vẫn hữu dụng trong thời gian cực đại của tải cao (xét cho cùng, đó là thời điểm tồn tại của nó).
spainediver 17/03 '

12

Kiểm tra trên đỉnh nó sẽ viết một bản ghi nhị phân của hầu hết mọi thứ bạn có thể muốn và sau đó bạn có thể sử dụng một đỉnh như gui để trải qua các lát cắt thời gian trong ngày (mặc định là lấy dữ liệu cứ sau 5 phút). http://www.atcomputing.nl/Tools/atop/


6

Tôi nghĩ rằng munin là một trong những công cụ giám sát hàng hóa sẽ giúp bạn có được một số thông tin về các hoạt động của hộp của bạn. Ngoài ra, có một số công cụ dòng lệnh như sar , iostat, ps, top để sử dụng như vậy.


5

Các câu trả lời khác chỉ cho bạn thấy bạn có thể nhìn vào những gì đang diễn ra, điều này không giúp ích gì nếu hệ thống đã được khởi động lại.

Nếu bạn muốn thông tin này được ghi lại cho hậu thế (hoặc thanh toán, hoặc bất kỳ mục đích sử dụng nào khác mà bạn cũng có thể có), điều bạn muốn là quy trình kế toán.

Đây là một HƯỚNG DẪN tôi đã tìm thấy, nhưng tôi sẽ thành thật - đã một thập kỷ kể từ khi tôi sử dụng kế toán quy trình.

http://tldp.org/HOWTO/Process-Accounting/


2

Một cách tiếp cận thân thiện hơn với giải pháp của shawn để theo dõi gần thời gian thực:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Điều này sẽ cung cấp chế độ xem tĩnh cho 20 quy trình hàng đầu sẽ được làm mới sau mỗi 1 giây. Tùy chọn "c" trong lệnh ps sẽ in tên thực thi quy trình thay vì toàn bộ lệnh args. Bạn có thể bỏ tùy chọn này nếu bạn cần toàn bộ thông tin lệnh thay thế. cột sử dụng bộ nhớ% cũng được thêm vào.


1

Không Gentoo có lệnh "hàng đầu" như chào đón?

machine:~/# top

sẽ cung cấp cho bạn các số liệu thống kê về các chương trình gây ra tải nhiều nhất.


Vâng tôi biết, nhưng tôi muốn đăng nhập để tôi có thể xem lịch sử sau này. Khi CPU tăng đột biến, máy trở nên không phản hồi, vì vậy tôi không thể đăng nhập và chạy topđể xem ai là thủ phạm. Tôi muốn kiểm tra lại sau và xem quá trình đã làm nó.
Helder S Ribeiro
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.