Come leggere la colonna "IDLE" nell'output del comando 'w' di Linux?


11

Sto cercando di capire un processo che monitora le sessioni degli utenti su un server remoto e li avverte quando sono inattivi troppo a lungo, che con il comando Linux wè opportunamente appropriato.

Il problema è: wutilizza 3 formati diversi per specificare il tempo di inattività della sessione e non riesco a capirli correttamente. Un output di wpotrebbe assomigliare a questo:

 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

Come puoi vedere, IDLE ha diversi formati per ciascuno degli utenti:

  • "AA.BBs" significa ovviamente che i secondi AA e BB 1/100 di secondo (46 secondi nel caso di giugno) sono passati dall'ultima volta che è stato attivo sulla console.
  • "AA: BBm" probabilmente significa che sono trascorse ore AA e minuti BB dall'ultima volta che John è stato attivo nella sua sessione.
  • "AA: BB" è il formato che non riesco a capire - da quanto tempo Jennifer non è attiva nella sua sessione?

Risposte:


4

Senza un qualificatore, significa MM: SS - cioè minuti e interi secondi. Come bonus aggiuntivo, c'è un quarto formato che non hai in quell'output - un numero di giorni (NNdays) di inattività.


10

Dalla pagina man

Il formato standard è DDdays, HH: MMm, MM: SS o SS.CC se i tempi sono rispettivamente superiori a 2 giorni, 1 ora o 1 minuto.

quindi il tuo output è MM: SS (> 1m e <1 ora).


1

Non è proprio la risposta alla tua domanda, ma un approccio più semplice per controllare il tempo di inattività delle sessioni di accesso sarebbe guardare / dev / pts. I tempi di modifica dei file in essa contenuti riflettono l'ultima volta che la sessione di accesso ha ricevuto input.

Dovresti essere in grado di eseguire operazioni stat lì (ad es. Stat --format = "% n% X" *) e conservare tutto in epoche secondi. Dovrebbe facilitare qualsiasi calcolo in qualsiasi momento.


1
Se ti ritrovi ad analizzare i formati di tempo, potresti voler cercare una fonte di quel timestamp in tempo di epoca.
cjc,

1
Ho letto qualcosa a riguardo, ma ho notato che i tempi di inattività riportati wsono diversi dai timestamp sui /dev/ptsfile. qualche idea del perché?
Guss,

In quale contesto è diverso? Non l'ho esaminato attentamente, ma "w" deve estrarre le informazioni da qualche parte e / dev / pts è un posto ovvio. Ah, forse se succede qualcosa sullo schermo (/ dev / pts / * dovrebbe essere una comunicazione bidirezionale); in tal caso, l'utente sarebbe inattivo, ma, a causa di qualcosa che attraversa il dispositivo, / dev / pts / 0 per esempio verrebbe aggiornato.
cjc,

Questa è una probabile spiegazione e annullerà il mio schema, perché voglio chiudere le sessioni inattive anche se l'utente sta eseguendo la coda di un file di registro attivo o sta utilizzando watch.
Guss,

1

La risposta è di 27 minuti e 47 secondi

  1. il formato predefinito è MM: SS.
  2. 22: 29m significa 22 ore e 29 minuti
  3. 46,00 significa 46 secondi
  4. 4d significa 4 giorni
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.