Có cách nào để hiển thị các quy trình windows trong Cygwin liên tục không


13

Tôi muốn theo dõi các quá trình từ một vỏ Cygwin, sử dụng đầu hoặc một biến thể. Lý do cho điều này là báo cáo thời gian thực và cập nhật liên tục. Tuy nhiên theo cygwin, top sẽ không báo cáo về các quy trình của windows.

Tôi đã khuyên bạn nên sử dụng ps -Wnhư một giải pháp thay thế, nhưng điều này rõ ràng có nhược điểm là không còn cung cấp cho tôi thông tin thời gian thực, mà chỉ là một ảnh chụp nhanh tĩnh mỗi khi tôi gõ lệnh.

Có cách nào để toplàm việc trong cygwin để hiển thị tất cả các quy trình của tôi và không chỉ các quy trình của cygwins không?


1
Có một lý do mà nó đặc biệt phải có trụ sở tại Cygwin? Nếu bạn chỉ muốn một cái gì đó cung cấp danh sách dữ liệu chi tiết về các tiến trình Windows đang chạy ở định dạng bảng (như top), hãy thử Process Explorer
Darth Android

Câu trả lời:


12

Từ shell bash, bạn có thể giám sát tất cả các tiến trình windows bằng dòng lệnh này:

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

Để xem tất cả các quy trình java, ví dụ:

watch "ps -W | grep java"

Lưu ý rằng "ps -W" liệt kê cả quy trình cygwin và không cygwin.


Hoặc là ps -Whoặc ps --windowslàm việc, xemps --help
Timo


1

Có vẻ như bạn có thể làm một cái gì đó như:

wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1

Thời gian chế độ Người dùng và Hạt nhân dường như được biểu thị bằng 1 / 10.000.000 giây.

Bạn sẽ có thể xử lý hậu kỳ đầu ra đó để có được mức sử dụng CPU mỗi giây.

Ở đây sử dụng cygwin's 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 ""
    }'

Xuất ra một 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 nhàn rỗi, thì đó là vì hệ thống của bạn có 8 lõi CPU (ít nhất là 8 luồng) vì nó tính thời gian CPU của tất cả các CPU.

Cũng lưu ý rằng EVERY:1ở trên là một lời nói dối. wmicdường như không cung cấp đầ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ù vào thời gian cần thiết để tính toán báo cáo. Vì vậy, trong thực tế, nó sẽ chạy cứ sau 1 giây và một chút, điều đó có nghĩa là những phần trăm đó không chính xác và được đánh giá quá cao.

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.