Linux常用系统命令
任务 监控系统的状态
任务描述
主要实现的是查看查看系统负载信息和查看系统内存、网卡、进程等信息。
任务实施
使用w查看当前系统的负载
[root@VM_10_10_centos ~]# w
19:27:11 up 42 days, 3:40, 1 user, load average: 0.01, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 49.78.212.159 19:27 0.00s 0.00s 0.00s w
[root@VM_10_10_centos ~]# cat /proc/cpuinfo |head -n20
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-26xx v3
stepping : 2
microcode : 1
cpu MHz : 2394.454
cache size : 4096 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good unfair_spinlock eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm xsaveopt pti retpoline bmi1 avx2 bmi2
使用 vmstat 监控系统的状态
[root@VM_10_10_centos ~]# vmstat
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 183360 242760 1717108 0 0 13 16 3 3 1 1 99 0 0
上面讲的 w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU、内存、磁盘等)有压力就无法判断了。通过vmstat就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs、memory、swap、io、system、 cpu. 请重点关注一下r、b、si、so、bi、bo几列。
(1)procs显示进程相关信息
● r:表示运行和等待CPU时间片的进程数,如果长期大于服务器CPU的个数,则说明CPU不够用了;
● b:表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了。
(2)memory内存相关信息
● swpd:表示切换到交换分区中的内存数量 ;
● free:当前空闲的内存数量;
● buff:缓冲大小,(即将写入磁盘的);
● cache:缓存大小,(从磁盘中读取的)。
(3)swap内存交换情况
● si:由交换区写入到内存的数据量;
● so:由内存写入到交换区的数据量。
(4)io磁盘使用情况
● bi:从块设备读取数据的量(读磁盘);
● bo:从块设备写入数据的量(写磁盘)。
(5)system显示采集间隔内发生的中断次数
● in:表示在某一时间间隔中观测到的每秒设备中断数;
● cs:表示每秒产生的上下文切换次数。
(6)CPU 显示CPU的使用状态
● us:显示了用户下所花费CPU时间的百分比;
● sy:显示系统花费CPU时间百分比;
● id:表示CPU处于空闲状态的时间百分比;
● wa:表示I/O等待所占用CPU时间百分比;
● st:表示被偷走的CPU所占百分比(一般都为0,不用关注)。
[root@VM_10_10_centos ~]# vmstat 1 5
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 180632 243168 1718188 0 0 13 16 3 3 1 1 99 0 0
0 0 0 180456 243168 1718188 0 0 0 0 893 2493 1 0 99 0 0
0 0 0 180124 243168 1718188 0 0 0 88 1193 2755 1 1 98 0 0
0 0 0 180556 243168 1718196 0 0 0 0 1062 2564 0 1 99 0 0
0 0 0 180704 243168 1718200 0 0 0 0 944 2534 0 0 99 0 0
top 显示进程所占系统资源
[root@VM_10_10_centos ~]# top
top - 19:39:46 up 42 days, 3:53, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 189 total, 1 running, 188 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.4%sy, 0.0%ni, 99.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8059000k total, 7878848k used, 180152k free, 243384k buffers
Swap: 0k total, 0k used, 0k free, 1718860k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9028 root 20 0 5655m 826m 5244 S 0.7 10.5 279:10.10 java
2068 rabbitmq 20 0 3261m 77m 1864 S 0.3 1.0 150:56.04 beam.smp
2230 mongod 20 0 487m 50m 16m S 0.3 0.6 182:30.69 mongod
2565 root 20 0 717m 10m 1464 S 0.3 0.1 253:46.21 barad_agent
3207 root 20 0 5700m 757m 4568 S 0.3 9.6 271:12.50 java
18619 999 20 0 2271m 336m 5500 S 0.3 4.3 112:13.84 mysqld
28909 root 20 0 15024 1404 1008 R 0.3 0.0 0:00.01 top
31640 root 20 0 5647m 683m 4600 S 0.3 8.7 338:10.21 java
1 root 20 0 19356 632 312 S 0.0 0.0 1:21.39 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:21.01 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:11.48 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:03.55 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:23.44 migration/1
这个命令用于动态监控进程所占系统资源,每隔3秒变一次。这个命令的特点是把占用系统资源(CPU、内存、磁盘IO等)最高的进程放到最前面。
另外,经常会用的一个命令top -bn1。它表示非动态打印系统资源使用情况,示例代码如下
[root@VM_10_10_centos ~]# top -bn1
top - 19:41:21 up 42 days, 3:54, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 189 total, 1 running, 188 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.6%us, 0.5%sy, 0.0%ni, 98.7%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8059000k total, 7880108k used, 178892k free, 243528k buffers
Swap: 0k total, 0k used, 0k free, 1719324k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9028 root 20 0 5655m 826m 5244 S 2.0 10.5 279:10.61 java
18059 nobody 20 0 2403m 141m 23m S 2.0 1.8 37:25.14 httpd
1 root 20 0 19356 632 312 S 0.0 0.0 1:21.39 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:21.01 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:11.48 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:03.55 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:23.44 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1
9 root 20 0 0 0 0 S 0.0 0.0 0:16.03 ksoftirqd/1
和 top 命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。
free查看内存使用状况
[root@VM_10_10_centos ~]# free
total used free shared buffers cached
Mem: 8059000 7808688 250312 22676 198580 1696644
-/+ buffers/cache: 5913464 2145536
Swap: 0 0 0
ps 查看系统进程
[root@VM_10_10_centos ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19356 632 ? Ss Feb12 1:21 /sbin/init
root 2 0.0 0.0 0 0 ? S Feb12 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Feb12 0:21 [migration/0]
root 4 0.0 0.0 0 0 ? S Feb12 0:11 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S Feb12 0:00 [stopper/0]
root 6 0.0 0.0 0 0 ? S Feb12 0:03 [watchdog/0]
root 7 0.0 0.0 0 0 ? S Feb12 0:23 [migration/1]
root 8 0.0 0.0 0 0 ? S Feb12 0:00 [stopper/1]
root 9 0.0 0.0 0 0 ? S Feb12 0:16 [ksoftirqd/1]
root 10 0.0 0.0 0 0 ? S Feb12 0:03 [watchdog/1]
root 11 0.0 0.0 0 0 ? S Feb12 0:21 [migration/2]
root 12 0.0 0.0 0 0 ? S Feb12 0:00 [stopper/2]
root 13 0.0 0.0 0 0 ? S Feb12 0:12 [ksoftirqd/2]
root 14 0.0 0.0 0 0 ? S Feb12 0:03 [watchdog/2]
root 15 0.0 0.0 0 0 ? S Feb12 0:19 [migration/3]
```。。。00000000000