ऐसा लगता है कि आप कुछ ऐसा कर सकते हैं:
wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1
उपयोगकर्ता और कर्नेल मोड बार 1 / 10,000,000 वें सेकंड में व्यक्त किए गए प्रतीत होते हैं।
आपको प्रति सेकंड सीपीयू-उपयोग प्राप्त करने के लिए उस आउटपुट को पोस्ट-प्रोसेस करने में सक्षम होना चाहिए।
यहाँ cygwin का उपयोग कर रहा है 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 ""
}'
आउटपुट कुछ इस तरह है:
0 System Idle Process 588.12377
2196 sh.exe 107.00075
248 svchost.exe 85.80055
7140 explorer.exe 26.52017
[...]
हर पल।
ध्यान दें कि यदि सिस्टम आइडल प्रोसेस एक निष्क्रिय सिस्टम पर सिर्फ 800% से कम दिखाता है, ऐसा इसलिए है क्योंकि आपके सिस्टम में 8 CPU कोर (कम से कम 8 थ्रेड्स) हैं जो सभी CPU के CPU समय को गिनाते हैं।
यह भी ध्यान दें कि EVERY:1
ऊपर एक झूठ है। wmic
लगता है कि उत्पादन हर दूसरे देने के लिए नहीं है। अधिक संभावना है, यह प्रत्येक रिपोर्ट के बीच लगभग 1 सेकंड सोता है और रिपोर्ट की गणना करने में लगने वाले समय की भरपाई नहीं करता है। तो व्यवहार में, यह हर 1 सेकंड और थोड़ा सा चलेगा, जिसका अर्थ है कि वे प्रतिशत बहुत सटीक नहीं हैं और थोड़ा कम करके आंका गया है।
top
), प्रक्रिया एक्सप्लोरर का