Meu computador diz:
$ uptime
10:20:35 up 1:46, 3 users, load average: 0,03, 0,10, 0,13
E se eu verificar last
, vejo:
reboot system boot 3.19.0-51-generi Tue Apr 12 08:34 - 10:20 (01:45)
E então eu verifico:
$ ls -l /var/log/boot.log
-rw-r--r-- 1 root root 4734 Apr 12 08:34 boot.log
Então eu vejo na /var/log/syslog
primeira linha de hoje:
Apr 12 08:34:39 PC... rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="820" x-info="http://www.rsyslog.com"] start
Então tudo parece convergir para 8:34
o momento em que minha máquina foi inicializada.
No entanto, eu me pergunto: qual é o tempo exato uptime
? É uptime
um processo que inicia e verifica algum arquivo ou é algo no hardware?
Estou executando o Ubuntu 14.04.
linux
linux-kernel
uptime
fedorqui
fonte
fonte
systemd-analyze blame
também contém o tempo antes do Kernel init, pelo menos no uefi.Respostas:
No meu sistema, ele obtém o tempo de atividade de
/proc/uptime
:Na página de manual do proc :
O sistema de arquivos proc contém um conjunto de pseudo arquivos. Esses não são arquivos reais, apenas se parecem com arquivos, mas contêm valores que são fornecidos diretamente pelo kernel. Toda vez que você lê um arquivo, como
/proc/uptime
, seu conteúdo é regenerado rapidamente. O sistema de arquivos proc é uma interface para o kernel.No código-fonte do kernel linux do arquivo
fs/proc/uptime.c
na linha 49 , você vê uma chamada de função:Isso cria uma entrada do sistema de arquivos proc chamada
uptime
(o procfs geralmente é montado em baixo/proc
) e associa uma função a ela, que define operações de arquivo válidas nesse pseudo arquivo e as funções associadas a eles. Em caso de uptime é apenasread()
eopen()
operações. No entanto, se você rastrear as funções de volta, você terminará aqui , onde o tempo de atividade é calculado.Internamente, há uma interrupção do timer que atualiza periodicamente o tempo de atividade do sistema (além de outros valores). O intervalo, no qual a interrupção do timer é marcada, é definido pela macro do pré-processador
HZ
, cujo valor exato é definido no arquivo de configuração do kernel e aplicado no momento da compilação.O tempo ocioso e o número de ciclos da CPU, combinados com a frequência
HZ
(ciclos por segundo) podem ser calculados em um número (de segundos) desde a última inicialização.Para responder à sua pergunta: Quando o tempo de atividade começa a contar?
Como o tempo de atividade é um valor interno do kernel, que aumenta a cada ciclo, ele começa a contar quando o kernel é inicializado. Ou seja, quando o primeiro ciclo terminar. Mesmo antes de qualquer coisa ser montada, logo após o gerenciador de inicialização controlar a imagem do kernel.
fonte
Desde que eu saiba,
uptime
usa/proc/uptime
para calcular o tempo de atividade do sistema. Você pode vê-lo mais claramente no tempo de atividade do código fonte.cfonte
/proc/uptime
é calculado desde o tempo de atividade.Em um sistema UNIX padrão (com base nas fontes originais *),
uptime
lê/var/adm/utmpx
e verifica a última vez em que a entrada de reinicialização é iniciada.Em outras palavras: isso está recuperando a data com a qual você também entra
who -b
e calcula o tempo desde então.*)
uptime
é um link para ow
programa e foi introduzido pelo BSD por volta de 1980.fonte
/var/adm/utmpx
no meu sistema. Na verdade, nem mesmo/var/adm
w
implementação original é usada, as coisas são assim, mas o Linux geralmente faz as coisas um pouco diferentes.uptime
comando, muito menos como deve ser implementado. AFAICT, OS / X também não possui um / var / adm / utmpx. E alguns sistemas baseados em Linux receberam certificação de conformidade com Unix.