Linux基础_02

8、软件包管理

8.1、RPM

8.1.1、RPM概述

RPM(RedHat Package Manager),RedHat软件包管理工具,类似Windows里面的setup.exe,它是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但概念是通用的

RPM包的名称格式

Apache-1.3.23-11.i386.rpm

  • “Apache”软件名称
  • “-1.3.23-11"软件的版本号,主版本和此版本
  • “i386”是软件所运行的硬件平台,Intel32位处理器的统称
  • “rpm”文件扩展名,代表RPM包

8.1.2、RPM查询命令

1、基本语法

  • 查询所安装的所有rpm软件包

    rpm -qa

  • 查询某个软件包的详细信息

    rpm -qi 软件包名

2、经验技巧

由于软件包比较多,一般都会采取过滤,rpm -qa | grep 软件包名称

3、实例

  • 查看火狐Firefox的安装情况

    rpm -qa | grep firefox

  • 查看火狐Firefox的详细安装情况

    rpm -qi firefox

在这里插入图片描述

8.1.3、RPM卸载命令

1、基本语法

rpm -e 软件包名

rpm -e --nodeps 软件名

2、选项说明

选项说明
-e卸载软件包
–nodeps卸载软件时,不检查依赖,这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了

3、实例操作

  • 卸载火狐Firefox

    rpm -e firefox

8.1.4、RPM安装命令

1、基本语法

rpm -ivh rpm全包名

注意:这里是软包名哦,全包名在我们的镜像文件的挂载点下的Packages里面

2、选项说明

选项说明
-iinstall,安装
-v–verbose,显示详细信息
-h-hash,进度条
–nodeps安装前不检查依赖

3、实例

  • 安装Firefox

    lsblk查找镜像挂载点

    cd /run/media/root/CentOS 7 x86_64/Packages

    ls | grep firefox

    rpm -ivh 查出的firefox全包名

4、局限性

  • 使用RPM安装时,软件的安装包必须先存在于/run/media/root/CentOS 7 x86_64/Packages里面
  • 某些软件涉及依赖问题

8.2、YUM仓库配置

8.2.1、YUM概述

YUM(Yellow dog Updater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装

在这里插入图片描述

8.2.2、YUM的常用命令

1、基本语法

yum [选项][参数]

2、选项说明

选项说明
-y对所有提问都回答yes

3、参数说明

参数说明
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
clean清理yum过期的缓存
deplist显示yum软件包的所有依赖关系

4、实例

  • 采用yum方式安装firefox

    yum -y install firefox

8.2.3、修改网络YUM源

默认的系统YUM源,需要连接国外apache网站,网速比较慢,可以修改关联的网络YUM源为国内镜像的网站,比如网易163,aliyun等

1、先安装wget,wget用来从指定的URL下载文件

yum install wget

2、在/etc/yum.repos.d目录下,备份默认的repos文件

cd /etc/yum.repos.d

cp CentOS-Base.repo CentOS-Base.repo.backup

3、下载网易或者阿里云的repos文件,任选其一

[root@hadoop101 yum.repos.d] wget
http://mirrors.aliyun.com/repo/Centos-7.repo //阿里云
[root@hadoop101 yum.repos.d] wget
http://mirrors.163.com/.help/CentOS7-Base-163.repo //网易 163

4、使用下载好的repos文件替换默认的repos文件

例如:用CentOS-Base-163.repo替换CentOS-Base.repo

mv CentOS7-Base-163.repo CentOS-Base.repo

5、清理旧缓存数据,缓存新数据

yum clean all

yum makecache

yum makecache 就是把服务器的包信息下载到本地电脑缓存起来

6、测试

[root@hadoop101 yum.repos.d]# yum list | grep firefox
[root@hadoop101 ~]#yum -y install firefox

9、克隆虚拟机

9.1、克隆

1、从现有虚拟机(关机状态)克隆出新虚拟机,右键选择管理–>克隆

在这里插入图片描述

2、点击下一步

在这里插入图片描述

3、选择虚拟机中的当前状态

在这里插入图片描述

4、选择创建完整克隆

在这里插入图片描述

5、设置虚拟机名称及存储位置

在这里插入图片描述

6、等待安装完成

9.2、开机修改系统相关配置

注意:使用root用户

1、修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

systemctl stop network

systemctl restart NetworkManager

2、修改主机名

hostnamectl set-hostname base002

3、修改主机名-IP映射

在这里插入图片描述

4、修改Windows下的映射文件c:\Windows\System32\drivers\etc下的hosts文件

5、使用XShell远程登录base002

Tips

1、如果我们要在系统上做一些危险操作,可能会损坏系统,可以个当前虚拟机拍一个快照

2、如果我们要在一台新电脑上使用上一台电脑的虚拟机配置,可以将以下图片目录中的文件拷贝,然后在新电脑上打开即可

在这里插入图片描述

10、Shell

10.1、Shell概述

Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核

在这里插入图片描述

Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强

查看Linux提供的Shell解析器

cat /etc/shells

查看CentOS默认的解析器是bash

echo $SHELL

10.2、Shell脚本入门

1、脚本格式

脚本以#!/bin/bash开头(指定解析器)

2、创建第一个Shell脚本:hello.sh

第一步创建一个scripts目录mkdir scripts

第二步创建在scripts目录下创建一个文件touch hello.sh

然后在hello.sh中输入以下内容vim hello.sh

#!/bin/bash
echo "Hello,World"

3、执行脚本

  • 方法一

采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本文件X权限)

