llinux基础命令详细汇总

文章目录

  • Linux基础命令
    • 常用系统工作命令
      • man手册注意事项:
          • inode索引节点:
    • 文本文件查看编辑命令
          • linux文件的四种时间
    • 压缩解压缩命令
    • tar归档工具
    • 文本排序命令sort
    • 文本去重命令 uniq
    • 基础命令之 cut
    • 高级命令之awk(截取命令)
    • 高级命令之 sed
    • alias 查看别名
    • 文本过滤命令grep
    • echo 命令
    • 文件查找命令find
    • 正则表达式:
    • ln硬链接与软连接
    • RPM 软件包管理
          • rpm包安装升级卸载:
          • rpm包查询:
          • rpm包效验
          • RPM重建数据库
          • yum安装
          • rpm包中的文件提取
      • yum管理
        • yum本地仓库管理:
        • yum网络仓库
        • 软件官方仓库
        • yum管理软件
          • 搜索软件包
          • 安装软件包
          • 重装软件包
          • 更新软件包
          • 删除软件包
          • 与仓库相关的命令
          • 与缓存相关的命令
          • 与包组相关的命令
          • 与历史记录相关的命令
        • YUM签名检查机制
        • 源码包的安装:
          • 编译安装注意事项:
          • **源码编译报错信息处理**
        • 编译安装Apache
    • 网络基础管理
        • 传统网卡命名机制
        • redhat7网卡命名机制
        • 网络接口名称组成格式
        • 网卡设备的命名过程
        • 回归传统命名步骤
        • 网络管理常用命令
        • ifconfig
        • ip
        • route
        • hostname与hostnamectl
      • 网络相关配置文件
        • 网络配置文件
        • 网络接口配置文件
        • 路由配置文件
        • DNS配置文件
      • NetworkManager管理网络
      • 使用原生network管理网络

Linux基础命令

常用系统工作命令

du 查看文件或目录所占磁盘空间的大小

​ -h单位转换

​ -s显示占的用总空间大小 (一般组合-sh查看文件或目录的大小)

[root@wyh ~]# du -sh /tmp/anaconda-ks.cfg 
4.0K	/tmp/anaconda-ks.cfg

df 报告系统磁盘空间的使用情况

​ -h单位转换

​ -T 显示类型

[root@wyh ~]# df -h
文件系统                  容量  已用  可用   已用% 挂载点
/dev/mapper/rhel-root   17G  1.6G   16G   10%   /
devtmpfs               901M     0  901M    0%   /dev
tmpfs                  912M     0  912M    0%   /dev/shm
tmpfs                  912M  8.7M  904M    1%   /run

dumpe2fs /dev/sda3|less 查看文件系统的信息

hostname命令

• hostname 查看或临时修改主机名时,重开终端有效、重启失败

• hostnamectl 查看或永久修改主机名,重开终端有效,重启依然有效

​ 配置文件 etc/hostname

[root@ wyh~]# hostnamectl set-hostname hbs
[root@wyh ~]# bash
[root@wyh ~]# 

• bash 重开终端

• clear 清屏(ctrl +l)

• whoami 显示当前登录的用户

• w 显示当前在线用户并显示其正在运行的命令

• who 查看当前在线的用户

• which显示指令命令的绝对路径

• cal 打印日历

• ldd 查看指定程序有哪些依赖库文件


[root@wyh ~]# ldd /usr/bin/vim
	linux-vdso.so.1 =>  (0x00007ffd6c8b5000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fdb24220000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fdb23ff8000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fdb23dce000)
	libacl.so.1 => /lib64/libacl.so.1 (0x00007fdb23bc5000)

uptime:查看系统的负载信息
free -h 查看系统的内存使用情况
tree -a 以树形状态显示显示a目录的结构

[root@wyh a]# tree a
a
├── b
│   ├── c
│   └── d
├── c
│   ├── e
│   └── f
└── d
    ├── g
    └── h
    [root@wyh]

**• date 查看时间日期 **
-s“修改日期时间”
+%Y 显示年 %m月 %d日 %H时 %M分 %s秒

• pwd 打印当前的活动目录

• systemctl restart network 重启网卡

• 开关机和重启

开关机和重启命令:
关机      shutdown -h now    halt     poweroff  init 0
重启      shutdown -r now    reboot   init 6
exit , logout,Ctrl+d退出linux或当前窗口    

ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停

ctrl+c 强行中断当前程序的执行

ctrl+d 表示结束当前输入(即用户不再给当前程序发出指令),那么Linux通常将结束当前程序

man手册注意事项:

NAME //命令的名称
SYNOPSIS //参数的大致使用方法
DESCRIPTION //介绍说明
EXAMPLES //演示(附带简单说明)
OVERVIEW //概述
DEFAULTS //默认的功能
OPTIONS //具体的可用选项(带介绍)
ENVIRONMENT //环境变量
FILES //用到的文件
SEE ALSO //相关的资料
HISTORY //维护历史与联系方式

inode索引节点:
iNode 索引节点:本质是磁盘上的一块存储空间 默认128或256字节,文件属性(不含文件名) 指向block指针
一个文件至少占一个iNode
inode 是在格式化的过程中产生的。磁盘在格式化过程中会生成两部分内容
 1)inode 存储文件对应的属性信息
    指向文件block的指针(索引节点)
 2)blcok 存储文件内容,真实数据
block 实体内容,1,2,4k,每个block只能被一个文件占用
一本书为例子  目录相当于iNode  每一页相当于block
出现错误no space left on device:(1.block不足 2.inode不足)

生成一个文件(非空的):
 1、至少占一个iNode,身份证  (ls -i可查看文件iNode)
 2、至少占一个block         (用stat可查文件block)
 1k    1inode   1block
 100k  1inode   25block
 dumpe2fs  /dev/sda3|less  查看block iNode

文本文件查看编辑命令

• cd 切换目录
cd - 目录之间相互切换(回放的功能)
cd… 返回上一级目录

[root@wyh a]# cd /root/a/d
[root@wyh d]# cd
[root@wyh ~]# cd -
/root/a/d
[root@wyh d]# cd ..
[root@wyh a]# 

• mkdir 创建目录
-p 递归创建(若父目录不存在时则自动创建)
-v显示创建的过程

[root@wyh a]# mkdir -pv   a/{b/{c,d},c/{e,f},d/{g,h}}
mkdir: 已创建目录 "a"
mkdir: 已创建目录 "a/b"
mkdir: 已创建目录 "a/b/c"
mkdir: 已创建目录 "a/b/d"
mkdir: 已创建目录 "a/c"
mkdir: 已创建目录 "a/c/e"
mkdir: 已创建目录 "a/c/f"
mkdir: 已创建目录 "a/d"
mkdir: 已创建目录 "a/d/g"
mkdir: 已创建目录 "a/d/h"

• file 查看文件的属性

              b      特殊块文件(缓冲的)
              c      特殊字符文件(不缓冲)
              d      目录
              p      命名管道 (FIFO)
              f      普通文件
              l      符号链接
              s      套接字
              D      门 (Solaris 特有)

[root@wyh ~]# file /tmp/anaconda-ks.cfg 
/tmp/anaconda-ks.cfg: ASCII text
[root@ wyh~]#

• touch 创建文件

[root@wyh ~]# touch 0
[root@wyh ~]# ls
0  a


• wc 文本统计
-c //统计文件的字节数
-w //统计文本的单词数
-l //统计文本的行数

[root@wyh ~]# wc -l /tmp/anaconda-ks.cfg 
52 /tmp/anaconda-ks.cfg
[root@wyh ~]# 


• stat 查看文件的状态

