Dường như bạn có thể làm một cái gì đó như:
wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1
Chế độ Kernel tài khoản và thời gian có vẻ như được thể hiện bằng 1/10000000 của thứ hai.
Bạn sẽ có thể xử lý đầu ra đó để có được mức sử dụng CPU mỗi giây.
Ở đây sử dụng Cygwin của perl
:
wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1 |
perl -lne '
if (/\S/) {
my ($k,$c,$p,$u) = split /\s{2,}/;
$n{"$p\t$c"}=$k+$u;
} else {
my %c;
for my $k (keys %n) {
$c{$k} = $n{$k} - $o{$k} if defined $o{$k}
}
print "$_\t" . $c{$_}/1e5 for (sort {$c{$b}<=>$c{$a}} keys %c)[0..20];
%o = %n; %n = undef; print ""
}'
Đầu ra cái gì đó như:
0 System Idle Process 588.12377
2196 sh.exe 107.00075
248 svchost.exe 85.80055
7140 explorer.exe 26.52017
[...]
mỗi giây. Lưu ý rằng nếu quá trình nhàn rỗi hệ thống chỉ hiển thị dưới 800% trên hệ thống không hoạt động, đó là do hệ thống của bạn có 8 lõi CPU (cũng ít nhất 8 luồng) khi đếm thời gian CPU của tất cả CPU.
Cũng lưu ý rằng EVERY:1
ở trên là một lời nói dối. wmic
dường như không cung cấp cho đầu ra đó mỗi giây. Nhiều khả năng, nó ngủ khoảng 1 giây giữa mỗi báo cáo và không bù đắp cho thời gian cần để tính toán báo cáo. Vì vậy, trong thực tế, nó sẽ chạy mỗi 1 giây và một chút có nghĩa là những tỷ lệ phần trăm không phải là rất chính xác và hơi đánh giá quá cao.
Nguồn
2015-09-24 09:42:37
Sau nhiều năm làm việc với Cygwin tắt và bật, tôi đã bị ảnh hưởng khi sử dụng ProcessExplorer và Windows 7+ được tích hợp trong Trình theo dõi tài nguyên. Tôi thực sự thích cả hai và đã phát hiện ra rằng Process Monitor là một công cụ tuyệt vời để kiểm tra các quá trình rất nhấn mạnh vào tập tin I/O. –
Làm cách nào để bạn sử dụng 'PROCEXP.EXE' hoặc' PROCMON.EXE' trên 'ssh'? Họ có chế độ đầu cuối không? –