Linux 'w'コマンド、アイドル時間(秒)を取得する

Linux 'w'コマンド、アイドル時間(秒)を取得する

すべてのユーザーのアイドル時間を秒単位(分または日単位ではない)として取得する必要があります。どうすればいいですか?このコマンドは、接続されているすべてのユーザーのアイドル時間をリストします。

w | awk '{if (NR!=1) {print $1,$5 }}'

出力:

USER IDLE
root 4:29m
root 105days
root 2days
root 10:49m
root 7.00s
root 4:27m

仕事と分を秒に変換するには?

ベストアンサー1

アイドル時間は、ユーザーがログインしたTTYデバイスの最後のアクセス時間よりも複雑ではありません。したがって、簡単なアプローチは、人々がログインしているすべてのTTY名を取得し、次のことを行うことですstat

who -s | awk '{ print $2 }' | (cd /dev && xargs stat -c '%n %U %X')

一部のシステムでは、ログインセッション(実際のttyにないX11セッション)に対してエラーが発生します。

絶対時間の代わりに年齢が必要な場合は、後処理して現在の時間から減算してください。

who -s | awk '{ print $2 }' | (cd /dev && xargs stat -c '%n %U %X') |
    awk '{ print $1"\t"$2"\t"'"$(date +%s)"'-$3 }'

またはperl'演算子を使用してください-A

who -s | perl -lane 'print "$F[1]\t$F[0]\t" . 86400 * -A "/dev/$F[1]"'

おすすめ記事