第十章上第十三节课预习

第十三课预习任务

10.1 使用w查看系统负载
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令
10.6 监控io性能
10.7 free命令
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包
10.11 Linux网络相关
扩展
tcp三次握手四次挥手(重点) http://www.doc88.com/p-9913773324388.html
tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html

10.1 使用w查看系统负载

 

 

[root@linux02 ~]# w 系统时间,启动多长时间,登录了几个用户(下面可以看到)

22:43:38 up 12:44, 2 users, load average: 0.00, 0.01, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root tty1 日16 3days 0.07s 0.07s -bash

root pts/0 192.168.253.1 22:43 2.00s 0.04s 0.02s w

load average: 0.00, 0.01, 0.05 系统负载, 分别表示1分钟5分钟10分钟系统的负载是多少

单位时间段内使用CPU活动的进程有多少个。

先看有几个CPU 说的是逻辑CPU,现在有很多类型,inter,戴尔的,都是很多颗CPU,每个CPU又有很多逻辑CPU

from从哪里来 ,login 登录时间 idle 空闲了多少时间

[root@linux02 ~]# cat /proc/cpuinfo

processor : 0 (如果0表示1颗,如果1表示2颗,如果2表示 3颗CPU) 我们说数字是逻辑CPU不是物理几核,通常说的几核也不能说是物理,平时1颗物理CPU有两核 ,每核上又可以有多个逻辑CPU) 这个数字最大为7 也就是8颗CPU

vendor_id : GenuineIntel

cpu family : 6

model : 60

model name : Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz

stepping : 3

microcode : 0x1c

cpu MHz : 3191.712

cache size : 6144 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

所以 w数值第一个如果为1是最理想的 ,如果8颗逻辑cup那就这个数字不大于8就没问题就不用排队。

 

[root@linux02 ~]# date

2018年 08月 22日 星期三 22:44:04 CST

[root@linux02 ~]# uptime 结果和w后面值是一样的,所以我们用w

22:59:43 up 13:00, 2 users, load average: 0.00, 0.01, 0.05

10.2 vmstat命令

w看系统负载,当负载偏高时候,我们就想什么原因导致的CPU不够的,我们会进一步查看系统的瓶颈在哪里

 

[root@linux02 ~]# vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 445464 948 425240 0 0 6 4 28 43 0 0 100 0 0

C

PU 内存 虚拟磁盘 交换分区 ,io就是磁盘 系统进程等

[root@linux02 ~]# vmstat 1 表示每一秒显示一次

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 445644 948 425240 0 0 6 4 28 43 0 0 100 0 0

0 0 0 445628 948 425240 0 0 0 0 22 35 0 0 100 0 0

 

[root@linux02 ~]# vmstat 1 5 每一秒钟显示一次,显示五次后结束

我们只需要关注 r (run 表示有多少个进程处于run的状态,如果一个CPU,10个进程那就9个在排队,就是在排队也是处于r状态)

b 进程被CPU外的资源阻断了处于等待状态,像被网络或硬盘阻断了

swpd 交换分区,内存不够时候才会把部分数据放到寻内存里,如果不变还可以,如果一直在变,说明交换分区和内存一直在频繁的交换数据,只要内存不够的时候会显示数据

free buff cache 讲内存的时候再讲几个字段的含义

si so 如果swpd频繁变化那si so也会变化 si有多少KB数据从swpd 进入内存中 in

so out从内存里出来的

bi bo和磁盘有关系的,如果变化大所以磁盘在频繁的读写 ,磁盘相对CPU 或内存都是很慢的,如果有很多数据一直读写肯定会造成b列增加

bi 从磁盘出来进入到内存里面 就是读

bo 从磁盘写

us 用户级别的,操作系统中不可能只运行一个系统,可能跑网站,或跑MYSQL 就会体现在这里 不会超过100,这是100比

表示用户用的资源占用CPU的百分比。如果数字长时间大于50说明系统资源不够了

sy系统本身的一些进程占了cpu百分比

id空闲的

us sy id三个数字相加等于100

wa wait 等待和b有点类似 , 等待CPU的百分比,有多少进程在等待,如果很大表示CPU不够用

用他可以看到是CPU不够还是内存不够 还是磁盘io太大

 

10.3 top命令

 

w看负载 ,vmstat看系统瓶颈

