Press "Enter" to skip to content

Linux常用命令

cpu相关

  • 查看cpu、进程、内存、I/O等系统整体运行状态  vmstat 3

每隔3秒刷新一次

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    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0    19 1002   44  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0
 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0

字段说明:

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。
Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  • 查看cpu使用率 top

Shift+P,按照进程处理器占用率排序 Shift+M, 按照进程内存占用率排序

%us:表示用户空间程序的cpu使用率(没有通过nice调度)

%sy:表示系统空间的cpu使用率,主要是内核程序。

%ni:表示用户空间且通过nice调度过的程序的cpu使用率。

%id:空闲cpu

%wa:cpu运行时在等待io的时间

%hi:cpu处理硬中断的数量

%si:cpu处理软中断的数量

%st:被虚拟机偷走的cpu
  • 查看io使用情况,也可以来查看cpu iostat -c 1 2
  • 每秒cpu使用率情况获取 dstat -c
  • 最占cpu的进程获取 dstat --top-cpu
  • 查看CPU型号  grep 'model\|MHz' /proc/cpuinfo |tail -n 2

网络操作

  • 查看连接某服务端口最多的的IP地址 netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
  • 查看网络负载状况 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  • 实时监控网卡流量(安装iftop)/usr/local/iftop/sbin/iftop -i eth1 -n
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
ESTABLISHED:代表一个打开的连接
SYN-RECV:再收到和发送一个连接请求后等待对方对连接请求的确认
SYN-SENT:再发送连接请求后等待匹配的连接请求
CLOSING:等待远程TCP对连接中断的确认
CLOSED:没有任何连接状态
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
LISTEN:侦听来自远方的TCP端口的连接请求
  • 查看tcp和udp 连接  netstat -nlput
  • 现实本地IP  ifconfig | grep cast | cut -d':' -f2 | cut -d' ' -f1
  • 验证网络管理器服务的状态  systemctl status NetworkManager.service
  • 检查受网络管理器管理的网络接口  nmcli dev status pimg_5a94cd8e2d3ba.png
  • 设置网络管理器服务为自启动服务  systemctl enable NetworkManager.service
  • 查看目前启动的端口号  ss -ntl

文件操作

  • 置空文件 cat /dev/null > filename
  • 当前目录里边有多少文件  find . -maxdepth 1 -type f | wc -l
  • 删除所有空目录 find /data -type d -empty -exec rm -rf {} ;
  • 批量删除空文件(大小等于0的文件) find /data -type f -size 0c -exec rm -rf {} ;  find /data -type f -size 0c|xargs rm –f
  • 删除五天前的文件 find /data -mtime +5 -type f -exec rm -rf {} ;

centos 7 关闭防火墙

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

PHP-FPM 查看

ps aux | grep php

显示php-fpm: pool www的代表work子进程(实际处理请求) 显示php-fpm: process master的代表master主进程(负责管理work子进程)

测试平均PHP子进程占用的内存

$ps auxf | grep php | grep -v grep
work     26829  0.0  0.0 715976  4712 ?        Ss   Jul11   0:00 php-fpm: master process (./etc/php-fpm.conf)
work     21889  0.0  0.0 729076 29668 ?        S    03:12   0:20  \_ php-fpm: pool www         
work     21273  0.0  0.0 728928 31380 ?        S    03:25   0:21  \_ php-fpm: pool www         
work     15114  0.0  0.0 728052 29084 ?        S    03:40   0:19  \_ php-fpm: pool www         
work     17072  0.0  0.0 728800 34240 ?        S    03:54   0:22  \_ php-fpm: pool www         
work     22763  0.0  0.0 727904 20352 ?        S    11:29   0:04  \_ php-fpm: pool www         
work     38545  0.0  0.0 727796 19484 ?        S    12:34   0:01  \_ php-fpm: pool www

// 共占用的内存数量
$ps auxf | grep php | grep -v grep | grep -v master | awk '{sum+=$6} END {print sum}'
162712

// 所有的子进程数量
$ ps auxf | grep php | grep -v grep | grep -v master | wc -l 
6

可以看到第6列,每一个子进程的内存占用大概在19-34M之间(单位为KB)。平均的内存占用为162712KB/6 = 27.1M

查看服务器总的内存大小

$ free -g
             total       used       free     shared    buffers     cached
Mem:           157        141         15          0          4        123
-/+ buffers/cache:         13        143
Swap:            0          0          0

可以看出服务器总得内存大小是157G(-g采用了G的单位)。

查看CPU个数

cat /proc/cpuinfo | grep "physical id" | uniq | wc -l

uniq命令:删除重复行;wc –l命令:统计行数

查看CPU核数

cat /proc/cpuinfo | grep "cpu cores" | uniq

查看CPU型号

cat /proc/cpuinfo | grep 'model name' |uniq model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz

总结:该服务器有2个4核CPU,型号Intel(R) Xeon(R) CPU E5630 @ 2.53GHz

查看内存总数

cat /proc/meminfo | grep MemTotal MemTotal: 32941268 kB //内存32G

curl查看耗时 curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_appconnect}::%{time_redirect}::%{time_pretransfer}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" URL

time_namelookup :DNS 域名解析的时候,就是把 https://zhihu.com 转换成 ip 地址的过程

time_connect :TCP 连接建立的时间,就是三次握手的时间

time_appconnect :SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间

time_redirect :从开始到最后一个请求事务的时间

time_pretransfer :从请求开始到响应开始传输的时间

time_starttransfer :从请求开始到第一个字节将要传输的时间

time_total :这次请求花费的全部时间

发表评论

邮箱地址不会被公开。 必填项已用*标注