欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

系统资源监控、开机信息查看、内存使用查看和用户查看

程序员文章站 2024-03-23 12:54:16
...

1、Linux vmstat命令:监控系统资源

1.1、命令的意义及格式

意义:vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
命令的格式(两种):

[aaa@qq.com ~]# vmstat [-a] [刷新延时 刷新次数]
[aaa@qq.com ~]# vmstat [选项] 

1.2、选项

  • -a 的含义是用 inact/active(活跃与否) 来取代 buff/cache 的内存输出信息;
  • -fs -f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。
  • -s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。
  • -S 单位 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
  • -d 列出硬盘有关读写总量的统计表。
  • -p 分区设备文件名 查看硬盘分区的读写情况。

1.3、举例

[aaa@qq.com proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 12 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 15 13 0 0 100 0 0

在上面的例子中,各个字段的意义如下:
系统资源监控、开机信息查看、内存使用查看和用户查看

2、Linux dmesg命令:显示开机信息

2.1 命令的意义及格式

意义:无论是系统启动过程中,还是系统运行过程中,只要是内核产生的信息,都会被存储在系统缓冲区中,如果开机时来不及查看相关信息,可以使用 dmesg 命令将信息调出,此命令常用于查看系统的硬件信息。(除此之外,开机信息也可以通过 /var/log/ 目录中的 dmesg 文件进行查看。)
格式[aaa@qq.com ~]# dmesg

2.2 举例

[aaa@qq.com ~]# dmesg | grep CPU
#查看CPU的信息
Transmeta TransmetaCPU
SMP:Allowing 1 CPUs, 0 hotplug CPUs
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
PERCPU:Embedded 14 pages/cpu @c1a00000 s35928 r0 d21416 u2097152
Initializing CPU#0
CPU:Physical Processor ID:0
mce:CPU supports 0 MCE banks
CPU0:Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz stepping 09
Brought up 1 CPUs
microcode:CPU0 sig=0x306a9, pf=0x1, revision=0x12
[aaa@qq.com ~]# dmesg | grep eth0
#查看第一块网卡的信息
eth0:registered as PCnet/PCI II 79C970A
eth0:link up
eth0:no IPv6 routers present

3、Linux free命令:查看内存使用状态

3.1 命令的意义及格式

意义:free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况,其输出和 top 命令的内存部分非常相似。
格式[aaa@qq.com ~]# free [选项]

3.2 选项

  • -b 以 Byte(字节)为单位,显示内存使用情况。
  • -k 以 KB 为单位,显示内存使用情况,此选项是 free 命令的默认选项。
  • -m 以 MB 为单位,显示内存使用情况。
  • -g 以 GB 为单位,显示内存使用情况。
  • -t 在输出的最终结果中,输出内存和 swap 分区的总量。
  • -o 不显示系统缓冲区这一列。
  • -s 间隔秒数 根据指定的间隔时间,持续显示内存使用情况。

3.3举例

[aaa@qq.com ~]# free -m
                  total       used    free   shared   buffers    cached
Mem:           725        666      59           0       132         287
-/+ buffers/cache:     245     479
Swap:           996            0     996

第一行显示的是各个列的列表头信息,各自的含义如下所示:

  • total 是总内存数;
  • used 是已经使用的内存数;
  • free 是空闲的内存数;
  • shared 是多个进程共享的内存总数;
  • buffers 是缓冲内存数;
  • cached 是缓存内存数。

Mem 一行指的是内存的使用情况;-/buffers/cache 的内存数,相当于第一行的 used-buffers-cached。+/buffers/cache 的内存数,相当于第一行的 free+buffers+cached;Swap 一行指的就是 swap 分区的使用情况。可以看到,系统的物理内存为 725 MB,已经使用了 666 MB,空闲 59 MB。而 swap 分区总大小为 996 MB,目前尚未使用。

4、Linux w和who命令:查看登陆用户信息

4.1 命令的意义及格式

意义:Linux 中,使用 w 或 who 命令都可以查看服务器上目前已登录的用户信息,两者的区别在于,w 命令除了能知道目前已登陆的用户信息,还可以知道每个用户执行任务的情况。
格式
w[aaa@qq.com ~]# w [选项] [用户名]
w选项

  • -h 不显示输出信息的标题
  • -l 用长格式输出
  • -s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
  • -V 显示版本信息

who[aaa@qq.com ~]# who [选项] [file]
需要说明的是,who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息,但如果通过 file 指定另一个文件,则 who 命令将不再默认读取 /var/run/utmp 文件,而是读取该指定文件来获取信息。
who选项

  • -a 列出所有信息,相当于所有选项。
  • -b 列出系统最近启动的时间日期。
  • -l 列出所有可登陆的终端信息。
  • -m 仅列出关于当前终端的信息,who -m 命令等同于 who am i。
  • -q 列出在本地系统上的用户和用户数的清单。
  • -r 显示当前系统的运行级别。
  • -s 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
  • -u 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
  • -T 或 -w 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。

4.2 举例

例1:显示当前用户登陆信息

[aaa@qq.com ~]# w
 13:13:56 up 13:00,  1 user,  load average: 0.08, 0.02, 0.01
USER   TTY    FROM              aaa@qq.com   IDLE   JCPU   PCPU WHAT
root    tty1    -                        11:04       0.00s  0.36s   0.00s  -bash
root    pts/0  192.168.0.108   13:15       0.00s   0.06s   0.02s   w

上面的输出信息中,第一行其实和 top 命令的第一行非常类似,主要显示了当前的系统时间、系统从启动至今已运行的时间、登陆到系统中的用户数和系统平均负载(平均负载(load average)指的是在 1 分钟、5 分钟、15 分钟内系统的负载状况)。
从第二行开始,显示的是当前所有登陆系统的用户信息,第二行是用户信息的各列标题,从第三行开始每行代表一个用户。具体含义如下:

  • USER 登录到系统的用户。
  • TTY 登录终端。
  • FROM 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
  • aaa@qq.com 用户登陆的日期和时间。
  • IDLE 表示某个程序上次从终端开始执行到现在所持续的时间。
  • JCPU 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
  • PCPU 当前进程所占用的 CPU 运算时间。
  • WHAT 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。

从 w 命令的输出中已知,Linux 服务器上已经登录了两个 root 用户,一个是从本地终端 1 登录的(tty1),另一个是从远程终端 1 登录的(pts/0),登录的来源 IP 是 192.168.0.108。
例2:显示系统最新启动日期,以及每个用户的登陆详情、终端状态
相比较 w 命令,who 命令只能显示当前登陆的用户信心,但无法知晓每个用户正在执行的命令:

[aaa@qq.com ~]# who     <--等同于 who -s
root tty1 2013-06-07 09:53
root pts/0 2013-06-07 09:53 (192.168.0.108)
#用户名 登录终端 登录时间(登录来源IP)

5、Linux last和lastlog命令:查看过去登陆的用户信息

5.1 命令的意义和格式

意义:last 命令可以查看当前和过去登陆系统用户的相关信息;lastlog 命令可以查看到每个系统用户最近一次登陆系统的时间。
格式
last[aaa@qq.com ~]# last [选项]
在执行 last 命令时,它默认会读取 /var/log/wtmp 日志文件,这是一个二进制文件,不能直接用 vi 编辑,只能通过 last 命令调用。
lastlog 命令默认是去读取 /var/log/lastlog 日志文件的,这个文件同样是二进制文件,不能直接用 vi 编辑,需要使用 lastlog 命令调用。
last选项

  • -a 把从何处登陆系统的主机名或 IP 地址显示在最后一行。
  • -R 不显示登陆系统的主机名或 IP 地址。
  • -x 显示系统关机、重新开机以及执行等级的改变等信息。
  • -n 显示列数 设置列出信息的显示列数。
  • -d 将显示的 IP 地址转换成主机名称。

lastlog:见例2

5.2 举例:

例1:查询当前和过去登录的用户信息。

[aaa@qq.com ~]# 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)
#还能看到系统的重启时间
…省略部分输出…

例2:查看登陆过当前系统用户的最近一次登陆时间(lastlog命令)

[aaa@qq.com ~]#lastlog
#用户名        端口    来自                最后登陆时间
Username    Port   From                Latest
root             pts/1  192.168.1.100  Wed Mar  4 11:04:22 +0800 2009
bin                                                  **Never logged in**
....(中间省略)....
vbird1          pts/2  192.168.1.100  Wed Mar  4 13:15:56 +0800 2009
....(以下省略)....