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)