wコマンドは標準ではユーザ名表示が8文字までの制限があります。
testuser123456789(17文字)とtestuserda1234567890123456789012(32文字)がいた場合
# grep "testuser" /etc/passwd
testuser123456789:x:2002:2002::/home/testuser123456789:/bin/bash
testuserda1234567890123456789012:x:2003:2003::/home/testuserda1234567890123456789012:/bin/bash
testuser123456789、testuserda1234567890123456789012の2ユーザがログインしている場合、
デフォルトではいずれも「testuser」と表示されてしまいます。
# w
11:30:45 up 6 days, 3:45, 4 users, load average: 0.42, 0.17, 0.11
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 09:45 1:42m 0.45s 0.45s -bash
root pts/0 192.168.246.34 11:30 2.00s 0.05s 0.00s w
testuser pts/1 192.168.246.34 09:48 1:42m 0.05s 0.05s -bash
testuser pts/2 192.168.246.34 10:17 1:12m 0.05s 0.05s -bash
文字数を増やすには
man w
を実行すると下記の環境変数の説明がされています。
PROCPS_USERLEN
で表示されるユーザ名の文字数を変更できるようになっています。
ENVIRONMENT
PROCPS_USERLEN
Override the default width of the username column. Defaults to 8.
適応してみる
wコマンドを実行するユーザの.bash_profileに「export PROCPS_USERLEN=32」を追加してみました。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PROCPS_USERLEN=32 <---- 追加
適応後
sourceコマンドで適応後、wコマンドを実施すると両方のユーザ名がすべて表示されるようになりました。
32文字のユーザ名も表示されるようになっています。
# vi .bash_profile
# source .bash_profile
# w
11:44:32 up 6 days, 3:59, 4 users, load average: 0.08, 0.12, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 09:45 1:55m 0.45s 0.45s -bash
root pts/0 192.168.246.34 11:30 0.00s 0.15s 0.00s w
testuser123456789 pts/1 192.168.246.34 09:48 48.00s 0.06s 0.06s -bash
testuserda1234567890123456789012 pts/2 192.168.246.34 10:17 1:26m 0.05s 0.05s -bash
注意点
wコマンドの古いバージョンでは、PROCPS_USERLEN環境変数自体存在しないバージョンやPROCPS_USERLENが最大16文字までのバージョンもあるようです。
ただし、CentOS7.9(wコマンドのバージョン3.3.10)でもPROCPS_USERLEN=32
の設定で32文字まで表示されたので、最近のLinuxのバージョンであれば、問題なく利用できそうです。