Mon ordinateur dit:
$ uptime
10:20:35 up 1:46, 3 users, load average: 0,03, 0,10, 0,13
Et si je vérifie last
je vois:
reboot system boot 3.19.0-51-generi Tue Apr 12 08:34 - 10:20 (01:45)
Et puis je vérifie:
$ ls -l /var/log/boot.log
-rw-r--r-- 1 root root 4734 Apr 12 08:34 boot.log
Alors je vois dans /var/log/syslog
la première ligne d'aujourd'hui être:
Apr 12 08:34:39 PC... rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="820" x-info="http://www.rsyslog.com"] start
Donc, tout semble converger pour 8:34
être le moment où ma machine a démarré.
Cependant, je me demande: quelle est l'heure exacte uptime
utilise? Est-ce uptime
qu'un processus qui lance et vérifie un fichier ou est-ce quelque chose sur le matériel?
J'utilise Ubuntu 14.04.
linux
linux-kernel
uptime
Fedorqui
la source
la source
systemd-analyze blame
contient également le temps qui précède l’initiation du noyau, du moins sur uefi.Réponses:
Sur mon système, la disponibilité de
/proc/uptime
:De la page de manuel proc :
Le système de fichiers proc contient un ensemble de pseudo-fichiers. Ce ne sont pas de vrais fichiers, ils ressemblent à des fichiers, mais ils contiennent des valeurs fournies directement par le noyau. Chaque fois que vous lisez un fichier, tel que
/proc/uptime
, son contenu est régénéré à la volée. Le système de fichiers proc est une interface avec le noyau.Dans le code source du fichier du noyau linux
fs/proc/uptime.c
à la ligne 49 , vous voyez un appel de fonction:Cela crée une entrée de système de fichiers proc appelée
uptime
(le fichier procfs est généralement monté sous/proc
) et y associe une fonction qui définit les opérations de fichier valides sur ce pseudo-fichier et les fonctions qui leur sont associées. En cas de disponibilité, c'est justeread()
etopen()
opérationnel. Cependant, si vous suivez les fonctions, vous vous retrouverez ici , où le temps de disponibilité est calculé.En interne, il y a une interruption-timer qui met à jour périodiquement le temps de disponibilité du système (en plus des autres valeurs). L'intervalle, dans lequel les ticks d'interruption de minuterie, est défini par la macro préprocesseur
HZ
, dont la valeur exacte est définie dans le fichier de configuration du noyau et appliquée au moment de la compilation.Le temps d'inactivité et le nombre de cycles de la CPU, associés à la fréquence
HZ
(cycles par seconde), peuvent être calculés en nombre (en secondes) depuis le dernier démarrage.Pour répondre à votre question: à partir de quel moment le temps de disponibilité commence-t-il à compter?
Étant donné que la disponibilité est une valeur interne du noyau, qui se répète à chaque cycle, elle commence à compter dès que le noyau est initialisé. C'est-à-dire quand le premier cycle est terminé. Même avant que quoi que ce soit ne soit monté, juste après le chargeur de démarrage donne le contrôle à l'image du noyau.
la source
Tant que je sache,
uptime
utilise/proc/uptime
pour calculer le temps de disponibilité du système. Vous pouvez le voir plus clairement dans le code source uptime.cla source
/proc/uptime
est calculé à partir de la disponibilité.Sur un système UNIX standard (basé sur les sources d'origine *),
uptime
lit/var/adm/utmpx
et vérifie la dernière heure d'entrée de redémarrage.En d'autres termes: il s'agit de récupérer la date avec laquelle vous obtenez également
who -b
et calcule le temps écoulé depuis lors.*)
uptime
est un lien vers lew
programme et a été introduit par BSD vers 1980.la source
/var/adm/utmpx
dans mon système. En fait, même pas/var/adm
w
implémentation d' origine est utilisée, les choses se passent ainsi, mais Linux fait généralement les choses un peu différemment.uptime
commande, encore moins comment elle devrait être implémentée. AFAICT, OS / X n’a pas non plus de / var / adm / utmpx. Et certains systèmes basés sur Linux ont reçu une certification de conformité Unix.