क्या साइगविन में लगातार विंडोज़ प्रक्रियाओं को दिखाने का एक तरीका है


13

मैं शीर्ष या एक प्रकार का उपयोग करके, एक साइबर शेल से प्रक्रियाओं की निगरानी करना चाहता हूं। इसका कारण इसकी रियलटाइम रिपोर्टिंग और निरंतर अपडेट है। हालांकि, साइबरविन के तहत, विंडोज़ प्रक्रियाओं पर शीर्ष रिपोर्ट नहीं करेगा।

तेह मंचों मैं ps -Wएक विकल्प के रूप में उपयोग करने की सिफारिश करने के लिए किया गया है , लेकिन यह स्पष्ट रूप से मुझे वास्तविक समय की जानकारी देने का दोष नहीं है, लेकिन जब भी मैं कमांड टाइप करता हूं तो सिर्फ एक स्थिर स्नैपशॉट।

क्या topमेरे सभी प्रक्रियाओं को प्रदर्शित करने के लिए और केवल साइबरविन्स प्रक्रियाओं को नहीं करने के लिए साइबरविन में काम करने का कोई तरीका है?


1
वहाँ एक कारण यह विशेष रूप से Cygwin में आधारित होना है? यदि आप ऐसा कुछ चाहते हैं जो सारणीबद्ध प्रक्रियाओं में विंडो प्रक्रियाओं पर डेटा की एक विस्तृत सूची प्रदान करता है (जैसे top), प्रक्रिया एक्सप्लोरर का
डार्थ एंड्रॉइड

जवाबों:


12

बैश शेल से, आप इस कमांड लाइन के साथ सभी विंडो प्रक्रियाओं की निगरानी कर सकते हैं:

watch "ps -W" # pipe to grep for filtering

उदाहरण के लिए, सभी जावा प्रक्रियाओं को देखने के लिए:

watch "ps -W | grep java"

ध्यान दें कि "ps -W" साइबर और गैर-साइबर दोनों प्रक्रियाओं को सूचीबद्ध करता है।


या तो ps -Wया ps --windowsकाम, देखेंps --help
टिमो

2

आपको cygwin के लिए procps पुस्तकालय स्थापित करना होगा, इसमें शीर्ष कार्यक्रम शामिल है, हालांकि यह केवल cygwin में चल रही प्रक्रियाओं को सूचीबद्ध करेगा। यदि आप विंडोज़ पर चलने वाली सभी प्रक्रियाओं को देखना चाहते हैं, तो इस उत्तर को देखें: /programming/3503681/cygwin-top-command-see-processes-for-all-users


1

ऐसा लगता है कि आप कुछ ऐसा कर सकते हैं:

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 सेकंड और थोड़ा सा चलेगा, जिसका अर्थ है कि वे प्रतिशत बहुत सटीक नहीं हैं और थोड़ा कम करके आंका गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.