计算机网络基础以及进程查看管理

文章目录

  • 计算机网络基础
    • OSI协议分层
      • 1、OSI协议
      • 2、OSI协议分层
      • (7)应用层:
      • (6)表示层
      • (5)会话层
      • (4)传输层
      • (3)网络层
      • (2)数据连路层
      • (1)物理层
    • TCP/IP协议分层
      • 应用层
      • 传输层
      • 网络层
      • 链路层
    • TCP建立连接
      • TCP四次挥手
    • IP
      • IPv4地址结构
      • IP地址分类
    • 子网掩码
  • Linux网络属性管理
    • 网络接口命名方式
    • linux网络配置方式
    • ifconfig命令
    • route命令
    • ip命令
    • ip route命令
    • ss命令
    • tcpdump命令:
  • Linux配置文件
    • centos7上修改用户主机名
    • 配置DNS服务器指向
    • 修改网络的配置文件
    • 路由配置文件
  • linux进程管理
    • 进程
    • 进程PID号存储路径
    • 进程存储格式
    • 进程的类型以及状态
    • 僵尸进程
    • 进程的优先级
  • 进程管理工具
    • pstree命令
    • ps命令
    • htop命令
    • vmstat命令

计算机网络基础

OSI协议分层

1、OSI协议

OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,其宗旨是为了定制网络规范,这样各大厂商之间的设备就能实现互联。

2、OSI协议分层

OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每一个分层都具有自己的功能和协议,并实现每个接口之间的通信。
计算机网络基础以及进程查看管理_第1张图片
3、各个层的定义解释

(7)应用层:

该层是最近接近用户的一层,它为计算机应用程序提供了应用接口,并提供网络服务协议。常见的网络服务协议有:http、ftp、pop3、https等。
通俗的讲就是A向B发一份快递,你选择的快递服务商就是这个应用接口所提供的服务

(6)表示层

该层是将传递的数据进行编码转换和加密的功能,确保一方向另一方发送数据时,接收方是可以识别出发送方的数据。一般而言,都会有一种标准的协议来进行相互传输。
通俗来讲就是A的语言为汉语,B的语言为英语,A同B交流时,C充当翻译,将A和B说的话转化为A和B能听懂的语言。而C在这个过程中就是充当表示层的功能。

(5)会话层

该层主要是来建立、管理和终止两个计算之间相互传输数据的通信连接
通俗来讲,A寄一份资料给B,A首先与B建立起会话,告知要寄一份资料给B。然后A将资料以某种形式寄出去,等B确定收到资料后。那么此次会话也就会自动终止。

(4)传输层

为通信双方建立端到端之间的通信(端指的是端口号)。具备差错恢复、流量控制等功能。以保证数据可以达到目的端。在网络层交换的数据单元的单位是分割和重新组合数据包(packet)如TCP、UDP等

通俗来讲,A需要寄一份快递,A派B去寄快递,B负责将A需要寄出的材料准确无误派送到某地

(3)网络层

通过IP寻址来建立两个节点之间的连接,为运输层送来的数据分组,选择合适的路由器以及节点,准确无误的按照地址传送给运输层的目的端。也就是所说IP层。
通俗来讲就是快递运输,每个城市都有收发点,这个收发点就是每一个节点

(2)数据连路层

将物理层上的比特信息封装成帧信息,通过使用硬件的物理寻址来建立两个链路之间的连接。并进行差错控制

数据链路层的两个子层
1》逻辑链路控制 LLC (Logical Link Control)子层(作用已经不大了)
2》媒体接入控制 MAC (Medium Access Control)子层:实现一对一通信是通过地址来实现的

(1)物理层

物理层是最重要,最基础的一层,它通过媒体介质建立起各个设备之间物理接口的连接。例如电缆、同轴电缆、中继器等。物理层的数据单位是位。
通俗来讲就是快递在运输时使用的交通工具,如飞机,火车
下图也可以说明各个层的功能:
计算机网络基础以及进程查看管理_第2张图片

TCP/IP协议分层

互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。
TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也被称作DoD模型(DoD Model)。这个协议族由互联网工程任务组负责维护。
它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议族下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层OSI模型。
计算机网络基础以及进程查看管理_第3张图片