sh + 脚本的相对路径:sh ./hello.sh

sh + 脚本的绝对路径:sh /root/scripts/hello.sh

bash + 脚本的相对路径:bash ./hello.sh

bash + 脚本的绝对路径:bash /root/scripts/hello.sh

在这里插入图片描述

  • 方法二

采用输入脚本的相对路径或绝对路径执行脚本(脚本文件必须具有可执行X权限

  1. 首先赋予hello.sh脚本x权限

    chmod +x /root/scripts/hello.sh

  2. 执行脚本

    相对路径:./hello.sh

    绝对路径:/root/scripts/hello.sh

在这里插入图片描述

注意:第一种执行方式,本质是bash解析器帮你执行脚本,所以脚本文件本身不需要执行权限;第二种执行方式,本质是脚本需要自己执行,所以需要执行权限

  • 扩展方法三

脚本路径前+“.”或source

在这里插入图片描述

前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。
第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需要 source 一下的原因。
开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子shell 中设置的当前变量,父 shell 是不可见的。

在这里插入图片描述

10.3、变量

10.3.1、系统预定义变量

1、常用系统变量

$HOME、$PWD、$SHELL、$USER等

2、显示所有全局变量

env | lessprintenv | less

3、输出某个环境变量的值

printenv 环境变量名echo $环境变量名

4、查看当前Shell中的所有变量

set

10.3.2、自定义变量

1、基本语法

  • 定义变量:变量名=变量值 注意:=前后不能有空格
  • 撤销 变量:unset 变量名
  • 声明静态变量:readonly 变量名,注意不能unset

在这里插入图片描述

2、变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2)等号两侧不能有空格
(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。

在这里插入图片描述

(4)变量的值如果有空格,需要使用双引号或单引号括起来。

3、实例

在这里插入图片描述

在这里插入图片描述

注意:我们自定义的变量一般都是局部变量,也就是说在父Shell定义的变量,在子Shell中访问不到,如果子Shell中想访问,需要定义为全局变量export 变量名,然后子Shell就可以访问了,但是子Shell对该变量的修改,在父Shell中是访问不到的

在这里插入图片描述

10.4、特殊变量

10.4.1、$n

1、基本语法

$n (功能描述:n为数字,$0代表该脚本名称,$1- 9 代表第 1 到第 9 个参数, 10 以上的参数需要用大括号包含,如 9代表第1到第9个参数,10以上的参数需要用大括号包含,如 9代表第1到第9个参数,10以上的参数需要用大括号包含,如{10})

2、实例

在这里插入图片描述

在这里插入图片描述

a和b会替换$1和$2

10.4.2、$#

1、基本语法

$# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性)

2、实例

在这里插入图片描述

在这里插入图片描述

10.4.3、 ∗ 、 *、 @

1、基本语法

$* (功能描述:这个变量代表命令行中的所有参数,$*把所有参数看做一个整体)

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区别对待)

2、实例

在这里插入图片描述

在这里插入图片描述

10.4.4、$?

1、基本语法

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了)

