私は、リモートサーバー上のユーザーセッションを監視し、アイドル状態が長すぎる場合に警告するプロセスを理解しようとしています。これは、Linuxコマンドw
で適切です。
問題は-w
が3つの異なる形式を使用してセッションのアイドル時間を指定しているため、それらを適切に理解できないことです。 w
の出力は次のようになります。
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
ご覧のとおり、IDLEにはユーザーごとに異なる形式があります。
修飾子がない場合は、MM:SS、つまり分と秒全体を意味します。追加のボーナスとして、その出力にはない4番目の形式があります。非アクティブな日数(NNdays)です。
マニュアルページから
時刻がそれぞれ2日、1時間、または1分を超える場合、標準形式はDDdays、HH:MMm、MM:SSまたはSS.CCです。
したがって、出力はMM:SS(> 1mおよび<1時間)です。
答えは27分47秒です
あなたの質問に対する完全な答えではありませんが、ログインセッションのアイドル時間を確認するより簡単な方法は、/ dev/ptsを調べることです。そこにあるファイルの変更時刻は、ログインセッションが最後に入力を受け取った時刻を反映しています。
そこでstat操作(たとえば、stat --format = "%n%X" *)を実行し、すべてをエポック秒単位で維持できる必要があります。時間の計算が簡単になります。