网络相关知识
ip link show 列出系统上可用的所有网络接口
ip addr 查看具体地址(可简写成ip a)
(lo:表示的是loopback环回测试口,地址是127.0.0.1,这个环回测试口用来回包测试,用来测试tcp/ip协议是否能通信。
eth开头,以太网类型网卡,当我们给它配置地址之后,才可以和别的主机进行通信
ifconfig查看
(ifconfig eth0 查看具体网卡信息,这条命令则代表查看eth0的信息)
ip地址有Ipv4和Ipv6两个版本
ipv4(32位二进制组成,共有2的32次方个地址)
ipv(128位二进制数组成,共有2的128次方个地址
主机名和ip地址
显示ip地址
静态绑定的方式不适用于大型的主机,则需要通过搭建dns域名解析系统。
如下我们只是做两台主机的静态绑定,即不需要通过写ip地址对其进行访问(名字等价于ip)
vim /etc/hosts查看到如下形式的内容
网络接口
网络接口名称以接口类型开头 en开头:以太网接口 wl开头:WLAN接口 ww开头:WWAN接口
查看网卡类型
可简写成nmcli con show
上图可以看到设备名为eth0(名字不可改)的type是ethernet,连接名叫Wired connection 1(名字可改)
给设备添加新的连接(如下取新的名字,设置新的ip地址,添加网关,添加dns,指定当前网卡类型为ethernet)
nmcli connection add ifname eth0 con-name "Wired connection 2" ipv4.addresses 172.25.250.20/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.254 type ethernet
管理网卡和当前的ip地址
route -n
新的连接创建完发现,并没有使用或者说激活,因为同一时间只能使用或激活一个网络连接
激活该连接
如下在servera机器的tty终端去执行操作,(而不是从远程控制台激活,因为远程控制台保存的连接的ip地址在激活后将失效,要登录则应解析激活的ip,则执行后会无法操作)
在用(nmcli con up 连接名)命令激活,因为等待时间会有点长,我们直接ctrl+c中断来看一下激活情况,可以发现我们想要激活的连接变成了橙色,因为还有些配置还没做,但是当前我们设置的ip地址是可用的,如上看到ip地址已经变成了172.25.250.20(之前是10),
如下在控制台终端ping servera,可以发现ping不通,因为原本在主机里servera解析的地址是原本连接的172.25.250.10,现在ip地址变了,没法解析
其实可以发现只是暂时的激活。(过了一会还是可以ping通),而如下新创建连接的ip地址无法ping通
而在激活新建连接(我们这里的名字是”Wired connection 2" ,简陈连接2吧)后,如果想用
servera代替ip地址,和之前一样通过主机名登录(ssh root@servera)则可以修改文件
/etc/hosts
上图在激活连接2后不能通过servera解析到新建ip,登录不上,如下/etc/hosts文件内容
当我们编辑,将10变为20,则在激活连接2后我们可以通过主机名登录,要注意的是如过下次再别的机器登录,则要修改器所在的文件对servera的域名解析地址才可
如果要删除连接(nmcli con delete "Wired connection 2")
当我们要修改连接的ip地址或是网关之类的信息时,可以执行如下操作
第一种
[root@servera ~]# nmcli con modify "Wired connection 2" ipv4.addresses 172.25.250.20/24 \ > ipv4.method manual connection.autoconnect yes
(上面/是换行,如上修改ip地址,网关,manual是值我们手动设置的ip地址,如果是自动生成的则是auto,后面的connection yes的意思是将我们的网络连接设置成开机自启动,就是开机后网络会自动连接,自动去获取我们设置的ip地址)
命令执行后,则要重启才能生效,或者是在tty终端去激活一下网卡(不要在远程控制终端去激活,激活后命令行将卡死)
如果忘记了dns忘记设置了,则可以打开/etc/resolv.conf修改
第二种 修改配置文件信息
(上图第一次用vim打开该文件发现为空,因为可能是自己打的中文的_吧,下面明显比上面长思考🤔
其中设置开机自启动的connection.autoconnect yes即是下面的字段改为yes
第三种
nmtui(一个图形化的网络管理器)
编辑完成后退出,在tty终端上再激活一下连接即可
(也可以通过nmtui方式修改主机名,即上图第三个选现),同样编辑完记得reboot重启或者是用bash刷新
修改主机名还可编辑文件/etc/hostname修改
或者是执行命令hostnamectl
记得不管哪种方式要生效都要刷新或者重启一下才行,
补充:
ip link show
:显示系统中的网络接口信息,包括设备名称、MAC地址、状态等。ip addr
:显示设备的IP地址和配置信息。ifconfig
:用于配置和显示网络接口的参数。在最新的Linux发行版中,已被ip addr
和ip link
命令所取代。/etc/services文件中可以找到常用和已注册的端口列表、
域名
发现如上修改完后配置文件并没有改变,可知这种设置是临时的
hostname命令的用法
归档和传输文件
tar
tar命令其实不压缩文件只是整理在一起。压缩文件的是它下面的三种压缩格式
三种不同格式的压缩效率: gzip<bzip<xz
压缩文件命令,压缩格式 文件
压缩文件的后缀就是压缩格式的缩写,
解压缩命令,在压缩的基础上加个-d 且文件名是需要解压缩文件名
(上图使用管道符号(|)将多个命令连接在一起时,每个命令都是独立执行的,并且可以处理前一个命令的输出作为输入。)
上图 gzip -d file 的解压操作可以发现,都是在原文件的基础上操作,解压后的文件存在压缩文件就不存在了。
但是三种文件格式中只有bzip2格式可以保留原文件,并且对文件进行压缩
该命令为bzip2 -k file
在不解压的情况下查看压缩包内容
查看内容
应该要对应使用各自的命令,zcat bzcat xzcat
解压对应各自的解压命令gunzip bunzip2 unxz
关于tar命令
其可以划分成不同的操作,其中包括一般选项和压缩选项,下面为一些常用选项、选项的长版本及其说明
(注意三者选其一,可以很容易知道的是c和x,不能再创建的时候又去提取存档吧,简单来说就是:
-c 创建存档、-t列出存档内容、-x提取存档 ,在使用tar命令时这三个要选择一个
(在用短选项写多个选项时,记得-f要在最后,如果是长选项--create那种全称
(之前说了这些压缩命令的单独使用,此时结合tar一起则是在压缩的基础上进行归档整理,其后缀名也不一样了)
当我试图解压缩,发现上图报错无法执行,我用file查看文件类型才知道原来是自己取名没有和类型一致,导致自己用错了选项
其是xz压缩格式,应该用选项J
其它命令也是相对应。如果忘记了对应压缩格式的选项,则可以根据后缀(一般来说后缀都是对应压缩格式的),例如 tar --xz -cvf 目标文件 源文件
注意:
运行后可以看到:
归档文件和目录
一般来说tar命令格式为:tar 选项 目标文件 源文件(cp等命令是源文件在前)
tar -czvf /home/home.gz.tar /home/
该命令中,c创建文档,z采取gzip压缩格式,查看归档内容,可以看到上如后面的文件就是归档的内容,f即是创建归档的文件名,意思为将home(/home/)目录下的文件用gzip的格式压缩,并归档在home目录下的home.gz.tar文件中,在这个归档过程页列出包含的内容。
如下如果不指明路径则是当前目录下创建
(上图测试,可以发现后缀名还是蛮重要的,试了一下将file6和file7文件归档到hello.tar中hello.tar可以不用事先创建)
注意
查看tar包下的内容 -tf
可以发现都是从home目录开始而不是根目录(/),这就是打包时提示的那句话
发现tar命令会默认使用相对路径,如果使用绝对路径且不加相应参数时,就会出现此error。
在tar命令的参数中加入-P参数即可。但是我们需要注意-p参数的位置,要将其放在-z和-f之间。即:
如果想要解压tar并放在指定地点,要用-C(大写): 指定解压路径,如此路径不存在,则解压不成功。例如:
(没有被压缩,只是tar包也是同样解压)
因为我没有指定路径,所以解压在当前目录,如图生成一个home文件夹
远程拷贝scp(s即是ssh,使用远程登录的方式将文件拷贝到另一台主机)
使用时后面根据需要加选项,如果要传输的是目录则要加-r,如果需要属性不变则-p,二者也可结合使用,-pr或是是简写成-a选项
其使用格式,scp 源文件 传输到的用户名@主机名: 存放路径
如果用户名没有指定则默认是当前传输的用户名(即我用root用户传输文件到serverb主机,未指定用户名的前提下,传输到的用户也是servera上的root用户),如果没有存放路径,相当于没有传输成功,只是复制了一份文件并重命名为用户名@主机名,如下
如下图远程传输成功,将anaconda-ks.cfg 文件传输到serverb主机的根目录下
(由于第一次访问serverb,所以其给我们发送了公钥,我们输入yes接收一下然后输入serverb的密码就可以了)
如下操作发现,即使指定的传输路径不存在,也会被创建,且可以重命名(下图我以为我时存放在sunday目录下,没想到自己时重命名了传输文件。
虽然scp可以将文件完整的拷贝到主机,但是其有不能增量备份的缺点(即再之前已经拷贝的目录如果新增了子文件,不能实现只传输新增的内容)
这时rsync命令可以实现增量备份
补充:
(rsync的-n选项可以方便地用于测试和查看rsync的模拟执行计划,而无需实际传输文件。
归档同步是一种文件同步方式,它以归档模式进行文件同步,保留文件权限、所有者和时间戳等信息。在归档同步过程中,如果目标目录中已经存在同名文件,该文件将被保留,而不会覆盖或删除。这与常规的文件同步方式有所不同,常规的文件同步通常会覆盖目标目录中已经存在的同名文件。)
如下图,可以发现因为/的区别,传递的内容发生了变化,sunday是一个目录,在第一个操作中是将整个目录一起传输过去,而第二个操作是将sunday目录下的内容传输过去(sunday/)
当我们在sunday下再创建一些文件,远程传输,则传输的则是新建的文件,如下
除了将本地文件或目录的内容与远程计算机上的文件或内容同步,rsync还可以同步两个本地文件或目录的内容的功能
当我们用空目录去同步已有内容的目录时,可以发现会同步失败
SFTP(SSH File Transfer Protocol)是一种基于SSH协议的文件传输协议。它允许用户在远程服务器和本地主机之间安全地传输文件。
以下是SFTP中常用的命令:
pwd
:查看远程服务器的当前目录。lpwd
:查看本地系统的当前目录。ls
:显示远程服务器上当前目录的文件列表。lls
:显示本地当前目录下的文件列表。put
:将本地文件上传到远程服务器的当前目录。get
:将远程服务器上的文件下载到本地当前目录。!command
:在SFTP会话中执行本地shell命令。
此外,SFTP还支持以下命令:
mkdir
:在远程服务器上创建目录。lmkdir
:在本地系统上创建目录。progress
:切换文件传输进度的显示。exit
:退出当前SFTP会话。请注意,SFTP是一种基于命令行的协议,因此它没有提供像touch这样的交互式命令。如果需要使用类似于touch的功能,可以考虑使用其他文件传输协议或工具,如SCP、rsync等。
安装和更新软件包(rpm和yum命令)
安装软件包的方式
RMP软件包管理器、编译安装、YUM安装(会自动解决依赖关系)在线安装
软件包来源
1、本地镜像仓库中
2、官方的镜像仓库(必须联网才能使用)比如阿里、网易、中科院、清华
3、指定镜像服务器
下图是访问指定镜像服务器
(红帽8版本以前,软件包都是放在Packages目录下)
8以后放在下面这两个文件目录下(两个文件下都有Packages目录,里面存放了很多软件包,xx.rpm)
AppStream 用户服务的软件包
BaseOS 内核服务的软件包
(下图是AppStream下Package目录下的软件包)当采用第三种方式获取软件包并安装软件时
可以先复制一下软件包的链接后返回终端执行wget命令下载,再进一步操作安装
如果想将下载的路径存放到指定目录则用-P选项(大写),该路径也可以含有未创建的父目录,而且只是目录,好像没有重命名的效果
上图表示下载完成,可以用rpm -ivh安装(记得路径要写全,我是刚好再当前目录所以直接写名字
i
: 安装 (install) 选项,表示要安装软件包。v
: 显示详细 (verbose) 选项,会在安装过程中显示进度信息,而不仅仅是一些简短的输出。h
: 显示进度条 (hash),当安装过程中需要用户确认时,会显示一个进度条。-e选项卸载软件包(只要写前面的名字就好,不必写全),如下图其实下载文件还在
检查RPM软件包
如果没有写指定查询哪个名字,所以上图会出现所有安装的软件包
(上面知道可以不用写全)
如果我们安装的软件由很多依赖的软件包则不适用用rpm去安装软件,
如当我安装上面的软件包时出现的报错,因为安装这两个软件包的之前要安装另外两个软件包,(即存在依赖关系,如果安装完这两个软件包或许可以安装我们想要安装的,可是,如果先要安装的软件又有依赖关系,且不止一个,则使用rpm则会比较麻烦)
yum命令安装(会解决依赖关系,需要当前机器与镜像网站或是镜像服务器可以通信,就可以用yum实现在线安装)
构建一个镜像仓库,这样在安装时就不需要下载文件到本地,yum可以实现在线安装
a
(只有管理员用户才能创建.repo文件,如上文件内容有两个仓库,也可以创建两个.repo文件,一个仓库一个文件,如果自己创建仓库,记得一定要在/etc/yum.repos.d路径下,且文件要是repo的后缀名,书写格式如下解释)
上面文件内容的字段解释
[rhel-8.2-for-x86_64-baseos-rpms] (记住要顶格去写,不要空格再写) 仓库名(注意不可以与其它仓库重名) baseurl = http://content.example.com/rhel8.2/x86_64/dvd/BaseOS 镜像仓库的URL路径 enabled = true (当前镜像仓库开机自启动,默认是自启动,所以可以不写)1为true,0为false,所以也可以写数字 gpgcheck = false (关闭GPG校验,记得一定要设置,因为默认是开启的,如果开启需要拥有GPG密钥)如果写了1即true,则还要加一个字段gpgkey name = Red Hat Enterprise Linux 8.2 BaseOS (dvd) (描述,可以不写)
如果想看仓库是否可用,可以使用yum repolist看一下当前仓库是否被识别
用yum list查看仓库里的所有软件包有哪些
下面则是从上面所包含的软件包中自动找到需要安装的软件包对之前哪个含有依赖的软件包进行安装,
如图输入y则表示确认安装(告诉你大小,询问是否安装)
查看下是否安装完成
如果是卸载的话,则用-remove,如下还会询问是否卸载,我输入了n,表示不卸载,
当你不想被询问时,可以直接在删除语句后加个-y,安装时也可以,这样就不会再询问而是直接安装或者卸载
更新当前系统所有软件包(下图内容表示没有需要更新的)
yum history 显示安装和删除事务的摘要
所有安装和删除事务的日志记录在/var/log/dnf.rpm.log中
history undo 选项可以撤销事务
yum info查找有关软件包的信息
a
访问linux文件系统
在linux系统中设备不能直接存储数据,磁盘首先要格式化,需要创建一个空目录,将设备挂载到空目录下,只要在目录中创建文件,就相当于在设备中存储数据。
(如上图,用cd命令无法进入,且不能对其空间进行使用,当我们创建空目录并和设备关联,则我们就可以使用该空间并对其进行操作了)
查看挂载情况的命令。
mount
:这是最常用的命令,可以列出当前系统中所有已经挂载的文件系统及其挂载点。使用该命令时,可以看到每个文件系统的挂载点、文件系统类型、挂载状态等信息。df
:这个命令也可以用来查看文件系统的挂载情况。它还可以显示每个挂载点的使用情况,包括已用空间、可用空间和总空间等。cat /etc/fstab
:这个命令可以查看系统启动时使用的文件系统挂载表。在这个文件中,可以找到已经预先配置好的挂载信息。lsblk
:这个命令可以显示系统中所有块设备的信息,包括硬盘、U盘、光驱等。它还可以显示这些设备被挂载到哪个目录下。fuser
:这个命令可以查看哪些进程正在使用某个文件系统。例如,可以使用fuser -m /
命令查看哪些进程正在使用根文件系统。
磁盘分区
逻辑卷
查找系统中的文件(find,locate
locate根据名称查找文件
使用locate,出现如下报错,因为没有更新数据库
更新完后则可以查找,-i 选项表示不区分大小写,-n限制返回的搜索结果数量
find实时搜索文件
如果使用通配符搜索文件名,记得用引号引起,防止终端对通配符进行解译。
find 路径 条件 动作
-name
:按照文件名查找,例如find /path -name "file.txt"
将在/path
目录下查找文件名为"file.txt"的文件。
![]()
如上图,当没有指定路径时,则只是搜索当前路径符合要求的文件
-type
:按照文件类型查找,例如find /path -type f
将在/path
目录下查找所有类型为普通文件的文件。
-size
:按照文件大小查找,例如find /path -size +100M
将在/path
目录下查找大小大于100MB的文件。
-mtime
:按照文件修改时间查找,例如find /path -mtime -7
将在/path
目录下查找在过去7天内被修改过的文件。
-exec
:对查找到的文件执行指定的操作,例如find /path -name "*.txt" -exec ls -l {} \;
将对查找到的所有以".txt"结尾的文件执行"ls -l"操作,并显示每个文件的详细信息。
-ok
:与-exec
类似,但会先给出提示,让用户确定是否执行操作,例如find /path -name "*.txt" -ok ls -l {} \;
将在查找到每个以".txt"结尾的文件时,提示用户是否要执行"ls -l"操作。
-group
:按照文件所属的组查找,例如find /path -group staff
将在/path
目录下查找所有所属组为"staff"的文件。
-user
:按照文件所属的用户查找,例如find /path -user john
将在/path
目录下查找所有所属用户为"john"的文件。
-iname
:按照文件名称的忽略大小写查找,例如find /path -iname "*.TXT"
将在/path
目录下查找所有名称匹配"*.TXT"的文件。
-path
:按照路径匹配查找,例如find /path -path "/path/to/dir/*"
将在/path
目录下查找路径匹配"/path/to/dir/*"的所有文件和目录。
-iregex
:按照路径忽略大小写匹配查找,例如find /path -iregex ".*\\.TXT$"
将在/path
目录下查找所有路径以".TXT"结尾的文件和目录。
-nogroup
:查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser
:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-empty
:查找大小为0的目录或文件。
-execdir
:在查找到的每个文件的目录下执行指定的操作,例如find /path -type f -execdir chmod 644 {} \;
将在每个查找到的文件的目录下执行"chmod 644"操作。
-preen
:删除匹配的文件和目录,例如find /path -type f -preen -delete
将删除在/path目录下所有类型为普通文件的文件和空目录。
-ls
:列出匹配的文件和目录的详细信息,例如find /path -ls
将列出在/path目录下的所有文件和目录的详细信息。还有根据uid、gid搜索如图查看uid为0的所有的文件下图通过目录深度和名字同时查找根据大小搜索文件-size选项 (大于+,小于-,等于则只写数字)-size选项的单位k表示千字节,M表示兆字节,G表示千兆字节根据修改时间搜索文件根据文件类型搜索文件-type选项
f表示普通文件,d表示目录,l表示软链接,b表示块设备