Bagaimana cara membaca kolom "IDLE" di output perintah Linux 'w'?

11

Saya mencoba mencari proses yang memantau sesi pengguna di server jauh dan mengingatkan mereka ketika mereka terlalu lama menganggur, yang dengan perintah Linux wtepat tepat.

Masalahnya adalah - wmenggunakan 3 format berbeda untuk menentukan waktu idle sesi, dan saya tidak bisa mengetahuinya dengan benar. Output dari wmungkin terlihat seperti ini:

 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

Seperti yang Anda lihat, IDLE memiliki format berbeda untuk masing-masing pengguna:

  • "AA.BBs" jelas berarti bahwa AA detik dan BB 1/100 detik (46 detik dalam kasus Juni) telah berlalu sejak dia terakhir aktif di konsol.
  • "AA: BBm" mungkin berarti bahwa jam AA dan BB telah berlalu sejak John terakhir aktif di sesi.
  • "AA: BB" adalah format yang saya tidak tahu - berapa lama Jennifer tidak aktif dalam sesi nya?
Guss
sumber

Jawaban:

4

Tanpa kualifikasi, itu berarti MM: SS - yaitu, menit dan seluruh detik. Sebagai bonus tambahan, ada format keempat yang tidak Anda miliki dalam output itu - beberapa hari (NNdays) tidak aktif.

womble
sumber
10

Dari halaman manual

Format standar adalah DDdays, HH: MMm, MM: SS atau SS.CC jika waktunya lebih besar dari 2 hari, 1 jam, atau 1 menit masing-masing.

jadi output Anda adalah MM: SS (> 1m dan <1 jam).

user9517
sumber
1

Bukan jawaban untuk pertanyaan Anda, tetapi pendekatan yang lebih mudah untuk memeriksa waktu idle sesi login adalah dengan melihat / dev / pts. Waktu modifikasi file di sana mencerminkan terakhir kali sesi login menerima input.

Anda harus dapat melakukan operasi stat di sana (misalnya, stat --format = "% n% X" *), dan menyimpan semuanya dalam beberapa detik. Seharusnya membuat perhitungan waktu lebih mudah.

cjc
sumber
1
Jika Anda menemukan diri Anda mem-parsing format waktu, Anda mungkin ingin mencari sumber cap waktu itu dalam waktu yang sangat lama.
cjc
1
Saya membaca sesuatu tentang itu, tetapi saya perhatikan bahwa waktu idle yang dilaporkan wberbeda dari cap waktu pada /dev/ptsfile. ada yang tahu kenapa?
Guss
Dalam konteks apa bedanya? Saya belum melihat ini dengan hati-hati, tetapi "w" harus menarik informasi dari suatu tempat, dan / dev / pts adalah tempat yang jelas. Ah, mungkin jika sesuatu terjadi di layar (/ dev / pts / * harus komunikasi 2 arah); dalam hal ini, pengguna akan diam, tetapi, karena ada sesuatu yang melintasi perangkat, / dev / pts / 0 misalnya akan diperbarui.
cjc
Itu kemungkinan penjelasan, dan itu akan mengalahkan skema saya - karena saya ingin mematikan sesi idle bahkan jika pengguna tailing beberapa file log aktif atau menggunakan watch.
Guss
1

Jawabannya adalah 27 menit dan 47 detik

  1. format standar adalah MM: SS.
  2. 22: 29m berarti 22 jam dan 29 menit
  3. 46,00 berarti 46 detik
  4. 4d berarti 4 hari
Kexin Z
sumber