48 votes

Obtenir la date et l'heure du démarrage du système sous Linux

Je sais que uptime imprime la durée de fonctionnement d'une machine, mais existe-t-il un moyen plus simple (fiable) d'obtenir la date de démarrage que de compter à rebours à partir de cette sortie ?

J'ai essayé de regarder autour de moi /proc mais n'a rien trouvé de pertinent. Il y a aussi une ligne comme celle-ci sur mon dmesg :

[    0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)

Mais je me demande si cette méthode est indépendante de la distribution et de la version du noyau.

2voto

Majenko Points 31077

La méthode la plus simple consiste à vérifier quand /sbin/init a démarré (c'est toujours le premier processus qui démarre après le chargement du noyau) :

# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1

Je constate donc que ma machine a démarré à minuit moins 6 minutes le 27 mars 2011.

Si vous souhaitez l'utiliser dans le cadre d'un script, vous pouvez utiliser la fonction stat à la place :

# stat --printf='%Y' /proc/1
1301266491

En %Y indique le temps écoulé depuis la dernière modification du répertoire (heure de création du processus) en secondes depuis l'époque (1/1/70) et est un horodatage Unix standard.

1voto

gerry Points 11

Dans Linux,

ls -ld /proc

semble me donner ce dont j'ai besoin. Le message ci-dessus est étrange. /proc/uptime ne contient pas de valeur de date - il faudrait la soustraire de l'heure actuelle. Peut-être voulait-il dire :

date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))

1voto

Luchostein Points 129

Sous Bash, sans pipes ni autres processus ; juste du texte :

$ REPLY="$(</proc/uptime)"
$ REPLY="${REPLY%%.*}"
$ echo "$REPLY"
31207

(Il suffit de réutiliser le REPLY variable par défaut, mais vous pouvez choisir ce dont vous avez besoin)

1voto

JJC Points 209

Ce système semble robuste et vous donnera les données en format UTC et ISO8601. (Enlevez les deux dernières options pour désactiver l'un ou l'autre, respectivement) :

date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u -Iseconds

0voto

AmanicA Points 111
date -d @$(sed -n '/^btime /s///p' /proc/stat)

(encore une autre façon de faire, utile dans certaines circonstances)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X