如果知道是内存不够了,或进程占CPU太高我们可不可以看具体的是哪个进程呢,可以用top看具体的进程

[root@linux02 ~]# top 第一行和w查系统负载一样的,

top - 23:24:38 up 13:25, 2 users, load average: 0.00, 0.01, 0.05

Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie 第二行 有多少个任务或进程,多少在运行 ,多少睡眠,多少停止 ,

多少个僵尸进程(主进程已经杀死,留一些没用的子进程)

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st (us 占多少进程 sy st 被偷走的CPU百分比,如果服务器做虚拟化,有一子机,虚拟机会偷走部分CPU,比较关注的还是us长时间在60%肯定对CPU是没有好处的)

KiB Mem : 999936 total, 445116 free, 128524 used, 426296 buff/cache (内存使用情况 总共内存, 还有多少剩余,使用了多少)

KiB Swap: 2097148 total, 2097148 free, 0 used. 670308 avail Mem

 

PID USER PR NI VIRT RES (物理内存大小单k字节) SHR S %CPU %MEM(内存) TIME+ COMMAND 默认情况下会按CPU使用排序,使用CPU越多越在前面

625 root 20 0 302808 6300 4808 S 0.7 0.6 1:01.81 vmtoolsd

1 root 20 0 128148 6772 4012 S 0.0 0.7 0:03.53 systemd

2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd

3 root 20 0 0 0 0 S 0.0 0.0 0:01.76 ksoftirqd/0

6 root 20 0 0 0 0 S 0.0 0.0 0:01.85 kworker/u2+

7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh

如果想按内存排序 大写的M像换回来大写的P

如果按数字1 会显示所有CPU百分值指定的CPU,平时显示的都是平均值

q 退出来

[root@linux02 ~]# top -c 可以查看到具体的命令 ,全局的路径 pid 可以kill 杀pid

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

625 root 20 0 302808 6304 4808 S 0.3 0.6 1:03.43 /usr/bin/v+

