2009-02-18 6 views

Répondre

0

Cela pourrait être des jours mais je ne suis pas sûr; aussi ce n'est pas une question de programmation.

1

Utilisez la source, Luke:

sprintf(length, "(%d+%02d:%02d)", days, hours, mins); 

Ceci est du paquet source sysvinit sur Debian.

Conseil pour ceux qui ne connaissent pas C: c'est le nombre de jours.

+0

Quoi? Ceci est la mauvaise réponse? – hop

+1

Tellement pour "apporter votre humour". – hop

+1

+1, ça me va bien – foraidt

1

La chaîne entre parenthèses correspond à la durée de la session. Comme vous le notez, le temps est la différence entre les heures de fin et de début. Le 2+ est le nombre de jours en tant que hop noted. À un certain point, cette question devrait probablement être déplacée vers l'erreur de serveur car elle est susceptible d'intéresser les administrateurs système.

C'est un format assez lisible une fois que vous savez ce que vous regardez. Si je dessinais la sortie, je pense que je rendrais le jour de la semaine optionnel et placerais plutôt la date de fin entière dans la chaîne. Encore mieux serait de laisser le tampon de date être configurable. De cette façon, la sortie pourrait être plus facilement utilisée par un autre programme.

La durée réelle, si l'utilisateur a ouvert une session de la session est assez facile à repérer avec une expression régulière:

$ last | perl -lne 'print "$2 days, $3 hours, $4 minutes" if /\(((\d+)\+)(\d{2}):(\d{2})\)$/' 
17 days, 05 hours, 23 minutes 
3 days, 23 hours, 16 minutes 
14 days, 06 hours, 09 minutes 
23 days, 04 hours, 54 minutes 
16 days, 06 hours, 57 minutes 
... 
Questions connexes