web-dev-qa-db-fra.com

Disponibilité du format Bash pour afficher les jours, les heures et les minutes

J'utilise le temps de disponibilité dans bash afin d'obtenir le temps d'exécution actuel de la machine. J'ai besoin de saisir l'heure et d'afficher un format comme 2 jours, 12 heures, 23 minutes.

11
user1799031

Juste pour la complétude ...

$ uptime -p
up 2 weeks, 3 days, 14 hours, 27 minutes
13
Alexander Löhner

Pour ça: 

  • 0 jours, 0 heures, 1 minutes. 
  • 0 jours, 0 heures, 59 minutes. 
  • 0 jours, 2 heures, 1 minutes. 
  • 1 jours, 0 heures, 0 minutes. 
  • 1 jours, 1 heure, 0 minutes. 
  • 25 jours, 21 heures, 30 minutes

Plus simple est:
uptime -p | cut -d " " -f2-

1
Sofya

Par souci de variété, voici un exemple avec sed:

Ma sortie brute:

$ uptime
15:44:56 up 3 days, 22:58,  7 users,  load average: 0.48, 0.40, 0.31

Sortie convertie:

$uptime|sed 's/.*\([0-9]\+ days\), \([0-9]\+\):\([0-9]\+\).*/\1, \2 hours, \3 minutes./'
3 days, 22 hours, 58 minutes.
1
dgeorgiev

Cette réponse est assez spécifique pour la uptime fournie dans OS X, mais prend en compte tous les cas de sortie.

#!/bin/bash

INFO=`uptime`
echo $INFO | awk -F'[ ,:\t\n]+' '{
        msg = "↑ "
        if ($5 == "day" || $5 == "days") {      # up for a day or more
            msg = msg $4 " " $5 ", "

            n = $6
            o = $7
        } else {
            n = $4
            o = $5
        }

        if (int(o) == 0) {                      # words evaluate to zero
            msg = msg int(n)" "o
        } else {                                # hh:mm format
            msg = msg int(n)" hr"
            if (n > 1) { msg = msg "s" }

            msg = msg ", " int(o) " min"
            if (o > 1) { msg = msg "s" }
        }

        print "[", msg, "]"
    }'

Quelques exemples de sorties possibles:

22:49 up 24 secs, 2 users, load averages: 8.37 2.09 0.76
[ ↑ 24 secs ]

22:50 up 1 min, 2 users, load averages: 5.59 2.39 0.95
[ ↑ 1 min ]

23:39 up 51 mins, 3 users, load averages: 2.18 1.94 1.74
[ ↑ 51 mins ]

23:54 up 1:06, 3 users, load averages: 3.67 2.57 2.07
[ ↑ 1 hr, 6 mins ]

16:20 up 120 days, 10:46, 3 users, load averages: 1.21 2.88 0.80
[ ↑ 120 days, 10 hrs, 46 mins ]
0
chamini2