Команда Cygwin top - Просмотр процессов для всех пользователей - PullRequest
25 голосов
/ 17 августа 2010

Кто-нибудь знает, как увидеть процессы для всех пользователей, используя команду top в Cygwin (часть библиотеки procps в Системе).

Я знаю, что это можно сделать в * nix, но яборется в Cygwin.Я попытался использовать pslist, но он не работает в замазке консоли SSH.

Мне нужно решение, где я могу увидеть диалог top, использующий SSH.У меня нет никакого доступа NTLM SSO к гостю Win2k3, так что ssh - единственный выход.

Ответы [ 3 ]

33 голосов
/ 18 августа 2010

top отображает только процессы Cygwin. ps -W также выведет список процессов Windows.

3 голосов
/ 09 декабря 2013

Много раз команда «список задач» выполняет работу более эффективно.Он встроен в Windows, просто убедитесь, что ваша папка System32 является частью вашего PATH профиля bash.Существует также сама подпорка.Вам также следует попробовать использовать mintty для вашего терминала.Вы всегда можете попробовать подключить любое из этих приложений к экрану или использовать часы для опроса информации.

2 голосов
/ 24 сентября 2015

Кажется, вы можете сделать что-то вроде:

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

Время в режиме пользователя и ядра, по-видимому, выражается в 1/10 000 000-й секунды.

Вы должны быть в состояниипост-процесс, который выводит данные об использовании ЦП в секунду.

Здесь используется 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 ""
    }'

Выводит что-то вроде:

0       System Idle Process     588.12377
2196    sh.exe  107.00075
248     svchost.exe     85.80055
7140    explorer.exe    26.52017
[...]

каждыесекунда.

Обратите внимание, что если System Idle Process показывает в системе простоя чуть меньше 800%, то это потому, что ваша система имеет 8 ядер ЦП (ну, по крайней мере, 8 потоков), поскольку это подсчитываетПроцессорное время всех процессоров.

Также обратите внимание, что EVERY:1 выше - ложь.wmic, похоже, не дает такой вывод каждую секунду.Скорее всего, он спит примерно 1 секунду между каждым отчетом и не компенсирует время, необходимое для вычисления отчета.Таким образом, на практике, он будет выполняться каждую 1 секунду и немного, что означает, что эти проценты не очень точны и слегка завышены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...