2、实例

在这里插入图片描述

10.5、运算符

1、基本语法

$((运算表达式))$[运算表达式]expr a + b

2、实例

在这里插入图片描述

A=expr a + b也可以将a+b赋值给A

在这里插入图片描述

在这里插入图片描述

10.6、条件判断

1、基本语法

test condition[ condition ] (注意condition前后需要空格)

注意:[ condition ]条件非空即为true,例如[ json ]返回true,[ ]返回false

2、常用判断条件

  • 字符串间的比较,用“=”判断是否相等,用“!=”判断是否不等

    在这里插入图片描述

  • 两个整数之间的比较

    -eq 等于(equal) -ne 不等于(not equal)
    -lt 小于(less than) -le 小于等于(less equal)
    -gt 大于(greater than) -ge 大于等于(greater equal)

    在这里插入图片描述

  • 按照文件权限进行判断

    -r 有读的权限(read)
    -w 有写的权限(write)
    -x 有执行的权限(execute)

    在这里插入图片描述

  • 按照文件类型进行判断

    -e 文件存在(existence)
    -f 文件存在并且是一个常规的文件(file)
    -d 文件存在并且是一个目录(directory)

    在这里插入图片描述

拓展

多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)

在这里插入图片描述

10.7、流程控制

10.7.1、if判断

1、基本语法

  • 单分支

    if [ condition ]; then
    程序
    fi
    

    if [ condition ]
    then
    程序
    fi
    

    注意:“;”代表两条指令,不同于管道"|",按照从左往右顺序执行指令

  • 多分支

    if [ condition ]
    then
    程序
    elif [ condition ]
    then
    程序
    else
    程序
    fi
    

注意事项:
①[ 条件判断式 ],中括号和条件判断式之间必须有空格
②if 后要有空格

2、实例

  • 直接在Shell上编写语句

在这里插入图片描述

  • 编写脚本文件if_test.sh,添加条件判断语句,然后执行

在这里插入图片描述

在这里插入图片描述

  • if多条件判断

在这里插入图片描述

  • 多分支判断

在这里插入图片描述

在这里插入图片描述

10.7.2、case语句

1、基本语法

case $变量名 in
"值1")
如果变量值为值1,则执行程序1
;;
"值2")
如果变量值为值2,则执行程序2
;;
...省略其他分支
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

注意:

  • case行尾必须为单词in,每一个模式匹配必须以右括号")"结束
  • 双分号";;"表示命令序列结束,相当于Java中的break
  • 最后的"*)"表示默认模式,相当于Java中的default

2、实例

在这里插入图片描述

在这里插入图片描述

10.8、for循环

1、基本语法1

for (( 初始值;循环控制条件;变量变化 ))
do 
  程序
done

2、实例1

从1加到100

#!/bin/bash
for (( i=1 ; i<=$1 ; i++ ))
do
  sum=$[ $sum + $i ]
done

在这里插入图片描述

Tips:双小括号里边数值可以直接用<、>等进行比较,比如 if (( 5<10 )); then echo OK;fi

1、基本语法2

for 变量名 in 值1 值2 值3
do
  程序
done

2、实例2

在这里插入图片描述

比较$*和$@的区别

∗ 和 *和 @都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 2 … 2 … 2n的形式输出所有参数。

在这里插入图片描述

在这里插入图片描述

当它们被双引号“”包含时,$*会将所有的参数作为一个整体,以“$1 2 … 2 … 2n”的形式输出所有参数;$@会将各个参数分开,以“$1” “ 2 ” … “ 2”…“ 2”n”的形式输出所有参数。

在这里插入图片描述

在这里插入图片描述

10.9、while循环

1、基本语法

while [ condition ]
do
  程序
done

2、实例

从1加到100

在这里插入图片描述

在这里插入图片描述

另外一种写法

在这里插入图片描述

10.10、read读取控制台输入

1、基本语法

read [选项][参数]

2、选项说明

选项说明
-t指定读取值时等待的时间(秒),如果不加-t表示一直等待输入
-p指定读取值时的提示符

3、参数说明

变量:指定读取值的变量名

4、实例

在这里插入图片描述

在这里插入图片描述

10.11、函数

10.11.1、系统函数

1、basename

