[关闭]
@cdmonkey 2016-01-18T04:52:35.000000Z 字数 5155 阅读 884

About logon

命令总结


它是个多用户的操作系统,一旦连接到网络中,它可以同时为多个登录用户提供服务。系统管理员需要随时了解系统中有那些用户,并且这些用户都在进行什么操作。

一、W

该命令用于显示登录到系统的用户情况,该指令功能强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对“who”命令来说更加详细和科学。

指令格式:

  1. w - [husfV] [user]

常用选项:

  1. [root@PTS01 ~]# w
  2. 14:48:41 up 79 days, 19:24, 2 users, load average: 0.15, 0.13, 0.12
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. app pts/0 172.16.40.145 10:05 7:21 0.03s 0.03s -bash
  5. root pts/1 10.10.205.44 14:48 0.00s 0.03s 0.01s w

当登陆系统用户很多的时候,可以在指令后面加上某个用户名,则会查看该用户执行任务的情况。

命令的显示项目按以下顺序排列:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近一秒、五秒和十五秒的平均负载。然后是每个用户的各项数据,项目显示的顺序如下:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。

空闲时间包含了最近最后一次活动以来消逝的时间。所以上面的“7:21”表示该用户已经有七小时又21分钟没有执行过任何指令了。如果是个点号“.”则是指该终端过去的一分钟有过活动,在那期间,我们称之为“current” 。

二、WHO

作为系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上。必须严密监视我们的服务器。但是,我们当然不可能时刻都盯着系统,我们可以使用“who”命令查看登录者信息。

该命令主要用于查看当前在线上的用户情况。这个命令非常有用,如果用户想和其他的在线用户建立即时通讯连接,比如使用“talk”命令,那么首先要确定的就是该用户确实在线上,不然谈话进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用此命令。

注意:该命令只会显示真正登录到系统中的用户,而不会显示那些通过“su”命令切换用户的登录者。

指令格式:

  1. who [OPTION]... [ FILE | ARG1 ARG2 ]

常用选项:

此处输入图片的描述

  1. [root@PTS01 ~]# who -H
  2. NAME LINE TIME COMMENT
  3. root pts/0 2015-04-30 09:49 (10.10.205.44)

命令的显示项目按以下顺序排列:登录用户名、使用的终端设备、登录到系统的时间、远程主机名。同时,可以看出上述信息与“w”命令非常相似。如果想让列表更详细一些,可以加上相关选项:

  1. [root@PTS01 ~]# who -aH
  2. NAME LINE TIME IDLE PID COMMENT EXIT
  3. 2015-02-08 19:24 2012 id=si term=0 exit=0
  4. system boot 2015-02-08 19:24 #上一次的启动日期及时间(-b)
  5. run-level 3 2015-02-08 19:24 last=S #当前的运行级别(-r)
  6. 2015-02-08 19:24 4958 id=l3 term=0 exit=0
  7. LOGIN tty1 2015-02-08 19:24 7015 id=1 #显示出登录进程(-l)
  8. LOGIN tty2 2015-02-08 19:24 7016 id=2
  9. LOGIN tty3 2015-02-08 19:24 7017 id=3
  10. LOGIN tty4 2015-02-08 19:24 7018 id=4
  11. LOGIN tty5 2015-02-08 19:24 7019 id=5
  12. LOGIN tty6 2015-02-08 19:24 7020 id=6
  13. app + pts/0 2015-04-30 13:30 00:42 22440 (172.16.40.145) #列出已登录的用户(-u)
  14. root + pts/1 2015-04-30 12:36 . 15105 (10.10.205.44)
  15. pts/2 2015-04-29 11:03 30764 id=ts/2 term=0 exit=0
  16. pts/3 2015-04-29 11:03 31755 id=ts/3 term=0 exit=0
  17. pts/4 2015-04-21 21:35 29599 id=ts/4 term=0 exit=0
  18. pts/5 2015-02-12 21:45 15164 id=ts/5 term=0 exit=0
  19. pts/6 2015-02-12 22:15 31226 id=ts/6 term=0 exit=0
  20. pts/7 2015-02-09 16:20 14916 id=ts/7 term=0 exit=0
  21. pts/8 2015-02-09 16:26 14666 id=ts/8 term=0 exit=0
  22. pts/9 2015-02-09 17:29 14964 id=ts/9 term=0 exit=0
  23. #凡是结尾出现“exit”的均属于死亡的进程(-d)
  24. ------------------------
  25. #MAN:
  26. If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.

如上所示,如果现实的是全部信息,那么多出了空闲时间、进程号、退出状态信息等字段。

踢出已登录用户的方法:

  1. [root@WEB-A1 ~]# pkill -KILL -t pts/2

三、WHOAMI

  1. [root@PTS01 ~]# whoami
  2. root
  3. [root@PTS01 ~]# who am i
  4. root pts/0 2015-04-30 09:49 (10.10.205.44)

上面的两个看似十分相似的指令实际上却有所不同。前者“whoami”显示的是当前“操作用户”的用户名(即显示的是有效用户ID),而后者显示的是“登录用户”的用户名(即实际用户的用户名,即用户登陆的时候的用户ID)。

  1. [root@PTS01 ~]# who -m
  2. root pts/1 2015-04-30 12:36 (10.10.205.44)

四、LAST

简介

