无法在linux中打印长度超过8个字符的带有“w”的用户名

问题描述 投票:0回答:4

我正在编写一个 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 正在使用的源获取信息?

linux
4个回答
2
投票

男人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.

2
投票

嗨@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

1
投票

w
/var/run/utmp
获取信息。如果您的
w
版本不支持
PROCPS_USERLEN
环境变量,您可以使用
utmpdump
命令并使用
awk
:

解析它

例如以下命令将提取用户名:

utmpdump /var/run/utmp | awk '{gsub(/[][]/, "", $4); print $4}'

0
投票

最大为 32 个字符,否则不起作用

© www.soinside.com 2019 - 2024. All rights reserved.