重启CentOS后,会出现如图2-27所示的黑框,提示我们登录。这个登录界面没有出现任何图形,因为我们没有安装与图形相关的程序包。如果你想使用图形界面,可以在进入系统后安装图形套件,然后切换到图形界面就可以了。
图2-27 登录
在如图2-27所示的黑框里单击鼠标,在
localhost login:
后面输入
root
并按回车,然后输入先前设置的root密码,进入CentOS系统,如图2-28所示。
图2-28 进入CentOS系统
由于在安装系统时需要联网下载安装源,所以CentOS 8当前已经可以联网了,只不过当前的IP地址是自动获取到的。由于前面创建虚拟机时,我们已经将这台机器设置成NAT网络模式,因此后续的操作都是基于NAT模式,如果是桥接模式,则操作基本类似。
请运行如下命令:
# ip add
此时将返回如图2-29所示的信息。
图2-29 查看IP地址
ip add
命令就是用来查看IP地址的。这里请大家注意英文字母的大小写,因为Linux操作系统是区分大小写的。从图2-29中可以看出,这台机器有两个IP地址。第一个地址127.0.0.1是回环地址,网卡名字叫作lo,Windows操作系统也有该地址,用于自己和自己通信。第二个地址192.168.72.128就是它自动获取到的IP地址,其中ens33就是网卡的名字。你获取到的IP地址和阿铭的可能不一样,这是因为VMware分配的地址段不一样,请大家放心,这并不是你没有配置对。另外,你的网卡名字也不一定是ens33,这个不一样也是没有关系的。下面阿铭教你怎么看VMware NAT网络模式的网段是多少。
首先同时按下Ctrl和Alt这两个键,释放鼠标,然后单击VMware虚拟机左上角菜单栏中的“编辑”,选择“虚拟网络编辑器”,此时会弹出如图2-30所示的界面。
图2-30 虚拟网络编辑器
选中VMnet8(NAT模式),此时下面就可以看到子网IP为192.168.72.0,子网掩码为255.255.255.0,我们获取到的那个IP就在这个子网里面。然后单击右侧的“NAT设置”按钮,此时会出现如图2-31所示的界面。
图2-31 NAT设置
在这个界面中,我们会看到网关IP为192.168.72.2。请大家记住这个网关地址,因为接下来还会用到它。
我们先来测试一下CentOS 8是否可以联网。请大家注意,你的CentOS 8能联网的前提是你的物理机可以联网。输入如下命令进行测试:
# ping -c 4 www.aminglinux.com
运行结果如图2-32所示。
图2-32 测试网络
ping
命令很多朋友用过,它是用来检测网络连通性的工具。图2-32所示的结果表示本机是可以联网的。如果你的结果和阿铭的不同,那说明你的设置很有可能有问题,请添加阿铭微信获取帮助。
虽然CentOS 8已经可以联网,但阿铭觉得这还不够,因为你还不会手动给CentOS 8设置IP地址。在日常的运维工作中,我们是需要手动给Linux系统设置IP地址的。下面阿铭教你如何手动设置。输入如下命令:
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
请大家注意,在Linux系统下,命令后面是需要带空格的,这个命令里的
vi
是一个用来编辑文本的命令,第7章会详细介绍它。它后面先是一个空格(当然跟多个空格也没错),再是一个文件的存储路径。这个文件是网卡的配置文件,要想修改IP地址,就得编辑它。你的网卡配置文件的名字和阿铭的(ifcfg-ens33)可能不一样,这个主要由你的网卡名字决定。按回车后,进入如图2-33所示的界面。
图2-33 网卡配置文件
进入网卡配置文件后,可以使用上、下、左、右方向键去移动光标,但不能直接修改文件内容。要想修改文件内容,需按字母I键。我们需要修改的内容有,将
BOOTPROTO="dhcp"
改为
BOOTPROTO="static"
,并增加如下几行字符:
IPADDR=192.168.72.128
NETMASK=255.255.255.0
GATEWAY=192.168.72.2
DNS1=119.29.29.29
这里需要说明的是,
BOOTPROTO
用于设置网卡的启动类型,其值为
dhcp
表示自动获取IP地址,为
static
表示手动设置静态IP地址。添加字符中的
IPADDR
指定IP地址(请不要设置和阿铭一样的IP地址,因为你的IP地址取决于前面自动获取到的地址),
NETMASK
指定子网掩码,
GATEWAY
指定网关(这个网关就是刚刚阿铭让大家记住的网关地址),
DNS1
指定上网用的DNS IP地址,这个119.29.29.29是国内DNSpod公司提供的一个公共DNS IP地址。完成以上修改后,按一下Esc键,紧接着输入“:wq”并按回车,退出刚才的网卡配置文档。然后重启网卡,运行如下两条命令:
# nmcli c reload ens33
# nmcli d reapply ens33
其中,第一条命令的作用是重新加载网卡配置文件,但它并不会马上生效,第二条命令的作用是使第一条命令马上生效。然后查看一下IP地址:
# ip add
如果正确的话,你看到的结果依然如图2-29所示。当然,还需要再测试一下网络连通性,此时输入如下命令进行测试:
# ping -c 4 www.aminglinux.com
在日常运维管理工作中,快捷键可以大大提高我们的工作效率。在Linux系统中,常用的快捷键如下。
Ctrl+C
:结束(终止)当前命令。假如你输入了一大串字符,但不想运行,则可以按Ctrl+C组合键,此时光标将跳入下一行,而刚刚的光标处会留下一个
^C
的标记,如图2-34所示。
图2-34 结束命令
Tab :实现自动补全功能。这个键比较重要,使用频率也很高。当你输入命令、文件或目录的前几个字符时,它会自动帮你补全。比如,前面阿铭教大家编辑网卡配置文件时的文件路径很长,这时结合Tab键就会很轻松。
exit
实现该功能。
fg
命令恢复该进程,该知识点会在第10章中介绍到。
man
命令
man
命令用于查看命令的帮助文档,其格式为“
man [命令]
”。例如,输入如下命令:
# man ls
就可以查看
ls
命令的帮助文档,如图2-35所示。
图2-35
man
命令
如果屏幕不能完整显示整个帮助文档,可以按空格键下翻,或者按上下方向键前后移动文本。若想退出帮助文档,则按字母键Q。当然,要想看明白这个文档,还需要有一定的英文阅读能力。
man
命令非常实用,尤其是对于初学者,在我们新学一个命令,总是记不住或记不清它的各个选项的用法时,随手运行一下
man
命令,就可以找到了,非常方便!同时,阿铭相信经常查看英文的文档也会提升你的英文阅读能力。
登录Linux系统后,在当前命令窗口下输入如下命令:
# ls /
此时将会出现如图2-36所示的界面。
图2-36 列出根目录
你的结果可能和阿铭的有所不同,不要紧,目前我们探讨的不是差异,而是相同的地方。其中,
ls
是list的缩写,该命令用于列出指定目录或者文件。
/
是Linux操作系统里面最核心的一个目录,所有的文件和目录全部在它下面,所以称它为“根目录”。前面讲磁盘分区时,阿铭也是单独给它分了一个区的。大家要逐渐适应Linux系统的特性,毕竟它和Windows有太多的差异。
通过2.3.4节中提到的命令
man ls
,可以了解
ls
命令的具体用法。对于
ls
这个最常用的命令,阿铭在这里举几个简单的例子帮你快速掌握其用法:
# ls
anaconda-ks.cfg
# ls -a
. .. anaconda-ks.cfg .bash_logout .bash_profile .bashrc .cshrc .tcshrcy
# ls -l
总用量 4
-rw-------. 1 root root 1435 12月 26 08:10 anaconda-ks.cfg
# ls anaconda-ks.cfg
anaconda-ks.cfg
# ls /var/
adm crash empty games kerberos local log nis preserve spool yp
cache db ftp gopher lib lock mail opt run tmp
说明 其中以
#
开头的行都是运行的命令,#
下面的内容是命令运行后的结果。你的结果可能和阿铭的有所不同,但不要紧,这是因为你的系统和阿铭的系统是存在一些差异的。如果有任何异议,请联系阿铭获取帮助。下面阿铭来讲解一下以上几个小案例的含义。
- 后面不加任何选项也不跟目录名或者文件名 :会列出当前目录下的文件和目录,不包含隐藏文件。
- 后面加
-a
选项、不加目录名或者文件名 :会列出当前目录下所有文件和目录,含有隐藏文件。- 后面加
-l
选项、不加目录名或者文件名 :会列出当前目录下除隐藏文件外的所有文件和目录的详细信息,包含其权限、所属主、所属组以及文件创建日期和时间。- 后面不加选项、只跟文件名 :会列出该文件,通常在使用时都会加上
-l
选项,以查看该文件的详细信息。- 后面不加选项、只跟目录名 :会列出指定目录下的文件和目录。
其实,
ls
命令的可用项还有很多,阿铭只是介绍了最常用的选项。因为在日常工作和学习中,这些已经足够。如果实在遇到不懂的选项,可以用
man
命令来查看帮助文档。
下面我们接着来讨论Linux的目录结构。
/proc
:该目录是一个虚拟目录,是系统内存的映射,可以直接访问它来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的
ping
命令,使其他人无法
ping
你的机器。在日常工作中,你会经常用到类似的用法:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all`
这些目录中有几个重要的需要大家注意,不要误删除或者随意更改其内部文件。下面阿铭再简单对它们总结一下。
ls
命令就存放在/bin/目录下。
mail
命令的预设也放置在这里。
Linux主要用在服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在Linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源开关关机,其他人的数据可能就此中断。更严重的是,若不正常关机,严重时可能会造成文件系统损坏,从而导致数据丢失。
如果要关机,必须要保证当前系统中没有其他用户在登录系统。可以使用
who
命令查看当前是否还有其他人在登录,或者使用命令
ps -aux
查看是否还有后台进程在运行。
shutdown
、
halt
、
poweroff
都为关机的命令,我们可以使用命令
man shutdown
查看其帮助文档。例如,可以运行如下命令关机(
//
符号后面的内容为注释):
# shutdown -h 10 // 计算机将在10分钟后关机,且会显示在登录用户的当前屏幕中
# shutdown -h now // 立即关机
# shutdown -h 20:25 // 系统会在20:25关机
# shutdown -h +10 // 10分钟后关机
# shutdown -r now // 立即重启
# shutdown -r +10 // 10分钟后重启
# reboot // 重启,等同于shutdown -r now
# halt // 关闭系统,等同于shutdown -h now和poweroff
不管是重启系统还是关闭系统,首先要运行
sync
命令,该命令可以把当前内存中的数据写入磁盘中,防止数据丢失。
再来总结一下,关机的命令有
shutdown -h now
、
halt
、
poweroff
和
init 0
,重启系统的命令有
shutdown -r now
、
reboot
和
init 6
。
以前阿铭忘记了Windows的管理员密码,当时不会用光盘清除密码,最后只能重装系统。现在想来那是多么愚笨的一件事情。同样,如果你忘记了Linux系统的root密码,该怎么办呢?重新安装系统吗?当然不用!你只需要进入紧急模式(emergency mode)更改root密码即可。在CentOS 6中,我们是进入单用户模式修改root密码的,但在CentOS 7和CentOS 8中已经没有单用户模式了,而是这个紧急模式,具体操作步骤如下。
重启系统
按3秒钟向下的方向键,目的是不让它进入系统,而是停留在开机界面,如图2-37所示。
图2-37 开机界面
按方向键移动光标,定位在第一行,按字母E键编辑它,然后进入另外一个界面,此时会出来很多字符,这些是CentOS 8启动选项,那么这些字符有什么用呢?我们暂时先放一放,不用太过关心。移动向下的方向键,把光标定位到linux开头的行。
进入紧急模式
按向右的方向键,将光标移动到
ro
这里,把
ro
改成
rw init=/sysroot/bin/sh
,如图2-38所示。
图2-38 修改
ro
然后同时按Ctrl和X这两个键,系统就会进入如图2-39所示的界面,这样就正式进入了紧急模式。
图2-39 紧急模式
修改root密码
首先切换到原始系统,然后修改密码,操作过程如图2-40所示。
图2-40 修改密码
其中
chroot
命令用来切换系统,后面的 /sysroot目录就是原始系统(也就是我们的CentOS 8系统),在这个下面才可以修改root密码。
passwd
命令就是修改root密码的命令,5.3.1节还会介绍它。但运行命令后,返回的结果很奇怪,出现了很多小方块,俗称乱码。其实这些小方块本来是汉字,但是VMware并不支持中文。如果大家知道
passwd
命令的用法,此时连续输入两次新密码就可以了。但作为新用户,第一次看到乱码肯定会不知所措,请跟着阿铭一起输入
LANG=en
,这个命令就是把当前终端的语言设置为英文。再次运行
passwd
命令,就可以正常显示字符了。
密码虽然修改完了,但是还需要一个额外的操作,相关命令如下:
# touch /.autorelabel
注意,这个文件名字一定要写对,否则修改的密码将不能生效。执行这一步的作用是让SELinux生效,如果不执行,则之前修改的密码是不会生效的。也就是说,即使你之后输对了密码,也无法登录系统。至于SELinux是什么,13.4.1节会详细介绍。执行完
touch
命令后,同时按Ctrl和D这两个键,再输入命令
reboot
,这样系统会重启,等待几秒后,出现登录界面,此时使用我们新设置的密码登录即可。
救援模式即rescue模式,这个模式主要应用于无法进入系统的情况,比如grub损坏或者某一个配置文件修改出错。那么,如何使用救援模式呢?具体的操作方法如下。
启动光驱
首先检查你的光驱是否是开机启动。具体方法是把鼠标挪到VMware右下角的小光盘图标处,单击它,此时会出现两个选项,选择“设置”选项,会弹出“虚拟机设置”对话框,看一下右侧的“设备状态”,要保证这两个对钩都是打上的,如图2-41所示。
图2-41 设备状态
但此时,重启系统并不会进入光驱启动界面,这还需要我们设置一个VMware的BIOS。由于VMware启动很快,往往我们还没有来得及按F2键(要进入BIOS,需要按F2键),它就已经进入系统的启动界面了。这里有一个技巧,首先把CentOS 8关机,然后在VMware左侧选中这台虚拟机并右击,从中选择“电源”→“启动时进入固件”,如图2-42所示。
图2-42 进入BIOS
进入BIOS后,按向右方向键,选择Boot,然后按“-”或者“+”键调节各个启动对象,其中有硬盘、光驱、网卡等,总之结果是要让CD-ROM Drive在最前面,也就是让它第一个启动。最终的结果如图2-43所示。
图2-43 BIOS
设置完这步之后,直接按F10键保存设置并退出。
进入救援模式
随后进入光驱启动界面,使用上下方向键选择Troubleshooting,如图2-44所示。
图2-44 选择Troubleshooting
按回车后,又出现如图2-45所示的界面,使用向下方向键选择Rescue a CentOS Linux system。
图2-45 选择Rescue a CentOS Linux system
按回车后,会出现如图2-46所示的界面。
图2-46 救援选项
图2-47中有一些提示,它告诉我们,初始系统在/mnt/sysimage目录下面,其实这和上一节的/sysroot类似。这里有4个选项:选择第1) 项,将会继续往下走;选择第2) 项,将会把初始的系统挂载为只读模式,我们不能写磁盘,也就意味着不能再修改配置文件,也不能修改root密码;选择第3) 项,会直接出现一个shell;而选择第4) 项,则会重启。
这里选择第1) 项,所以输入数字1并回车,如图2-47所示。它又告诉我们:初始系统已经挂载到了 /mnt/sysimage目录下面,要想进入初始系统下面,需要执行
chroot /mnt/sysimage
命令,请再次按回车获取到shell。
图2-47 获取shell
进入初始系统后,执行修改root密码的命令
passwd
,如图2-48所示。
图2-48 修改root密码
其实,执行完
chroot
命令之后,会发现命令行的前后有一处变化,即原来的
sh-4.4
变成了
bash-4.4
,这就是因为环境变量发生了变化,第10章再讨论这个知识点。当然,救援模式并非只有修改root密码这么简单的作用,我们还可以在救援模式下处理一些故障、修复数据等。要想退出救援模式,也很简单,先使用Ctrl+D组合键退出原始系统,然后执行
reboot
命令即可。但是重启后你会发现,它进入的依然是光驱启动界面。所以,我们还需要再设置一遍BIOS,让硬盘第一个启动。这里还有一种方法,设置VMware,关闭光驱即可。