Подтвердить что ты не робот

Основная команда Cygwin - просмотр процессов для всех пользователей

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

Вы должны иметь возможность выполнять пост-обработку этого вывода для получения использования CPU в секунду.

Здесь использование 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
[...]

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

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

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