无法使用" w"打印超过8个字符的用户名。在linux中

时间:2016-11-10 09:53:16

标签: linux

我正在做一个linux脚本来提取哪些用户登录到一台机器,从哪里以及它们闲置了多长时间。 到目前为止,我一直在使用" w" linux中的命令。 但是我现在注意到它截断了用户名和源

我有三个用户登录 testuser的 testuser的新 拉拉-TESTUSER

他们从以下任一处登录:testserver或superdupertestserver

w的输出是:

{{1}}

我已经在使用"长期上市"的输出。有没有办法解决这个问题,或者确实从源w获取信息?

3 个答案:

答案 0 :(得分:1)

man 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.

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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