Linux系统资源查看 之 资源信息
1. 系统
版本信息
- 内核版本
使用uname
命令:
- -a : 查看所有系统信息
- -r : 查看内核版本信息
- -s : 查看内核名称
代码如下:
[niesh@niesh ~]$ uname -a
Linux niesh 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[niesh@niesh ~]$ uname -r
3.10.0-327.el7.x86_64
[niesh@niesh ~]$ uname -s
Linux
- 发行版本
使用lsb_release
命令 (貌似在Ubuntu上无此命令)
代码如下:
[niesh@niesh ~]$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core
位数
注意,Linux下暂没有命令可以查看系统位数,但是我们可以通过查看系统可执行程序(即elf)的位数进行判定:(可以看到我的Linux为64-bit)
代码如下:
[root@niesh ~]# file /bin/cat
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=03fda19cacc76ee7464947e29ed25552138ae50e, stripped
主机名称
代码如下:
[root@niesh ~]# hostname
niesh
文件系统
可采用 df -Th
进行查看:(主要看根目录的文件系统,此处为 xfs)
代码如下:
[root@niesh ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_niesh-root xfs 18G 9.1G 8.5G 52% /
devtmpfs devtmpfs 726M 0 726M 0% /dev
tmpfs tmpfs 741M 100K 741M 1% /dev/shm
tmpfs tmpfs 741M 9.1M 732M 2% /run
/dev/sda1 xfs 497M 158M 339M 32% /boot
2. 用户登录
登录的用户名
代码如下:
[root@niesh ~]# whoami
root
活动用户
- w:
查看已经登录的用户(详细信息)
- who:
查看登陆的用户(用户名,终端,登录时间)
- w:
代码如下:
[root@niesh ~]# w
17:54:50 up 8:15, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
niesh :0 :0 09:40 ?xdm? 3:35 0.32s gdm-session-wor
niesh pts/0 192.168.139.1 09:41 3:33m 0.10s 0.10s -bash
niesh pts/1 192.168.139.1 09:41 58.00s 0.24s 0.17s sshd: niesh [pr
第一行:系统的基本信息:
- 系统的当前时间:17:54:50
- 从上次启动到现在的时间:8:15 (8小时15分钟)
- 有多少用户登录到本机: 3 (3个),注意,同一个用户可重复登录
- 系统平均负载:过去1min(0.00), 5min(0.01), 10min(0.05)
第二行,8个字段,显示用户的详细信息:
- User: 用户名(相同用户名代表我登录了多次)
- TTY:用户登录的终端代号,TTY1-TTY6分别代表本机上的1到6号的虚拟主控台。PTS表示用户是通过远程登陆的。如果数字为:0则表示用户从XWindow登录系统
- From: 从何处登录,"0"表示本机登录,IP地址为登录的地址
- Login@:登录的时间点
- IDLE:用户登录后的闲置时间
- JCPU:用户所采用的终端所有相关的程序执行时,所消耗的CPU时间
- PCUP:执行后面
WHAT
所耗费的时间- WHAT:表示当前用户正在做的事情:若用户正在执行某个程序,则这里会显示用户执行程序的名字。如果用户正在操作的是执行一般文字模式的命令,则这里显示的是用户的环境名称
- who:
代码如下:
[niesh@niesh ~]$ w
09:52:00 up 8:33, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
niesh :0 :0 四09 ?xdm? 3:52 0.33s gdm-session-worker [pam/gdm-password]
niesh pts/0 192.168.139.1 四09 19:30m 0.10s 0.10s -bash
niesh pts/1 192.168.139.1 四09 15:52m 0.24s 0.17s sshd: niesh [priv]
niesh pts/2 :0 四10 15:56m 0.09s 1.93s /usr/libexec/gnome-terminal-server
登录的历史信息
- last:
显示用户登录的历史信息
原理即为读取了/var/log/wtmp
- lastlog:
读取
/var/log/lastlog
, 同last
- last:
代码如下:
[niesh@niesh log]$ last
niesh pts/4 192.168.139.1 Fri Aug 25 09:40 still logged in
niesh pts/3 192.168.139.1 Fri Aug 25 09:40 still logged in
niesh pts/2 :0 Thu Aug 24 10:23 still logged in
niesh pts/1 192.168.139.1 Thu Aug 24 09:41 - 11:50 (1+02:08)
niesh pts/0 192.168.139.1 Thu Aug 24 09:41 - 11:32 (1+01:50)
niesh :0 :0 Thu Aug 24 09:40 still logged in
(unknown :0 :0 Thu Aug 24 09:39 - 09:40 (00:00)
reboot system boot 3.10.0-327.el7.x Thu Aug 24 09:39 - 14:05 (1+04:26)
niesh pts/0 192.168.139.1 Wed Aug 23 16:01 - crash (17:37)
niesh pts/2 192.168.139.1 Wed Aug 23 15:31 - crash (18:07)
niesh pts/1 :0 Wed Aug 23 15:30 - crash (18:09)
niesh :0 :0 Wed Aug 23 15:29 - crash (18:09)
niesh pts/0 192.168.139.1 Wed Aug 23 15:29 - 15:46 (00:17)
niesh pts/0 192.168.139.1 Tue Aug 22 18:05 - 18:21 (00:16)
niesh pts/3 192.168.139.1 Tue Aug 22 17:11 - 18:21 (01:09)
niesh pts/2 192.168.139.1 Tue Aug 22 17:06 - 18:21 (01:15)
niesh pts/1 192.168.139.1 Tue Aug 22 13:21 - 18:21 (05:00)
niesh pts/0 192.168.139.1 Tue Aug 22 13:21 - 17:24 (04:02)
(unknown :0 :0 Tue Aug 22 10:11 - 15:29 (1+05:18)
reboot system boot 3.10.0-327.el7.x Tue Aug 22 10:10 - 14:05 (3+03:54)
- lastlog:
代码如下:
[niesh@niesh log]$ lastlog
用户名 端口 来自 最后登陆时间
root pts/2 四 8月 24 10:24:09 +0800 2017
bin **从未登录过**
daemon **从未登录过**
...
oprofile **从未登录过**
tcpdump **从未登录过**
niesh pts/4 192.168.139.1 五 8月 25 09:40:14 +0800 2017
3. 监控系统资源信息
- top:
类似windows的任务管理器,查看系统进程、内存资源占用、运行时间等等信息
定时刷新,占用了大量的系统资源
参数:
- -d:指定更新的间隔(s)
- -q:没有任何延迟的更新
- -c:显示进程完整的路径与名称。
- -s:安全模式
- -i:不显示任何Idle & Zombie进程
- -n:显示更新的次数,完成后将会退出to
- iostat:
监控系统设备的IO负载情况
参数:
- -c: 只显示CPU行
- -d: 显示磁盘行
- -k: 以千字节为单位显示磁盘输出
- -t: 在输出中包括时间戳
- -x: 在输出中包括扩展的磁盘指标
- vmstat [delay][count]:
显示进程、内存、IO等一些列信息
- delay: 延时多少秒刷新一次
- count: 显示多少次
- top:
代码如下:
[niesh@niesh log]$ top -d 10 #为了便于复制,将舒心时间改为10s
top - 14:46:54 up 13:28, 4 users, load average: 0.00, 0.01, 0.05
Tasks: 436 total, 1 running, 435 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.3 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1517428 total, 401340 free, 645368 used, 470720 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 649748 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
63456 niesh 20 0 146420 2396 1444 R 0.3 0.2 0:00.05 top
1315 root 20 0 317868 6524 4980 S 0.2 0.4 1:13.06 vmtoolsd
3978 niesh 20 0 377436 18192 14384 S 0.2 1.2 1:14.92 vmtoolsd
43779 root 20 0 0 0 0 S 0.2 0.0 0:01.98 kworker/0:0
1373 root 20 0 203352 1244 788 S 0.1 0.1 0:00.13 gssproxy
1 root 20 0 191616 6796 3900 S 0.0 0.4 0:08.94 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.07 kthreadd
...
- 第一部分:
- 第一行: 系统时间 + 系统运行时间 + 几个用户 + 1/5/15分钟系统平均负载
- 第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(stopped)+ 僵尸进程数(zombie)
- 第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)
- 第二部分:
- PID(Process IDentificator):进程标识
- USER:进程所有者的用户名
- PR:进程的优先级别
- NI:进程的优先级别数值
- VIRT:进程占用的虚拟内存值
- RES:进程占用的物理内存值
- SHR:进程使用的共享内存值
- S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
- %CPU:该进程占用的CPU使用率
- %MEM:该进程占用的物理内存和总内存的百分比
- TIME+:该进程启动后占用的总的CPU时间
- Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行
top
命令的交互:
- <空格>:立刻刷新
- P:根据CPU使用大小进行排序
- T:根据时间、累计时间排序
- M:根据使用内存大小进行排序
- q:退出top命令
- m:切换显示内存信息
- t:切换显示进程和CPU状态信息
- c:切换显示命令名称和完整命令行
- W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法
- iostat:
代码如下:
[niesh@niesh log]$ iostat -t
Linux 3.10.0-327.el7.x86_64 (niesh) 2017年08月25日 _x86_64_ (1 CPU)
2017年08月25日 15时05分15秒
avg-cpu: %user %nice %system %iowait %steal %idle
0.38 0.01 0.52 0.05 0.00 99.05
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.41 7.26 1.14 358126 56039
dm-0 0.42 7.11 1.09 350846 53990
dm-1 0.00 0.03 0.00 1268 0
- Device: 设备名称
- tps:每秒钟的传输数
- kB_read/s:每秒钟读取数据块(通常为512kB)的个数
- kB_write/s:每秒钟写入数据块(通常为512kB)的个数
- kB_read:512字节块读取总数量
- kB_wrtn:512字节块写入总数量
- vmstat [delay][count]:
代码如下:
[niesh@niesh log]$ vmstat 3 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 401192 1260 469512 0 0 7 1 52 123 0 1 99 0 0
0 0 0 401192 1260 469512 0 0 0 0 57 104 0 0 100 0 0
0 0 0 401068 1260 469512 0 0 0 0 89 175 0 2 98 0 0
0 0 0 401068 1260 469512 0 0 0 0 56 93 0 0 100 0 0
以上各列解释如下:
- r: Running, 正在运行和等待运行的进程数
- b: Sleeping,处于Sleeeping状态的进程数
- swpd: 虚拟内存使用量,一般为0,否则可能是物理内存不够用了
- free: 物理内存空闲大小
- buf: 缓冲区大小
- cache: 缓存大小
- si: 每秒从虚拟内存写入硬盘的大小
- so: 每秒从硬盘读入到虚拟内存的大小
- bi: 块设备每秒接受的块数量
- bo: 块设备每秒发送的块数量
- in: interrupt, 每秒中断CPU的次数
- cs: context switch,每秒切换上下文的次数
- us: 用户CPU时间,%
- sy: 系统CPU时间
- id: 空闲CPU时间
- wa: 等待IO的CPU时间
4. 查看系统负载
- uptime:
查看系统负载状况
参数:
- -p: pretty format
- -s: since yyyy-mm-dd HH:MM:SS format
代码如下:
[niesh@niesh log]$ uptime
15:42:50 up 14:24, 4 users, load average: 0.00, 0.01, 0.05
Linux中有一个通俗的说法:当load avarage ❤️ 系统良好,大于5 可能有严重的性能问题
5. 进程
- rpm -qa:
查看系统中所有安装的软件- ps:
列出系统中运行的进程
参数:
由于 ps 能够支持的系统类型相当的多,所以他的参数多的离谱!
而且有没有加上 - 差很多!详细的用法应该要参考 man ps!
- -A: 所有的进程均显示出来,与 -e 具有同样的效用
- -a: 显示现行终端机下的所有进程,包括其他用户的进程
- -u: 以用户为主的进程状态
- -l: 较长、较详细的将该 PID 的的信息列出
- -j: 工作的格式 (jobs format)
- -e: 同
-A
- -f: 做一个更为完整的输出
- kill [option][arugument]:
option
-u:指定用户
-a:当处理当前进程时,不限制命令名和进程号的对应关系
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号
[0-n]: 0表重启,9表强制关闭,15正常关闭(默认值)
argument: 进程的PID
- job
- ps:
代码如下:
[niesh@niesh ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 191616 6796 ? Ss 01:18 0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 01:18 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 01:18 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 01:18 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 01:18 0:00 [rcu_bh]
- USER:该进程属于那个使用者账号
- PID :该进程的进程ID号
- %CPU:该进程使用掉的 CPU 资源百分比
- %MEM:该进程所占用的物理内存百分比
- VSZ :该进程使用掉的虚拟内存量 (Kbytes)
- RSS :该进程占用的固定的内存量 (Kbytes)
- TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,pts/n表示为由网络连接进主机的程序
- STAT:该程序目前的状态,主要的状态有:
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中但可被某些讯号(signal) 唤醒
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
- START:该进程被触发启动的时间;
- TIME :该进程实际使用 CPU 运作的时间。
- COMMAND:该程序的实际指令为什么?