Eu gostaria de monitorar processos de um shell cygwin, usando top ou uma variante. A razão para isso é seus relatórios em tempo real e atualizações constantes. No entanto, no cygwin, o top não reportará os processos do Windows.
Nos fóruns que eu recomendo usar ps -W
como alternativa, mas isso obviamente tem a desvantagem de não me fornecer mais informações em tempo real, mas apenas um instantâneo estático sempre que eu digito o comando.
Existe alguma maneira de top
trabalhar no cygwin para exibir todos os meus processos e não apenas os processos de cygwins?
top
), tente Process ExplorerRespostas:
Em um shell bash, você pode monitorar todos os processos do Windows com esta linha de comando:
Para ver todos os processos java, por exemplo:
Observe que "ps -W" lista os processos cygwin e não cygwin.
fonte
ps -W
oups --windows
trabalho, verps --help
Você precisa instalar a biblioteca procps para o cygwin, isso inclui o programa principal, no entanto, isso listará apenas os processos em execução no cygwin. Se você deseja ver todos os processos em execução no Windows, consulte esta resposta: /programming/3503681/cygwin-top-command-see-processes-for-all-users
fonte
Parece que você pode fazer algo como:
Os horários dos modos Usuário e Kernel parecem ser expressos em 1/10.000.000 de segundos.
Você deve poder pós-processar essa saída para obter o uso da CPU por segundo.
Aqui usando o cygwin's
perl
:Produz algo como:
todo segundo.
Observe que, se o Processo ocioso do sistema mostrar pouco menos de 800% em um sistema ocioso, é porque o seu sistema possui 8 núcleos de CPU (pelo menos 8 threads), pois isso conta o tempo de CPU de todas as CPUs.
Observe também que o
EVERY:1
acima é uma mentira.wmic
parece não dar esse resultado a cada segundo. Provavelmente, ele dorme aproximadamente 1 segundo entre cada relatório e não compensa o tempo que leva para calcular o relatório. Portanto, na prática, ele será executado a cada 1 segundo e um pouco, o que significa que essas porcentagens não são muito precisas e são superestimadas.fonte