Comment afficher le temps écoulé depuis le dernier démarrage du système en utilisant «uptime»?

17

Je veux afficher le temps écoulé depuis le dernier démarrage du système à l'aide uptime, mais je ne veux pas qu'il affiche toutes ces informations. Je veux juste savoir combien d'heures se sont écoulées depuis le dernier démarrage du système (ex: 18:17:59)

Adrian George
la source

Réponses:

31

Pour obtenir le temps écoulé depuis le dernier démarrage du système au hh:mm:ssformat, vous pouvez utiliser:

awk '{print int($1/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

/proc/uptime le pseudo-fichier contient deux nombres:

  • Le premier nombre correspond à la durée de fonctionnement du système en secondes.
  • Le deuxième nombre correspond à la durée de fonctionnement de la machine en secondes.

Donc, en utilisant, awkvous pouvez prendre votre premier nombre et le convertir au hh:mm:ssformat.

Radu Rădeanu
la source
15

Pour obtenir une disponibilité en quelques secondes:

awk '{print $1}' /proc/uptime

Pour obtenir une disponibilité en quelques minutes:

 echo $(awk '{print $1}' /proc/uptime) / 60 | bc

Pour obtenir une disponibilité en heures:

 echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

Pour obtenir x chiffres de précision, vous pouvez ajouter scale = x, par exemple pour x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc
realmoonstruck
la source
2

Essaye celui-là:

uptime | awk '{ print $3 }'

En fait, il imprime le troisième mot de la ligne produite par uptime.

Alen
la source
3
Ça marche. Mais cela ne semble pas être la bonne façon de procéder. Que faire si le troisième mot n'est pas le moment, par exemple mon troisième mot est "4", car ma machine fonctionne pendant 4 jours. Voici ce que j'obtiens: "02:00:39 jusqu'à 4 jours, 12:54, 2 utilisateurs, charge moyenne: 0,03. 0,06, 0,06".
Adrian George
Oh: DI ne savait pas l'heure plus d'un jour!
Alen
Ça va: d maintenant tu as des réponses à ça?
Adrian George
Non désolé. uptimesemble n'avoir aucune option mais je n'ai rien trouvé non plus sur le net.
Alen
2

Une modification triviale pour montrer les jours:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime
xerostomus
la source
0

Cela formatera votre sortie en 2 zéros:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
D4NI3LS
la source