网络管理之netstat命令
netstat
-print network connections,routing tables,interface statistics,masquerade connections and multicast memberships
netstat [-t|–tcp][-u|–udp][-w|–raw][-l|–listening][-a|–all][-n|–numeric][-e|–extend][-p|–program]
-t:tcp协议相关
-u:udp协议相关
-w:raw socket相关
-l:处于监听状态
-a:所有状态
-n:以数字显示ip和端口
-e:扩展模式
-p:显示相关进程及pid
配置linux网络属性:ip
ip
-show/manipulate routing,devices,policy routing and tunnels
ip [options] object {command |help}
object:{link|addr|route}
ip link
-network device configuration
set dev iface
可设置属性:
up down:启用或禁用设备接口
show [dev iface]:指定接口
ip addr {add|del} IFADDR dev String
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
[broadcast ADDRESS]:指明广播地址
ip address show
-look at protocol addresses
[dev device]
[label LABEL]
[primary and secondary]
ip route
-routing table management
ip route add target via GW dev IFACE src SOURCE_IP
target:指明该条路由记录是指向主机IP还是一个网段
GW:指明网关地址
IFACE:指明设备接口
ss:ss命令是netstat命令的升级版,在centos7 上推荐使用ss命令来取代netstat命令
netstat是通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息
ss [option]…[filter]
-t:tcp协议相关
-u:udp协议相关
-w:裸套接字相关
-x:unix sock相关
-l:listen状态的连接
-a:所有
-n:数字格式
-p:相关的程序及pid
-e:扩展的信息
-m:内存用量
-o:计时器信息
filter:=[state TCP-STATE][EXPRESSION]
LISTEN:监听
ESTABLESHED:以建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
‘(dport= :ssh or sport= :ssh)’
网络配置文件:
a.IP MASK GW DNS相关配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
b.路由相关配置文件
/etc/sysconfig/network-scripts/route-IFACE
DEVICE:此配置文件应用到的设备
HWADDR:对应的设备MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp,none,static,bootp
NM_CONTROLLED:NetworkManager的简写,此网卡是否接受NM控制
ONBOOT:是否在系统引导时是否激活此设备
TYPE:接口类型,常见的有Ethernet,Bridge
UUID:设备的唯一标识
IPADDR:指明IP地址
NETMASK:子网掩码
GATEWAY:默认网关
DNS1:第一个DNS服务器地址
USERCTL:是否普通用户可以空盒子此设备
PEERDNS:如果booton设置为dhcp,是否允许dhcp server分配的DNS服务器指向信息直接覆盖至/etc/resolv.conf文件中
本地解析器
centos6 hostname
centos7 hostnamectl 实时生效
在centos6中存放主机名的文件是 /etc/sysconfig/network
在centos7中存放主机名的文件时 /etc/hostname
dns名字解析
/etc/resolv.conf
/etc/nsswitch.conf 此文件优先级高于/etc/resolv.conf
网络配置文件:
/etc/sysconfig/network-scirpts/route-IFACE
1) target via gw
2) ADDRESS#=
NAEMASK#=
GATEWAY#=
网卡名称:
网络接口识别并命名相关的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules
卸载网卡驱动
modprode -r e1000
装载网卡
modprobe e1000
Centos7 网络属性配置
rhel6之前,网络接口使用连续号码命名在;eth0,eth1等,当增加或删除网卡时,网卡会发生改变
rehl7使用基于硬件,设备拓扑和设置类型命名
1)网卡命名机制
systemd对网络设备的命名方法
a)如果firmware或bios为主板上继承的设备提供的索引信息可用,且可预测则根据索引进行命名,如eno1
b)如果fireware或bios为pci-e扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1
c)如果硬件接口的物理位置信息可用,则根据此信息进行命名,如enp2s0
d)如果用户显示启动,也可以根据mac地址进行命名
e)以上均不可用时,则使用传统命名机制
2)网卡设备的命名过程
a)/usr/lib/udev/rules.d/60-net.rules
b) /usr/lib/udev/rules.d/71-biosdevname.rules
c) /usr/lib/udev/rules.d/75-net-description.rules
3) 采用传统命名方式
a)编辑/etc/default/grub配置文件
GRUB_COMLINE_LINUC=“net.ifnames=0 rhgb quiet”
或者修改/etc/grub2/grub.cfg
b) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
c) 重启系统
nmcli命令
NetworkManager command line tool网络管理命令行工具,它是centos中推行取代ifconfig的命令你个
nmcli [option] object {command||help}
device -show and manage network interfaces
nmcli device help
connection -start,stop,and manager network connections
nmcli connection help
修改IP地址等属性
nmcli connection modify IFACE [+|-]setting.property value
修改配置文件执行生效
systemctl restart network
nmcli connection reload
nmcli connection down eth0
nmcli connection up eht0
使用nmcli进行网络配置
设备即网络接口,连接时对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
创建一个新连接static,指定静态地址,不自动连接
nmcli connection add type Ethernet con-name static ifname eth0 autoconnection no ip4 172.16.x.10/24 gw4 172.16.x.254
网络组Network Teaming
网络组:是讲过个网卡聚合在一起的方法,从而实现冗错和提供吞吐量
网络组不同于旧版的bonding计数,提供了更好的性能和扩展性
网络组由内科驱动和teamd守护进程实现
多种方式ruuner:broadcast roundrobin activebackup loadbalance lacp
1.nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
会在/etc/sysonfig/network-scripts/下生成一个ifcfg-team0的文件
nmcli connection modify team0 ipv4.addresses 10.1.40.121/16
nmcli connection modify team0 ipv4.method manual
2.创建port接口
nmcli connection add type team-slave con-name team0-eno1 ifname eno16777736 master team0
nmcli connection add type team-slave con-name team0-eno3 ifname eno33554984 master team0
3.启动网络组
nmcli connection reload
4.尝试down掉其中一个网卡看其数据包是否能正常接收
使用teamdctl team0 state可以查看到详细的信息
Linux进程及作业管理
内核的功能:进程管理.文件系统,网络功能,内存管理,驱动程序,安全功能
Process:运行中的程序的一个副本,是被载入内存的一个指令集合
进程ID(process ID,PID)号码被用来标记各个进程
UID,GID和SELINUX语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
Linux内核存储进程信息的固定格式:task struct
多个任务的task struct组件的链表:task list
进程创建:
init 初始化进程
父子关系:
进程:都由其父进程创建
fork(),clone()
进程优先级:
0-139:系统优先级
1-99:实时优先级
100-139:静态优先级
数字越小,优先级越高
nice值:-20,1
Big O:时间复杂度,用时和规模的关系
o(1),o(logn),o(n),o(n^2),o(2^n)
进程内存:
page frame:页框,用于存储页面数据,存储page 4K
LRU:least recently used 近期最少使用算法,释放内存
MMU:Memory Management Unit负责转换线性和物理地址
IPC:Inter Process Communiation
同一主机上:
Signal
Shm:shared memory
Semerphor
不同主机上
rpc:remote procecure call 远程库调用
socket:
linux内核:抢占式多任务
进程类型:
守护进程:daemon,在系统引导过程中启动的进程,与终端无关
用户进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行
进程状态
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动,stopped
僵死态:zombie
进程的分类:
CPU-Bound
IO-Bound
《linux内核设计与实现》
《深入理解linux内核》
Linux系统上的进程查看及管理工具:
pstree ps pidof pgrep htop glances pmap svmstat dstat kill pkill job bg fg nohup nice renice killadd…
Centos 5: sysV init
Centos 6: upstart
Centos 7: system
/sbin/init
pstree:
display a tree of process
/proc/:内核中的状态信息
内核参数:
可设置其值从而调整内核运行特性的参数
状态变量:其用于输出内核中统计信息或状态下信息,仅用于查看
参数:模拟成文件系统类型
进程:
/proc/:pid
ps:
present a snapshot of the current process
ps [options]:
选项有三种风格
1 unix 带-
2 BSD 不带-
3 GNU long options
启动进程的方式:
系统启动进程中自动启动:与终端无关的进程
用户通过终端启动:与终端相关的进程
选项:
a:所有与终端相关的进程
x:所有与终端无关的进程
u:以用户为中心组织进程状态信息显示
常用组合:aux
VSZ:虚拟内存集
RSS:Resident Size 常驻内存集
STAT:
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zomble
+:前台进程
|:多线程进程
N:低优先级进程
<: 高优先级进程
s:session leader
-e:显示所有进程
-f:完整格式的进程信息
常用组合之二:-ef
-F:显示完整格式的进程信息
C:cpu utilization
PSR:运行于哪颗CPU上
-H:以层级结构显示进程的相关信息
常用组合之三:-eFH
常用组合之四:-eo axo
o field1,field2…:自定义要显示的字段
常用field:pid prl psr pcpu stat comm tty ppid
ni:nice值;
pri:priority优先级
rtprio:real time priority 实时优先级
pgrep pkill
look up or signal processes based on name and other attributes
pgrep [option]pattern
-u uid: effective user
-U uid:read user
-t TERMINAL:与指定的终端相关的进程
-l:显示进程名
-a:显示完整格式的进程名
-P pid:显示是此进程的子进程
pidof
根据进程名,获取其pid
top
display linux processes
排序
P 以占据cpu百分比排序
M 内存百分比
T 累计占用cpu时间排序
首部信息:
uptime信息 l命令
tasks及cpu信息 t命令
内存信息 m命令
退出命令:q
刷新时间间隔 s
终止指定的进程 k
选项:
-d# 指定刷新时间
-b 批次方式显示
-n# 显示多少批次
栏位信息简介:
us:用户信息
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断
st:虚拟机偷走时间
uptime:显示系统时间 运行时长及平均负载
过去1分钟 5分钟和15分钟
等到运行的进程队列的长度
内存工具:
vmstat:虚拟内存信息
vmstat [options][delay[count]]
procs:
r:等待运行的进程的个数,和核心数无关
b:处于不可中断睡眠态的进程个数(被阻塞的队列长度)
memory:
swpd:交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
io:
bo:从块设备读入数据到系统中的速率(kb/s)
bi:从系统中将数据保存到块设备的速率
system:
in:interrupts,中断速率
cs:context switch 进程切换速率
cpu:
us;运行非系统内核程序花费的时间
sy:运行系统内核所用的时间
id:time spent idle
wa:时间花费在等待io上
st:虚拟设备偷走的时间
pmap:进程的内存映射
cat /proc/PID/maps
dstat:系统资源统计
dstat [-afv][options…][delay[count]]
-c:显示cpu相关情况
-d:显示disk相关信息
-g:显示page相关统计信息
-m:显示memory相关统计数据
-n:显示network相关统计信息
-p:显示process相关统计信息
-r:显示IO请求相关统计信息
-s:显示swapped相关统计信息
kill命令:
向进程发送控制信号,以实现对进程管理
显示当前系统可用的信号 kill -l
常用信号:man 7 signal
1)SIGHUP:无需关闭进程而让其重新读取配置文件
2)SIGINT:终止正在运行的进程
9)SIGKILL:杀死正在运行的进程
15)SIGTERM:终止正在运行的进程
18)SIGCONT
19)SIGSTOP
指定信号的方法:
信号的数字标识 1,2,9
信号完整名称:SIGHUP
信号的简写名称:HUP
原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/44225