本文共 10398 字,大约阅读时间需要 34 分钟。
iostat命令被用于监视系统输入输出设备和cpu的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出cpu使用情况。通vmstat一样,iostat也有一个弱点,就是它不能对耨个进程进行深入分析,仅对系统的整体情况进行分析。
iostat和sar是同一个包,安装sysstat即可。
[root@localhost ~]# iostat -x 1Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年11月28日 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle 0.58 0.00 0.79 0.58 0.00 98.04Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilsda 0.00 0.27 5.04 1.88 187.33 72.45 75.09 0.08 11.58 10.20 15.27 2.37 1.64sdb 0.00 0.00 0.28 0.00 1.76 0.00 12.55 0.00 0.55 0.55 0.00 0.50 0.01dm-0 0.00 0.00 0.06 0.00 0.43 0.00 15.20 0.00 0.35 0.35 0.00 0.35 0.00
说明: util%表示io等待占比,正常情况下该值和磁盘读写(r/w)成正比,如果该值很大,读写数值很小则说明磁盘存在问题,系统性能会受影响!
iotop命令是一个用来见识磁盘i/o使用状况的top类工具(动态显示)。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。
安装iotop命令:yum install -y iotop
[root@localhost ~]# iotopTotal DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/sActual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root~-system --deserialize 21 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]517 be/4 dbus 0.00 B/s 0.00 B/s 0.00 % 0.00 % dbus-daemon --system --~ile --systemd-activation ......
注意:主要关注的是io%那一列!
free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区
直接运行free
[root@localhost ~]# free total used free shared buff/cache availableMem: 999936 121428 562816 6812 315692 694048Swap: 2097148 0 2097148
free -h:以适合的单位显示大小。
free -t:显示内存各列信息的总和。-b,k,m,g:以byte、KB、M、G为单位显示。默认单位为KB。说明:
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示系统状况。x:显示所有程序,包括历史进程。e:显示所有进程(同a)f:显示UID、PPIP、C与STIME栏l:显示进程详细信息[root@centos-01 ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.3 128092 6696 ? Ss 19:55 0:00 /usr/lib/systemd/systemd --switched-root --system --droot 2 0.0 0.0 0 0 ? S 19:55 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 19:55 0:00 [ksoftirqd/0]root 6 0.0 0.0 0 0 ? S 19:55 0:00 [kworker/u256:0]......
[root@centos-01 ~]# ps elfF UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND4 0 2095 2092 20 0 115516 2144 wait Ss pts/0 0:00 -bash USER=root LOGNAME=root HOME=/root PATH=/us0 0 2202 2095 20 0 148928 1452 - R+ pts/0 0:00 \_ ps elf XDG_SESSION_ID=1 HOSTNAME=centos-01 S4 0 550 1 20 0 110036 840 n_tty_ Ss+ tty1 0:00 /sbin/agetty --noclear tty1 linux LANG= PATH=/us......
进程是程序执行时的意识实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
进程——资源分配的最小单位
线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。
线程——程序执行的最小单位
进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。)
- a:all,显示所有连线中的socket
- l:listening,显示监控中的服务器的socket
- n:numeric,直接使用IP地址,而不通过域名服务器。
- p:programs,显示正在使用socket的程序识别码和程序名称
- t:tcp,显示tcp传输协议的连接状况
[root@centos-01 ~]# netstat -lnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1382/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1896/master tcp6 0 0 :::22 :::* LISTEN 1382/sshd tcp6 0 0 ::1:25 :::* LISTEN 1896/master udp 0 0 127.0.0.1:323 0.0.0.0:* 525/chronyd udp6 0 0 ::1:323 :::* 525/chronyd raw6 0 0 :::58 :::* 7 566/NetworkManager Active UNIX domain sockets (only servers)Proto RefCnt Flags Type State I-Node PID/Program name Pathunix 2 [ ACC ] STREAM LISTENING 19595 1896/master public/pickupunix 2 [ ACC ] STREAM LISTENING 19599 1896/master public/cleanupunix 2 [ ACC ] STREAM LISTENING 19602 1896/master public/qmgr......
[root@centos-01 ~]# netstat -anActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 192.168.159.128:22 192.168.159.1:49853 ESTABLISHEDtcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN udp 0 0 127.0.0.1:323 0.0.0.0:* udp 0 0 192.168.159.128:54597 51.15.41.135:123 ESTABLISHEDudp6 0 0 ::1:323 :::* raw6 0 0 :::58 :::* 7 Active UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 19595 public/pickupunix 2 [ ACC ] STREAM LISTENING 19599 public/cleanupunix 2 [ ACC ] STREAM LISTENING 19602 public/qmgr......
[root@centos-01 ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1382/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1896/master tcp6 0 0 :::22 :::* LISTEN 1382/sshd tcp6 0 0 ::1:25 :::* LISTEN 1896/master
[root@centos-01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'LISTEN 4ESTABLISHED 1
ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效,缺点是不会显示进程的名称。
n:不解析服务器名称,以数字方式显示
[root@centos-01 ~]# ss -an
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 0:0 nl UNCONN 0 0 0:-1111489994 nl UNCONN 0 0 0:-1111489994 *Linux tcpdump命令用于倾倒网络传输数据。
执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。
tcpdump -nn -i ens33 -c 10 -w/tmp/1.cap指定抓包数量和存放位置
[root@centos-01 ~]# tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes10 packets captured11 packets received by filter0 packets dropped by kernel注意:
cap的内容无法用cat命令查看,可以使用tcpdump -r命令查看
[root@centos-01 ~]# tcpdump -r /tmp/1.cap
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)22:06:14.751532 IP centos-01.ssh > 192.168.159.1.49853: Flags [P.], seq 2771172726:2771172874, ack 2769153140, win 318, length 14822:06:14.792115 IP 192.168.159.1.49853 > centos-01.ssh: Flags [.], ack 148, win 2053, length 022:06:14.959435 ARP, Request who-has gateway tell 192.168.159.1, length 4622:06:15.959718 ARP, Request who-has gateway tell 192.168.159.1, length 46......该命令也是用于抓包的。
使用前需要安装该工具wireshark。
查看指定网卡80端口的1个web服务的访问情况(类似于web的访问日志):tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" ]
抓取mysql的查询
方法一:
[root@centos-01 ~]# tshark -n -i ens33 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"tshark: -R without -2 is deprecated. For single-pass filtering use -Y.Running as user "root" and group "root". This could be dangerous.Capturing on 'ens33'0 packets captured方法二:
[root@centos-01 ~]# tshark -i ens33 port 3307 -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"Running as user "root" and group "root". This could be dangerous.Capturing on 'ens33'packets captured因为无相关进程,所以没有抓取到任何包。
*抓取指定类型的MySQL查询
[root@centos-01 ~]# tshark -n -i ens33 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"' -T fields -e "ip.src" -e "mysql.query"tshark: -R without -2 is deprecated. For single-pass filtering use -Y.Running as user "root" and group "root". This could be dangerous.Capturing on 'ens33'8 packet dropped0 packets captured
统计http的状态
[root@centos-01 ~]# tshark -n -q -z http,stat, -z http,tree
Running as user "root" and group "root". This could be dangerous.Capturing on 'nflog'注意::该命令需要按ctrl+c才会显示结果!
tshark -t ad
tshark -t a转载于:https://blog.51cto.com/754599082/2045468