[root@wyh ~]# stat /tmp/anaconda-ks.cfg 
  文件:"/tmp/anaconda-ks.cfg"
  大小:1492      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:16777793    硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2019-04-06 14:31:52.521574557 +0800
最近更改:2019-04-03 21:46:44.651504438 +0800
最近改动:2019-04-03 21:46:44.651504438 +0800
创建时间:-

linux文件的四种时间

​ atime 访问时间 查看内容 Access

​ mtime 修改时间 修改内容 Modify

​ ctime 改变时间 文件属性 (权限等) Change

​ dtime 删除时间 文件被删除时间

• rm 删除文件

​ -r 删除目录时使用
​ -f 强制删除

[root@wyh~]# ls
0  a
[root@wyh ~]# rm -rf 0 a
[root@wyh ~]# ls
[root@wyh ~]# 

• cp 复制文件 (多个文件到目录, 一个文件到一个文件)

​ -r 递归复制(拷贝目录时必须使用的选项)
​ -p 拷贝保留原权限

[root@wyh ~]# ls
1  2  qq  ww
[root@wyh ~]# cp -r qq ww /opt

• mv 移动文件 (多个文件到目录 ,一个文件到一个文件)

​ 同一目录下移动文件=重命名

[root@wyh ~]# ls
1  2  qq  ww
[root@wyh ~]# mv qq vv
[root@wyh ~]# 
[root@wyh ~]# ls
1  2  vv  ww

• cat 查看文件的内容
-n 显示行号

[root@wyh~]# cat -n /tmp/anaconda-ks.cfg 
     1	#version=DEVEL
     2	# System authorization information
     3	auth --enableshadow --passalgo=sha512

• tac 查看文件的内容(倒序查看)

• more 全屏查看文件内容 只能从前往后看 看完自动退出(空格键翻页)

• less 全屏查看文件内容 只能从前往后看 看完不会自动退出 ( -N显示行号)
*
• head 从文件首行开始打印文件内容 默认打印前十行
-20为打印前20行

[root@wyh ~]# head -2 /tmp/anaconda-ks.cfg 
#version=DEVEL
# System authorization information
[root@wyh ~]# 

• tail 打印文件尾部的内容 默认打印倒数十行

​ -20为打印倒数的20行
​ -f实时查看文件的更新

ls 列出当前目录下的所有内容

ls命令常用选项:        
        -l  //长格式显示(详细信息)
        -h  //做转换单位  
        -a  //显示隐藏文件 
        -d  //显示自身属性
        -t  //以时间排序 
        -r  //逆序排序
 (-为普通文件   d为目录文件  c字符设备文件  
  b块设备文件   l链接文件   s 套接字文件 )
   
[root@ ~]# ls -lwyh
总用量 0
-rw-r--r--. 1 root root  0 4月   6 17:07 1
-rw-r--r--. 1 root root  0 4月   6 17:07 2
drwxr-xr-x. 2 root root 24 4月   6 17:08 vv
drwxr-xr-x. 2 root root 24 4月   6 17:20 ww

压缩解压缩命令

•  gzip  文件名   
     [root@wyh ~]# gzip 1
     [root@wyh ~]# ls
      1.gz  2  vv  ww
   -d解压缩,解压缩后会删除原文件
     [root@wyh~]# gzip -d 1.gz 
     [root@wyh ~]# ls
      1  
      
•  bzip2  文件名   
     [root@wyh~]# bzip2 1
    -k解压后保留源文件  
     [root@wyh ~]# bzip2 -k 1
     [root@wyh ~]# ls
      1  1.bz2
   -d解压缩,解压缩后会删除原文件
     [root@wyh ~]# bzip2 -d 1.bz2 
     [root@wyh~]# ls
      1  
      
•	xz    文件名  
     [root@wyh~]# xz 1
     -k压缩后保留源文件  
     [root@wyh ~]# xz -k 1
     [root@wyh~]# ls
       1  1.xz 
    -d解压缩,解压缩后会删除原文件
     [root@wyh~]# xz -d 1.xz 
     [root@wyh~]# ls
       1 
一般不会针对多个文件进行打包,一般将多个文件放在一个目录里然后针对上级目录进行打包
           
