2016-11-10 32 views
0

我做一個Linux腳本提取哪些用戶已登錄到機器上,來自哪裏,多久他們已閒置打印用戶名超過8個字符不再與「W」。 到目前爲止,我一直在linux中使用「w」命令。 不過我現在發現它截斷用戶名和源無法在Linux

我有三個用戶登錄 testuser的 testuser的全新 拉拉-TESTUSER

它們無論從登錄: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的源代碼中獲取信息?

回答

1

人寬:

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. 
+0

你能指出我的正確的手冊頁?我只是有這個:https://linux.die.net/man/1/w – hek2mgl

+0

在命令提示符下鍵入'man w' –

+0

您使用的是哪個版本的'w'? – hek2mgl

0

w會從/var/run/utmp的信息。如果您的w版本不支持PROCPS_USERLEN環境變量,您可以使用utmpdump命令,並解析其與awk

例如下面的命令將提取的用戶名:

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

,但它也使用它自己的輸出格式,它可以;我可以證實它適用於W版本3.3.10 –

+0

當然) – hek2mgl

+0

我想從w中提取的數據是username,tty,空閒時間和from。似乎我需要使用w來獲得空閒時間,然後從last或utmpdump獲取其餘數據 – Johnathan