Câu trả lời:
Điều này hoạt động rất tốt:
while true; do uptime >> uptime.log; sleep 1; done
Điều này sẽ ghi lại tải cpu của bạn mỗi giây và nối nó vào một tệp uptime.log
.
Sau đó, bạn có thể nhập tệp này vào Gnumeric hoặc bảng tính OpenOffice để tạo một biểu đồ đẹp (chọn 'cách nhau bởi dấu cách' khi nhập).
Như Scaine nhận thấy, điều này sẽ không đủ để chẩn đoán vấn đề. Vì vậy, ngoài ra, hãy chạy phần này (hoặc sử dụng câu trả lời của anh ấy cho phần này):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
Điều này sẽ nối thêm 10 quy trình đói CPU nhất vào một tệp ps.log
cứ sau năm giây.
Lưu ý rằng đây không phải là tải đầy đủ thông tin top
sẽ cung cấp cho bạn. Đây chỉ là top 10 và chỉ sử dụng CPU, Sử dụng bộ nhớ và đối số đầu tiên của họ (tức là lệnh của họ mà không cần thêm đối số, như trong /usr/bin/firefox
)
Sau khi bạn đã sử dụng Bảng tính để tạo biểu đồ để xem khi nào tải CPU của bạn đi qua mái nhà, bạn có thể tìm kiếm tệp này trong thời gian gần nhất để xem quá trình nào đã gây ra nó.
Đây là những gì các tập tin sẽ trông như:
thời gian hoạt động
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 users, load average: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
...
ps.log
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
ps
là vô nghĩa, hãy thử chạy nó dưới quyền root.
Bạn có thể chạy top
lệnh trong chế độ hàng loạt bằng cách sử dụng -b
tùy chọn, sau đó kết xuất nó vào một tệp.
Khi khởi động PC, hãy mở terminal, chạy
top -b > ~/cpu.txt
Sau đó, khi PC của bạn đóng băng, chỉ cần mở tệp văn bản (có thể rất lớn) và kiểm tra mục cuối cùng để biết một số chi tiết về những gì đang chạy ngay trước khi sự cố. Trong thực tế, tập tin sẽ quá lớn đến nỗi bạn nên chạy một tail -250 ~/cpu.txt
thay thế.
Ngoài ra, hãy kiểm tra /var/log/kern.log trong trường hợp sự cố của bạn có liên quan đến phần cứng (không thể xảy ra nếu điều này chỉ xảy ra sau khi nâng cấp, nhưng dù sao cũng đáng để kiểm tra).
Tôi đã tìm thấy một câu trả lời tuyệt vời của Christopher cho câu hỏi này trên Unix và Linux sử dụng top
:
top -n 1 -b > top.out
Điều này sẽ cung cấp cho bạn 1 lần lặp top
sau đó dừng lại, và sau đó đẩy nó vào một tệp.