首页 > 编程笔记 > Linux笔记 阅读:1,443

Linux查看本机登陆用户信息(w、who、last和lastlog命令)

如果我们想要知道 Linux 服务器上目前已经登录的用户信息,则可以使用 w 或 who 命令来进行查询。

w 命令

先看看 w 命令,如下:

[root@localhost ~]# w
09:54:22 up 9:50, 2 users, load average:0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 09:53 57.00s 0.02s 0.02s -bash
root pts/0 192.168.0.108 09:53 0.00s 0.09s 0.06s w


解释一下这个命令的输出。
  • 第一行其实和 top 命令的第一行非常类似,主要显示了系统当前时间、开机多久(up)、有多少用户登录(users),以及 1 分钟、5 分钟、15 分钟前的平均负载(load average)。
  • 第二行是项目的说明,从第三行开始每行代表一个用户。这些项目具体如下:
    1. USER:登录的用户名。
    2. TTY:登录终端。
    3. FROM:从哪个 IP 地址登录。
    4. LOGIN@:登录时间。
    5. IDLE:用户闲置时间。
    6. JCPU:和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
    7. PCPU:当前进程所占用的 CPU 运算时间。
    8. WHAT:当前正在运行的命令。

从 w 命令的输出中已知,Linux 服务器上已经登录了两个 root 用户,一个是从本地终端 1 登录的(tty1),另一个是从远程终端 1 登录的(pts/0),登录的来源 IP 是 192.168.0.108。

who命令

who 命令比 w 命令稍微简单,也可以用来查看系统中已经登录的用户。命令如下:

[root@localhost ~]# who
root tty1 2013-06-07 09:53
root pts/0 2013-06-07 09:53 (192.168.0.108)
#用户名 登录终端 登录时间(登录来源IP)

如果原先登录的用户现在已经退出登录,那么是否还能查看呢?当然可以,这时就需要使用 last 和 lastlog 命令了。

last命令

我们先来看看 last 命令,如下:

[root@localhost ~]# last
#查询当前已经登录和过去登录的用户信息
root pts/0 192.168.0.108 Fri Jun 7 09:53 still logged in
root tty1 Fri Jun 7 09:53 still logged in
root pts/0 192.168.0.101 Fri Jun 7 06:53 - 09:52 (02:59)
root pts/1 192.168.0.103 Fri Jun 7 04:12 - 04:30 (00:18)
#用户名 登录终端 登录IP 登录时间 - 退出时间(在线时间)
reboot system boot 2.6.32-279.el6.i Thu Jun 6 23:53 - 00:03 (00:09)
#还能看到系统的重启时间
…省略部分输出…

last 命令默认是去读取 /var/log/wtmp 日志文件的,这是一个二进制文件,不能直接用 vi 编辑,只能通过 last 命令调用。

lastlog命令

再来看看 lastlog 命令,如下:

[root@localhost ~]# lastlog
#查看系统中所有用户的最后一次登录时间、登录端口和来源IP
用户名 端口 来自 最后登录时间
root pts/0 192.168.0.108 五 6月 7 09:53:46 +0800 2013
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
…省略部分输出…

lastlog 命令默认是去读取 /var/log/lastlog 日志文件的,这个文件同样是二进制文件,不能直接用 vi 编辑,需要使用 lastlog 命令调用。