1、基本语法

  • basename命令会删掉所有的前缀包括最后一个"/"字符,然后将字符串显示出来

    basename [ string/pathname ][suffix]

    basename可以理解为取路径里的文件名称

2、选项说明

选项说明
suffixsuffix为后缀名,如果suffix指定了,basename会将pathname或string中的suffix去掉

3、实例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、dirname

1、基本语法

  • 从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录的部分)

    dirname [ string/pathname ]

    dirname可以理解为获取文件路径的绝对路径的名称

2、实例

在这里插入图片描述

在这里插入图片描述

10.11.2、自定义函数

1、基本语法

[ function ] 函数名[ () ]
{
	Action;
	[return int]
}

注意

  • 必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。
  • 函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)

2、实例

求两数相加的和以及和的平方

在这里插入图片描述

在这里插入图片描述

解决问题

在这里插入图片描述

在这里插入图片描述

10.12、综合案例

10.12.1、归档文件

实际生产应用中,往往需要对重要数据进行归档备份。
需求:实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive 下。这里用到了归档命令:tar
后面可以加上-c 选项表示归档,加上-z 选项表示同时进行压缩,得到的文件后缀名为.tar.gz。
脚本实现如下:

#!/bin/bash

#首先判断输入参数个数是否为1
if [ $# -ne 1 ]
then
        echo "参数个数错误,应该输入一个参数,作为归档目录名称"
        exit
fi

#从参数中获取目录名称
if [ -d $1 ]
then
        echo
else
        echo
        echo "目录不存在"
        echo
        exit
fi

DIR_NAME=$(basename $1)
DIR_PATH=$(cd $(dirname $1);pwd)

#获取当前日期
DATE=$(date +%y%m%d)

#定义生成归档文件的名称
FILE=archive_${DIR_NAME}_$DATE.tar.gz
DEST=/root/archive/$FILE

#开始归档目录文件
echo "开始归档..."
echo
tar -czf $DEST $DIR_PATH/$DIR_NAME

#判断是否归档成功
if [ $? -eq 0 ]
then
        echo "归档成功"
        echo "归档文件为:$FILE"
else
        echo "归档失败"
fi
exit

在这里插入图片描述

11、正则表达式入门

正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在Linux 中,grep,sed,awk 等文本处理工具都支持通过正则表达式进行模式匹配

11.1、常规匹配

一串不包含特殊字符的正则表达式匹配他自己,例如

cat /etc/passwd | grep json

就会匹配所有包含json的行

11.2、常用特殊字符

1、特殊字符: ^

^匹配一行的开头,例如

cat /etc/passwd | grep ^j

会匹配所有以j开头的行

2、特殊字符:$

$匹配一行的结束,例如

cat /etc/passwd | grep t$

会匹配所有以t结尾的行

^$会匹配什么?

^$会匹配所有的空行

3、特殊字符:.

.匹配一个任意字符,例如

cat /etc/passwd | grep r..t

会匹配包含 rabt,rbbt,rxdt,root 等的所有行

4、特殊字符:*

*不单独使用,它和上一个字符连用,表示匹配上一个字符0或多次,例如

cat /etc/passwd | grep ro*t

会匹配 rt, rot, root, rooot, roooot 等所有行

.*匹配什么?

.*匹配任意字符任意次

在这里插入图片描述

5、字符区间:[]

[]表示匹配某个范围内的一个字符,例如

[6,8]------匹配 6 或者 8
[0-9]------匹配一个 0-9 的数字
[0-9]*------匹配任意长度的数字字符串
[a-z]------匹配一个 a-z 之间的字符
[a-z]*------匹配任意长度的字母字符串
[a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符

cat /etc/passwd | grep r[a,b,c]*t

会匹配 rt,rat, rbt, rabt, rbact,rabccbaaacbt 等等所有行

6、特殊字符:\

\ 表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配某一特殊字符本身时(例如,我想找出所有包含 ‘$’ 的行),就会碰到困难。此时我们就要将转义字符和特殊字符连用,来表示特殊字符本身,例如

cat /etc/passwd | grep 'a\$b'

就会匹配所有包含 a$b 的行,注意需要使用单引号将表达式引起来

在这里插入图片描述

12、文本处理工具

12.1、cut

cut的工作就是剪,具体的说就是在文件中负责剪切数据用的,cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出

1、基本用法

cut [选项] filename

说明:默认分隔符是制表符

2、选项说明

选项说明
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列,默认是制表符"\t"
-c按照字符进行分割,后加n表示取第几列,比如:-c 1

3、实例

首先准备数据

vim cut.txt

dong shen
guan zhen
wo wo
lai lai
le le

切割第一列

cut -d " " -f 1 cut.txt

切割第2,3列

cut -d " " -f 2,3 cut.txt

在 cut.txt 文件中切割出 guan

cat cut.txt | grep guan | cut -d " " -f 1

选取系统 PATH 变量值,第 2 个“:”开始后的所有路径:

echo $PATH | cut -d ":" -f 3-

切割 ifconfig 后打印的 IP 地址

ifconfig | grep netmask | cut -d " " -f 10

在这里插入图片描述

12.2、awk

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理

1、基本语法

awk [选项] '/正则表达式/{指令} /正则表达式2/{指令2}...' filename

2、选项说明

选项说明
-F指定输入文件分隔符
-v赋值一个用户定义变量

3、案例

  • 搜索 passwd 文件以 root 关键字开头的所有行,并输出该行的第7 列。

    在这里插入图片描述

  • 搜索 passwd 文件以 root 关键字开头的所有行,并输出该行的第1 列和第7 列,中间以“,”号分割。

    在这里插入图片描述

    注意:只有匹配了 pattern 的行才会执行 action

  • 只显示/etc/passwd 的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell 在最后一行添加"dahaige,/bin/zuishuai"

    在这里插入图片描述

    注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行

  • 将 passwd 文件中的用户 id 增加数值 1 并输出

    awk -F ":" -v i=1 '{print $3+i}' /etc/passwd
    

4、awk的内置变量

变量说明
FILENAME文件名
NR已读的记录数(行号)
NF浏览记录的域的个数(切割后,列的个数)

5、案例

  • 统计 passwd 文件名,每行的行号,每行的列数

    awk -F ":" '{print "filename:"FILENAME" rownum:"NR" col:"NF}' /etc/passwd
    
  • 查询 ifconfig 命令输出结果中的空行所在的行号

    ifconfig | awk '/^$/{print NR}'
    
  • 切割 IP

    ifconfig | awk '/netmask/{print $2}'
    

12.3、案例:发送消息

我们可以利用 Linux 自带的 mesg 和 write 工具,向其它用户发送消息。

需求:实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发送消息是否为空

  • 查看所有登录用户

    who

  • 查看所有用户是否开启消息功能

    who -T

#!/bin/bash
#判断用户是否登录
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')
if [ -z $login_user ]
then
        echo "$1不在线"
        echo "脚本退出..."
        exit
fi

#查看用户是否开启消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')
if [ $is_allowed != "+" ]
then
        echo "$1没有开启消息功能"
        echo "脚本退出..."
        exit
fi

#确认是否有消息发送
if [ -z $2 ]
then
        echo "没有消息发送"
        echo "脚本退出"
        exit
fi

#从参数中获取要发送的消息
whole_msg=$(echo $* | cut -d " " -f 2-)

#获取用户登录的终端
user_terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')

#写入要发送的终端
echo $whole_msg | write $login_user $user_terminal

if [ $? != 0 ]
then
        echo "发送失败"
else
        echo "发送成功"
fi
exit

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux自带的虚拟网卡是VETH(Virtual Ethernet)。VETH是Linux提供的一种特殊的网络设备,用于实现网络虚拟化。VETH总是成对出现,每个pair中的VETH就像一个网络线缆的两个端点,数据从一个端点进入,必然从另外一个端点流出。每个VETH都可以被赋予IP地址,并参与三层网络路由过程,实现不同network namespace之间的网络通信。通过ip link命令可以查看VETH设备,其中eth0一般是第一个网卡,ethn表示第n个网卡。例如,通过命令"ip link"可以查看服务器上的VETH设备和对应的MAC地址。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [计算机网络基础02-linux虚拟网络隔离(网桥bridge,路由,虚拟网卡veth)](https://blog.csdn.net/liaomin416100569/article/details/126782055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [linux虚拟网卡bond网络模式](https://blog.csdn.net/qq_33955314/article/details/125839188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值