3473 root 20 0 0 0 0 S 0.3 0.0 0:21.94 [kworker/0+

6664 root 20 0 157656 2228 1624 R 0.3 0.2 0:00.04 top -c

[root@linux02 ~]# top -bn1 静态的把所有显示出来一次性的,适合写脚本的时候

 

10.4 sar命令

1.4 sar 命令宽带

yum install -y sysstat

第一次用会提示无法找到路径是因为还没生成日志文件,还不能调用之前数据库,看历史可以在这个目录下看

[root@localhost ~]# ls /var/log/sa/

sa01

可以看指定天的网卡流量

ls /var/log/sa/会形成几个文件

[root@linux1 ~]# ls /var/log/sa/

sa01 sa02 sa03 sa04 sa05 sar01 sar02 sar03 sar04

sar -n DEV -f /var/log/sa/sa01 可以看历史 这就是那一天的网卡流量

[root@linux1 ~]# sar -n DEV -f /var/log/sa/sa01

Linux 2.6.32-642.el6.i686 (linux1) 2017年04月01日 _i686_ (1 CPU)

22时10分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

22时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

22时20分01秒 eth0 3.46 0.33 0.28 0.05 0.00 0.00 0.00

22时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

22时30分01秒 eth0 2.33 0.00 0.21 0.00 0.00 0.00 0.00

22时40分02秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

22时40分02秒 eth0 1.73 0.00 0.14 0.00 0.00 0.00 0.00

22时50分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

22时50分01秒 eth0 2.18 0.00 0.18 0.00 0.00 0.00 0.00

23时00分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

23时00分01秒 eth0 1.89 0.00 0.15 0.00 0.00 0.00 0.00

23时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

23时10分01秒 eth0 2.03 0.00 0.16 0.00 0.00 0.00 0.00

磁盘 CPU 内存网卡都可以查看

sar -n DEV 查看宽度

[root@localhost ~]# sar -n DEV

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年06月01日 _x86_64_ (1 CPU)

sar -n DEV 1 10 一秒钟显示一次一共显示10次 ,重要看大字一个进网卡一个出的,单位是bit/秒,1byt=8bit

[root@localhost ~]# sar -n DEV 1 10

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年06月01日 _x86_64_ (1 CPU)

19时16分10秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

19时16分11秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

19时16分11秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均时间: ens33 0.90 0.90 0.06 0.37 0.00 0.00 0.00

我们要看的是外网网卡,echo就是我们要看的外网网卡。

[root@linux1 ~]# sar -n DEV

Linux 2.6.32-642.el6.i686 (linux1) 2017年04月05日 _i686_ (1 CPU)

00时00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

00时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

00时10分01秒 eth0 3.09 0.90 0.28 0.17 0.00 0.00 0.00

00时20分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

00时20分01秒 eth0 1.99 0.04 0.16 0.00 0.00 0.00 0.00

00时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

一个进一个出都是字节每秒。

1byt =8bit 普通是10G带宽也就是 1.25兆字节每秒

字节是计算机里面用来形容文件的大小, bit是网卡 1kb=1024字节

为了方便计算1Kb=1000字节了 用最高的看也就是峰值算。

查看历史负载 sar -q

[root@localhost ~]# sar -q

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年06月01日 _x86_64_ (1 CPU)

19时10分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked

19时20分01秒 1 104 0.01 0.07 0.06 0

19时30分01秒 1 103 0.00 0.01 0.05 0

平均时间: 1 104 0.01 0.04 0.06 0

看磁盘的 sar -b

[root@localhost ~]# sar -b

Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年06月01日 _x86_64_ (1 CPU)

19时10分01秒 tps rtps wtps bread/s bwrtn/s

19时20分01秒 7.66 0.05 7.62 1.35 322.93

19时30分01秒 0.89 0.26 0.63 7.64 15.57

平均时间: 4.27 0.15 4.12 4.50 169.03


10.5 nload命令

系统中默认没有nload命令,需安装软件包nload

yum -y install nload-0.7.4-4.el7.x86_64

nload 命令一旦执行就会开始监控网络设备,你可以使用下列快捷键操控 nload 应用程序。

你可以按键盘上的 ← → 或者 Enter/Tab 键在设备间切换。
按 F2 显示选项窗口。
按 F5 将当前设置保存到用户配置文件。
按 F6 从配置文件重新加载设置。
按 q 或者 Ctrl+C 退出 nload。


10.6 监控io性能

iostat命令可以查看cpu的统计信息,以及设备,磁盘分区和网络文件系统等的I/O统计信息。

常用参数

-c 显示cpu的使用情况,默认显示cpu的使用情况
-d 显示磁盘的使用情况
-k 以千字节为单位显示数据
-x device 指定要统计的设备名称,默认为所有的设备

cpu利用率报告

iostat -c Linux 3.10.0-693.el7.x86_64 (lanquark.com) 06/10/2018 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.04 0.00 0.10 0.06 0.00 99.80 //%user cpu处在用户模式下的时间百分比 //%nice cpu处在带nice值的用户模式下的时间百分比 //%system cpu处在系统模式下的时间百分比 //%iowait cpu等待输入/输出完成的时间百分比 //%steal 管理程序维护另一个虚拟处理器时,虚拟cpu的无意识等待时间百分比 //%idle 显示cpu空闲时间的在百分比 //如果iowait的值过高,表示磁盘存在I/O瓶颈;如果idle值高,说明cpu较空闲,如果idle值高但系统响应慢,有可能是cpu等待分配内存,此时应加在内存容量,如果idle值持续低于10,说明cpu存在瓶颈。

设备利用率

iostat sda Linux 3.10.0-693.el7.x86_64 (lanquark.com) 06/10/2018 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.04 0.00 0.10 0.06 0.00 99.81 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.54 9.48 15.04 248642 394548 //Device 监测的设备名称 //tps 设备每秒传输的次数 //kB_read/s 每秒从该设备读取的块数 //kB_wrtn/s 每秒向该设备写入的块数 //kB_read 系统启动读取的总块数 //kB_wrtn 系统启动后写入的总块数

iostat -x sda Linux 3.10.0-693.el7.x86_64 (lanquark.com) 06/10/2018 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.04 0.00 0.09 0.06 0.00 99.81 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.01 0.34 0.20 9.39 14.90 91.09 0.01 25.73 11.22 50.71 2.87 0.15 //Device: 监测的设备名称,默认所有的设备 //rrqm/s 该设备每秒合并的请求数量 //wrqm/s 与读取类似,表示该设备每秒合并的写请求数 // r/s 每秒向该设备发出的读请求数 // w/s 每秒每该设备发出的写请求数 //rkB/s 每秒从该设备读取的扇区数 //wkB/s 每秒写入该设备的扇区数 //avgrq-sz 该设备读请求的平均大小,以扇区为单位 //avgqu-sz 该设备的请求队列的平均长度 //await 该设备的每一个I/O请求处理的平均时间 //r_await 该设备的每一个I/O读请求处理的平均时间 //w_await 该设备的每一个I/O写请求处理的平均时间 //svctm 该设备的I/O请求的平均服务时间,以毫秒为单位 //%util 该设备在I/O请求过程中CPU百分比。暗示了设备的繁忙程度。


10.7 free命令

默认单位free是KB

free -g单位是G

free -m单位是兆MB

[root@localhost ~]# free -m

total used free shared buff/cache available

Mem: 976 115 421 6 439 676

Swap: 2047 0 2047

 

[root@linux1 ~]# free

total used free shared buffers cached

Mem: 1028276 950688 77588 316 89212 714272

-/+ buffers/cache: 147204 881072 真正的剩余空间有多少

Swap: 204796 136 204660

free是空闲空间,系统启动后剩余空间会分给buffers cached 缓存介于CPU和磁盘之间的介质,比CPU要慢,比磁盘快, 当在磁盘取数据时比较慢,先取出来放buffers缓存里,存数据的空间我们叫cached, buffers 是缓冲,数据将要写到磁盘里去的在内存里所占的空间。

cached缓存 从磁盘里取出来放在内存里这部分空间。

 

3434592=527192物理剩余+295192缓冲空间+2612208缓存空间

8173516=4738924+3434592


10.8 ps命令

也可以查看进程

[root@localhost ~]# top -bn1

top - 19:51:00 up 1:37, 2 users, load average: 0.00, 0.01

Tasks: 84 total, 1 running, 83 sleeping, 0 stopped,

%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.0 id, 0.3 wa, 0.0 h

KiB Mem : 999936 total, 430876 free, 119000 used, 45

KiB Swap: 2097148 total, 2097148 free, 0 used. 69

 

PID USER PR NI VIRT RES SHR S %CPU %MEM

1 root 20 0 128092 6708 3952 S 0.0 0.7

2 root 20 0 0 0 0 S 0.0 0.0

3 root 20 0 0 0 0 S 0.0 0.0

7 root rt 0 0 0 0 S 0.0 0.0

8 root 20 0 0 0 0 S 0.0 0.0

9 root 20 0 0 0 0 S 0.0 0.0

10 root rt 0 0 0 0 S 0.0 0.0

12 root 0 -20 0 0 0 S 0.0 0.0

13 root 20 0 0 0 0 S 0.0 0.0

14 root 0 -20 0 0 0 S 0.0 0.0

15 root 20 0 0 0 0 S 0.0 0.0

16 root 0 -20 0 0 0 S 0.0 0.0

17 root 0 -20 0 0 0 S 0.0 0.0

18 root 0 -20 0 0 0 S 0.0 0.0

19 root 0 -20 0 0 0 S 0.0 0.0

专业的查看进程的是下面的

ps aux 查进程

ps -elf

[root@localhost ~]# ps -elf

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

4 S root 1 0 0 80 0 - 32023 ep_pol 18:13 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --

1 S root 2 0 0 80 0 - 0 kthrea 18:13 ? 00:00:00 [kthreadd]

1 S root 3 2 0 80 0 - 0 smpboo 18:13 ? 00:00:00 [ksoftirqd/0]

1 S root 7 2 0 -40 - - 0 smpboo 18:13 ? 00:00:00 [migration/0]

1 S root 8 2 0 80 0 - 0 rcu_gp 18:13 ? 00:00:00 [rcu_bh]

1 R root 9 2 0 80 0 - 0 - 18:13 ? 00:00:00 [rcu_sched]

 

[root@linux1 ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2904 968 ? Ss Mar31 0:11 /sbin/init

root 2 0.0 0.0 0 0 ? S Mar31 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S Mar31 0:00 [migration/0]

root 4 0.0 0.0 0 0 ? S Mar31 0:06 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S Mar31 0:00 [stopper/0]

root 6 0.0 0.0 0 0 ? S Mar31 5:11 [watchdog/0]

root 7 0.0 0.0 0 0 ? S Mar31 7:01 [events/0]

root 8 0.0 0.0 0 0 ? S Mar31 0:00 [events/0]

第一列那个用户用了这进程,第二列pid我们可以通过pid对这个进程进行操作包括杀死

CPU 占多少内存,MEM百分比,VSZ虚拟内存的大小,RSS真正内存的大小,

TTY从哪里启动的,?是后台的意思,STAT表示进程状态S表示休眠sleep,s表示主进程或负进程

S<表示优先级比较高,N表示低优先级的,S<s高优先级的休眠状态。

Ss+表示前台的进程,R+正在运行的进程。 L内存中被锁了,l多线程进程,

Z僵尸进程 X死掉的进程,T暂停的进程。D不能中断的进程,

L I Z X T Ss < N R+

以上所有进程的状态

TIME什么时间启动的占用内存的空间,COMMAND 进程名字

ps aux |grep php看看哪个进程有没有起来

 


10.9 查看网络状态

sshd 远程默认的22端口

netstat -lnp

[root@linux1 ~]# netstat -lnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7544/mysqld

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1164/rpcbind

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1338/sshd

tcp 0 0 0.0.0.0:60696 0.0.0.0:* LISTEN 1186/rpc.statd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1423/master

tcp 0 0 :::111 :::* LISTEN 1164/rpcbind

tcp 0 0 :::80 ::: * LISTEN 19660/httpd

tcp 0 0 :::51155 :::* LISTEN 1186/rpc.statd

tcp 0 0 :::22 :::* LISTEN 1338/sshd 远程端口

tcp 0 0 ::1:25 :::* LISTEN 1423/master 发邮件的

udp 0 0 0.0.0.0:54976 0.0.0.0:* 1186/rpc.statd

udp 0 0 0.0.0.0:68 0.0.0.0:* 1611/dhclient

udp 0 0 0.0.0.0:111 0.0.0.0:* 1164/rpcbind

udp 0 0 0.0.0.0:915 0.0.0.0:* 1164/rpcbind

udp 0 0 127.0.0.1:938 0.0.0.0:* 1186/rpc.statd

udp 0 0 :::111 :::* 1164/rpcbind

udp 0 0 :::915 :::* 1164/rpcbind

udp 0 0 :::58266 :::* 1186/rpc.statd

Active UNIX domain sockets (only servers)

Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 2 [ ACC ] STREAM LISTENING 10210 1251/hald @/var/run/hald/dbus-BO8hyj3jpF

 

80web服务, 22.SSHD 端口 25是发邮件的, 873同步数据的服务 。

netstat -an 可以看到服务端和客户端的通信状态

[root@linux1 ~]# netstat -an

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:60696 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

tcp 0 64 192.168.1.45:22 192.168.1.43:3639 ESTABLISHED

tcp 0 0 :::111 :::* LISTEN

 

之前讲文件类型时候讲过socket是Linux和unix特有的文件类型,可以实现通信,

[root@localhost ~]# netstat -an |grep 192.168.223.128:80

80端口的过滤出来并非链接

[root@localhost ~]# netstat -an |grep 192.168.223.128:80 |grep -ic estab并发数

netstat -an |grep 122.112.69.86.80 |grep -ic estab 除了看连接状态并发连接数884web服务80就是一个静态页,nginx并发2或3万没问题的,如果加上后端的mysql,php他们

的处理速度就会慢一些,并发就会1000或2000,3000就很好了。

通过ulimit -n命令可以查看Linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。那么应该在哪里设置呢?

最正确的做法是在/etc/security/limits.conf里设置:

lsof列出某个进程打开所有文件的信息—— 而在Linux 下,一切皆文件。

[root@localhost ~]# lsof |grep 9916

strace

如果一个应用编译正常但运行期间报错,报错信息又不知所云,可以通过这个工具挖掘一些线索。

traceroute

检查两个节点之间网络接入情况的基本工具。


10.10 linux下抓包

 

本来10G网卡,一般也就跑5 或6G突然有一次占满了,我们想知道是什么情况占据的,我们需要抓一下包, tcpdump 如果没有我们需要

yum install tcpdump

[root@iZwz9c953ki10gqbpyallpZ ~]# tcpdump

13:57:36.769565 IP 125.121.34.220.47546 > 172.18.75.5.ssh: Flags [.], ack 497345, win 254, options [nop,nop,TS val 1420330 ecr 1047947544], length 0

13:57:36.769759 IP 172.18.75.5.ssh > 125.121.34.220.47546: Flags [P.], seq 501985:502369, ack 2880, win 341, options [nop,nop,TS val 1047947578 ecr 1420330], length 384

13:57:36.770756 IP 172.18.75.5.ssh > 125.121.34.220.47546: Flags [P.], seq 502369:502593, ack 2880, win 341, options [nop,nop,TS val 1047947579 ecr 1420330], length 224

显示的可能是端口和服务名称

tcpdump -nn 当前终端下看数据流

13:59:21.605762 IP 172.18.75.5.22 > 125.121.34.220.47546: Flags [P.], seq 285328:285696, ack 1121, win 341, options [nop,nop,TS val 1048052414 ecr 1430814], length 368

13:59:21.606512 IP 125.121.34.220.47546 > 172.18.75.5.22: Flags [P.], seq 1121:1185, ack 278960, win 255, options [nop,nop,TS val 1430814 ecr 1048052381], length 64

tcpdump -nn -c 100 我就要100个包

[root@linux1 ~]# tcpdump -nn -c 100

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

16:19:22.159648 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 3941173719:3941173927, ack 2312827081, win 332, length 208

16:19:22.162138 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 208:400, ack 1, win 332, length 192

16:19:22.163823 IP 192.168.1.43.3639 > 192.168.1.45.22: Flags [.], ack 400, win 65007, length 0

16:19:22.164977 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 400:656, ack 1, win 332, length 256

16:19:22.165976 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 656:816, ack 1, win 332, length 160

16:19:22.166207 IP 192.168.1.43.3639 > 192.168.1.45.22: Flags [.], ack 816, win 64591, length 0

16:19:22.166949 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 816:1072, ack 1, win 332, length 256

16:19:22.167958 IP 192.168.1.45.22 > 192.168.1.43.3639: Flags [P.], seq 1072:1232, ack 1, win 332, length 160

16:19:22.168254 IP 192.168.1.43.3639 > 192.168.1.45.22: Flags [.], ack 1232, win 64175, length 0

时间,毫秒 IP来源IP来源POT 目标IP目标POT

如果发现某一个端口到某一个端口信息传递很多并且是一样的就可能被攻击了!

tcpdump -nn -i eth1 制定网卡可以,不加-i 是默认的eth0网卡

[root@linux1 ~]# tcpdump -nn -i lo

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes

只抓制定端口的像 tcpdump -nn port 22

也可以制定类型 tcpdump -nn tcp and port 22

tcpdump -nn udp

tcpdump -nn tcp and port 80 and host +IP

tcpdump -nn tcp and port 22 and host 192.168.1.168 -w 1.cap

把抓的包放在1.cap文件里,抓到的包是特殊格式的不能cat 的

可以下载下来用专业的工具分析 ,也可以 查看下man tcpdump 里面的-r

tcpdump -r 1.cap 就可以查看看出的并不是cap传递信息的内容而是数据包的流向

tcpdump -nn tcp and port 22 -c 10 > 2.cap

这个就可以cat 2.cap 原因是这个抓的包的流向而不是内容

我们抓包的内容用的是 -w 不加只记录的流向。

tcpdump -nn tcp and port 22 -c 10 -w 2.cap

抓包一般加- s0 这样可以完整

tcpdump -nn -s0 tcp and port 22 -c 10 -w 2.cap

 

还有个抓包的工具tshark 可用于widows uniux

默认没有tshark所以要下载 yum install -y wireshark

rpm -qf 'which tshark'

tshark -nn 和tcpdump一样我们想要的更明确的信息。

tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "heep.request.method" -e "http.request.uri"

10.11 Linux网络相关

ifconfig命令

Centos7默认没有安装,需安装net-tools包

查看ip

[root@linux1 ~]# ifconfigens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255

        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)

        RX packets 59711  bytes 28497195 (27.1 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 59181  bytes 15741371 (15.0 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Local Loopback)

        RX packets 64  bytes 5312 (5.1 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 64  bytes 5312 (5.1 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0//显示指定接口

[root@linux1 ~]# ifconfig ens32ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255

        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)

        RX packets 59778  bytes 28511154 (27.1 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 59207  bytes 15745059 (15.0 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

设定临时IP

[root@linux1 ~]# ifconfig ens32 192.168.1.222 255.255.255.0

ifdown和ifup命令 停止和启动网卡。

//注意不要分开执行,这样会导致你连不上去。

[root@linux1 ~]# ifdown ens32 && ifup ens32

Device 'ens32' successfully disconnected.Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

虚拟网卡设置

[root@linux1 ~]# cd /etc/sysconfig/network-scripts/

[root@linux1 network-scripts]# cp ifcfg-ens32 ifcfg-ens32\:0

[root@linux1 network-scripts]# vim !$

vim ifcfg-ens32\:0

  1 TYPE="Ethernet"                                                                                 

  2 PROXY_METHOD="none"

  3 BROWSER_ONLY="no"

  4 BOOTPROTO="none"

  5 DEFROUTE="yes"

  6 IPV4_FAILURE_FATAL="no"

  7 IPV6INIT="yes"

  8 IPV6_AUTOCONF="yes"

  9 IPV6_DEFROUTE="yes"

 10 IPV6_FAILURE_FATAL="no"

 11 IPV6_ADDR_GEN_MODE="stable-privacy"

 12 NAME="ens32"

 13 UUID="f78a6b73-f367-498a-b3ee-47f6b29ceab4"

 14 DEVICE="ens32:0"

 15 ONBOOT="yes"

 16 IPADDR="192.168.1.211"

 17 PREFIX="24"

 18 GATEWAY="192.168.1.1"

 19 DNS1="8.8.8.8""ifcfg-ens32:0" 21L, 419C                                                         1,1           Top

  1 TYPE="Ethernet"

  2 PROXY_METHOD="none"

  3 BROWSER_ONLY="no"

  4 BOOTPROTO="none"

  5 DEFROUTE="yes"

  6 IPV4_FAILURE_FATAL="no"

  7 IPV6INIT="yes"

  8 IPV6_AUTOCONF="yes"

  9 IPV6_DEFROUTE="yes"

 10 IPV6_FAILURE_FATAL="no"

 11 IPV6_ADDR_GEN_MODE="stable-privacy"

 12 NAME="ens32:0"

 13 UUID="f78a6b73-f367-498a-b3ee-47f6b29ceab4"

 14 DEVICE="ens32:0"

 15 ONBOOT="yes"

 16 IPADDR="192.168.1.212"

 17 PREFIX="24"                                                                           

 21 IPV6_PRIVACY="no""ifcfg-ens32:0" 21L, 424C written   

//将设备名改为与配置文件名一致ens32:0

//网关,dns不需要,删除即可。

//保存退出

//重启网卡

[root@linux1 ~]# ifdown ens32 && ifup ens32

Device 'ens32' successfully disconnected.

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

[root@linux1 ~]# ifconfig

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255

        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)

        RX packets 62799  bytes 29182237 (27.8 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 60343  bytes 15911826 (15.1 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

//虚拟网卡正常出现

ens32:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.212  netmask 255.255.255.0  broadcast 192.168.1.255

        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)

 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Local Loopback)

        RX packets 64  bytes 5312 (5.1 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 64  bytes 5312 (5.1 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mii-tool命令查看网卡是否连接

[root@linux1 ~]# mii-tool ens32

ens32: negotiated 1000baseT-FD flow-control, link ok

ethtool命令查看网卡是否连接

[root@linux1 ~]# ethtool ens32

Settings for ens32:

    Supported ports: [ TP ]

    Supported link modes:   10baseT/Half 10baseT/Full

                            100baseT/Half 100baseT/Full

                            1000baseT/Full

    Supported pause frame use: No

    Supports auto-negotiation: Yes

    Advertised link modes:  10baseT/Half 10baseT/Full

                            100baseT/Half 100baseT/Full

                            1000baseT/Full

    Advertised pause frame use: No

    Advertised auto-negotiation: Yes

    Speed: 1000Mb/s

    Duplex: Full

    Port: Twisted Pair

    PHYAD: 0

    Transceiver: internal

    Auto-negotiation: on

    MDI-X: off (auto)

    Supports Wake-on: d

    Wake-on: d

    Current message level: 0x00000007 (7)

                   drv probe link

    Link detected: yes

hostnamectl修改主机名

[root@linux1 ~]# hostnamectl set-hostname lanqaurk.com

//相应的配置文件为/etc/hostname

DNS配置文件:/etc/resolv.conf

hosts文件: /etc/hosts

 

posted @ 2018-08-23 11:21  Linux操作系统爱好者  阅读(149)  评论(0)    收藏  举报