OVH Cloud OVH Cloud

Terminal et Uptime

18 réponses
Avatar
tagada
Bonsoir,

est-ce qu'il existe une autre commande que Uptime pour connaître le
temps de "up time" justement ?

Pas facile d'utiliser Uptime dont le format change en fonction du temps,
un truc qui donnerait le temps en secondes serait parfait, mais j'ai pas
trouvé. Ca existe ?

Merci !

Patrick

8 réponses

1 2
Avatar
Eric Levenez
Le 17/04/06 14:27, dans , « Eric
Jacoboni » a écrit :

Eric Levenez writes:

Comment une date de boot connue à la seconde peut-elle donner une précision
à la micro-seconde ? Super ruby :->


T'es un gros malin, toi...


Quand les calculatrices sont apparues dans les écoles, les élèves avaient
tendance à toujours fournir 10 ou 12 chiffres à tout résultat (cela
dépendait juste de la marque de la calculatrice) ! Ils n'avaient aucune
idées de ce qu'est une précision pour des mesures physiques.

Cela n'a pas changé... :->

Si uptime est connu à la seconde et qu'il
est soustrait d'une valeur connue à la micro-seconde, tu crois que ça
donne quoi, à ton avis ?


Une erreur bien sûr.

Cela dit, bien vu : j'avais oublié l'existence de l'option -n


Oui, convertir une chaîne contenant une date en nombre, c'est écraser une
mouche avec un marteau pilon. Enfin bon, j'en connais d'autres qui auraient
fait cela en Java en prétextant je ne sais quelle portabilité... :-)

Mon script peut donc se résumer à la ligne suivante (et pour te faire
plaisir, je converti tout en secondes) :


Ce n'est pas pour me faire plaisir, c'est juste pour respecter les grandeurs
physiques.

puts( Time.now.to_i - %x(sysctl -n kern.boottime).to_i)


Sûr que lancer un ruby pour faire une soustraction, c'est un must dans la
programmation ! :-D

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Eric Jacoboni
Eric Levenez writes:

Si uptime est connu à la seconde et qu'il
est soustrait d'une valeur connue à la micro-seconde, tu crois que ça
donne quoi, à ton avis ?


Une erreur bien sûr.


Ca donne une valeur en micro-secondes, that was the point. J'ajouterai
que, hum, de toutes façons, exprimer l'uptime en secondes, hein...

Sûr que lancer un ruby pour faire une soustraction, c'est un must dans la
programmation ! :-D


C'est être pragmatique dans mon cas, car il m'a fallu moins de temps
pour trouver cette solution qu'il m'en aurait fallu pour trouver la
solution en shell (surtout si j'avais oublié l'option -n). Le
pragmatisme, c'est bien aussi et, souvent, ça ne coûte pas beaucoup
plus cher :

% time expr `date +%s` - `sysctl -n kern.boottime` ; time ruby uptime.rb
1174660
expr `date +%s` - `sysctl -n kern.boottime` 0,00s user 0,01s system 50% cpu 0,016 total
1174660
ruby uptime.rb 0,01s user 0,02s system 76% cpu 0,032 total

Un différentiel d'exécution de 0.01s, c'est pas non plus la mort pour
une commande qui ne sera lancée qu'épisodiquement.
--
Eric Jacoboni, ne il y a 1448722739 secondes


Avatar
tagada
Eric Jacoboni wrote:

(Patrick B) writes:

Pas facile d'utiliser Uptime dont le format change en fonction du temps,
un truc qui donnerait le temps en secondes serait parfait, mais j'ai pas
trouvé. Ca existe ?


Je ne sais pas si ça existe, mais si j'avais besoin d'un truc comme
ça, j'écrirai un script dans un langage idoine pour récupérer la
sortie de la commande uptime, en isoler les composantes temporelles
et faire le savant calcul.


Pas un savant calcul, mais comme la commande uptime ne retourne pas
toujours les données dans le même format, il faut gérer au moins 6 cas
différents, d'ou une palanquée de "if then" très disgracieux...

Patrick


Avatar
tagada
patpro ~ Patrick Proniewski wrote:

je n'ai rien en secondes, mais si tu sais jouer avec les dates tu peux
utiliser :

sysctl kern.boottime

qui répond un truc comme ça :

kern.boottime = Sun Apr 16 12:36:58 2006


Merci ! là c'est nettement plus facile à gérer que "uptime". Ca fera 3
lignes au lieu de 50...

Patrick

Avatar
tagada
Eric Levenez wrote:

En shell standard :

expr `date +%s` - `sysctl -n kern.boottime`


Wow, trop fort ! directement en secondes, mon rêve ! merci. Trop bien le
terminal quand on sait s'en servir...

Patrick

Avatar
laurent.pertois
Eric Levenez wrote:

expr `date +%s` - `sysctl -n kern.boottime`


Tiens, un truc qui me turlupine.

[rdaneel:~] laurent$ sysctl kern.boottime
kern.boottime = Fri Apr 14 02:06:18 2006

[rdaneel:~] laurent$ sysctl -n kern.boottime
1144973178

Un coup, il donne une jolie date, une autre fois, avec -n (qui n'est
supposé que supprimer le rappel de l'élément appelé) il affiche
directement le résultat en seconde.

Une idée ?

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
Eric Levenez
Le 19/04/06 1:20, dans
<1he0omk.psvngu15o5o3bN%, « Laurent Pertois »
a écrit :

Eric Levenez wrote:

expr `date +%s` - `sysctl -n kern.boottime`


Tiens, un truc qui me turlupine.

[rdaneel:~] laurent$ sysctl kern.boottime
kern.boottime = Fri Apr 14 02:06:18 2006

[rdaneel:~] laurent$ sysctl -n kern.boottime
1144973178

Un coup, il donne une jolie date, une autre fois, avec -n (qui n'est
supposé que supprimer le rappel de l'élément appelé) il affiche
directement le résultat en seconde.


L'option -n sert à afficher la valeur brute dans le cas d'une date. Le man
devrait être mis à jour.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
laurent.pertois
Eric Levenez wrote:

L'option -n sert à afficher la valeur brute dans le cas d'une date. Le man
devrait être mis à jour.


Bah, si c'était le seul man pas à jour sur Mac OS X :-/

Merci de la réponse.



--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

1 2