应用层

它主要用于应用程序上,为应用程序提供了各种通信服务。例如:FTP协议、DNS协议、HTTP协议等

传输层

传输层(Transport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
UDP是UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

网络层

也被称作为互联网层,网络层主要用来处理网上流动的数据包,数据包是网络传输的最小单位。该层决定了双方进行数据传输时选择怎样的路线到达接收的一方。,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

链路层

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等
物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。
我们用 HTTP 举例来说明,首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。

TCP建立连接

计算机网络基础以及进程查看管理_第4张图片
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答
TCP的三次握手
TCP的三次握手
SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
TCP三次握手的过程如下:
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
通俗来讲:A向B说:我要给你传输数据。第一次通话,B说:可以,你什么时候传。第二次通话,A说:我现在就传,你等着接收吧。第三次通话。三次通话之后,数据传输连接建立。

TCP四次挥手

计算机网络基础以及进程查看管理_第5张图片
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。
TCP连接的终止
TCP连接的终止
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

IP

互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给用户上网使用的网际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类。此处只对IPv4说明。

IPv4地址结构

IPv4地址长为32bit,分为四组。8bits.8bits.8bits.8bits
有十进制和二进制两种表示方法。分别是:

点分四组十进制。每一组范围是[0~255],如:255.255.255.255

二进制。如:11111111 11111111 11111111 11111111

IP地址分类

A类:第一段为网络,后三段为主机号。对于网络号来说:
第一位0不变,0 000 0000 - 0 111 1111 地址范围:1.0.0.0 - 127.255.255.255
网络数量:126个,127的地址为还回地址,仅做测试用用。
主机数量:2^24-2 全0的表示网络本身,全1的标识本地主机

B类地址:前两段为网络号,后两段为主机号。对于网络号来说:
前两位10不变,10 00 0000 - 10 11 1111 地址范围:128.0.0.0-191.255.255.255
网络数量:2^14
每个网络中的主机数量:2^16 - 2
默认子网掩码:255.255.0.0

C类地址:前三段为网络号,后一段为主机号,对于网络号来说:
前三位110不变, 110 0 0000 - 110 1 1111 地址范围:192.0.0.0-223.255.255.255
网络数:2^21
每个网络中的主机数量:2^8 - 2
默认子网掩码:255.255.255.0

D类:组播通信
1110 0000 - 1110 1111 : 224 - 239

E类:测试实验
240 - 255
3.6 私有ip

在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就

是属于私网IP,不在公网中使用的,它们的范围是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

注意

IP地址127.0.0.1~127.255.255.255用于回路测试,

如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器

子网掩码

子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。
子网掩码的作用:可以与IP地址进行"与"运算,从而来求出网络地址和广播地址
例如:

C类网址192.168.1.100  子网掩码255.255.255.0
IP网址转换为二进制:     	1100000.10101000.00000001.1100100
子网掩码转换为二进制:   	11111111.11111111.11111111.00000000
得出网络地址:      		11000000.10101000.00000001.00000000    192.168.1.0
广播地址:即将主机位上全部变为1, 11000000.10101000.00000001.11111111   192.168.1.255

练习:1、100.0.0.16/28 对应网段的网络地址、广播地址、可分配IP地址范围

根据提示,100.0.0.16属于A类网址。第一段为网络号,后三段为主机号。
/28对应的子网掩码:255.255.255.240
100.0.0.16转换为二进制:	01100100.00000000.00000000.00010000
子网掩码转换为二进制:		11111111.11111111.11111111.1111||0000  
||后面即使本机地址,二进制连续的1之前都是网络地址,之后的是本机地址
网络地址:				01100100.00000000.00000000.00010000    100.0.0.16
广播地址:  	 		    01100100.00000000.00000000.00011111    100.0.0.31
有效范围:网络地址+1~广播地址       100.0.0.17-100.0.0.31 

Linux网络属性管理

网络接口命名方式

传统命名:
                   以太网:ethX【0,oo】,例如:eth0 , eth1....
                   ppp网络:pppX【0,oo】 例如 :  ppp0,ppp1...

           


可预测命名方案(Centos):
            支持多种不同的命名机制:
                Fireware,拓扑结构
                     1、如果firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1,eno2.....
                     2、如果firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1,ens2....
                     3、如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0...
                     4、如果用户显示启动定义,也可根据mac地址命名,例如:enx122161ab2e10..... 
                           上述均不可用时,则仍使用传统方式命名
                           
命名格式的组成: 
              en:以太网简写  ethernet
              wl:无线局域网 wlan
              ww:wwan

名称类型:
            o:集成设备的设备索引号
            s:扩展槽的索引号
            x:基于mac地址的命名
            ps:基于总线及槽的拓扑结构进行命名

linux网络配置方式

静态指定:

1、命令指定:
         ifcfg家族              
              ifconfig:配置IP,掩码,网关
              route:配置路由
              netstat:状态及统计数据查看 
         iproute2家族:
              ip OBJECT:
              addr:地址及掩码配置
              link:接口
              route:路由
              ss:状态及数据查看
              以上两个家族任何系统都可以使用  
         
         Centos7:nm家族
                 用来修改配置文件的命令
                        mcli:命令行工具
                        nmtui: 文本窗口工具
                注意:
                       DNS服务器指定:
                                   配置文件:/etc/resolv.conf
                       本地主机名指定:
                             hostname命令,临时有效
                             配置文件:/etc/sysconfig/network
                              centos7:hostnamectl命令     
 2、配置文件:
            RedHat及相关发行版:
                 /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
                   
             注意:命令设置的网络配置会立即生效,但不会永久有效,文件配置不会立即生效,但是会永久有效

动态分配
依赖本地网络中有DHCP服务
DHCP服务:动态主机配置服务

ifconfig命令

ifconfig:用来查看和管理接口及地址。
使用格式:
   ifconfig [ITERFACE]
常用选项:
   -a:显示所有的接口包括未激活的状态

ifconfig IFACE IP/MASK[up|down]:激活或者禁用某一个接口

[root@bogon ~]# ifconfig ens36
ens36: flags=4099  mtu 1500
        ether 00:0c:29:c0:c0:5f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
        #显示ens36网卡的状态

[root@bogon ~]# ifconfig ens36 up
ens36: flags=4099  mtu 1500
        inet 111.63.112.254  netmask 255.255.255.0  broadcast 111.63.112.255
        ether 00:0c:29:c0:c0:5f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
   #激活ens36的网卡

route命令

路由查看以及管理

路由条目类型:
主机路由:目标地址为单个IP;
网络路由:目标地址为ip网络
默认路由:目标位任意网络主机。0.0.0.0/0.0.0.0
查看路由条目:route -n

[root@bogon ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.199.1   0.0.0.0         UG    100    0        0 eno16777736
111.63.112.0    0.0.0.0         255.255.255.0   U     0      0        0 ens36
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.199.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

  Destination :target  目标
                Gateway:下一跳网关地址
                Flags: 路由条目的标志,  U 启用状态,  G:表示是一个网关
                Metric :度量值,
                IFace:经过每一个接口

添加:

    route add [-net|-host] TARGET [netmask Nm] [gw GW] [[dev] If]

    route add default gw 192.168.199.1 : 添加默认网关

[root@bogon ~]# route add -net 10.0.0.0 netmask 255.0.0.0 dev ens36
[root@bogon ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.199.1   0.0.0.0         UG    100    0        0 eno16777736
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens36
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.199.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

删除:
    route del [-net|-host] TARGET [netmask Nm] [gw GW] [[dev] If]

[root@bogon ~]# route del -net  10.0.0.0/8 dev ens36
[root@bogon ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.199.1   0.0.0.0         UG    100    0        0 eno16777736
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.199.0   0.0.0.0         255.255.255.0   U     100    0        0 eno16777736

ip命令

用来查看/管理路由,设备,策略路由和隧道
使用格式:
    ip [ OPTIONS ] OBJECT { COMMAND | help }
        OBJECT := { link | addr | route | netns }

ip link:管理网络设备配置

子命令:
ip link set:         change device attributes    设置设备属性
                      dev NAME(default):指明要管理的设备,dev关键字可以省略
                      up and down : 开启或者禁用 
                      multicast on或multicast off:启用或禁用多播功能;
                      name NAME:重命名接口名称
                      注意:修改时要先停止接口
                      mtu NUMBER:设置MTU大小,默认为1500
                      netns PID:ns为namespace,用于将接口移动到指定的网络名称空间

ip link show: display device attributes  显示设备属性
ip link help- : 显示简要帮助                           

示例:

#禁用ens34网卡
[root@localhost ~]# ip link set dev ens34 down

#将ens34网卡重命名为ens36
[root@localhost ~]# ip link set dev ens34 name ens36
#注意:重命名时需要将服务先停止

ip netns: 管理网络名称

子命令
ip  netns  list:列出所有的netns
ip  netns  add  NAME:创建指定的netns
ip  netns  del  NAME:删除指定的netns
ip  netns   exec  NAME  COMMAND:在指定的netns中运行命令

示例:

#创建一个netns列表
[root@localhost ~]# ip netns add ens99

#将一个设备移动到netns中,需要使用ip link set
[root@localhost ~]# ip link set dev ens36 netns ens99

#删除netns列表
[root@localhost ~]# ip netns del ens99
删除过后,列表里的设备将被释放

ip address:协议地址管理

子命令:
ip address add - add new protocol address
ip address add IFADDR dev IFACE : 添加一个ip地址
               [label NAME]:为额外添加的地址指明接口别名 
               [root@localhost ~]# ip address add 192.168.199.19 dev ens34 label ens34

               [broadcast ADDRESS] : 广播地址,根据IP和NETMASK自动计算得到
               [scope SCOPE_VALUE]:指定作用域
                global:全局可用
                link:接口可用
                host:仅本机可用   

ip address delete - delete protocol address  删除一个地址
           ip addr delete IFADDR dev IFACE                

 ip address show - look at protocol addresses
            ip address show [IFACE]:仅显示接口的ip地址

ip address flush - flush protocol addresses   :清空地址
               ip  address flush dev IFACE           

ip route命令

routing table management :路由表管理

子命令:
ip route add:add new route
ip route change:  change route
ip route replace:change or add new one
         ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
示例:
          # ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100
          # ip  route  add default  via  GW         

ip route delete:delete route  删除路由
 ip route del TYPE PERIFIX
                 
示例:
     # ip  route delete  192.168.1.0/24     

ip route show: list routes
             

ip route flush:flush routing tables
          ip route flush TYPE PREFIX    

ip route get TYPE PREFIX
               
             示例:ip route  get  192.168.0.0/24
              

ss命令

ss命令:显示接口的统计数据 取代netstat命令
    ss [options] [ FILTER ]

常用选项 解释
-t TCP协议的相关连接
-u UDP协议的相关连接
-w raw socket的相关连接
-l 监听状态的相关连接
-a 所有状态的相关连接
-n 显示数字格式
-p 相关的程序及其PID
-e 扩展格式信息
-m 内存用量
-o 计时器信息

常用组合:
    -tan,-tanl,-tanlp,-uan

 TCP的常见状态:
           TCP FSM:
                   LISTEN:监听
                   ESTABLISHED:建立的连接
                   FIN_WAIT_1:等待对方连接
                   FIN_WAIT_2:等待对方答应
                   SYN_SENT:
                   SYN_RECV:
                   CLOSED:


      EXPRESSION:
              dport=目标端口
              sport=源端口
       示例:'( doprt = :22 or sport = :22 )'    括号有空格

tcpdump命令:

语法:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

Linux tcpdump命令用于倾倒网络传输数据。

执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员
	常用选项:       
	        -a 		尝试将网络和广播地址转换成名称。
		    -c		<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
		    -d 		把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
		    -dd		把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
		    -ddd 	把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
		    -e 		在每列倾倒资料上显示连接层级的文件头。
		    -f		用数字显示网际网络地址。
		    -F		<表达文件> 指定内含表达方式的文件。
		    -i		<网络界面> 使用指定的网络截面送出数据包。
		    -l 		使用标准输出列的缓冲区。
		    -n		 不把主机的网络地址转换成名字。
		    -N 		不列出域名。
		    -O 		不将数据包编码最佳化。
		    -p 		不让网络界面进入混杂模式。
		    -q 		快速输出,仅列出少数的传输协议信息。
		    -r		<数据包文件> 从指定的文件读取数据包数据。
		    -s		<数据包大小> 设置每个数据包的大小。
		    -S 		用绝对而非相对数值列出TCP关联数。
		    -t 		在每列倾倒资料上不显示时间戳记。
		    -tt 	在每列倾倒资料上显示未经格式化的时间戳记。
		    -T		<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
		    -v 		详细显示指令执行过程。
		    -vv 	更详细显示指令执行过程。
		    -x		用十六进制字码列出数据包资料。
		    -w		<数据包文件> 把数据包数据写入指定的文件。


[root@localhost ~]# tcpdump -c 10 -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    17:53:25.734620 IP localhost.localdomain.ssh > ydong.lan.62805: Flags [P.], seq 1488351531:1488351743, ack 3837159095, win 274, length 212
    17:53:25.735615 IP localhost.localdomain.57287 > Hiwifi.lan.domain: 54145+ PTR? 212.199.168.192.in-addr.arpa. (46)
    17:53:25.736937 IP Hiwifi.lan.domain > localhost.localdomain.57287: 54145* 1/0/0 PTR ydong.lan. (69)
    17:53:25.738148 IP localhost.localdomain.58750 > Hiwifi.lan.domain: 59644+ PTR? 215.199.168.192.in-addr.arpa. (46)
    17:53:25.739701 IP Hiwifi.lan.domain > localhost.localdomain.58750: 59644 NXDomain* 0/0/0 (46)
    17:53:25.744071 IP localhost.localdomain.44279 > Hiwifi.lan.domain: 43554+ PTR? 1.199.168.192.in-addr.arpa. (44)
    17:53:25.744967 IP localhost.localdomain.ssh > ydong.lan.62805: Flags [P.], seq 212:408, ack 1, win 274, length 196
    17:53:25.745959 IP ydong.lan.62805 > localhost.localdomain.ssh: Flags [.], ack 408, win 602, length 0
    17:53:25.748237 IP Hiwifi.lan.domain > localhost.localdomain.44279: 43554* 1/0/0 PTR Hiwifi.lan. (68)
    17:53:25.748959 IP localhost.localdomain.ssh > ydong.lan.62805: Flags [P.], seq 408:1340, ack 1, win 274, length 932
    10 packets captured
    10 packets received by filter
    0 packets dropped by kernel

Linux配置文件

使用命令方式进行的设置都是立即有效,但是重启之后就无效了。如果想让设置一直有效,那么就需要修改配置文件。

centos7上修改用户主机名

hostnamectl命令:
          hostnamectl -status:显示当前主机名
          hostnamectl -set-hostname:设定主机名,永久有效
配置文件:/etc/sysconfig/network
                HOSTNAME=
    注意:修改配置文件的方法不会立即生效,但以后会一直有效

配置DNS服务器指向

 配置文件:/etc/resolv.conf
         nameserver DNS_SERVER_IP:最多只有三个
         主机路由:目标地址为单个IP;
         网络路由:目标地址为ip网络
         默认路由:目标位任意网络主机。0.0.0.0/0.0.0.0

修改网络的配置文件

/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

   ifcfg-IFACE配置文件参数:
            DEVICE:此配置文件对应的设备的名称,与NAME保持一致
       		ONBOOT:在系统引导过程中,是否激活此接口
       	    UUID:设备的唯一标识
            IPV6INIT:是否初始化IPv6
            BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp,bootp,static,none
            TYPE:接口类型,常见的有Ethernet,Bridge
            DNS1:第一个DNS服务器指向
            DNS2: 备用DNS服务器指向
            DIMAIN:DNS搜索域
            DEFROUTE:是否指认默认路由的地址
            GETWAY:默认网关
            IPADDR:本机IP地址
            PREFIX(netmask):子网掩码  ,centos 7支持使用PREFIX长度方式指明子网掩码
            USERCTL:是否允许普通用户控制此设备
            PEERDNS:如果BOOTPROTO的值为"dhcp",是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向,默认为允许
            NM_CONTROL:是否使用networkManager服务来控制接口
            HWADDR:设备的MAC地址

路由配置文件

用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE

支持两种配置方式,但不可混用;
         1、每行一个路由条目
                   TARGET via GW
          2、每三行一个路由条目
                  ADDRESS#=TARGET
                  NETMASK#=MASK
                  GATEWAY#=NEXTHOP

配置文件设置完成之后,需要重启网络服务:
centos7:

#systemctl restart network.service

linux进程管理

进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
简单来说就是应用程序放在那里不使用,它是静态的一串串代码,当你要是用它时,它就会一个个进程来保证你的程序运行。它用PID号来表示。
所有的进程都是由父进程来创建的。内核会创建一个init(Centos7上已经变成了systemd)的初始进程,用来管理所有进程。

进程PID号存储路径

PID号存储在/proc/目录下以数字命名的目录。对应的是每一个进程pid号

进程存储格式

Linux内核存储进程信息的固定格式:任务结构体 task struct,它会被装在到内存里存储进程的相关信息
多个任务的task struct 组件的链表:task list

 task_struct的内容分配

标示符:		描述本进程的唯一标示符,用来区别其他进程
状态:		任务状态,退出代码,退出信号等
优先级:		相对于其他进程的优先级
程序计数器:	程序中即将被执行的下一条指令的地址
内存指针:	包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据:	进程执行时处理器的寄存器中的数据
I/O状态信息:	包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表
记账信息:	可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等

进程的类型以及状态

进程类型分为以下:
  守护进程:在系统引导过程中启动的进程,与终端无关
  前台进程:用户启动终端的进程,终端结束,进程结束。
    注意:前台进程已经被送往后台以守护进程模式来运行
进程状态
运行状态:running
就绪状态:ready 等待内核运行
睡眠状态:
  可中断:任何时候都可以运行
  不可中断:磁盘睡眠状态
停止状态:暂停与内存中,但不会被调度,除非手动启动它;stopped
僵尸态:zombi

僵尸进程

1.僵尸进程怎么产生的?
当一个子进程退出时,为了保持退出状态,它的资源不会全部释放,必须等待父进程来清理子进程的资源。
如果父进程在子进程退出后,并没有清理子进程,那么这个子进程就被称为僵尸进程。
还有一种情况:
父进程在子进程前退出,那么子进程就编程孤儿进程。它会交由init进程来管理。

2、僵尸进程危害?
根据上述所说,子进程退出后还占用大量的内存资源空间。
虽然表面上子进程时退出了,但是它的退出状态也是由数据来维护的。变相的增加了一个维护它自身退出状态的进程。
如果一个父进程创建了很多子进程,可想而知,会造成对内存资源的极大浪费

进程的优先级

0-139:总共140个优先级
                  1-99:实时优先级;数字越大,优先级越高
                   100-139:静态优先级;  数字越小,优先级越高
 Nice值:
            -20,19(对应100-139)

进程管理工具

pstree命令

最常用的语法:pstree

[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─chronyd
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon───{dbus-daemon}]
        ├─dbus-launch
        ├─dnsmasq───dnsmasq
        ├─gdm─┬─X───9*[{X}]
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─gnome-settings-───5*[{gnome-settings-}]
        │     │                 │                 ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │     │                 │                 │             │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
        │     │                 │                 │             │             └─2*[{ibus-daemon}]
        │     │                 │                 │             └─22*[{gnome-shell}]
        │     │                 │                 └─3*[{gnome-session-b}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gssproxy───5*[{gssproxy}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───15*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─packagekitd───2*[{packagekitd}]
        ├─pcscd───2*[{pcscd}]
        ├─polkitd───5*[{polkitd}]
        ├─pulseaudio───{pulseaudio}
        ├─rngd
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───{vmtoolsd}
        ├─wpa_supplicant
        └─xdg-permission-───2*[{xdg-permission-}]

ps命令

report a snapshot of the current processes. 报告当前进程的状态
常用组合1:

ps [options]
     选项三中风格:
	  		1   UNIX options, which may be grouped and must be preceded by a dash.    加“-”号
 			2   BSD options, which may be grouped and must not be used with a dash.   不加“-”号
    		3   GNU long options, which are preceded by two dashes.    长选项
 
    a:	所有与终端相关的进程
    x:	所有与终端无关的进程
    u:	以用户为中心组织进程状态信息显示
    三者一同使用

示例:

[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193964  7128 ?        Ss   16:25   0:06 /usr/lib/systemd/systemd --switched-root --system --dese
root          2  0.0  0.0      0     0 ?        S    16:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:25   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   16:25   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    16:25   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    16:25   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    16:25   0:03 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    16:25   0:00 [watchdog/0]
root         11  0.0  0.0      0     0 ?        S    16:25   0:00 [watchdog/1]

#其中[]内都是内核启动的进程
头部显示:
	USER:用户      
	PID:进程号   
 	%CPU:累计是用CPU时间  
 	%MEM:内存空间占据整个空间的比例 
	VSZ:虚拟内存集     
	RSS:常驻内存集    
STAT:状态
    R:ruuning
    S:可中断睡眠
    D:不可中断睡眠
   	T:停止态
  	Z:僵死态
	+:前台进程,
	l:多线程进程
	N:低优先级进程    
    <:高优先级进程
	s: 会话引领者

常用组合2:


	  -e:显示所有进程
 	  -f:显示完整格式的进程信息
      二者同时使用:-ef        

示例:

[root@localhost ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 16:25 ?        00:00:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2      0  0 16:25 ?        00:00:00 [kthreadd]
root          3      2  0 16:25 ?        00:00:00 [ksoftirqd/0]

#头部信息	
	PPID:父进程   
	C:CPU的占用百分比   
	STIME:启动时间   
	TTY:与其相关的终端
	TIME:启动的时间   
	CMD:启动此进程的命令

常用组合3

   -F:显示完整格式的进程信息
          PSR:运行在哪个CPU上
   -H:以层级结构显示进程的相关信息
     常用组合:-eFH

常用组合4

 常用组合:   
       -eo,axo
          o filed1,filed2:自定义要显示的字段列表,各字段以逗号分隔
               常用的filed:pid , ni , priority ,psr , pcpu , stat , comm, tty, ppid,rtprio
                                  ni:Nice值
                                  priority:当前进程的优先级数字
                                  rtprio:实时优先级
                       例如: ps axo pid,command

示例:

[root@localhost ~]# ps axo pid,ni,stat,psr
   PID  NI STAT PSR
     1   0 Ss     1
     2   0 S      6
     3   0 S      0

htop命令

top升级版,显示linnux系统的进程信息。

   选项:
          -d #:指定延迟时间间隔
          -u uesrName:仅显示指定用户的进程
          -s  COLUME:以指定字段进行排序

    子命令:
          l:显示选定的进程打开的文件列表
          s:跟踪选定的进程的系统调用
          t:以层级关系显示各进程状态
          a:将选定的进程绑定至某指定的cpu核心

计算机网络基础以及进程查看管理_第6张图片

vmstat命令

Report virtual memory statistics 报告虚拟内存的统计工具
使用语法:vmstat [options] [delay [count]]

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1007964   2120 647076    0    0     6     1   19   15  0  0 100  0  0

头部信息:
      procs:进程
          r:等待运行的进程的个数;CPU上等待运行的队列长度
          b:处于不可中断睡眠态的进程个数,被阻塞的任务队列的长度
      memory:
          swpd:交换内存使用总量;
          free:空闲的物理内存总量
          buffer:用于buffer的内存总量
          cahe:用于cache的额内存总量
       swap:
           si:数据进入swap中的数据速率(kb/s)
           so:数据离开swap的速率(kb/s)
        io:、
            bi: 从块设备读如数据到系统的速率(kb/s)
            bo: 保存数据至块设备的速率(kb/s)      
        system
            in:interrupts ,中断速率
            cs:context switch  上下文切换的频率  
       cpu:
        us:用户空间所占据的百分比    
        sy:内核空间所占据的百分比      
        ni:用于nice值调整后占据的百分比  
        id:空闲百分比     
        cs:切换上下文所消耗
        wa:等待io所消耗的时间      
        hi:硬件中断所占据的百分比        
        si:软件中断所占据的百分比  
        st:被偷走的时间百分比             

你可能感兴趣的:(马哥第六周计算机基础,进程管理)