•	zip (打包后的名称 ) 文件1 文件2文件3(打包的文件)   ,会保留原文件
    zip  opt.zip(解压后的名称) /opt/*(要解压的东西)
	zip的解压用  : unzip   文件名(解压后文件名还原)
	 [root@wyh~]# zip 11.zip 1
      adding: 1 (stored 0%)
     [root@wyh ~]# ls
     1  11.zip
     
•	compress  文件名     
    解压用uncompreess
    打包后格式为.Z

tar归档工具

•	-c创建归档文件
•	-f指定要操作的归档文件
•	-x还原归档
•	-v显示归档过程
•	-p归档时保留权限信息,只有管理员才有权限用此选项
•	-c指定还原归档或解压时的目标目录
•	-tf不解压,查看压缩包的内容
•	常用的组合项:
    • -zcf 归档并调用gzip进行压缩         
        tar -zcf(选项)lzy.gz(压缩后的名字)  anaconda-ks.cfg(压缩的文件)
     •-jcf归档并调用bzip2进行压缩   
          tar-jcf lzy.tar.bz2 13 23 23 23
     •- Jcf归档并调用xz进行压缩                
          tar-Jcf lzy.tar.xz  13 23 23 23
     •tar xf  解压的格式   
          tar xf lzy.tar.gz   
          tar xf lzy.tar.bz2
          tar xf lzy.tar.xz
•	exclude排除压缩
[root@localhost ~]# tar zcf 1.tar.gz ./{1..9} --exclude={1..3} 
[root@localhost ~]# ls
1  1.tar.gz  2  3  4  5  6  7  8  9  anaconda-ks.cfg  lzy  test  Tetris.sh
[root@localhost ~]# tar -tf 1.tar.gz 
./4
./5
./6
./7
./8
./9

文本排序命令sort

•  常用的OPTION:
	-n:以数值大小进行排序
	-r:逆序排序
	-t:字段分隔符
	-k:以哪个字段进行排序
	-u:去重,排序后相同的行只显示一次
	-f:排序时忽略字符大小写
	[root@cailunshi ~]# sort -n 1
     2
     12
     12
     31

文本去重命令 uniq

•  常用的OPTION:
	//-c:显示文件中行重复的次数
	[root@cailunshi ~]# uniq -c 1
	//-d:只显示重复的行
	[root@cailunshi ~]# uniq -d 1
	//-u:只显示未重复的行
	[root@cailunshi ~]# uniq -u 1

基础命令之 cut

•  常用的OPTION:
	//-d:指定字段分隔符,默认是空格
	//-f:指定要显示的字段
	//-f1,3:显示1和3字段
	//-f1-3:显示1到3字段
	格式 cut -d:-f 1,3 /etc/passwd
    (-d表示以':'为分隔符 -f表示显示出/etc/passwd中的第一和第三字段

高级命令之awk(截取命令)

•	[root@localhost ~]# awk -F: 'NR==2 { print $1 }' /etc/passwd
	-F指定 ':'为分隔符将打印/etc/passwd中的第一个字段 ‘NR==2’表示第二行 
	[root@localhost ~]# cat anaconda-ks.cfg |awwk -F ':' ' NR==2 {print$1}'


高级命令之 sed

•	sed  //默认输出  -n  //取消默认输出   -i  //替换(删除) sed -i '/hello/d' test 删除hello
•	sed -i 's/hello/lzy/g' test
•	sed -i修改命令 hello表示要修改的名称 ,lzy表示修改后的名称 ,s表示替换,g表示全局全部 test表示要修改的文件名
•	sed -i '2 s/hello/hi/2' tset(把test文件中第二行的第二个hello改为hi)
•   sed -n  '5,7p' tset   打印tset文件的第五行到第七行


alias 查看别名

•	alias xx=' cd /etc/sysconfig/network-scripts/ '自定义别名后  (输入xx后将进入网卡目录)
•	将定义的别名写入 .bashrc (/root) 这个文件里将会永久生效


文本过滤命令grep

•	grep -i 忽略大小写 
	    grep  -i   "d"   ykb  (过滤将ykb的文件中d的行过滤出来)
•	grpe -v 显示没有被正则表达式匹配到的内容
	    grep -v   "a"   ykb   ( 不显示ykb中含有a的所有行)
•	-o:只显示被正则表达式匹配到的内容
	    grep -o  "a"  ykb(只显示ykb中含有a的内容,只取出单个字符)
•	-E:使用扩展正则表达式
	    grep -E   "a|b"   ykb (显示出含有a和b的所有内容)
•	-q:静默模式,不输出任何信息
        grep -q   "a"   ykb   (静默模式  不输出任何信息)
•	-c: 统计次数
        grep -c   "YES"  vsftpd   (查看vsftpd这个文件中YES出现了几次)
•	-A#:此处的#必须是数字。被正则匹配到的内容以及其后面#行的内容都显示出来
•	-B#:此处的#必须是数字。被正则匹配到的内容以及其前面#行的内容都显示出来
•	-C#:此处的#必须是数字。被正则匹配到的内容及其前后各#行的内容都显示出来

echo 命令

•	echo  $?   判断上一条命令是否正确  (0为正确非0错误)
•	echo   “123456789” >>ykb   将内容123456789追加到ykb这个文件中
•	echo  $SHELL 可查看当前使用的是什么shell

echo支持颜色输出

[外链图片转存失败(img-CuhPKZkr-1563187375398)(assets/1560323448852.png)]

**解释:**echo -e 表示支持特殊字符, \e[1 和 \e[0m 是标准用法其中“\e[1”代表开启颜色输出“\e[0m“代表关闭颜色输出 , shicailun代表输出的字符,31m代表红色

30m=黑色,31m=红色,32m=绿色,33m=黄色,

34m=蓝色,35m=洋红,36m=青色,37m=白色

文件查找命令find

find 查找路径:默认为当前目录
查找标准:
•	-name filename:对文件名精确匹配,支持通配符
       find /opt/ -name a*  查找opt下以a开头的所有文件
•	-iname filename:文件名匹配时不区分大小写
       find / -iname abc 
•	-regexpattern:基于正则表达式进行文件名匹配
•	-user:查找某用户的所有文件
       find / -user zl (用户名zl)
•	-group:查找某组的所有文件
       find / -group 123
•	-uid:根据UID进行查找
       find / -uid 1005
•	-gid:根据GID进行查找
 	   find / -gid 1005
•	-nouser:查找没有拥有者的文件
	   find / -nouser 
•	-nogroup:查找没有属组的文件
	   find / -nogroup
•	-type:根据文件类型进行查找
	   find / -type f(查找/目录下的所有文件 f=文件 d=目录)
•	-size:根据文件大小进行查找。如1k、1M、+10k、+10M、-1k、-10M (+表示大于,-表示小于)
       find / -size -1k(查找/目录下小于1k的文件)
•	-mtime:根据修改时间查找
	   +5:表示查找5天以前修改的文件
	   -5:表示查找5天以内修改的文件
	   find / -mtime +2 (查找/目录下2天以前修改的文件)
•	-atime:根据访问时间查找
       find / -atime 2 (查找/目录下2天前访问的文件)
•	-ctime:根据改变时间查找
•	-permmode:根据权限精确查找
•	-perm–mode:文件权限能完全包含此mode时才符合条件
•	-perm/mode:9位权限中有任何一位权限匹配都视为符合查找条件
•	多条件组合使用:
•	-a
	find . -name abc -a -name Abc (并且)
•	-o
	find . -neme 123 -o -name 132  (或者)
•	-not
•	!
•	例如:
•	!A–a !B 与 !(A –o B) 相等
•	!A–o !B 与 !(A –a B) 相等
•	处理动作:默认动作是显示到屏幕上
•	-print:打印到屏幕上
•	-ls:类似ls–l的形式显示每一个文件的详细信息
•	-delete:删除查找到的文件
•	-fls /path/to/somefile:将查找到的所有文件的长格式信息保存至指定文件中
•	-okCOMMAND {} \;:对查找到的所有文件执行COMMAND,每次操作都需要用户确认
•	-execCOMMAND {} \;:对查找到的所有文件执行COMMAND,操作不需要确认
	     •find /opt/ -name 123 -exec rm -rf {} \;(将查找出来的/opt/123 执行删除命令 {}\为固定的)
•	xargs: 通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可
	  •  find . -name abc | xargs rm -rf (把前面查找出来的abc文件交给后面执行删除)
	  •  find . -name abc | xargs mv -t /opt (把前面查找出来的abc文件移动到/opt目录下)


正则表达式:

基础正则表达式:
•  正则为处理文本/字符串而定义的一套规则和方法
•  正则以单位处理一次处理一行
•  正则在运维工作中会经常在文件中找你想要的内容通过正则可以化繁    为简,提高我们的工作效率 
•  linux中最常用的三剑客(grep/egrep,sed,awk)都支持正则

^尖角号  ^word  匹配以Word开头的行
$       word$  匹配以Word结尾的行
^$      空行
\       转义字符,让有特殊含义的字符脱掉马甲
         现出原形,如 \! 只表示!号
*       重复前一个字符0到多次
.点     表示任意1个字符(但是不能匹配空行)
.*      所有
( )    后向引用,引用的的结果用\1调出
[abc]   匹配字符集合(一个框里面有很多条件)内的任意一个字符a或b或c; [a-z]匹配所有小写字母
[^abc]  匹配不包含^后的任意字符a或b或c,是对[abc]的取反,且与^的含义不同 


扩展正则表达式(grep -E或egrep):
+           //匹配前一个字符出现1次或1次以上
?          //匹配前一个字符出现0次或1次
|          //同时过滤多个字符
a{n,m}    //前面一个字符连续出现最少n次,最多m次
a{n,}     //前面一个字符连续出现最少n次
a{n}      //前面一个字符连续出现正好n次
a{,m}     //前面一个字符连续出现最多m次

元字符:
\b   单词边界   \bcool\b   匹配cool,不匹配coolant


特殊字符和通配符:
.    当前目录
..   上级目录
~    家目录
-     上一次目录

通配符:
*       所有
?      单个字符
[abc]   任意一个字符 
[!abc]  取反
'       所见即所得
"       解析变量
`       命令替换
$       引用变量,普通用户提示符,文件的结尾
#       注释,管理员的命令提示符
!      取反
&&      并且
||      或
|       管道
{}      序列
;      命令分隔符
\       转义字符
/       根,路径分隔符
&       将程序放到后台执行
>       重定向
>>      追加重定向 
<       输入重定向
<<      追加输入重定向
1>      标准输出
2>      错误输出
0<      标准输入


ln硬链接与软连接

通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。

符号链接(软链接) :

语法格式:ln [参数] [源文件或目录] [目标文件或目录]

  • 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
  • 符号链接可以跨文件系统 ,硬链接不可以。
  • 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
  • 符号链接可以对目录进行链接,硬链接不可以。
  • 符号链接不能删除源文件,可以删除目标文件(快捷方式)。

硬链接:

  • 硬链接以文件副本的形式存在,但不占用实际空间。
  • 硬链接不允许给目录创建硬链接。
  • 硬链接只有在同一个分区中才能创建。
  • 删除其中任何一个文件相互之间没有影响。
  • 多个文件指向同一个iNode编号。

常用的参数:

-b 为每个已存在的目标文件创建备份文件
-d 此选项允许“root”用户建立目录的硬链接
-f 强制创建链接,即使目标文件已经存在
-n 把指向目录的符号链接视为一个普通文件
-i 交互模式,若目标文件已经存在,则提示用户确认进行覆盖
-s 对源文件建立符号链接,而非硬链接
-v 详细信息模式,输出指令的详细执行过程

创建硬链接(inode相同说明这两个文件互为硬链接)

[root@localhost ~]# echo "helloword">file1

[root@localhost ~]# ll -i file1 33575026 -rw-r--r--. 2 root root 10 6月 10 16:04 file1

[root@localhost ~]# ln file1 /opt/file1-h //将file1这个文件链接到/opt/file-h这个文件

[root@localhost ~]# ll -i file1 /opt/file1-h //链接次数变为了2,iNode是相同的

33575026 -rw-r--r--. 2 root root 10 6月 10 16:04 file1

33575026 -rw-r--r--. 2 root root 10 6月 10 16:04 /opt/file1-h

使用ln命令的“-s”参数来创建目录的软链接

软链接没有链接数它的block记录的是源文件的绝对路径

[root@localhost ~]# ln -s /tmp/man.test.config  /opt/a
[root@localhost ~]# ll /opt/a
lrwxrwxrwx. 1 root root 20 5月  28 19:05 /opt/a -> /tmp/man.test.config

RPM 软件包管理

rpm包安装升级卸载:
对操作未安装的包时要使用包全名,操作已安装的包时只需使用包名
// 语法: rpm -ivh /mnt/PACKAGE/FILE ...
// 常用选项:
    -i: 安装
    -v: 显示详细信息
    -h: 显示安装进度条
    --test: 测试安装,但不真正执行安装过程
    --nodeps: 忽略依赖关系
    --replacepkgs: 重新安装,替换原有安装
    --oldpackage: 降级
    --force: 强行安装,可以实现重装或降级
    --nodigest: 不检查包的完整性
    --nosignature: 不检查包的来源合法性
    --noscripts: 不执行程序包脚本片断
        %pre:安装前脚本    --nopre
        %post:安装后脚本    --nopost
        %preun:卸载前脚本    --nopreun
        %postun:卸载后脚本    --nopostun
rpm包安装:
rpm -ivh 包全名   (-i 安装,-v显示详细信息, -h显示进度)
【安装时要加绝对路径在软件包所在目录下安装不需要指定绝对路径】
[root@localhost ~]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm 
错误:打开 vsftpd-3.0.2-22.el7.x86_64.rpm 失败: 没有那个文件或目录
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm 
警告:/mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:vsftpd-3.0.2-22.el7              ################################# [100%]


rpm  软件包升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE  //如果装有老版本的,则升级;否则,则安装
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE  //如果装有老版本的,则升级;否则,退出
    --oldpackage:降级
[root@localhost ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

rpm包卸载:
rpm -e  包名   (-e  卸载)
rpm -e  vsftpd --nodeps  //强制卸载

rpm包查询:
rpm -q PACKAGE_NAME                 //查询指定的包是否已安装
rpm -qa                             //查询已经安装的所有包
rpm -qi PACKAGE_NAME                //查询指定包的说明信息
rpm -ql PACKAGE_NAME                //查询指定软件包安装后生成的文件列表
rpm -qf /path/to/somefile           //查询指定的文件是由哪个rpm包安装生成的
rpm -qc PACKAGE_NAME                //查询指定包安装的配置文件
rpm -qd PACKAGE_NAME                //查询指定包安装的帮助文件
rpm -q --scripts PACKAGE_NAME       //查询指定包中包含的脚本
rpm -q --whatprovides CAPABILITY    //查询指定的CAPABILITY(能力)由哪个包所提供
    如:rpm -q --whatprovides /bin/cat
rpm -q --whatrequires CAPABILITY    //查询指定的CAPABILITY被哪个包所依赖
rpm -q --changelog COMMAND          //查询COMMAND的制作日志
rpm -q --scripts PACKAGE_NAME       //查询指定软件包包含的所有脚本文件
rpm -qR PACKAGE_NAME                //查询指定的软件包所依赖的CAPABILITY
rpm -q --provides PACKAGE_NAME      //列出指定软件包所提供的CAPABILITY

rpm -qpi /PATH/TO/PACKAGE_FILE      //查询指定未安装包的说明信息
rpm -qpl /PATH/TO/PACKAGE_FILE      //查询未安装的软件包会产生哪些文件

//查询vsftpd这个rpm包是否安装
[root@localhost ~]# rpm -q vsftpd

 yum provides */bin/vsftpd

