我正在编写一个 Linux 脚本来提取哪些用户登录到计算机、从哪里登录以及他们空闲了多长时间。 到目前为止,我一直在linux中使用“w”命令。 但是我现在注意到它截断了用户名和来源
我有三个用户登录 测试用户 测试用户-新 拉拉测试用户
他们从以下任意一个登录:testserver 或 superdupertestserver
w 的输出为:
testuser pts/2 testserver 10:12 29.00s 0.15s 0.15s -bash
testuser pts/3 superdupertestse 10:12 21.00s 0.18s 0.18s -bash
lala-tes pts/4 superdupertestse 10:12 21.00s 0.18s 0.18s -bash
我已经在使用输出的“长列表”。有没有办法解决这个问题,或者从 w 正在使用的源获取信息?
男人w:
ENVIRONMENT
PROCPS_USERLEN
Override the default width of the username column. Defaults to
8.
PROCPS_FROMLEN
Override the default width of the from column. Defaults to 16.
嗨@hek2mgl:您只需要导出变量:
patrick_westwood@james:~$ export PROCPS_USERLEN=20
patrick_westwood@james:~$ w
17:53:10 up 1 day, 18 min, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
patrick_westwood pts/0 174.1.33.169 16:54 6.00s 0.19s 0.00s w
patrick_westwood pts/1 174.1.33.169 16:54 58:41 0.00s 0.00s -bash
w
从/var/run/utmp
获取信息。如果您的 w
版本不支持 PROCPS_USERLEN
环境变量,您可以使用 utmpdump
命令并使用 awk
: 解析它
例如以下命令将提取用户名:
utmpdump /var/run/utmp | awk '{gsub(/[][]/, "", $4); print $4}'
最大为 32 个字符,否则不起作用