首页 > 代码库 > CentOS中的网络管理+进程管理
CentOS中的网络管理+进程管理
nmcli命令:
command - line tool for controlling NetworkManager
格式:nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS: = {
-t [erse]
-p [retty]
-m [mode] tabular | multiline
-f [ields] <field1, field2, ...> | all | common
-e [scape] yes | no
-v [ersion]
-h [elp]
}
OBJECT: connection | device
device - show and manage network interfaces
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
status: 状态显示
connection - start, stop, and manage network connections
start: 启动
stop: 停止
manage: 管理
COMMAD := { show | up | down | add | edit | modify | delete | reload | load }
示例: nmcli general status 状态显示
modify: 改文件
reload: 重新加载
load: 加载
show: 显示所有网络连接的属性信息
up|down: 启动或禁用指定的网络连接
add: 添加新的网络连接
autoconnect yes|no: 是否自动启动此连接, 在配置文件中添加ONBOOT=yes|no;
ifname IF_NAME: 指定要创建连接的目标网络接口设备名称;
con-name CON_NAME: 为指定的网络接口设备创建一个连接名称;
type TYPE: 指定网络设备的接口类型;
示例:
# nmcli connection add sutoconnect yes ifname eno67109432 con-name eno666 type ethernet
delete: 删除指定的网络连接
#nmcli connection delete CON_NAME
示例:
#nmcli connection delete eno666
reload: 不重启网络接口, 但重新加载其配置文件中的配置信息;
modify:
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
<setting>:
802-3-ethernet.mtu
connection.autoconnect
ipv4.addresses
ipv4.dns
ipv4.gateway
ipv4.method
示例:
# nmcli connection modify "系统\ eno50332208" ipv4.addresses 1.2.3.4/8 ipv4.dns 202.202.222.222 ipv4.gateway 1.1.1.1
nmtui:
nmtui - Text User Interface for controlling NetworkManager
CentOS6:
system-config-network[-tui]
setup --> 网络配置
注意: 上述命令虽然可以使用简单的图形界面, 但都是修改了配置文件, 所以需要重启网络接口才能使配置生效;
网络组(Network Teaming)
网络组: 是将多个网络接口设备聚合在一起的方法, 其目的是实现冗余容错以及提高可用性和吞吐量;
网络组与以往的Bonding技术相比, 具有更好的性能以及更好的扩展性;
在CentOS7中, 网络组是由内核中的一个内核驱动和一个名为teamd的守护进程来实现的;
网络组可以实现多个工作模式, 被称为"运行器(runner)";
broadcast
roundrobin
activebackup
loadbalance
lacp(IEEE 802.3ad, Link Aggregation Control Protocol, 链路聚合控制协议)
网络组连接的特点:
1.启动网络组接口并不会自动启动网络组中的其他port接口;
2.启动网络组终端port接口, 也不会自动启动网路组接口;
3.禁用网络组接口, 则会立即禁用网络组中的port接口;
4.对于没有port接口的网络接口而言, 只能配置静态IP地址, 不能设置从DHCP获取; 如果设置了, 网络组接口就会一直等待port接口的加入;
创建网络组接口的方法:
nmcli connection add type team con-name TEAM_COM_NAME ifname IF_NAME config JSON
JSON是用来指定runner的方式, 其格式:
‘{"runner": {"name": "METHOD"}}‘
示例:
# nmcli connectin add type team con-name class17 ifname class17config ‘{"runner": {"name": "loadbalance"}}‘
# nmcli connection modify class17 ipv4.addresses 172.16.203.205/16
# nmcli connection modify class17 ipv4.method manual
创建port接口
nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME
注意: 如果不指定con-name, 则默认的con-name为team-slave-IF_NAME
示例:
# nmcli connectin add type team-slave con-name eno67109432 ifname eno67109432 master class17
# nmcli connectin up class17
# nmcli connectin up eno67109432
# nmcli device disconnect eno67109432
创建网络组也可以直接改对应的连接的配置文件:
网络组接口:
DEVICE=class17
TEAM_CONFIG="{\"runner\": {\"name\": \"activebackup\"}}"
DEVICETYPE=Team
BOOTPRORO=noe
NAME=class17
ONBOOT=yes
IPADDR=172.16.203.205
PREFIX=16
port接口:
NAME=team-slave-eno33554984
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=class17
DEVICETYPE=TeamPort
进程管理
在进程管理中, 经常会需要进行保存现场和恢复现场
保存现场: 将数据和状态保存
恢复现场: 将数据和状态恢复
在linux中进程和线程基本无差别
在windows中划分明显, 一个CPU只能执行一个进程;
写时复制: 即在数据发生改变时, 对数据进行复制;
所谓进程: process, 一个活动的程序实体的副本;
生命周期可能包含一个或多个执行流;
创建进程:
每个进程的组织结构是一致的;
内核在正常启动并且全面接管硬件资源之后, 会创建一个Init的进程; 而这个名叫init的进程负责用户空间的进程管理;
CentOS5及以前: SysV Init, Classic Init
有缺陷: 在启动系统时, Init通过写脚本的方式来创建各个子进程; 利用shell来实现, 因此其执行速度非常慢; 导致系统的启动速度和进程的创建速度都非常慢;
CentOS6: upstart, 由Ubuntu研发的新型的Init进程; 可以并行的启动某些有关联的服务进程; 在创建进程的时候, 可以多创建进程; 如果有多个CPU或这个多颗CPU核心的话, 其进程的创建速度会有比较明显的变化; 第一个进程名称仍然是init;
CentOS7: Systemd(系统的守护神), 参考了MAC OS的启动逻辑开发的一款新款的init程序; 其可以自身独立完成整个操作系统的启动工作; 也就是说, 在开机并加载内核之后, 只需要启动一个systemd进程就可以将其他各服务进程启动起来, 从而引导整个系统启动;
除了init进程之外, 其他的各个进程都是由其父进程创建的;
由fork()系统调用来实现的;
每个父进程通过fork()系统调用, 复制自身的数据给子进程使用; 这种复制方式不是立即复制, 而是写时复制(CoW);
终止进程:
任何父进程创建的子进程都必须由父进程亲自销毁;
任何的进程的父子关系都保存在task struct中;
进程优先级:
0-139个等级;
0保留没用
实则1-139
1-99: 实时优先级, 数字越大优先级越高; 在系统启动时启动的进程;
100-139: 静态优先级, 数字越小优先级越高;
在用户执行某些应用程序的时候启动的进程;
nice值:
-20~19: 默认的nice值0;
只有管理员才能使用负整数的nice值, 以提升进程的优先级;
而普通用户只能使用正整数的nice值, 以降低进程的优先级;
划分了140个进程队列;
Big O标准:
O(1), O(logN), O(N), O(N^2), O(2^N)
进程的类型:
按照进程的启动方式:
守护进程:
Daemon, 通常是在系统引导的过程被启动的, 与任何的终端无关; 也可以通过终端启动;
用户进程:
用户登录到系统之后, 通过终端启动的进程;
按照进程的运行位置:
前台进程:
在进程启动之后, 进程一直占用标准输出或者标准输入或者同时占用标准输出和标准输入;
后台进程:
在进程启动之后, 进程不占用标准输出和标准输入;
按照进程对于资源消耗:
CPU-Bond: 非交互式的进程;
IO-Bond: 编辑器等各种交互式进程;
Linux系统上与进程有关的命令(查看命令和管理类命令):
pstree, ps, pidof, pgrep, pkill, top, htop, glances, dstat, pmap, vmstat, bg, fg, jobs, kill, killall, nohup, nice, renice, ......
pstree:
pstree - display a tree of processes
ps
ps - report a snapshot of the current pocesses.
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.
常用选项:
BSD风格的选项:
a: 显示所有与终端相关的进程;
x: 显示所有与终端无关的进程;
u: 显示发起进程的用户的账户名称;
常用的选项组合之一: aux
ps aux命令显示的结果中各字段的含义:
USER: 进程的所有者
PID: 进程标识符
%CPU: 进程占用的CPU处理时间的百分比;
%MEM: 进程占用的物理内存的百分比;
VSZ: 虚拟内存集(可交换内存集)
RSS: 常驻内存集
TTY: 进程与哪个终端相关; ? 表示与终端无关
STAT
R: running, 正在运行的进程;
S: interuptible sleeping, 可中断的睡眠状态;
D: uninteruptible sleeping, 不可中断的睡眠状态; Disk Block;
T: Trace/STOPPED, 被跟踪/已停止; (通常是子进程在等待父进程将其杀死)
Z: Zombie, 僵死态;
+: 前台进程
l: 包含多线程的进程
<: 高优先级进程
N: 低优先级进程
s: session leader, 由子进程的父进程;
START: 进程开始执行的时候时间戳
TIME: 进程累计的CPU占用时间
COMMAND: 启动进程的命令行参数
UNIX风格的选项:
-e: 显示所有进程;
-f: 显示完整格式的进程信息
-F: 显示完整格式的进程信息, 与-f几乎相同;
常用的选项组合之二: -ef
PPID: 父进程PID
C: 表示进程占用的CPU时间的百分比
常用的选项组合之二: -eF
SZ: 虚拟内存集
RSS: 常驻内存集
PSR: 表示此进程在哪个CPU核心上运行;
-H: 以层级结构显示进程的父子关系;
常用的选项组合之四: -eFH
o|-o field1, field2, ...: 以自定义字段的方式显示进程相关信息;
field: pid, ppid, ni, rtprio, psr, pcpu, stat, comm, user, tty, vsz, rss, ......
常用的选项组合之五: -eo | axo field1, field2, ...
pgrep, pkill:
pgrep, pkill - look up or signal processes based on name and other attributes
根据进程名称或其他属性查看进行或向进程发送信号;
pgrep [options] pattern
pkill [options] pattern
常用选项:
-u uuid: 显示进程的有效用户;
-U uid: 显示进程的真实用户;
-t TERM: 显示指定的终端相关的进程;
-l: 显示进程名称;
-a: 显示进程的完整的命令行参数;
pidof:
显示指定进程名称对应的进程ID;
top:
top - display Linux processes
top首部:
第一行: uptime信息:
当前系统时间
系统的运行时长
当前登录系统的用户总数
过去1分钟, 5分钟, 15分钟的在CPU上等待运行的进程队列的长度;
第二行:
系统中运行的进程总数;
正在运行的进程数;
处于睡眠状态的进程数
已停止的进程数
僵死态的进程数
第三行: CPU时间占用百分比
us: user space, 用户空间的进程占用的CPU时间的百分比
sy: system, 内核空间的内核进程占用的CPU时间的百分比
ni: nice, 使用nice值调整了进程优先级之后额外多占用的CPU时间百分比;
id: idle, CPU空闲时间的百分比
wa: waiting, 等待IO完成所消耗的CPU时间的百分比
hi: hardware interupting, 处理硬件中断时间所消耗的CPU时间的百分比;
si: software interupting, 处理软件中断时间所消耗的CPU时间的百分比;
st: stolen, 被虚拟化程序等偷走的CPU时间的百分比
第四行: 以KB为单位显示物理内存空间的使用情况;
total: 物理内存空间的总大小
free: 空闲的物理内存空间大小
userd: 已经被使用的物理内存空间大小
buffer/cache: 缓冲区和缓冲区消耗的物理内存空间大小
auail mem: 真正可用的内存空间大小;
第五行: 以KB为单位显示swap空间的使用情况
交互式命令:
1: (数字) 显示或隐藏CPU核心信息
P: 根据CPU占用百分比进行排序
M: 根据物理内存占用百分比进行排序
T: 根据累计CPU占用时间进行排序
l: (字母)关闭或显示uptime信息
t: 关闭或显示第二, 第三行信息
m: 关闭或显示第四, 第五行信息
q: 退出top交互模式
s: 修改top的刷新时间间隔
k: 终止某个指定PID的进程的运行
常用的选项:
-d #: 指定top刷新的时间间隔, 默认是3秒;
-b: 按批次显示进程信息
-n #: 通常与-b选项一起使用, 表示显示多少批;
CentOS中的网络管理+进程管理