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