linux基础练习6
Posted woaiyitiaochai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础练习6相关的知识,希望对你有一定的参考价值。
1、总结IP地址规划
ip地址表示为4个字节32位地址用.点号分隔开。组成四个十进制数字的地址应用于网络层协议如 192.168.0.1,172.10.0.1 ,10.0.0.1 这种,因为每一个字节由八位数表示,最大为255。
如8为全为1表示 11111111 十进制表示为255 全0为00000000十进制表示为0
其中IP地址用网络号。和主机号来区分网段以及主机号,划分为A类网络(前八个字节为网络号)0-126.0.0.1,B类网络(前16位为网络号后16位为主机地址)128-191.0.0.1,C类网络为192-223.0.0.1.D类通常为组播地址。这里我们暂时不说。
一个网络中主机最大数=2^主机id数(32-网络id)-2=2^(32-网络id)-2
A类地址的主机可容纳数量表示为(2**24)-2=大约1600万个ip地址 因为主机位全0和全1不能用网络位为126个网络id
B类地址的主机可容纳数量为2^16=65536-2,网络id位位2^14=1.6万左右,因为前八个字节的2前两位不能动128-191表示二进制位 10000000 110000000.00000000 .0.1
C类地址的可容纳的主机数量位2^8=254-2个主机地址,网络地址位2^(24-3)=2097152个地址。
由于A类地址主机数太多,C类地址太少,会造成浪费现象,所以现在用无类域间路由将网络id和主机id位,配合网络子网掩码来划分ip地址。
子网掩码 ,32位二进制数表示,网络id对应子网掩码的1,对应于主机id位为0
是进制表示 255.0.0.0 255.255.0.0 255.255.255.0
00000000 0 (简写)
10000000 128 (简写)
11000000 192 (简写)
11100000 224 (简写)
11110000 240 (简写)
11111000 248 (简写)
11111000 252 (简写)
11111110 254 (简写)
11111111 255 (简写)
1表示id位。0表示位主机位
如10.0.0.100/19 其中19表示位前19位为1(因为刚才说过ip表示为32位的0或者1)也就是网络id位前19位,表示成十进制子网掩码255.255.224.0 主机可容纳数量位2^(32-19)-2=524288
用子网掩码和ip地址进行于运算可得出网络号 1和1与得1 0和0与得0 1和0与得0
10.0.000000000.100 跟255.255.111 00000.0 进行与运算得出 10.0.0.0为网络id其中最大网络号表示为10.254.224.254
2、总结常见网络管理命令
配置DNS文件的路径
route 命令可查看本机的路由表 ,路由表的核心组成。目标网络id ,接口(表示本设备的哪个网卡发送),网关(下一跳邻近的路由器接口的ip地址)
route -n 查看的更清晰
可以看到我的机器中目标有一个默认路由 目标为 0.0.0.0 网关为192.168.1.2这个ip为本机的虚拟机网关,通过这个网关和物理机相连,目标为192.168.1.0 (与本机的1网段通信)网关为0.0.0.0表示为自身所在的网段。所以不需要设置网关,Iface表示接口,所有的数据通过ens33这块网卡发送出去。
添加一个10网段的路径,网关设置为本机的直连的虚拟机网关192.168.1.2
添加默认路由,但优先级低,如果所有本机到了的目标网络则会走1.0和2.0这两条默认路由
删除新添加的默认路由
配置网络地址为静态ip地址 进入修改/etc/sysconfig/networ-scripts/ifcfg-ens33
BOOTPROTO=none静态地址或者static
ONBOOT=yes 开机启动
DEVICE=网卡名称
IPADDR=IP地址
NETMAASK=子网掩码
GATEWAY=网关ip地址
如果需要设置dhcp地址可设置成
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=网卡名称
ethtool -i 可查看网卡的驱动 driver:e1000在虚拟机中的网卡驱动名字
modprobe -r 设备名,可卸载设备驱动。如网卡驱动
ifconfig 命令
ifconfig可给网卡增加一个额外的ip地址
如果需要保存住需要添加配置文件
复制ip配置文件。修改内容中的设备名即可
禁用ip地址ifconfig ens33 down
启用ip地址
可用ip a查看网卡的状态
ifconfig也可以临时改变ip地址 ifconfig ens33 192.168.1.100/24重启之后将会失去效果
ip 命令
ip link set ens33 down/up 从链路层断开网卡和启用网卡
添加一个ip地址
删除ip地址
ss命令
ss -t -a 查看所有 tcp连接状态
nmcli命令
nmcli connection 查看网卡设备连接状态绿色表示启用中
修改网卡的名字(不等于修改设备名字)改完之后生效
添加一个额外网络地址从ens33中默认是dhcp自动获取ip地址
手工指定添加的额外ip的地址
切换网络地址,常用于家里和办公室中的网络切换。
3、给定IP地址167.77.88.99和掩码255.255.255.192,子网号是什么?广播地址是什么?有效IP地址是什么?
167.77.88.01 100010与子网掩码进行与运算 255.255.255.11 000000得出167.77.88.64为子网id 167.77.88.64 有效ip地址为167.77.88.65-126 广播地址为167.77.88.127
网络位向主机位借了2位。形成2^2=4个子网表现形式位
第一个子网id167.77.88.00 000000/19 167.77.88.0/19 广播地址167.77.88.63
第二个子网id167.77.88.01 000000 167.77.88.64/19 广播地址167.77.88.127
第三个子网id167.77.88.10 000000 167.77.88.128/19 广播地址167.77.88.191
第四个子网id167.77.88.11 000000 167.77.88.192/19广播地址167.77.88.255
4、添加IP地址192.168.2.2/24到eth0网卡上
临时命令可指定网卡的另另外一个ip地址,重启后失效
ip a a 192.168.12.2/24 dev eth0 也可以实现同样的效果
如果需要永久生效需要写入配置文件,将配置文件拷贝一份,将名称和ip地址修改即可
5、top,iostat,vmstat命令总结
top命令可以动态的查看系统中的进程状态以及资源使用情况
第一行中显示了系统的启动时间4分钟。有2个用户,cpu负载情况 1分钟 5分钟 15分钟 当第一个数值超过1时则证明系统负载过高
tasks 207 系统中运行的进程数 其中1个正在运行 206个进程睡眠当中 0个停止 0个僵尸进程(僵死状态。且不可被唤醒)
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)
可以按t查看cpu和关闭cpu显示
内存的使用情况 第一行为内存 第二行为swap虚拟内存
995896Kib total 内存总大小 990M
150440 free 可用内存大小 150M
575296 used 已用内存大小 575M
261160 buff/cache 缓存空间 260M
按m可以用进度条方式查看内存情况或关闭显示,大M可以查看内存排序
后面就是进程的使用情况
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是‘rt‘。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
top试图中 按 数字1 可查看每个cpu的状态
iostat命令
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析
iostat工具默认没有装 需要 yum insall iostat 安装
1.命令格式:
iostat[参数][时间][次数]
2.命令功能:
通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。
3.命令参数:
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
查看cpu信息
查看块设备信息
查看cpi和i/o信息
设置1秒刷新一次,一共刷新5次
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比
如果%iowait的值过高,表示硬盘存在I/O瓶颈
如果%idle值高,表示CPU较空闲
如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
I/O设备属性值
device 设备名
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read: 读取的总数据量;
kB_wrtn:写入的总数量数据量;
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
查看设备信息。以及tps吞吐量
rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/s
rsec/s: 每秒读扇区数.即 delta(rsect)/s
wsec/s: 每秒写扇区数.即 delta(wsect)/s
rkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)
wkB/s: 每秒写K字节数.是 wsect/s 的一半.(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).
await: 平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait。
vmstat命令:虚拟内存信息
-a:显示活跃和非活跃内存
与 不加-a 参数相比-a 多了活动中的内存328632 非活动中358304
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
显示所有磁盘信息输入输出等
-p:显示指定磁盘分区统计信息
显示某个分区的统计数据
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)-
procs:
r表示正在运行的两个程序 b表示处于不可中断状态睡眠当中
memory:
swpd:交换内存的使用量
free:空闲物理内存总量
buffer:用于buffer(缓冲区)内存总量
cache:用于cache的内存总量
swap:
si从磁盘进入内存的数率
so从内存交换到磁盘的数率
io:
bi:从块设备读入到内存当中的数率
bo:从内存中读入到块设备数率
system:
in中断数率 cs:进程切换数率
cpu:
us 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id 空闲时间百分比
6、找出CPU占用最多的前10个进程
ps axo pid,cmd,%cpu --sort=-%cpu | head -10
a表示查看所有终端的进程,x表示后台的进程也显示,o可以制定需要查看的参数pid=进程id cmd=那个命令开启的进程,%cpu=进程占用的cpu利用率 ,%mem=进程占用内存使用率
然后用 --sort=-%cpu 将cpu利用率从大到小排序 管道交给head 命令取出前10行
7、crontab实现,在12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup
crontab的格式表示为 * * *** username 脚本或命令
第一个数字为分钟,第二个表示小时,第三个表示天数,第四个表示月份,第五个表示周 ,
如果对应列不写数字写*号表示每天,每月,每日,每分钟,等意思
用crontab -e 来制定写入任务计划
0(表示每0分钟) 6-12/(表示6-12表示6点到12点间隔为3小时)*(每天)*(每月)*(每周)
一起可以表示每天的早上6点到十二点中间间隔三个小时0分钟时执行 /usr/bin/backup这个脚本或者命令
以上是关于linux基础练习6的主要内容,如果未能解决你的问题,请参考以下文章