安装虚拟机。
1.新建虚拟机
2.点击首页的创建新的虚拟机,或者点击标签栏“文件”下面的新建虚拟机
3.选择自定义,可以自己按照喜好设置虚拟机的配置。点击下一步
4.兼容性按照默认就好。点击下一步
5.选择稍后安装操作系统,点击下一步。(选择稍后安装系统,就是在这里如果直接选择镜像文件去安装的话,虚拟机会使用内置的安装向导自动进行安装,最终安装出来的系统和我们后续进行实验所需的系统环境有可能会不同)
6.选择Linux操作系统,版本为Red Hat Enterprise Linux 8 64 位,点击下一步
7.设置虚拟机名称以及安装位置,点击下一步
8.可选择虚拟机的CPU数量以及CPU核数(这个在任务管理器的性能中可以查看一下自己真实的物理机的一个情况然后在设置,不过我们目前要求不高,设置为1即可),完成后点击下一步
9.选择虚拟机的内存,依个人需求而定。点击下一步
10.选择网络连接类型,这里有三种方式。
使用桥接网络:相当于在物理机和虚拟机之间构建了一个桥梁,从而可以通过物理机的网卡访问外网。
使用网络地址转换(NAT):让虚拟的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网,在物理机上对应的网卡是VMnet8。
使用仅主机模式网络:仅仅让虚拟机的系统与物理主机进行通信,不能访问外网,在物理机上对应的网卡是VMnet1。
这里选择NAT,点击下一步
11.选择I/O控制器类型,默认即可。点击下一步
12.选择虚拟磁盘类型,默认即可。点击下一步
13.选择磁盘,建议使用创建新磁盘。如现有虚拟磁盘也可以选择第二项,不建议直接使用物理磁盘。点击下一步
14.设置磁盘大小,40即可,其他保持默认。点击下一步
15.设置磁盘文件的名称,直接下一步即可
16.虚拟机至此已经创建成功,点击完成即可。接下来开始安装操作系统,通过虚拟光驱安装。
17.点击图中的CD/DVD,设置光盘文件
18.点击开启此虚拟机
19.鼠标点进去,用键盘选择第一项,Install Red Hat Enterprise Linux 8.0.0。等待界面加载完成
20..图示为每一项的中文意思,KDUMP是一个系统崩溃时收集信息的工具,如果系统用于练习则不需要开启。
21.键盘和语言看个人喜好修改,建议英文。时区修改为上海,点击Done(完成)
22.安装源默认为光盘,无需修改。软件选择Server with GUI(带有图形化界面)。
23.安装位置选择磁盘,选中automatic,点击确定更改磁盘。。
24.直接点击Begin Installation(开始安装)
25.安装过程中,需要为Root用户设置密码,并创建一个普通用户
26.如果设置的密码为弱密码,则需要点两次确定。
27.设置用户名密码,同样,弱密码需要确认两次。设置完成后等待安装成功
28.安装成功后点击Reboot(重启)
重置密码
#第一步重启系统,然后按键盘的下键将白色条放到第二行上输入e
#第二步在linux开头那一行尾部添加rd.break,然后使用ctrl+x继续后面
#第三步输入输入mount查看设备挂载信息(主要看/sysroot目录挂载权限)
接着输入mount -o remount,rw /sysroot目录重新挂载已经挂载的设备,并以其他的权限挂载,这里我们需要rw权限
#第四步输入chroot /sysroot/ ,使用chroot命令改变系统的根目录的位置,将其改到/sysroot之后就可以进行密码修改
#第五步passwd root 输入两次密码
#第六步输入touch /.autorelabel
#第七步两次输入exit完成root密码重置
远程连接xshell
(如果输入密码的时候服务器一直拒绝,则需要在虚拟机中打开bash)
输入:vim /etc/ssh/sshd_config
进入后输入/Root 匹配后删掉这一行的#键,将后面的内容删掉改为yes,如图
改完后:wq保存退出,输入 systemctl restart sshd
然后再去重新远程链接一下。
reboot 重启 shutdown -r now 重启
shutdown -h now 关机 poweroff 关机
ip a ifconfig 查看IP地址
查看当前linux的发行版本:cat /etc/redhat-release
查看内核版本:uname -r
查看shell类型:cat /etc/shells chsh -l
查看当前的默认shell类型:echo $SHELL
linux的命令格式
命令名称 [命令参数] 命令对象
命令名称:我们可以把它认为是语法中的动词,意思就是我们想要做的事。
命令参数:对命令进行调整,让“修改”过的命令更好的去贴合工作需求。
命令对象:一般指要处理的文件、目录、用户等资源名称。其实就是你这个动作面对的对象。例如:创建一位叫小明的用户,查看一个叫工资表的文件。
在这里要强调一件事,就是我们的命令名称 [命令参数] 命令对象之间要用空格隔开,并且字母要严格的区分大小写。
#### 常用快捷键
Tab 键:在它能够实现对命令、参数或文件的内容补全。
Ctrl+C 组合键:当同时按下键盘上的 Cirl 和字 C 的时候,意味着终止当前进程的运行。
Ctrl+D 组合键:当同时按下盘上的Ctrl 和 D的时候,表示键盘输入结束
Ctr+l 组合键:当同时按下键盘上行的 Cirl 和l的时候,会清空当前终端中已有的内容(相当于清屏操作 )。
解释[root@localhost ~]#
#是一个标识符,标识的是当前用户是root、或者说当前用户的编号UID为0.
当方括号后面跟的是$,标识的是当前用户是一个普通用户。
**在这边要强调一件事,除了root之外,其余的都是普通用户,也就是其余的都是$。**
root:就是咱说的那个特殊用户,也就是管理员,也叫作超级管理员,根用户。
@:表示的是分隔符,分隔用户和主机的。
localhost:本意表示的是当前主机,也表示的是主机名。
将他们连起来root@localhost表示的是当前root这个用户在localhost这个主机上。
~:表示的是当前用户的家目录。切换成不同用户虽然后面跟的都是~,但是意义是不一样的。
家目录其实是存放用户个人数据的地方
Root用户的家目录是:/root
其他用户的家目录是:/home/username,例如用户rhcsa的家目录是/home/rhcsa
LS(英文全拼: list directory contents):命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。
如果指定,则列出指定目录;如果没有指定,则列出当前目录。
指定列出root用户下的内容:`[root@localhost ~]# ls /root`
不指定列出:`[root@localhost ~]# ls`
-l :以长格形式显示文件和目录的详细信息(包括权限、所有者、大小、创建时间等),ls命令默认只显示名称的短格式。
-a:显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件。
-A:与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“..”。
-h:以更人性化的方式显示出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为K、M等单位。此选项需要和-l选项结合使用才能体现出结果。
-d:只列出目录(不递归列出目录内的文件)。
#### 文件系统
Linux以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在Linux的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。而这些种类繁多的文件被Linux使用目录树进行管理, 所谓的目录树就是以根目录(/)为主,向下呈现分支状的一种文件结构。
filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。
**Linux目录结构的特点**
- 使用树形目录结构来组织和管理文件。
- 整个系统只有一个根目录(树根),Linux的根目录用“/”表示
- 其他所有分区以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。
**/bin**
这个其实是快捷方式,只不过在Linux中叫做软链接,他还有一个标准名称叫做符号链接。bin -> usr/bin的意思是打开bin是 usr/bin的快捷方式,打开bin的时候,其实打开的是usr下面的bin。
bin 是 Binaries (二进制文件) 的缩写, 这个目录里面存放着可执行的程序。
**/boot:**
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。(其实就是引导你的操作系统启动,然后你可以在你的操作系统上去完成工作),所以它很重要不能删除。
**/dev:**
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备(例如光驱呀),在 Linux 中访问设备的方式和访问文件的方式是相同的。
**/etc:**
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。(配置文件是以纯文本的形式进行描述的,纯文本就是用记事本来编辑、修改,它的好处在于我不需要其他花里胡哨的工具,我只需要在Linux下有一个和Windows下的记事本一样的工具,我就可以打开配置文件进行修改)
**/home:**
普通用户的家目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/root:root用户的家目录
**/lib:**
lib 是 Library(库) 的缩写,这个目录里存放着系统最基本的动态连接共享库,它的库是32位的库,其作用类似于 Windows 里的 DLL 文件(在c盘,Windows目录下可以看到,DLL文件是不能直接执行的,需要可执行的文件进行调用)。几乎所有的应用程序都需要用到这些共享库。
**/lib64:**
lib 是 Library(库) 的缩写,这个目录里存放着系统最基本的动态连接共享库,它的库是64位的库.
**/media:挂载点目录**
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
**/mnt:挂载点目录**
什么是挂载点那?就是光盘放进光驱后,必须要将设备关联到当前文件系统树上的某个节点上,才能进行访问,把某个设备和当前文件系统上某个目录进行关联的这个过程,就叫做挂载。在Windows中不同的盘是不同的分区,如果插入一个优盘,则会单独的形成一个分区,在Linux中是全部都在根下面的,所以系统会提供一个目录,让用户临时去挂载别的文件系统。该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
**/opt:**
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
**/sbin:**
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。其实就是超级管理员能够用到的一些命令。
**/srv:**
第三方服务,该目录存放一些服务启动之后需要提取的数据。
**/tmp:**
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。大家就是不要把我们会用到放到这个目录里面,因为这个目录里面的东西隔一段时间就会清理。
**/usr:**
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
**/var:**
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
**/run:**
是一个临时文件系统,存储系统启动以来的信息(存放应用程序的守护进程)。
**/proc:**
proc 是 Processes(进程) 的缩写,程序是由源代码生成的可执行的文件,程序执行后形成了进程,进程的本质是内存中的东西,会占用内存资源。Proc存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。大家要记住这个目录的内容不在硬盘上而是在内存里.
路径
路径:它指的是从指定起始点到目的地所经过的位置。它可以实现层次化的文件管理,层次化的目的就是可以实现快速追溯文件。
绝对路径:以根开头的路径:/root/bin。
相对路径:不以根开头的路径:bin
pwd命令
pwd(英文全拼:print work directory): 命令用于显示工作目录。
执行 pwd 指令可立刻得知咱目前所在的工作目录的绝对路径名称。
`[root@localhost ~]# pwd`
su命令
su(英文全拼:switch user)命令用于变更为其他使用者的身份,管理员切换到任意身份都不需要密码验证,而任意身份切换到管理员都需要密码验证。
加上-是因为可以在切换身份的同时将用户的环境变量和身份权限全部获取
[root@localhost ~]# su - my01
如果不加-的切换身份,我们是没有权限去列出里面的内容的
`[root@localhost ~]# su rhcsa`
这边要给大家提示一下,就是你每切换个用户,记得一定要退出当前的用户然后再去做别的操作
Cd(英文全拼:change directory)命令用于切换当前工作目录。**
如果直接写cd表示切换到当前用户的家目录:[root@localhost ~]# cd
切换到相对路径:[root@localhost ~]# cd test1
切换到绝对路径:[root@localhost ~]# cd /etc
cd -:表示切换到上一次切换的目录
cd ~:表示切换到当前用户的家目录
cd .. :表示切换到上一级目录
在linux中去查看帮助文档
1、查看bash内部命令帮助
[root@node13 ~]# help cd
2、命令 --help
[root@node13 ~]# cat ——help
示例如下:cat [OPTION]... [FILE]... 表明cat后面可以加上多个可选的选项以及多个可选的文件参数
3、man,它是manual的缩写,使用方式:man 命令名称。用来提供在线帮助,使用权限是所有用户。使用man命令可以调阅其中的帮助信息,非常方便实用。
man command
[root@node13 ~]# man ls
在man命令帮助信息的界面中,所包含的常用操作按键如下:
按键 | 作用 |
空格键,PaGe down | 向下翻一页 |
PaGe up,b | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man命令的帮助信息的结构如下:
结构名称 | 代表意义 |
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
man手册的几个部分
区段1:用户指令,查看命令的帮助
区段2:系统调用,查看可被内核调用的函数的帮助
区段3:程序库调用,查看函数和函数库的帮助
区段4:设备,查看特殊文件的帮助(主要是/dev目录下的文件)
区段5:文件格式,查看配置文件的帮助
区段6:游戏,查看游戏的帮助
区段7:杂项,惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
区段8:系统指令,查看系统管理员可用的命令的帮助
区段9:内核内部指令,查看内核相关文件的帮助
4、info page
info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。
[root@node13 info]# info info
关于时间的几个命令
**date命令**用于显示或设置系统的时间与日期,
语法格式为:` date [OPTION]... [+FORMAT]`
用户只需在强大的date命令后输入以 `+` 号开头的参数,即可按照指定格式来输出系统的时间或日期
date命令中的参数以及作用
| 参数 | 作用 |
| ---- | ---------------------- |
| %Y | 完整年份(例如:2020) |
| %m | 月份(1~12) |
| %d | 本月中的第几天 |
| %H | 小时(00~23) |
| %M | 分钟(00~59) |
| %j | 今年中的第几天 |
查看当前系统时间的date命令如下所示:
[root@kongd ~]# date
Sat Sep 5 09:13:45 CST 2020
date命令中的参数%j可用来查看今天是当年中的第几天。
[root@kongd ~]# date "+%j"
306
设置时间:date -s “年月日 时:分:秒“
date 月日时分年
clock,它是用来调整硬件时间的。
hwclock(hardware clock)命令用于显示与设定硬件时钟,在这我们需要了解它的三个参数.
-r or hwclock --show 查看时间
-w or hwclock --systohc 将系统时间同步到硬件时间
-s or hwclock --hctosys 将硬件时间写到系统内
### cal命令
日历的英文:Calendar
cal命令的作用是显示日历。
示例一:显示当月日历 ``[root@localhost ~]# cal
示例二:显示2022年八月份的日历,cal 8 2022,先是月份,再是年份
``[root@localhost ~]# cal 8 2022
示例三:显示2022年整年日历 `[root@localhost ~]# cal 2022
文件命名规则
(1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的
(2)文件名不能超过255个字符
(3)区分大小写file File FILE fIle
(4)目录也是文件,在同一路径下,两个不同类型文件不能同名
- rw-------. 1 root root 1310 Feb 17 22:42 anaconda-ks.cfg
- 所在标记位说明 文件类型
- 标记的是普通文件/一般文件(不是其他类型的文件,这个里面大部分都是纯文本文件,不过有些可执行文件不是文本的)
d 标记的是目录文件(你看咱这个里面是D的是蓝色标签)
l 标记的是软链接的文件,link 符号链接,也是快捷方式.
b 块设备文件,块设备是以数据块为单位的存储设备,比如文件系统所在的硬盘,一般叫做文件系统块,也可以把它叫做随机存储的设备。
c 字符设备,以字符为单位存储的,按照顺序进行存储。例如ABC输入,存储也按照ABC存储。
p pipiline 管道文件,大家可以把它理解为水管
s socket 套接字文件,IP地址+端口号
软硬链接
文件,都有文件名和数据。这在Linux上被分为两部分:
- - 用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方
- - 元数据,是文件的附加属性,如文件大小、创建时间、所有者等信息。
在Linux中,元数据中的`inode`号(inode是文件元数据的一部分但其并不包含文件名,inode号即索引节点号)才是文件的唯一标识而不是文件名。(例如对一个文件重命名(mv)但inode号仍相同)。
Linux中,文件名仅仅是为了方便人们的记忆和使用,系统或程序通过`inode`号寻找正确的文件数据块。
为了解决文件的共享使用,Linux系统提供一种文件:链接文件,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。
硬链接,以文件副本的形式存在,所有的硬链接都指向同一个iNode X,他们都享有同一个inode X和一个数据块(data block)。但硬链接本身并不占用实际存储空间。
就像是:一个文件(file)拥有多个文件名一样(file-硬链接1,file-硬链接2...)
每增加一个硬链接,只是增加一个计数。这个可以用ls -l查看。
root@nat1 ~]# ls -l useful*.sh
-rwxr-xr-x. 2 root root 436 Jul 19 2022 useful_hd.sh
-rwxr-xr-x. 2 root root 436 Jul 19 2022 useful.sh
```因此,修改任何一个硬链接文件,都会改变文件内容。
删除任何一个硬链接文件并不影响其他相同的inode号的文件。直到删除所有硬链接和源文件,才能删除该文件。
硬链接特性:
1。只能对已存在的文件进行创建(必须事先要有一个原始文件)
2。 硬链接必须在同一个文件系统里创建
3。不能对**目录**进行创建
软链接特点:
1. 软链接(file-软链接1)本身是一个单独的文件,拥有自己的inode Y 和自己的数据块。因此拥有自己的文件属性和权限。 最大的特点是:明确自己是符号链接文件,并存放了指向源文件(file)的inode X.
2. 创建软链接时候,链接计数i_nlink不会增加。只是强调自己是"l" (软链接)
[root@nat1 bin]# ls -l | grep ^l
lrwxrwxrwx. 1 root root 6 Jun 28 2022 apropos -> whatis
lrwxrwxrwx. 1 root root 4 Jun 28 2022 awk -> gawk
软链接特性:
1。 可对不存在的目录和文件创建软链接
2。 可以对存在的文件或目录建软链接
3。 可以跨文件系统创建软链接
4。 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接(即dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
5。 软链接创建时原文件的路径指向使用绝对路径较好,相对路径的话原文件移除后可能会成为死链接。
然后我们来看下怎么去创建软连接和硬链接
创建软链接
创建硬链接时 ln 命令不带任何参数,但是要创建软链接需要加上 -s 参数
ln -s file1 file3
用 ls -i 查看inode号
第一个标记位了解完后我们再来看后面的。将这一块分为四部分去看,分别对应ABCD去了解
rw- --- --- .
A B C D
第一部分A:是该文件所有者对文件的权限
第二部分B:该文件的所属组的用户对该文件的权限(大家如果在一个组里所拥有的权限是一样的)
第三部分C:表示你既不是这个组的所属人,也不是这个组的所属组成员中的人,那就把你定义为其他人。所以总结就是除了AB描述的用户的其他用户对该文件的权限。
第四部分D:表示为扩展权限,然后具体咋扩展那,咱在这边先不讲,
r 表示的是对文件内容的读取。
w表示的是对文件内容的修改。
X 表示的是对文件的可执行权,这边要注意一点,当一个文件不是可执行程序,就算有权限,咱也没办法执行。
- 表示的没有所对应位的权限。
root 代表的是当前文件的所有者
root 代表的是当前文件的所属组
这串数字 指的是文件的大小,在这里需要注意的是,如果这里是目录的话,该目录的大小不是该目录下所有文件的大小之和。
文件的时间**
8.0的版本后是有四个时间的,
访问时间(access time)、修改时间(modify time)、改变时间(change time)、创建时间(create time)。默认显示的时间是修改时间。
访问时间那:是当我们读取文件内容的那个时间;
修改时间指的是修改文件内容的时间;
改变时间是用来标记文件元数据发生变化的时候;
创建时间指的是文件创建的时间。
stat命令
stat 命令用于显示 inode 内容.
inode 包含文件的元信息,具体来说有以下内容:
- 文件的字节数
- 文件拥有者的 User ID
- 文件的 Group ID
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:ctime 指 inode 上一次变动的时间,mtime 指文件内容上一次变动的时间,atime 指文件上一次打开的时间。
- 链接数,即有多少文件名指向这个 inode
- 文件数据 block 的位置
``[root@localhost ~]# stat anaconda-ks.cfg`