06葵花宝典之linux网络、进程管理和shell循环语句

06葵花宝典之linux网络、进程管理和shell循环语句

作为服务器,其输入输出功能在大多数时候都是通过网络提供的,网络功能对于服务器而言是至关重要的。

一、OSI七层模型和TCP/IP四层模型

1、OSI七层模型

OSI七层模型是参考ISO(International Standard Organization国际标准化组织)所指定的一个用于通信系统间互联的标准体系。 OSI(Open System Interconnetcion,开放系统互联)是一个参考模型。其从底层到高层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

1-1、物理层

物理层用于定义物理连接的手段,以及数据的bit流信号如何通过设备的电气特性进行传输;比如,可以通过双绞线传输,也可以通过WIFI传输,还可以通过同轴电缆传输,这些不同的物理链路方法中,也有不同的定义来规定信号的电气特性;也就是如何将数据的0、1转换为光、电或者其他信息进行传输,并在接收端还原出来。在这一层上,数据一般称之为数据流。

1-2、数据链路层

其主要作用是对物理层收的的0、1信号进行分组和解释,或者说,将上层的数据进行分组包装后变成0、1信号,交给物理层进行传输,在这层上,数据一般称之为数据帧。数据帧一般有标头和数据两部分,标头包括数据的一些说明向,数据则是上层协议需要传输的内容。

1-3、网络层

在网络层,可以将一个大的网络,划分为小的网络,这个是通过我们常说的IP地址来实现的。网络层主要的主要目的,是隔离数据链路层的一些广播数据,以及实现网络到网络的寻址,也就是我们常说的路由功能。

1-4、传输层

通过前三层,基本可以实现主机到主机的通信了,但主机上运行的软件或者进程很多,收到的数据或者发出的数据具体是到那个软件或者那个进程呢?这就需要进程的端口号来标示。传输层可以建立起A主机的某个进程到B主机的某个进程间的通信。

1-5、会话层

主机之间建立、管理、终止会话。

1-6、表示层

各类型文件或者数据采用何种方式进行表示。比如,一张图片是采用那种格式进行编码,如何加密等等

1-7、应用层

使用应用层来处理网络应用。

2、TCP/IP四层模型

TP/IP四层模型可以看作是OSI七层模型的一个具体实现,也是现在网络上设备之间通信的一个事实标准,它将七层模型中的物理层和数据链路层合起来称为数据链路层,将会话层、表示层和应用层合起来称为应用层。

不论是七层模型还是四层模型,对于网络连接而言,需要使用到的常用协议或者标准有:ARP(地址解析协议,工作在数据链路层)、IP(网际协议,工作在网络层)、TCP/UDP(传输控制协议/用户数据报协议,工作在传输层)、Http/Ftp(超文本传输协议/简单文件传输协议)等等。

二、iproute命令

在linux上配置查看或更改设备的属性,通常使用ip、ifconfig命令。

1、ifconfig

ifconfig:configure a network interface,配置网络接口。

常见使用方法如下:

1-1、ifconfig 不跟任何选项或参数,用于显示当前主机上没有被禁止的网络接口的配置信息。如:

[root@koala ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:0D:FF:B8  
          inet addr:192.168.1.169  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe0d:ffb8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:214 errors:0 dropped:0 overruns:0 frame:0
          TX packets:188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23778 (23.2 KiB)  TX bytes:31448 (30.7 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

也可以跟一个指定接口,只显示该接口的网络配置信息,如: ifconfig eth0

1-2、ifconfig INTERFACE up|down 启用或禁用名称为INTERFACE的接口

如:ifconfig eth0 down 禁用eth0这个网络接口。

1-3、ifconfig INTERFACE ip/mask_len 配置接口地址为指定地址

如:配置接口地址为:192.168.0.1,掩码为255.255.0.0(掩码长度16位)

[root@koala ~]# ifconfig eth0 192.168.0.1/16

删除接口地址:

ifconfig eth0 del ip

2、ip

ip命令用于显示或者设置路由、设备网络配置、策略路由等信息

2-1、ip link show/ip addr show 显示网络接口相关信息,后面可跟具体接口名称,显示该接口信息

ip addr show 显示更详细的信息,包括接口的ip地址以及辅助地址(secondary)

[root@koala ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0d:ff:b8 brd ff:ff:ff:ff:ff:ff
[root@koala ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:55:aa:55:bb:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global eth0
    inet 192.168.2.169/24 scope global eth0
    inet 192.168.1.169/24 scope global secondary eth0
    inet6 fe80::255:aaff:fe55:bb55/64 scope link 
       valid_lft forever preferred_lft forever

2-2、ip link set DEVICE 设置

可以设置的参数有 up|down 接口的开启或关闭 arp {up|down} 接口arp协议的开启或关闭 mtu 设置接口的mtu值,最大传输单元 address 接口的物理地址,格式 AA:BB:CC:DD:EE:FF alias 接口的别名 name 接口名称(重命名接口名称)

2-3、ip addr {add|del} ipaddress dev STRING

[root@koala ~]# ip addr add 192.168.2.169/24 dev eth0

为eth0接口增加ip地址:192.168.2.169/24

[root@koala ~]# ip addr del 192.168.2.169/24 dev eth0

删除接口的192.168.2.169/24这个地址

注意:无论是ifconfig还是ip命令,其都是立即有效,但是服务或系统重启后,该配置无效。要使设置的ip相关参数重启后仍然有效,需要修改配置文件(/etc/sysconfig/network-scripts/,以ifcfg-接口名为名称的文件)

如:配置eth0接口(在Cetnos6,网络接口一般以eth#命名,如ifcfg-eth0;在Centos7,网络接口一般以eno167777##命名,如eno16777736)的ip为静态ip,192.168.1.185/24,网关192.168.1.1,DNS114.114.114.114等,配置文件如下:

DEVICE=eth0
HWADDR=00:0C:29:0D:FF:B8
TYPE=Ethernet
UUID=02f6e8e0-dc1e-4f97-a958-ea7bd4b65f76
ONBOOT=yes
IPADDR=192.168.1.185
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
NM_CONTROLLED=yes
BOOTPROTO=static

三、进程相关命令 htop vmstat

1、ps

ps显示当前系统上的进程信息。常用选项为

a 显示用户的进程
u 以用户格式显示,主要显示user(用户)、PID(进程号)、%cpu(CPU占用率)、%mem(内存占用率)、vsz(虚拟内存大小)、RSS(驻留实际内存大小)、tty(终端号)、stat(进程状态)、start(起始时间)、time(累计运行时间)、command(哪个命令发起的进程) 
x 与终端无关的进程
-e 显示所有进程
-f 全格式显示(PPID,该进程的父进程号)
-H 以层级结构显示(hierarchy)
o 以指定格式显示进程

ps aux 以用户格式显示所有进程。
ps -efH 
ps o pid,ni,tty,ppid,rtprio,comm,stat
ps -e o pid,ni,tty,stat

stat:进程状态有: R,running运行态;S,Interrupt sleeping可中断睡眠态;D,Uninterrupt sleeping不可终端睡眠态;T,stopped停止态;Z,zomble僵死态;+,前台进程,N 低优先级;<,高优先级

2、htop

htop是一个交互式的进程信息查看工具,可以认为是top的升级版。htop并不在CentOS的光盘所带和镜像仓库中,他在epel仓库中,安装前,首先要配置好epel仓库。

使用htop命令进入交互式界面,如图htop

使用F1-F10进入相应的模式

F1帮助 常用的命令有: H用户进程或线程开关 K系统进程或线程开关 F选中鼠标点击的进程 P M T 使用cpu% mem% Time来进行排序q
F2设置 主要用于设置htop命令的默认选项 meters 设置上方左右的显示信息,默认为cpu mem swp tasks loadaverage uptime等 display options 设置显示信息 color columns设置需要显示的进程属性信息。

F3匹配第一个含查找字符串的进程,使用F3切换至下一个匹配到的,此时,仍然显示所有进程

F4匹配查找到字符串的进程,其他未被字符串匹配的进程不显示

F5以树状格式显示(或关闭树状结构显示)

F6展开或关闭选定的树状结构

F7将选中的进程的nice值变小(即优先级变高),root用户有效

F8将选中的进程的nice值变大(即优先级变低),root用户有效

F9kill选中的进程,ENter确定

F10退出htop

常用选项

-u username 显示指定用户的进程
-s COLUMN 以指定列排序(使用htop --sort-key help查看可以用于排序的列,也可以在F2中查看可以用于排序的列)

3、vmstat

显示虚拟内存统计信息

常用选项-s 显示内存统计数据

当只是有vmstat命令时,显示内容信息解释如下:

[root@localhost tmp]# 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 646008   1240 245436    0    0     9     3   22   32  0  0 100  0  0
procs 进程
    r 等待运行的,指cpu队列长度
    b 被阻塞的进程,也就是不可终端睡眠状态的进程数量

memory 内存
    swpd 交换内存使用总是,0表示未启用swap分区
    free 空闲内存
    buff 缓冲区
    cache 缓存
swap 交换分区
    si swapin 换进速率 kb/s
    so swapout 换出速率
io 块设备
    bi blockin 从块设备读入
    bo 写入块设备
system
    in interrupt 终端产生速率
    cs context switch 上下文转换速率
cpu
    us 用户空间进程
    sy 系统
    id 空闲
    wa 等待
    st 被虚拟机占用的(stolen)

四、使用until和while分别实现192.168.0.0/24

网段内,地址是否能够ping通,弱ping通则输出”success!”,若ping不通则输出”fail!”

while循环:条件为真,则执行循环体,条件一旦为假,则退出循环。

#!/bin/bash
#

declare -i i=1

while [ $i -lt 255 ];do
    if ping -c 2 "192.168.1.$i"> /dev/null;then
        echo ping "192.168.1.$i" success!
    else
        echo ping "192.168.1.$i" fail! 
    fi
    i=$i+1    
done

ping -c 说明发的ping包次数,将其送给/dev/null。如果ping成功,则其命令执行状态结果为真,输出success,否则输出fail

until循环:条件为假,则执行循环体,条件一旦为真,则退出循环。

#!/bin/bash
#

declare -i i=1

until [ $i -ge 15 ];do
    if ping -c 2 "192.168.1.$i"> /dev/null;then
        echo ping "192.168.1.$i" success!
    else
        echo ping "192.168.1.$i" fail! 
    fi
    i=$i+1    
done

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96211

(0)
koalakoala
上一篇 2018-04-15 21:18
下一篇 2018-04-15 21:40

相关推荐