在一个旧的GNU / Linux Ubuntu框中,我看到类似的东西
lorenzo@metropolis:~ $ w 09:58:18 up 651 days, 19:30, 5 users, load average: 0.28, 0.30, 0.24
问题是,我login了其他三个会话。 这个数字应该是四,而不是五。 任何线索为什么报告的用户数量更高?
然而,检查lastlog返回一个正确的值:
lorenzo@metropolis:~ $ sudo last -ain 7 | grep 'still logged in' | wc -l 4
这是who在另一个场合,但仍然显示两个用户的输出,三个由w报告
lorenzo@metropolis:~ $ who lorenzo pts/0 Dec 28 13:10 (XXX) lorenzo pts/1 Dec 28 13:07 (XXX) lorenzo@metropolis:~ $ w 13:11:15 up 651 days, 22:43, 3 users, load average: 0.49, 0.40, 0.31 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT lorenzo pts/0 XXX 13:10 0.00s 0.11s 0.00sw lorenzo pts/1 XXX 13:07 3:09m 0.13s 0.13s -bash
我的偏执感是刺痛的。
[编辑]一些更多的命令请求
$ cat /etc/issue Ubuntu 8.04 \n \l $ dpkg-query -S /usr/bin/w.procps procps: /usr/bin/w.procps $ dpkg-query -S /usr/bin/who coreutils: /usr/bin/who
w使用/var/run/utmp和/proc文件系统(在Linux上),logging当前login的用户。
last使用/var/log/wtmp (和/var/log/btmp ),显示了如何login。但是,并不是每个程序都会正确地更新这些文件,在某些系统上这些文件甚至可能不存在。
例如,在我的系统上,我可以在单个GNU屏幕会话中看到我的5个login会话:
$ w | tail -n +3 | wc -l 五 $ last | grep -c仍然\logging 1
而last只logging了一个活跃的会议。 当在GNU屏幕中设置deflogin=off时,即使我在同一个屏幕会话中再打开另外5个窗口,即使失去跟踪活动login会话并继续显示5个会话。
IOW:使用例如ps来找出有多less用户“在线”,有多less个shell被打开等。它将提供更准确的结果,因为不依赖(陈旧的)statfiles /var/log/utmp 。
在我的情况下, w返回Xsession加上开放的terminal
$ w 12:05:40 up 3:47, 2 users, load average: 0.02, 0.15, 0.16 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT userXX tty7 :0 08:18 3:47m 13:41 0.00s /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc userXX pts/0 :0.0 12:03 0.00s 0.11s 0.00sw
这就是为什么有一个用户更多。 你有同样的事情吗? 如果不是这样的话,你能否使用完整的w结果?
当只使用'w'时,它会显示标题加上你当前启动的命令,所以它总是会显示一个额外的行,你的用户看起来在执行'w',那么它总是会显示一行。