管理员若想知道系统中用户登陆的历史行为,还可以察看用户曾经登陆到系统。使用“last”命令可以查询曾经登陆用户的信息:

  1. [root@PTS01 ~]# last|less
  2. root pts/0 10.10.205.44 Thu Apr 30 11:25 still logged in
  3. app pts/0 172.16.20.191 Thu Apr 30 11:19 - 11:19 (00:00)
  4. root pts/0 10.10.205.44 Thu Apr 30 09:49 - 10:03 (00:13)
  5. root pts/0 10.10.205.44 Thu Apr 30 08:37 - 09:38 (01:00)
  6. app pts/1 172.16.20.13 Wed Apr 29 15:59 - 16:07 (00:07)
  7. app pts/1 172.16.20.191 Wed Apr 29 15:28 - 15:39 (00:10)
  8. loushg pts/1 172.16.80.17 Wed Apr 29 14:56 - 15:11 (00:14)
  9. ...
  10. #登录终端位置:
  11. #pts/0(伪终端):意味着从诸如SSH或telnet的远程连接的用户。
  12. #tty:意味着直接连接到计算机或者本地连接的用户。

使用该命令时,列出的文件内容会非常多,很难看清楚。此时可以使用上面的方式来进行查看。同查看用户情况一样,想查看那某个用户的登陆情况,也可以在指令后加上用户名,则系统只会显示该用户登陆系统情况。

命令的显示项目按以下顺序排列:登录用户名、登录终端、远程主机名(如果用户来自于远程主机,那么会看到一个主机名或者地址。如果你看见“0.0”或者什么都没有,这意味着用户是通过本地终端来连接的)、开始时间-结束时间以及持续时间。

指令格式:

  1. last [-R] [-num] [ -n num ] [-adFiowx] [ -f file ] [ -t YYYYMMDDHHMMSS ] [name...] [tty...]

常用选项:

此处输入图片的描述

使用

  1. [root@PTS01 ~]# last loushg
  2. loushg pts/1 172.16.80.17 Wed Apr 29 14:56 - 15:11 (00:14)
  3. loushg pts/0 172.16.60.250 Tue Apr 28 23:55 - 23:55 (00:00)
  4. loushg pts/0 172.16.80.17 Wed Apr 15 15:16 - 15:28 (00:11)
  5. loushg pts/0 172.16.80.17 Tue Jan 13 13:25 - 13:35 (00:10)
  6. wtmp begins Tue May 20 12:11:42 2014

执行该指令其实是显示/var/log/wtmp文件自创建起所有用户登录(和登出)的相关信息。该文件是以二进制格式进行存储的,如果直接使用文本编辑器查看,查看的会是一堆乱码。需要说明:操作系统(CentOS)中记录用户登陆信息的日志文件有关当前登录用户的信息记录在“utmp”文件中,登录进入和退出纪录在“wtmp”文件中,而最后一次登录文件可以用“lastlog”命令察看。

  1. /var/run/utmp

指定/var/log/btmp(该文件比“wtmp”文件能显示的更为详细,可以显示远程登录信息)文件,查看登录系统的用户相关信息:

  1. [root@PTS01 ~]# last -n 10 -f /var/log/btmp
  2. app ssh:notty 10.10.200.26 Thu Apr 23 20:48 gone - no logout
  3. app ssh:notty 172.16.40.231 Tue Apr 21 22:35 - 20:48 (1+22:13)
  4. app ssh:notty 172.16.40.231 Wed Mar 18 11:18 - 22:35 (34+11:16)
  5. pts ssh:notty 172.16.20.54 Wed Mar 18 09:31 - 11:18 (01:46)
  6. pts ssh:notty 172.16.20.54 Wed Mar 18 09:31 - 09:31 (00:00)
  7. pts ssh:notty 172.16.20.54 Wed Mar 18 09:31 - 09:31 (00:00)
  8. app ssh:notty 172.16.40.231 Wed Mar 18 08:41 - 09:31 (00:49)
  9. app ssh:notty 172.16.40.231 Wed Mar 18 03:38 - 08:41 (05:02)
  10. app ssh:notty 172.16.40.51 Thu Feb 12 11:14 - 03:38 (33+16:24)
  11. app ssh:notty 172.16.40.51 Wed Feb 11 16:50 - 11:14 (18:24)
  12. btmp begins Thu May 22 17:07:46 2014

http://www.linuxeden.com/html/softuse/20140216/148456.html

五、LASTLOG

显示系统中的所有用户或者指定用户最近一次的登录信息。

  1. [root@PTS02 ~]# lastlog
  2. Username Port From Latest
  3. root pts/3 10.10.205.44 Wed Apr 29 10:59:45 +0800 2015
  4. bin **Never logged in**
  5. daemon **Never logged in**
  6. ...
  7. nagios **Never logged in**
  8. app pts/2 172.16.20.191 Wed Apr 29 10:57:59 +0800 2015
  9. loushg pts/0 172.16.80.17 Wed Mar 18 13:19:40 +0800 2015
  10. systemusers pts/0 10.10.205.50 Tue Jan 27 13:06:17 +0800 2015
  11. network pts/1 10.10.205.50 Fri Apr 3 14:55:23 +0800 2015
  12. dbausers pts/0 10.10.205.50 Tue Jan 27 13:06:31 +0800 2015
  13. appgroup pts/0 10.10.205.50 Tue Jan 27 19:20:25 +0800 2015

六、TTY

显示连接到标准输入的终端文件名。

  1. [root@WEB-A1 ~]# tty
  2. /dev/pts/1

上面显示的就是当前连接的终端对应的文件名,我们可以通过向这个文件写入信息,从而将信息显示到该终端上。

  1. [root@WEB-A1 ~]# echo "Hello man">/dev/pts/1
  2. Hello man
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注