Ответ 1
top
отображает только процессы Cygwin. ps -W
также будут перечислены процессы Windows.
Кто-нибудь знает, как просмотреть процессы для всех пользователей, используя команду top
в Cygwin (часть библиотеки procps
в разделе System).
Я знаю, что это можно сделать в * nix, но я боюсь в Cygwin. Я попытался использовать pslist
, но он не ведет себя в консоли SSH-шпателя.
Мне нужно иметь решение, где я могу увидеть диалоговое окно top
, используя SSH. У меня нет доступа к SSO NTLM для гостя Win2k3, поэтому ssh - единственный способ.
top
отображает только процессы Cygwin. ps -W
также будут перечислены процессы Windows.
Многократно команда "tasklist" выполняет работу более эффективно. Он встроен в окна, просто убедитесь, что ваша папка System32 является частью вашего профиля bash PATH. Существует также procps себя. Вы также должны попробовать использовать монетный двор для своего терминала. Вы всегда можете попробовать подключить любое из этих приложений задач к экрану и/или использовать часы для опроса информации.
Кажется, вы можете сделать что-то вроде:
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 секунду и бит, что означает, что эти проценты не очень точны и немного завышены.