linux - JiyangM/spring GitHub Wiki

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间用户数负载
# cat /proc/loadavg      # 查看系统负载

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息


# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

top 命令 按z按颜色展示

top - 14:02:56 up 358 days,  3:32,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 153 total,   1 running, 151 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.6%us,  0.1%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8193184k total,  7931780k used,   261404k free,   186164k buffers
Swap:        0k total,        0k used,        0k free,   806560k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17016 root      20   0 6857m 1.6g  13m S  1.0 19.9   1:44.91 java
  • Tasks 进程数
  • Cpu 使用情况
  • Mem 内存使用情况
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si

最后两行为内存信息内容如下Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量内存中的内容被换出到交换区而后又被换入到内存但使用过的交换区尚未被覆盖该数值即为这些内容已存在于内存中的交换区的大小相应的内存再次被换出时可不必再对交换区写入

vmstat CPU使用率,内存使用,虚拟内存交换情况,IO读写情况

  • vmstat 2 参数2 表示两秒 采集一次
r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲没什么程序在跑当这个值超过了CPU数目就会出现CPU瓶颈了这个也和top的负载有关系一般负载超过了3就比较高超过了5就高超过了10就不正常了服务器的状态很危险top的负载类似每秒的运行队列如果运行队列过大表示你的CPU很繁忙一般会造成CPU使用率很高b 表示阻塞的进程,这个不多说进程阻塞大家懂的swpd 虚拟内存已使用的大小如果大于0表示你的机器物理内存不足了如果不是程序内存泄露的原因那么你该升级内存了或者把耗内存的任务迁移到其他机器free   空闲的物理内存的大小我的机器内存总共8G剩余3415Mbuff   Linux/Unix系统是用来存储目录里面有什么内容权限等的缓存我本机大概占用300多M

cache cache直接用来记忆我们打开的文件,给文件做缓冲我本机大概占用300多M(这里是Linux/Unix的聪明之处把空闲的物理内存的一部分拿来做文件和目录的缓存是为了提高 程序执行的性能当程序使用内存时buffer/cached会很快地被使用。)

si  每秒从磁盘读入虚拟内存的大小如果这个值大于0表示物理内存不够用或者内存泄露了要查找耗内存进程解决掉我的机器内存充裕一切正常so  每秒虚拟内存写入磁盘的大小如果这个值大于0同上bi  块设备每秒接收的块数量这里的块设备是指系统上所有的磁盘和其他块设备默认块大小是1024byte我本机上没什么IO操作所以一直是0但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s磁盘写入速度差不多140M每秒

bo 块设备每秒发送的块数量例如我们读取文件bo就要大于0bi和bo一般都要接近0不然就是IO过于频繁需要调整in 每秒CPU的中断次数包括时间中断

cs 每秒上下文切换次数例如我们调用系统函数就要进行上下文切换线程的切换也要进程上下文切换这个值要越小越好太大了要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中我们一般做性能测试时会进行几千并发甚至几万并发的测试选择web服务器的进程可以由进程或者线程的峰值一直下调压测直到cs到一个比较小的值这个进程和线程数就是比较合适的值了系统调用也是每次调用系统函数我们的代码就会进入内核空间导致上下文切换这个是很耗资源也要尽量避免频繁调用系统函数上下文切换次数过多表示你的CPU大部分浪费在上下文切换导致CPU干正经事的时间少了CPU没有充分利用是不可取的us 用户CPU时间我曾经在一个做加密解密很频繁的服务器上可以看到us接近100,r运行队列达到80(机器在做压力测试性能表现不佳)。

sy 系统CPU时间如果太高表示系统调用时间长例如是IO操作频繁id  空闲 CPU时间一般来说id + us + sy = 100,一般我认为id是空闲CPU使用率us是用户CPU使用率sy是系统CPU使用率wt 等待IO CPU时间

pstree 以树状图显示正在运行中的进程 -p 显示所有进程号

init─┬─AliYunDun───19*[{AliYunDun}]
     ├─AliYunDunUpdate───3*[{AliYunDunUpdat}]
     ├─aliyun-service
     ├─atd
     ├─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─irqbalance
     ├─6*[mingetty]
     ├─nginx───4*[nginx]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─salt-minion─┬─salt-minion
     │             └─2*[{salt-minion}]
     ├─sshd───sshd───sshd───bash───pstree
     ├─supervisord─┬─java───76*[{java}]
     │             ├─java───50*[{java}]
     │             ├─java───39*[{java}]
     │             ├─java───110*[{java}]
     │             ├─java───31*[{java}]
     │             └─java───48*[{java}]
     ├─udevd───2*[udevd]
     └─zabbix_agentd───10*[zabbix_agentd]

nginx


文本查看

⚠️ **GitHub.com Fallback** ⚠️