- 实验目的:
- 掌握vi编辑器的启动、保存和退出;
- 掌握vi编辑器的三种工作模式的转换及输入模式下的操作;
- 了解Linux文件系统类型、虚拟文件系统和存储设备的名称;
- 掌握磁盘文件系统的挂载和卸载;
- 掌握常用磁盘操作命令;
- 掌握YUM本地源的配置;
- 掌握vi编辑器命令模式下和底行命令模式下的操作;
- 掌握文本块的移动和编辑多个文件的操作方法;
- 了解挂载大容量U盘和移动硬盘的方法。
- 实验内容:
在VMware中启动CentOS7虚拟机后,打开putty或者MobaXterm,远程登录root账号,完成以下任务,截图并粘贴于以下空行中。
注意,本次实验会对Linux系统的磁盘分区进行相关的操作,为避免操作后Linux系统出现问题,大家可以先在VMware的“虚拟机”菜单下,单击“快照”下的“拍摄快照…”。后期如果Linux系统出现问题,可以通过恢复此处的快照即可恢复到快照前的Linux系统。
初步掌握vi编辑器的三种工作模式。
用vi新建一个名为tales的文本文件(内容如下),熟悉三种工作模式的切换,最后保存退出。
There was once a poor Prince, who had a kingdom. His kingdom was very small, but still quite large enough to marry upon; and he wished to marry.
以前我们在配置网络IP地址、子网掩码、网关等时,用的是图形界面的方法,现在学习如何在字符界面下用vi修改相关配置文件的方法完成同样任务。利用vi编辑器配置网络接口设备文件(/etc/sysconfig/network-scripts/ifcfg-ens33)。用vi打开该文件,一般根据需要修改BOOTPROTO、ONBOOT、IPADDR、GATEWAN和METMASK等参数值,因此重点掌握这几个参数值的意义(参考教材P114)。利用此文件,进一步熟悉vi输入模式下的基本操作,如修改一些内容,最后“不保存”退出。最后修改此配置文件后,务必要重启network服务,才能使新的配置在当前系统中永久生效。重启network服务的命令为:
service network restart(CentOS7以前的用法,目前新版本中仍然可用)
或systemctl restart network(CentOS7的用法)
磁盘管理综合练习:为虚拟机中的Linux 系统增加一块新的1G硬盘,并且挂载到/home/newdisk。
步骤概要:
虚拟机添加硬盘
分区:fdsk /dev/sdb
格式化:mkfs -t xfs /dev/sdb1
挂载:新建目录:mkdir /home/newdisk;挂载:mount /dev/sdb1 /home/newdisk
取消挂载:unmount /dev/sdb1
自动挂载(永久挂载):系统重启后仍然可以挂载。vim etc/fstab 增加挂载信息;mount -a:生效
详细步骤:
第1步:新增硬盘。
先运行lsblk命令,以树状列出目录系统中的所有块设备(块设备有硬盘,闪存盘,cd-ROM等等)。lsblk(全称list block)命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。
为虚拟机中的CentOS7添加一块硬盘。在VMware的“虚拟机”菜单中,选择“设置”,在打开的对话框中的“硬件”标签页中,点击左侧下面一行中的“添加”按钮。然后在设备列表里添加硬盘(虚拟磁盘类型选择默认推荐的SCSI),一路按默认设置,点击“下一步”,直至到达选择磁盘大小的那一步,修改“最大磁盘大小”为1G,其实设置不变,点击“下一步”,直至完成。
运行lsblk命令,但并未发现新增加的那块硬盘(sdb)。原因是需要重启系统才能识别到(这类似于真实服务器增加一块硬盘,需要先断电,连上硬盘后也需要重启一样)。
输入reboot命令,重启CentOS7服务器,再次运行lsblk命令。此时可以查到新增加的硬盘,名字为sdb。但注意到此硬盘与系统已有的sda相比,没有分区(即没有类似的sdb1之类的分区)。
第2步:对新增的硬盘进行分区(fdisk)。
运行分区命令 fdisk /dev/sdb ,对名为sdb的新增硬盘进行分区(/dev目录存放连接到计算机上的设备的对应文件)。输入命令后回车。
仔细阅读该命令的提示信息,在“命令(输入 m 获取帮助):”后输入m后回车,会看到fdisk命令的帮助。重点注意其中几个主要的选项:
•d 删除分区
•m 显示命令列表
•n 新增分区
•p 显示磁盘分区,同 fdisk –l
•q 不保存退出
•w 将分区写入硬盘并退出
输入n回车,准备新增分区。接下来提示选择是创建主分区(p, primary)还是扩展分区(e, extended)?默认是新增主分区p,这里选择p回车(或直接回车)。接着询问分区号1-4。为简单起见,这里只创建一个主分区,所以选择1回车(如果此时输入后想修改,按住Ctrl+Backspace进行修改)。之后的起始扇区、最后扇区等直接回车(即取默认值)
最后必须将刚才的分区操作保存才能生效。在“命令(输入 m 获取帮助):”后输入w,将操作写入并退出。(若不保存退出输入 q。)
加选项-f再次运行lsblk命令,即lsblk -f命令(其中选项-f表示显示文件系统信息)。此时可以看到新增加的硬盘sdb下有一个分区sdb1。但是,此分区的FSTYPE(文件系统类型)值为空,且32位的十六进制的UUID(Universally Unique Identifier全局唯一标识符,UUID为系统中的存储设备提供唯一的标识字符串)值也为空,这说明此
分区没有格式化成某种格式的文件系统,还不能进行读取。
第3步:对新增硬盘的分区进行格式化(mkfs)。
运行命令:mkfs -t xfs /dev/sdb1。
此命令将第2步创建的sdb1分区格式化为CentOS7默认的xfs格式的文件系统,其中选项-t指定要格式化为何种文件系统。格式化后会给出结果信息。
再次运行命令:lsblk -f。可以看到,sdb1的FSTYPE值非空了,且值为xfs格式,UUID值也有了,说明此分区已经格式化完成。但是与前面已有的名为sda的硬盘下的分区相比,MOUNTPOINT(挂载点)为空,说明sdb1分区虽已格式化,但还没有挂载到系统中,不能被系统所用。
第4步:将硬盘一个分区挂载到Linux文件系统的一个目录(mount)。
利用命令mkdir在/home目录下创建一个名为newdisk的子目录。
运行命令mount /dev/sdb1 /home/newdisk,将刚刚格式化后的sdb1分区挂载到Linux系统中/home/newdisk目录。
再次运行命令:lsblk -f。可以看到sdb1分区的挂载点为/home/newdisk。
进入/home/newdisk,在此目录中随便新建一个目录和一个空文件,然后用ls命令查看,从而确认该分区已成功挂载到Linux系统中的指定的目录。(注意:Linux文件系统中/home/newdisk目录中刚刚新建的目录和空文件实际是放在新增的硬盘的sdb1分区中)
第5步:将已挂载的分区从文件系统的某个目录卸载(umount)。
接上,假设当前目录为/home/newdisk,输入命令umount /dev/sdb1 或者 umount /home/newdisk (即:umount后面可以跟指定要卸载的文件系统或者其对应的设备文件名均可)。
可以看到提示“目标忙”,其意思是说,当前要卸载的目标目前正在使用(事实上,当前目录正是该目标)因此无法卸载。解决办法是,退出该目录到任何一个不在该分区的目录里,再次运行命令umount /dev/sdb1 或者 umount /home/newdisk即可。
第6步:将分区永久挂载到Linux文件系统的某个目录(即系统启动时自动挂载)。
若不进行第5步的卸载操作,上述挂载的分区在CentOS7系统重启后失效,需要重新挂载才可使用。为了让系统启动时自动挂载,需要将挂载命令写入到配置文件中,此配置文件为/etc/fstab。利用vi打开此文件,仿照其中已经信息的格式填写以下信息(各项之间按Tab键隔开),最后保存退出即可。
/dev/ sdb1 / home/ newdisk xfs defaults 0 0
添加完成并保存退出后,执行 mount –a 立即生效。
进入/home/newdisk目录查看是否正常。
为虚拟机中的Linux 系统挂载fat32格式的U盘(如果挂载NTFS、exFAT格式的U盘,需要先安装相应驱动,参看本实验指导的附录)。
插入U盘并连接U盘。注意此时虚拟机不要登录图形界面,如果已经登录图形界面,请点击右上角电源图标,选择注销该用户,退出到用户登录界面。将U盘插入Windows主机的USB接口。此时VMware会弹出类似如下的对话框。
提示插入的设备不能同时在主机和虚拟机中使用。可通过2种方法将U盘连接到虚拟机中使用。第一种方法是点击“虚拟机”菜单中的“可移动设备”,根据U盘名字找到U盘,点击其子菜单中的“连接(断开与主机的连接)”;第二种方法是点击VMware窗口右下角状态栏中的U盘图标(即上图中的设备图标,通常位于最后),在弹出的菜单中选择“连接(断开与主机的连接)”。之后会弹出对话框,
点击“确定”后就将U盘连接到虚拟机中的Linux了。如果此时有用户已经登录图形界面,这时,在图形界面里就可以看到U盘图标,并可直接读取U盘里的内容。下面我们学习如何在字符界面中如何读取U盘内容。
查看U盘在系统中的设备名。在SSH客户端(如putty等)远程登录虚拟机,运行fdisk -l 或者lsblk命令查看此设备是否连接,且记住其名称,这里假设为/dev/sdc,其有一个名为sdc1的分区。
在虚拟机中新建U盘将要挂载的目录(挂载点),这里假设挂载点是/mnt/udisk。
挂载U盘。由于U盘的文件系统格式是fat32,且其中的文件或目录通常会是中文,因此,在写挂载命令时,需要将选项-t设为vfat,选项-o设为iocharset=utf8,即mount -t vfat -o iocharset=utf8 /dev/sdc1 /mnt/udisk(试试先不用这个选项,看看后面在读取U盘时,中文文件名或目录名变成什么样)
进行/mnt/udisk目录,查看U盘中的内容,并在U盘中新建一个名为abc.txt的文本文件。
卸载U盘(注意,如果遇到类似“umount: /mnt/udisk:目标忙。”是什么原因?如何处理)。此时U盘会自动被Windows主机识别,打开U盘查看刚刚在Linux系统中新建的文件abc.txt是否还在。
其它磁盘管理命令练习
使用du命令查看磁盘分区上的可使用的磁盘空间。默认显示单位为KB。
查看系统磁盘设备(不带任何选项)
使用-h选项以KB以上的单位来显示,可读性高。
使用-a选项查看全部文件系统。
使用-s选项只显示最后汇总的磁盘占用空间大小。
使用df命令查看被挂载的文件系统的信息。
显示所有被挂载的文件系统信息。
使用-h(以合适/人性化的容量单位显示)和-T(显示分区类型)查看全部文件系统,并回答/dev/sda1这个文件系统是什么分区类型?
dev/sda1这个文件系统是xfs分区类型
YUM本地源的配置(教材P106)
利用yum命令在线安装软件包很方便,但是出于安全性考虑,有时服务器不能连接外网,此时就不能采用在线安装方式。而CentOS7镜像文件中包含了大部分软件包,因此在没有网络的情况下,可以配置YUM源为本地的光盘,实现YUM本地源安装。以下分两步完成配置。
第1步:挂载光盘镜像。
首先确保在VMware的“虚拟机设置”中,已将光盘镜像文件连接上,如下图两处红色方框所示。
类似于前面挂载U盘,启动虚拟机后,不要登录,点击VMware窗口右下角状态栏中的光盘图标,在弹出的菜单中选择“连接(断开与主机的连接)”。这样,就将光盘连接到虚拟机中。这里就相当于将真实的光盘放入真实的服务器的光驱中。
在远程终端(如puuty等)使用lsblk -f查看光驱是否连接,并记住此光盘的设备名,默认为/dev/sr0。
在/mnt目录下新建/cdrom子目录。
将光盘挂载到/mnt/cdrom。
查看此挂载点,看是否可以成功读取光盘中的文件。
注:上述操作的挂载点是临时的,若要永久挂载,可以设置系统启动自动挂载,方法是在/etc/fstab配置文件的最后新添加一行,添加内容如下:
/dev/sr0 /mnt/cdrom iso9660 ro,relatime 0 0
第2步:配置本地安装源。
YUM的软件仓库配置文件都存在/etc/yum.repos.d/目录下,是以.repo为扩展名的7个文件,这些文件含有多个网上的镜像站点。先将原有的这些外网软件仓库配置文件备份(移动)到一个新建的名为/root/yum.repo目录中(也可以把原有的配置文件改名,如在原文件名后加.bak)。
使用vim编辑器在原软件仓库的配置目录下创建一个新的名为local.repo的本地源软件仓库文件,并在该新的配置文件local.repo内写入如下内容(注意其中“///”处有三个斜线,这里的第三个斜线表示根目录/),将repo文件指向光盘镜像文件的挂载目录(即第二行),最后保存退出vim。
[local]
name = local
baseurl= file:///mnt/cdrom
enabled= 1
gpgcheck=0
使用yum clean all命令,清除缓存。
使用yum makecache命令,把YUM源缓存到本地。
使用yum repolist all命令,查看使用的软件仓库是否是本地源,即是否加载的是本地光盘镜像文件。
利用YUM本地源(光盘镜像文件)安装软件包。
这里以安装httpd软件包为例,练习YUM的本地源安装。httpd软件包用来安装Apache服务器,Apache(Apache HTTP Server)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、Nginx、IIS,此外还有Tomcat、Lighttpd、Zeus等。(可参考教材P37,P195)
先用rpm -qa|grep httpd 查找本地源中的httpd服务软件。
根据查询到的安装软件名,使用yum install httpd.x86_64命令安装http软件。
安装完成后,使用systemctl status httpd命令查看Apache服务“httpd.service”的运行状态。
使用systemctl restart httpd命令,启动Apache服务。然后再次查看Apache服务的运行状态。注意与上一步状态的不同。
在Windows主机的浏览器中输入CentOS7服务器的IP地址(此IP可在虚拟机中用ifconfig命令查看得到),尝试打开网页。如果网页打不开,需要打开虚拟系统CentOS7的防火墙,并打开HTTP的80端口,具体方法如下:
执行以下命令查看防火墙80端口是否打开。
firewall-cmd --query-port=80/tcp
如果结果显示为no,执行以下命令打开80端口。
firewall-cmd --permanent --add-port=80/tcp
如果显示success,表明成功打开,接着输入以下命令重启防火墙。
firewall-cmd --reload
如果显示success,表明成功重启防火墙服务,接着输入systemctl restart httpd,重启httpd服务。
最后刷新之前的IP地址,若出现以下页面内容,则说明Apache服务配置成功。
注:为了以后CentOS7服务器能够正常在线安装RPM软件包,以上实验完成后,请记得将之前份的7个repo文件恢复到原来的/etc/yum.repos.d/目录下,并将自己的创建的local.repo文件删除。然后运行yum clean all命令清除缓存,运行yum makecache命令,把YUM源缓存到本地。
按照教材相关内容,自行进行vi命令模式练习。(不用截图)
按照教材相关内容,自行进行vi底行命令模式练习。(不用截图)
按照教材相关内容,自行进行vi的文本移动和编辑多个文件的练习。(不用截图)
打开vi编辑器,进行如下操作(每小题先写出命令,再粘贴结果截图):
插入2019年日历,并把该文件命名为2019.txt。
vi 2019.txt
把4、5、6月的日历整体向右移动一个制表位。
: set ts=8 ;shift+v ;>
把该日历的标题“2019”改为“2019年全年日历”。
:ls/2019/2019Full Year Calendar/ ; :wq
删除1、2、3月的日历,然后予以恢复。
进入vi编辑器后,按下Esc键,然后输入:1,12d删除1到12行,即1、2、3月的日历。接着按下u键进行撤销操作,恢复删除的内容。完成后按下Esc键,输入:wq保存并退出vi编辑器。
把7、8、9月的日历整体移到日历的最后面。
进入vi编辑器后,按下Esc键,然后输入:1,6m$将1到6行(7、8、9月的日历)移动到最后。完成后按下Esc键,输入:wq保存并退出vi编辑器。
依次检索字符串“30”,如果每个月的最后一天为“30”,则删除该字符串“30”。
进入vi编辑器后,按下Esc键,然后输入:1,$s/30$//g将每个月最后一天为"30"的字符串删除。完成后按下Esc键,输入:wq保存并退出vi编辑器。
显示行号。
vi -c “set number” 2019.txt
在该vi编辑器中统计该文件的大小。
ls -lh 2019.txt
已知有两个文本文件f1和f2,把f1文件中的第5~9行剪切并插入粘贴到f2文件的第3行后,再把f2文件中的所有read字符串全部改写成reading,最后在f1文件后附加上当前时间。利用vi编辑器写出以上操作步骤及其相关命令。(只写命令)
首先用vi打开两个文本文件f1和f2,执行命令:
vi f1
vi f2
此时编辑为f1下,把光标移到第5行,执行剪切命令:
:5,9d
然后把剪切后的f1存盘,命令:
:wq
之后转到编辑f2文件下,命令:
:q
vi f2
进入到f2下把光标移到第3行,执行粘贴命令:
: 3put
粘贴后,把f2文件中的所有read字符串全部改写成reading,执行全局替换命令:
:%s/read/reading/g
为了在f1文件后附加上当前时间,由于当前为f2文件的编辑状态下,因此先把f2存盘,再返回f1的编辑状态下,存盘和返回f1的两个命令分别是:
:wq
:q
vi f1
进入到f1编辑状态下后,把光标移到最低,执行插入shell命令,插入当前时间,命令为:
: $r!data