//模糊查找系统已安装的rpm包
[root@localhost ~]# rpm -qa |grep ftp

//查询vsftpd软件包的相关信息
[root@localhost ~]# rpm -qi vsftpd

//查询rpm包所安装的文件
[root@localhost ~]# rpm -ql vsftpd

//查询rpm包相关的配置文件
[root@localhost ~]# rpm -qc vsftpd

//查询配置文件或命令来自于哪个rpm包
[root@localhost ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[root@localhost ~]# rpm -qf /usr/sbin/vsftpd


//查询未安装的软件包会产生哪些文件
[root@localhost ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

//查询未安装的软件包会产生哪些文件
[root@localhost ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

rpm包效验
// 如果执行以下命令无内容输出说明此包未被修改过
[root@localhost ~]# rpm -V vsftpd
S.5....T.  c /etc/pam.d/vsftpd
.......T.  c /etc/vsftpd/ftpusers
S.5....T.  c /etc/vsftpd/vsftpd.conf
.M.......    /var/ftp/pub

S   //文件的容量大小是否被改变
M   //文件的类型或者文件的属性是否被修改
5   //MD5这一种指纹加密的内容已经不同
D   //装置的主/次代码已经改变
L   //路径已经被改变
U   //文件的所属主已被修改
G   //文件的所属组已被修改
T   //文件的创建时间已被改变

RPM重建数据库

数据库信息在/var/lib/rpm目录中

rpm --rebuilddb     //重建数据库,一定会重新建立
rpm --initdb        //初始化数据库,没有才建立,有就不用建立

yum安装
yum -y install 包名      安装
yum -y update  包名      升级
(后面一定要跟包名否则升级所有软件包包括linux内核,会导致服务器崩溃要在本机进行配置内核才能正常使用)
yum -y remove 包名   卸载  (卸载命令少用,它会把这个包所依赖的文件包卸载掉,而这些依赖文件和包可能不止被这个软件包依赖,还被其他一些重要文件依赖)

rpm包中的文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径  
  rpm2cpio(将rpm包转换成cpio格式的命令)
  cpio是一个标准工具,用于创建软件档案文件和从档案文件中提取文件
cpio 选项< 
  -i 还原
  -d 还原时自动新建目录
  -v 显示还原过程

yum管理

yum服务器端工作原理: 所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者http的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号、conf文件、binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张“清单”,这张“清单”就是描述每个rpm包的spec文件中信息。、

yum的配置文件:

  • 配置文件有哪些:

    • /etc/yum.conf 作用:为所有仓库提供公共配置
    • /etc/yum.repos.d/*.repo 作用:为仓库的指向提供配置
  • yum的repo配置文件中可用的变量:

    • $releaseversion:当前OS的发行版的主版本号

    • $arch:平台类型

    • $basearch:基础平台

    为yum定义repo文件:

[Repo_Name]:仓库名称
name:描述信息
baseurl:仓库的具体路径,接受以下三种类型
    ftp://
    http://
    file:///
enabled:可选值{1|0},1为启用此仓库,0为禁用此仓库
gpgcheck:可选值{1|0},1为检查软件包来源合法性,0为不检查来源
    如果gpgcheck设为1,则必须用gpgkey定义密钥文件的具体路径
    gpgkey=/PATH/TO/KEY

vim /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever   //缓存目录
keepcache=0     //缓存软件包, 1启动 0 关闭
debuglevel=2    //调试级别
logfile=/var/log/yum.log    //日志记录位置
exactarch=1     //检查平台是否兼容
obsoletes=1     //检查包是否废弃
gpgcheck=1      //检查来源是否合法,需要有制作者的公钥信息
plugins=1       //是否启用插件
tolerant={1|0}  //容错功能,1为开启,0为关闭,当设为0时,如果用yum安装多个软件包且其中某个软件包已经安                     装过就会报错;当设为1时,当要安装的软件已经安装时自动忽略
installonly_limit=5
bugtracker_url
# metadata_expire=90m //每小时手动检查元数据
# in /etc/yum.repos.d   //包含repos.d目录 

yum本地仓库管理:

  • 挂载光盘
  • 复制光盘内容到yum服务器
[root@localhost ~]# mkdir /opt/myrepo
[root@localhost ~]# cp -r /mnt/* /opt/myrepo/
[root@localhost ~]# ls /opt/myrepo/
addons  EULA              GPL     isolinux  media.repo  repodata                 RPM-GPG-KEY-redhat-release
EFI     extra_files.json  images  LiveOS    Packages    RPM-GPG-KEY-redhat-beta  TRANS.TBL

  • 配置repo文件
[root@localhost ~]# ls /etc/yum.repos.d/
redhat.repo
[root@localhost ~]# vim /etc/yum.repos.d/myrepo.repo
[root@localhost ~]# cat /etc/yum.repos.d/myrepo.repo
[myrepo]
name=myrepo
baseurl=file:///opt/myrepo
gpgcheck=0
enabled=1
[root@localhost ~]#

  • 清空yum本地缓存
[root@localhost ~]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Cleaning repos: myrepo
Cleaning up everything

  • 检验yum本地仓库
[root@localhost ~]# yum list all
......
plymouth-core-libs.i686                                                      0.8.9-0.28.20140113.el7                                     myrepo
plymouth-graphics-libs.i686                                                  0.8.9-0.28.20140113.el7                                     myrepo
policycoreutils-devel.i686                                                   2.5-17.1.el7                                                myrepo
policycoreutils-devel.x86_64                                                 2.5-17.1.el7                                                myrepo
policycoreutils-gui.x86_64                                                   2.5-17.1.el7                                                myrepo
policycoreutils-newrole.x86_64                                               2.5-17.1.el7                                                myrepo
policycoreutils-sandbox.x86_64                                               2.5-17.1.el7                                                myrepo
........

  • 使用yum-y进行下载

yum网络仓库

  • 官方网络yum仓库(国外)
  • 阿里云yum仓库
  • 163yum仓库
  • xx大学yum仓库
  • epel源
// Base/Extras/Updates: 默认国外官方源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

//国外epel源
[root@localhost ~]# yum -y install epel-release

//阿里云epel源
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo

软件官方仓库

// 源查找方式基本一致,zabbix,mysql,saltstack,openstack等等,上官网找
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1

yum管理软件

常用语法:

yum [options] [command] [package ...]

常用的命令:

list            //列表
    all         //默认项
    available   //列出仓库中有的,但尚未安装的所有可用的包
    installed   //列出已经安装的包
    updates     //可用的升级
    
clean           //清理缓存
    packages
    headers
    metadata
    dbcache
    all
    
repolist        //显示repo列表及其简要信息
    all         //所有的
    enabled     //启用状态
    disabled    //禁用状态
    
install         //安装
    yum install packages [...]
    
update          //升级
    yum update packages [...]
update_to       //升级为指定版本

downgrade package1 [package2 ...]   //降级

remove|erase    //卸载

info    //显示rpm -qi package的结果
    yum info packages
    
provides|whatprovides   //查看指定的文件或特性是由哪个包安装生成的

search string1 [string2 ...]    //以指定的关键字搜索程序包名及summary信息

deplist package [package2 ...]  //显示指定包的依赖关系

history     //查看yum的历史事务信息

localinstall    //安装本地rpm包,自动解决依赖关系

grouplist       //列出可用的组

groupinstall "group name"   //安装一组软件
        
createrepo命令    //创建yum仓库的元数据信息
[root@localhost ~]# yum install createrepo -y
[root@localhost ~]# createrepo [options] 

具体实例:

搜索软件包
//列出软件仓库中可用的软件
[root@localhost ~]# yum list all

//进行模糊查找
[root@localhost ~]# yum list|grep ftp

//列出软件包详情
[root@localhost ~]# yum info ftp

安装软件包
//安装软件只需要给出软件名称
[root@localhost ~]# yum install traceroute

//安装过程中分析依赖关系后, 直接安装, 无需交互
[root@localhost ~]# yum -y install php

//安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖(非来自.repo定义的软件仓库)
[root@localhost ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm

//安装网络上rpm包
[root@localhost ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

重装软件包
//检查软件是否存在
[root@localhost ~]# rpm -q vsftpd
vsftpd-2.2.2-24.el6.x86_64

//检查vsftpd软件配置文件
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

//不小心删除vsftpd配置文件
[root@localhost ~]# rm -f /etc/vsftpd/vsftpd.conf

//重新安装软件
[root@localhost ~]# yum reinstall vsftpd

//再次检查
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

更新软件包
//对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@localhost ~]# yum check-update

//更新软件
[root@localhost ~]#  yum update acl -y

删除软件包
//先安装一个samba软件
[root@localhost ~]# yum -y install samba

//删除该软件包,不会删除依赖, 但是我们尽可能不要使用删除软件操作
[root@localhost ~]# yum -y erase samba
[root@localhost ~]# yum -y remove samba

与仓库相关的命令
//列出yum源可用的软件仓库
[root@localhost ~]# yum repolist

//列出全部yum源可用和禁用的仓库
[root@localhost ~]# yum repolist all

//查看这个文件或命令属于哪个包
[root@localhost ~]# yum provides /etc/my.cnf
[root@localhost ~]# yum provides cd
[root@localhost ~]# yum provides *bin/pstree

与缓存相关的命令
//缓存yum源软件仓库, xml元数据文件
[root@localhost ~]# yum makecache

//缓存软件包, 修改yum全局配置文件
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 //启动缓存


//查看缓存的xml文件
[root@localhost ~]# ls /var/cache/yum/x86_64/7/base/

//查看缓存软件包路径
[root@localhost ~]# ls /var/cache/yum/x86_64/7/


#另一种缓存rpm包方式         //需要使用网络仓库不能使用本地仓库

//1.安装插件支持只下载软件包不安装
[root@localhost ~]# yum -y install yum-plugin-downloadonly
//2.将软件下载至指定目录
[root@localhost ~]# yum -y install httpd --downloadonly --downloaddir=/tmp httpd


//清除所有yum缓存
[root@localhost ~]# yum clean all

//只清除缓存的软件包
[root@localhost ~]# yum clean packages

与包组相关的命令
//列出已经安装和所有可使用的软件组
[root@localhost ~]# yum groups list

//安装一整个组的软件  (时间太长不推荐)
[root@localhost ~]# yum groups install Development tools Compatibility libraries Base Debugging Tools
安装整个包租的软件可以使用:
[root@localhost ~]# yum groups mark install "Development Tools"  标记此包组已经安装了
[root@localhost ~]# yum groups mark remove "Development Tools"    标记为卸载


//yum删除包组
[root@localhost ~]# yum groups remove  -y Base   

与历史记录相关的命令
//查看历史执行yum命令
[root@localhost ~]# yum history

//查询历史执行yum命令ID详细信息
[root@localhost ~]# yum history info N

//撤销历史执行过的yum命令
[root@localhost ~]# yum history undo N

YUM签名检查机制

  • rpm软件提供组织redhat在构建rpm包时, 使用其私钥private key对 rpm进行签名
  • 客户端在使用rpm为了验证其合法性, 可以使用redhat提供的公钥public key进行签名检查

方式1:指定公钥位置

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

方式2:提前导入公钥

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1

方式3:不进行签名验证

//不检查软件包的签名
[root@localhost ~]# yum install httpd --nogpgcheck

源码包的安装:

编译需要编译环境,开发环境,开发库,开发工具。
常用的编译环境有c、c++、perl、java、python5种
c环境的编译器:gcc(GNU C Complier)
c++环境的编译器:g++
make:c、c++的统一项目管理工具,编译时有可能调用gcc也有可能调用g++。使用makefile文件定义make按何种次序去编译源程序文件中的源程序

源码安装三部曲(常见):
第一步: ./configure(定制组件)

1.指定安装路径,例如 --prefix=/opt/nginx-1.12

2.启用或禁用某项功能, 例如 --enable-ssl

3.和其它软件关联,例如–with-pcre

4.检查安装环境,例如是否有编译器 gcc,是否满足软件的依赖需求

5.检测通过后生成Makefile文件

第二步: make

1.执行make命令进行编译, 可以使用-j指定CPU核心数进行编译

2.按Makefile文件进行编译, 编译成可执行二进制文件

3.生成各类模块和主程序

第三步: make install

1.按Makefile定义好的路径拷贝至安装目录中

上面介绍的源码三部曲不能百分百通用于所有源码包, 也就是说源码包的安装并非存在标准安装步骤,但是大部分源码安装都是类似的步骤

建议:
拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名

1、[root@localhost ~]# yum groups mark install "Development Tools"    下载开发工具
2、[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz   下载nginx包
3、[root@localhost ~]# yum -y install gcc gcc-c++    下载编译工具
4、[root@localhost ~]# tar xf nginx-1.14.2.tar.gz      解压nginx包
5、[root@localhost ~]# cd nginx-1.14.2      进入nginx-1.14.2这个目录
6、[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx (指定编译后的路径,一般源码包都安装在/opt/下,   执行会提示缺少pcre的库)
    //   使用 ./configure --help 命令查看可以使用的选项   
7、[root@localhost nginx-1.14.2]# yum -y install pcre-devel    下载依赖库文件文件
8、[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx  (提示缺少zlib的库)
9、[root@localhost nginx-1.14.2]# yum -y install zlib-devel    下载zlb的库文件
    ./configure --prefix=/usr/local/nginx 完成后会生成一个Makefile文件objs/Makefile
10、[root@localhost nginx-1.14.2]#    make
11、[root@localhost nginx-1.14.2]#    make install
12、建立软链接
[root@localhost nginx-1.14.2]# ln -s /usr/local/nginx  /usr/local/nginx

 以下就是编译完成好的程序包:
[root@localhost nginx-1.14.2]# ll /usr/local/nginx/sbin/
总用量 3660
-rwxr-xr-x. 1 root root 3746736 5月  27 18:47 nginx

启动nginx服务:   (可以在百度上查看网站,需要关闭防火墙和seLinux)
[root@localhost nginx-1.14.2]# /usr/local/nginx/sbin/nginx 
[root@localhost nginx-1.14.2]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128             *:80                          *:*  

设置环境变量: (如果安装有2个或以上nginx源码包就不要设置环境变量了,还是使用绝对路径的方式进行管理)
[root@localhost]# vim /etc/profile.d/nginx.sh   内容为:
(export   PATH=$PATH:/usr/local/nginx/sbin/)    (或者在vim ~/.bash_profile 中加入)
[root@localhost ~]# . /etc/profile.d/nginx.sh    (读一下这个文件重载)
[root@localhost ~]# echo "$PASH"      (然后可以看到/usr/local/nginx/sbin已经加进来了)

编译安装注意事项:
  • 如果安装时不是使用的默认路径,则必须要修改PATH环境变量,以能够识别此程序的二进制文件路径;

    • 修改/etc/profile文件或在/etc/profile.d/目录建立一个以.sh为后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
  • 默认情况下,系统搜索库文件的路径只有/lib,/usr/lib ,/lib64,/usr/lib64

    增添额外库文件搜索路径方法:

    • 在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令
    • ldconfig:通知系统重新搜索库文件

如果安装的程序中有lib库,比如说安装的MySQL,目录里面有lib目录则需要执行以下操作:

1、ln -s /usr/local/mysql/lib64 /usr/lib64/mysql //创建软链接到/ust/lib64/mysql

2、vim /etc/ld.so.conf.d/mysql.conf 内容为: /usr/lib64/mysql

3、ldconfig:通知系统重新搜索库文件

/etc/ld.so.conf和/etc/ld.so.conf.d/*.conf    //库文件的配置文件
/etc/ld.so.cache            //缓存文件
-v      //显示重新搜索库的过程
-p      //打印出系统启动时自动加载并缓存到内存中的可用库文件名及文件路径映射关系

  • 头文件:输出给系统

    • 默认:系统在/usr/include中找头文件,若要增添头文件搜索路径,使用链接进行

      如果装的程序里面有include目录则需要将其链接到/usr/include/这个目录下

      ln /usr/local/apache/include/ /usr/include/apache/

  • man文件路径:安装在–prefix指定的目录下的man目录

    • 默认:系统在/usr/share/man中找man文件。此时因为编译安装的时候不是安装到默认路径下,如果要查找man文件则可以使用以下两种方法:

      • man -M /usr/local/apache/man/man1 httpd

      • 在/etc/man_db.conf文件中添加一条MANPATH

        [外链图片转存失败(img-4Ibe0GsQ-1563187375404)(/assets/1559049237978.png)]

源码编译报错信息处理
checking for C compiler ... not found ./configure: error: C compiler cc is not found 

//解决方案
[root@localhost ~]# yum -y install gcc gcc-c++ make


./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.

//解决方案
[root@localhost ~]# yum install -y pcre-devel


./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-
http_gzip_module option, or install the zlib library into the
system, or build the zlib library statically from the source with
nginx by using --with-zlib= option. 

//解决方案:
[root@localhost ~]# yum -y install zlib-devel


./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL 
library into the system, or build the OpenSSL library statically
from the source with nginx by using --with-openssl= option.

//解决方案
[root@localhost ~]# yum -y install openssl-devel

编译安装Apache

1.准备好安装包:

[root@localhost ~]# ls
anaconda-ks.cfg    apr-util-1.6.1.tar.bz2 
apr-1.6.3.tar.bz2  httpd-2.4.34.tar.bz2

2.解压这三个tar包

[root@localhost ~]# tar xf apr-1.6.3.tar.bz2 
[root@localhost ~]# tar xf apr-util-1.6.1.tar.bz2 
[root@localhost ~]# tar xf httpd-2.4.34.tar.bz2 
[root@localhost ~]# ls
apr-util-1.6.1          httpd-2.4.34.tar.bz2
apr-1.6.3             apr-util-1.6.1.tar.bz2  
httpd-2.4.34               apr-1.6.3.tar.bz2  

3.进入apr-1.6.3 cd apr-1.6.3

vim configure

查找cfgfile /cfgfile 将这一行删除$RM "$cfgfile"

4.安装apr [root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr

make && make install

5.进入apr-util-1.6.1 [root@localhost apr-1.6.3]# cd /root/apr-util-1.6.1

6.安装apr-util [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

			 `make  &&  make  install`

7.安装完车后发现报错 “缺少这个文件 expat”

[外链图片转存失败(img-XHTe3QvU-1563187375405)(assets/1560862729102.png)]

8.安装expat yum -y install expat-devel

9.重新安装apr-util [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

			 `make  &&  make  install`

10.安装httpd

[root@localhost apr-util-1.6.1]# cd /root/httpd-2.4.34

[root@localhost httpd-2.4.34]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/(要指定apr和apr-util的位置在哪不然会报错)

执行之后提示缺少prce的库文件:

[外链图片转存失败(img-fSqJknux-1563187375407)(assets/1560863689951.png)]

11.安装pcre yum -y install pcre-devel

12.再一次安装httpd

[root@localhost httpd-2.4.34]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/

         `make  &&  make install`

13.启动httpd

[root@localhost httpd-2.4.34]# systemctl stop firewalld       //关闭防火墙
[root@localhost httpd-2.4.34]# /usr/local/apache/bin/httpd    //只能绝对路径启动
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd (pid 66224) already running
[root@localhost httpd-2.4.34]# ss -antl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN     0      128                              *:22                                           *:*                  
LISTEN     0      100                      127.0.0.1:25                                           *:*                  
LISTEN     0      128                             :::80                                          :::*                  
LISTEN     0      128                             :::22                                          :::*                  
LISTEN     0      100                            ::1:25                                         

14.设置环境变量

1.[root@localhost httpd-2.4.34]# vim /etc/profile.d/httpd.sh
2.输入内容:  export  PATH=$PATH:/usr/local/apache/
3.[root@localhost httpd-2.4.34]# . /etc/profile.d/httpd.sh  //重读配置文件
4.[root@localhost httpd-2.4.34]# echo "$PATH"   //可以看到已经加入到了PATH环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/

设置环境变量后启动关闭更加简便可以不使用绝对路径(绝对路径/usr/sbin/httpd -k start)

[外链图片转存失败(img-JuRZdNjQ-1563187375410)(assets/1560866853361.png)]

网络基础管理

传统网卡命名机制

传统命名:
以太网eth[0,1,2,…]
wlan[0,1,2,…]

redhat7网卡命名机制

systemd对网络设备的命名方式:

  1. 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测,则根据此索引进行命名,例如eno1
  2. 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
  3. 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
  4. 如果用户显式启动,也可根据MAC地址进行命名,例如enx2387a1dc56
  5. 上述均不可用时,则使用传统命名机制

上述命名机制中,有的需要biosdevname程序的参与。所以必须安装biosdevname程序且启用它。

网络接口名称组成格式

基于固件、设备结构、设备类型

  • 由两个字母开头标示固件
    • 以太网网卡以 en 开头
    • 无线网卡以 wl 开头
  • 设备结构
    • o:主板上集成的设备的设备索引号
    • s:扩展槽的索引号
    • x:基于MAC地址的命名
    • ps:基于物理位置拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号

网卡设备的命名过程

  1. udev,辅助工具程序/lib/udev/rename_device会根据/usr/lib/udev/rules.d/60-net.rules中的信息设定网卡名称
  2. biosdevname会根据/usr/lib/udev/rules.d/71-biosdevname.rules中的信息设定网卡名称
  3. 通过udev检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description中的变量信息设定网卡名称

回归传统命名步骤

//修改网卡配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0   //此处要把ens33改成eht0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0 //此处要把ens33改成eht0
ONBOOT=yes

//编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0 

[root@localhost ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

//为grub2生成其配置文件
[root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fd0bcf5782d24ba5b903b175c35f328e
Found initrd image: /boot/initramfs-0-rescue-fd0bcf5782d24ba5b903b175c35f328e.img
done

//重启系统
[root@localhost ~]# reboot

网络管理常用命令

ifconfig

//查看当前处于活动状态的所有网络接口
[root@localhost ~]# ifconfig
eth0: flags=4163  mtu 1500
        inet 172.16.12.128  netmask 255.255.255.0  broadcast 172.16.12.255
        inet6 fe80::20c:29ff:fe73:110  prefixlen 64  scopeid 0x20
        ether 00:0c:29:73:01:10  txqueuelen 1000  (Ethernet)
        RX packets 5121  bytes 424364 (414.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3813  bytes 3257482 (3.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 4  bytes 344 (344.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 344 (344.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  
//仅查看eth0网卡状态      
[root@localhost ~]# ifconfig eth0
eth0: flags=4163  mtu 1500
        inet 172.16.12.128  netmask 255.255.255.0  broadcast 172.16.12.255
        inet6 fe80::20c:29ff:fe73:110  prefixlen 64  scopeid 0x20
        ether 00:0c:29:73:01:10  txqueuelen 1000  (Ethernet)
        RX packets 5148  bytes 426572 (416.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3828  bytes 3259946 (3.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
//查看所有网卡状态信息, 包括禁用和启用
[root@localhost ~]# ifconfig -a
eth0: flags=4163  mtu 1500
        inet 172.16.12.128  netmask 255.255.255.0  broadcast 172.16.12.255
        inet6 fe80::20c:29ff:fe73:110  prefixlen 64  scopeid 0x20
        ether 00:0c:29:73:01:10  txqueuelen 1000  (Ethernet)
        RX packets 5177  bytes 428948 (418.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3844  bytes 3262104 (3.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 4  bytes 344 (344.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 344 (344.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
        
//网卡配置信息含义如下:

UP: 网卡处于活动状态
BROADCAST: 支持广播
RUNNING: 网线已接入
MULTICAST: 支持组播
MTU: 最大传输单元(字节),即此接口一次所能传输的最大封包

inet: 显示IPv4地址行
inet6: 显示IPv6地址行
link/enther: 指设备硬件(MAC)地址
txqueuelen: 传输缓存区长度大小
RX packets: 接收的数据包
TX packets: 发送的数据包
errors: 总的收包的错误数量
dropped: 由于各种原因, 导致拷贝在内存过程中被丢弃
collisions: 网络信号冲突情况, 值不为0则可能存在网络故障

ip

//语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
    link:网络接口属性
    addr:协议地址
    route:路由 

//查看网络接口所有地址  
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    
//显示报文统计信息
[root@localhost ~]# ip -s link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    0          0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    0          0        0       0       0       0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    23826      255      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    21275      157      0       0       0       0 
    
//启用或禁用网络接口ip link set DEV {up|down}
[root@localhost ~]# ip link set lo down
[root@localhost ~]# ip link set lo up

//ip addr add ADDRESS dev DEV:添加IP地址
[root@localhost ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state
UP qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.128/24 brd 172.16.12.255 scope global dynamic eth0
       valid_lft 1683sec preferred_lft 1683sec
    inet6 fe80::20c:29ff:fe73:110/64 scope link
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr add 192.168.1.1/24 dev eth0
[root@localhost ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.128/24 brd 172.16.12.255 scope global dynamic eth0
       valid_lft 1657sec preferred_lft 1657sec
    inet 192.168.1.1/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe73:110/64 scope link
       valid_lft forever preferred_lft forever

//ip addr del ADDRESS dev DEV:删除IP地址
[root@localhost ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state
UP qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.128/24 brd 172.16.12.255 scope global dynamic eth0
       valid_lft 1603sec preferred_lft 1603sec
    inet 192.168.1.1/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe73:110/64 scope link
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr del 192.168.1.1/24 dev eth0
[root@localhost ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.128/24 brd 172.16.12.255 scope global dynamic eth0
       valid_lft 1580sec preferred_lft 1580sec
    inet6 fe80::20c:29ff:fe73:110/64 scope link
       valid_lft forever preferred_lft forever

//ip addr show DEV:查看网络接口的地址
[root@localhost ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:73:01:10 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.128/24 brd 172.16.12.255 scope global dynamic eth0
       valid_lft 1580sec preferred_lft 1580sec
    inet6 fe80::20c:29ff:fe73:110/64 scope link
       valid_lft forever preferred_lft forever

//ip route:routing table management 路由管理
//添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
    TARGET:
        主机路由:IP
        网络路由:NETWORK/MASK 
        
//删除路由:ip route del TARGET
    TARGET:
        主机路由:IP
        网络路由:NETWORK/MASK
                        
//查看路由:ip route show

//刷新路由表:ip route flush
    [dev IFACE]
    [via PREFIX]

route

Linux主机之间是使用IP进行通信, 假设A主机和B主机同在一个网段内且网卡都处于激活状态, 则A具备和B直接通信的能力, 但如果A主机和B主机处于两个不同的网段, 则A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施, 每一个网段都应该至少有一个网关

//查看当前路由表
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
172.16.12.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

//以数字方式显示各主机或端口等相关信息
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.12.2     0.0.0.0         UG    100    0        0 ens33
172.16.12.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

//增加路由
//语法:route add [-net|-host] target [netmask Nm] [gw Gw]  [[dev] If]

//增加网段路由
[root@localhost ~]# route add -net 172.16.12.0/24 gw 172.16.12.2 dev eth1
[root@localhost ~]# route add -net 0.0.0.0/0 gw 172.16.12.2 dev eth1

//增加主机路由
[root@localhost ~]# route add -host 172.16.12.128 gw 172.16.12.2


//删除路由
[root@localhost ~]# route del -net 172.16.12.0/24
[root@localhost ~]# route del -net 0.0.0.0/0 gw 172.16.12.2

hostname与hostnamectl

生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 比如:

公有云: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13
wh-med-pay-mysql-master01-192.168.56.11
wh-med-pay-mysql-slave01-192.168.56.12


//hostname查看主机名
[root@localhost ~]# hostname
localhost.localdomain

//hostname临时修改主机名
[root@localhost ~]# hostname wangqing
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
//注意:修改主机名后需要重新登录用户才会显示效果


//rhel7系统建议使用hostnamectl修改和查看主机名
//设定永久名称
[root@localhost ~]# hostnamectl set-hostname seancheng
[root@localhost ~]# cat /etc/hostname
seancheng

//查看主机信息
[root@localhost ~]# hostnamectl
   Static hostname: seancheng
         Icon name: computer-vm
           Chassis: vm
        Machine ID: fd0bcf5782d24ba5b903b175c35f328e
           Boot ID: a060e3a2882f4d2c92884eee9db702bc
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

注意:
在Linux中以命令方式修改网络配置只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。

网络相关配置文件

网络配置文件

//网络配置文件:/etc/sysconfig/network
    NETWORKING={yes|no}:设定整个系统是否启用网络功能,若设为no,则不论网卡如何设置都不能使用网络功能。
    HOSTNAME:设置主机名

网络接口配置文件

网络接口即网卡,其配置文件的路径是/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.12.130
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
DNS1=172.16.12.2

//网卡配置说明
//参数                    说明
BOOTPROTO=none          //引导协议,可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以
NM_CONTROLLED           //NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本
    //可选值有{ yes | no }
    //此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”
TYPE                    //接口类型。常见的接口类型有:Ethernet,Bridge
UUID                    //设备的惟一标识
HWADDR                  //硬件地址,要与硬件中的地址保持一致,可省
IPADDR=172.16.12.130    //固定IP地址
PREFIX=24               //子网掩码
NETMASK=255.255.255.0   //子网掩码
GATEWAY=172.16.12.2     //默认网关
DNS1=172.16.12.2        //第一个DNS服务器指向
DNS2                    //第二个DNS服务器指向
DNS3                    //第三个DNS服务器指向
DEVICE=eth1             //关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致  
NAME="eth1"             //连接名称
ONBOOT=yes              //在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
DEFROUTE=yes            //将接口设定为默认路由[yes|no]
USERCTL={yes|no}        //是否允许普通用户控制此接口的启用与禁用
PEERDNS={yes|no}        //是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中

路由配置文件

路由配置文件的路径是/etc/sysconfig/network-scripts/route-INTERFACE_NAME

//添加格式一:DEST via NEXTHOP
[root@localhost ~]# vi /etc/sysconfig/network-scripts/route-ens33
172.16.12.0/24 via 172.16.12.2
                
//添加格式二:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/route-ens33
ADDRESS0=172.16.12.0
NETMASK0=255.255.255.0
GATEWAY0=172.16.12.2

DNS配置文件

DNS配置文件的路径是/etc/resolv.conf

[root@localhost ~]# vi /etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
nameserver DNS_IP_3

NetworkManager管理网络

RHEL/CentOS7`系统默认使用`NetworkManager`来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
`NetworkManager`提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在`/etc/sysconfig/network-scripts`目录下, 工具有 `nmcli, nmtui, nm-connect-editor

device物理设备, 例如 ens33,enp2s0,virbr0,team0
connection连接设置, 具体网络配置方案

1.不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了

使用nmcli命令查看设备以及连接情况

//查看设备状态
[root@localhost ~]# nmcli device
DEVICE  TYPE      STATE      CONNECTION
ens33   ethernet  connected  ens33
lo      loopback  unmanaged  --

//查看指定设备的详细状态
[root@localhost ~]# nmcli device show ens33
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:73:01:10
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ens33
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         172.16.12.128/24
IP4.GATEWAY:                            172.16.12.2
IP4.DNS[1]:                             172.16.12.2
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fe80::20c:29ff:fe73:110/64
IP6.GATEWAY:                            --


//查看连接状态
[root@localhost ~]# nmcli connection
NAME   UUID                                  TYPE            DEVICE
ens33  03be31f5-a3c1-4f8d-88b3-aea6e85c869f  802-3-ethernet  ens33 

//查看所有活动的连接
NAME   UUID                                  TYPE            DEVICE
ens33  03be31f5-a3c1-4f8d-88b3-aea6e85c869f  802-3-ethernet  ens33

//查看指定设备连接的详细情况
[root@localhost ~]# nmcli connection show ens33
connection.id:                          ens33
connection.uuid:                        03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id:                   --
connection.interface-name:              ens33
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.timestamp:                   1530455962
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
......

使用原生network管理网络

CentOS/RHEL的网络配置文件默认目录为/etc/sysconfig/network-scripts
默认第一块物理网卡配置文件为ifcfg-eth0, 如果有第二块物理网卡, 配置文件则为ifcfg-eth1以此类推。 注意: 如果新增物理网卡没有配置文件,可选择复制系统默认的进行修改。

//设置NetworkManger开机不启动, 同时停止NetworkManger服务
[root@localhost ~]# systemctl disable NetworkManager
[root@localhost ~]# systemctl stop NetworkManager

//添加一块物理网卡, 然后新增网络连接配置文件
//复制配置eth0配置文件为eth1
[root@localhost ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}

//编辑网卡配置文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=172.16.12.130
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
DNS1=172.16.12.2

//重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network

你可能感兴趣的:(Linux)