Comment lire la colonne «IDLE» dans la sortie de la commande Linux «w»?

11

J'essaie de comprendre un processus qui surveille les sessions des utilisateurs sur un serveur distant et les avertit lorsqu'elles sont inactives trop longtemps, ce qui avec la commande Linux west bien approprié.

Le problème est - wutilise 3 formats différents pour spécifier le temps d'inactivité de la session, et je ne peux pas les comprendre correctement. Une sortie de wpourrait ressembler à ceci:

 11:40:57 up 400 days, 10:46, 13 users,  load average: 5.07, 5.10, 4.83
USER     TTY      FROM           LOGIN@   IDLE   JCPU   PCPU WHAT
john     pts/1    XX.XX.XX.XX   Wed13   22:29m  0.13s  0.04s ssh master-db
june     pts/2    XX.XX.XX.XX   Wed13   46.00s  0.67s  0.13s -bash
jenn     pts/4    XX.XX.XX.XX   11:13   27:47   4.16s  0.11s -bash

Comme vous pouvez le voir, IDLE a différents formats pour chacun des utilisateurs:

  • "AA.BBs" signifie évidemment que les secondes AA et BB 1 / 100e de seconde (46 secondes dans le cas de juin) se sont écoulées depuis sa dernière activité sur la console.
  • "AA: BBm" signifie probablement que les heures AA et les minutes BB se sont écoulées depuis la dernière activité de John sur sa session.
  • "AA: BB" est le format que je n'arrive pas à comprendre - depuis combien de temps Jennifer n'est-elle pas active dans sa session?
Guss
la source

Réponses:

4

Sans qualificatif, cela signifie MM: SS - c'est-à-dire minutes et secondes entières. En prime, il y a un quatrième format que vous n'avez pas dans cette sortie - un certain nombre de jours (NNdays) d'inactivité.

womble
la source
10

Depuis la page de manuel

Le format standard est DDdays, HH: MMm, MM: SS ou SS.CC si les heures sont supérieures à 2 jours, 1 heure ou 1 minute respectivement.

donc votre sortie est MM: SS (> 1m et <1 heure).

user9517
la source
1

Pas tout à fait la réponse à votre question, mais une approche plus simple pour vérifier le temps d'inactivité des sessions de connexion serait de regarder / dev / pts. Les heures de modification des fichiers qui s'y trouvent reflètent la dernière fois que la session de connexion a reçu une entrée.

Vous devriez pouvoir y effectuer des opérations de statistiques (par exemple, stat --format = "% n% X" *), et tout garder en quelques secondes. Devrait faciliter les calculs de temps.

cjc
la source
1
Si vous vous retrouvez à analyser des formats d'heure, vous voudrez peut-être chercher une source de cet horodatage dans le temps de l'époque.
cjc
1
J'ai lu quelque chose à ce sujet, mais j'ai remarqué que les temps d'inactivité signalés par wsont différents des horodatages des /dev/ptsfichiers. une idée pourquoi?
Guss
Dans quel contexte est-ce différent? Je n'ai pas regardé cela attentivement, mais "w" doit extraire les informations de quelque part, et / dev / pts est un endroit évident. Ah, peut-être que si quelque chose se passe à l'écran (/ dev / pts / * devrait être une communication bidirectionnelle); dans ce cas, l'utilisateur serait inactif, mais, en raison de quelque chose traversant l'appareil, / dev / pts / 0 par exemple serait mis à jour.
cjc
C'est une explication probable, et cela va vaincre mon schéma - parce que je veux arrêter les sessions inactives même si l'utilisateur suit un fichier journal actif ou utilise watch.
Guss
1

La réponse est 27 minutes et 47 secondes

  1. le format par défaut est MM: SS.
  2. 22: 29m signifie 22 heures et 29 minutes
  3. 46.00s signifie 46 secondes
  4. 4d signifie 4 jours
Kexin Z
la source