Defina “atividade de linha” conforme entendido pelo Unix que comanda

3

O que constitui "atividade" para os propósitos do comando "quem" do Unix? Estamos tentando encontrar sessões ociosas, mas temos discordâncias quanto ao significado preciso da atividade nesse contexto. Uma pessoa afirma que o tempo de atividade é apenas redefinido pela entrada do usuário - ou seja, os dados que entram na sessão a partir da entrada padrão. Outros estão dizendo alguma atividade da CPU. Uma resposta autoritária seria útil.

    
por Matt Smith 04.06.2012 / 16:32

2 respostas

4
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
jferland pts/2    jferland:S.1     10:35    2.00s  0.18s  0.18s /bin/bash
jferland pts/3    jferland:S.2     10:35   45.00s  0.18s  0.00s sleep 30
jferland pts/1    jferland:S.0     10:35    0.00s  0.21s  0.00s w

S.0: O que eu estou verificando, então definitivamente 0 tempo lá.

S.1: deixei uma concha aberta. Dois segundos antes de pressionar uma tecla sem pressionar Enter. Assim, qualquer entrada recebida funciona mesmo sem retorno de linha.

S.2: eu corri while true; do echo "foo"; sleep 30; done . Eu até digitei um personagem no meio dele. Como a entrada foi bloqueada (nunca lida), ainda pareço ociosa.

Conclusão

O tempo ocioso é redefinido quando um caractere é lido a partir da entrada do terminal. A entrada bloqueada não atualiza o tempo ocioso, mesmo que isso afete a exibição da tela. Aplicativos podem atualizar sob regras diferentes. Por exemplo, usei write , que lê entrada por linha, portanto, atualizou apenas meu tempo ocioso ao pressionar Enter. O mesmo aconteceu com perl (literalmente executado como perl sem argumentos).

    
por 04.06.2012 / 16:40
1

Os processos são executados o tempo todo e não importa para o tempo ocioso.

Se você fizer um:

while true; do w; sleep 0.1; done

em um terminal, e abra outro terminal, você verá que o tempo ocioso daquela outra sessão é zerado, somente quando o usuário insere algo (pressiona uma tecla). Se você correr:

while true; do ls; done

no outro terminal, o tempo ocioso continuará aumentando.

Portanto, somente quando a sessão ler a entrada do usuário, o temporizador ocioso é redefinido.

    
por 04.06.2012 / 16:41

Tags