持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
1、组管理与权限管理
在Linux中的每个用户必须属于一个组,不能独立于组外。 在Linux中每个文件有所有者、所在组、其他组的概念。
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
1.1、文件/目录 所有者
一般为文件的创建者,谁创建了改文件,谁就称为该文件的所有者。
1.2.1、查看文件的所有者
指令: ls -ahl
- a: 显示隐藏文件
- h: human 以适合阅读的方式展示
- l: 列出完整信息 如权限...
1.2.2、修改文件所有者
指令:chown 用户名 文件名
不论所有者是谁都需要root用户改权限
- 使用 root 创建一个文件 apple.txt,然后将其所有者修改为 tom
展示结果的意义/解析:
权限 连接 所有者 所属组 容量 修改日期 文件名
1.2、组的创建
基本语法:groupadd 组名
- 创建一个组 monster
groupadd monster
- 创建一个用户 fox,并放入到 monster 组中
useradd -g monster fox id fox # 查看当前用户fox是哪个组的
1.3、文件/目录 所在组
这个文件属于创建这个文件的所有者所在的组
1.3.1、查看文件/目录所在组
基本指令: ls -ahl 由于 -l 所展示的信息很足(包括一些权限信息、容量、连接数等)
1.3.2、修改文件/目录所在的组
基本指令: chgrp 组名 文件名
- 使用 root 用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组
groupadd fruit
touch orange.txt
chgrp fruit orange.txt # 修改改文件的组名,为指定的组名
PS:修改用户所在组用 usermod。修改文件所在组用 chgrp,chown是修改文件所在者
1.4、其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
1.5、改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
基本语法:
usermod -g 新组名 用户名
usermod -d 目录名 用户名改变该用户登录的初始目录。 特别说明:用户需要有进入到新目录的权限。
- 将 zwj 这个用户从原来所在组,修改到 wudang 组
usermod -g wudang zwj
PS:修改用户所在组用 usermod,修改文件所在组用 chgrp,chown是修改文件所在者
1.6、权限的基本介绍
我们使用 ls -l 指令查看
0-9位说明:
- 第 0 位确定文件类型
| 文件类型 | 含义 |
|---|---|
| l(link) | 链接,相当于 windows 的快捷方式 |
| d(directory) | 目录,相当于 windows 的文件夹 |
| - | 普通文件,.txt等 |
| c(character device) | 字符设备文件,鼠标键盘等 |
| b(block device) | 块设备,比如硬盘 |
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 User
- 第4-6位确定所属组(同用户组的)拥有该文件的权限。 Group
- 第7-9位确定其他用户(其他组)拥有该文件的权限。 Other
1.6.1、rwx权限详解
1、rwx 作用到文件
- r 代表可读 read:可以读取,查看
- w 代表可写 write:可以修改,
但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件 - x 代表可以执行 execute: 可以被执行
2、rwx作用到目录
- r 代表可读 read:可以读取,ls查看目录内容
- w 代表可写 write:可以修改,对目录内创建文件、删除文件、重命名目录
- x 代表可以执行 execute: 可以进入该目录
如何理解删除文件需要有该目录的写操作?
因为删除该文件实际上是删除所在目录对该文件的引用地址,所以删除文件实际上是要对所在目录进行写操作。
3、实例
-rwxrw-r-- 1 root root 1213 Feb 2 08:06 abc
对上述实例的返回结果解析:
例如上述显示内容:权限的10个字符能够确定对不同用户所能进行的操作
第一个字符代表文件类型: - l d c b
其余字符3个一组(rwx) 读(r) 写(w) 执行(x)
第一组 rwx:文件拥有者的权限是 可读可写可执行
第二组 rw-:与文件拥有者同一组的用户(同组)的权限是 可读可写不可执行
第三组 r--:不与文件拥有者同组的其他用户(其他组)的权限是 可读不可写不可执行
1 :文件:硬连接数 或者 目录:子目录数 (注意 是子目录数!不包括如文件等)
root: 用户名
root: 组名
1213:文件大小(字节),如果是文件夹,显示 4096字节
Feb 2 08:06:最后修改日期
abc:文件名
1.6.2、修改权限
通过 chmod 指令,可以修改文件或者目录的权限。
1、第一种方式修改
第一种方式:+、-、= 变更权限(+表示增加权限、- 表示取消权限、= 表示唯一设定权限)
- u:所有者
- g:所有组
- o:其他人
- a:所有人(u,g,o的总和)
基本语法:
chmod u=rwx,g=rx,o=x 文件/目录名 功能描述 (使文件/目录的所有者拥有rwx的权限,使文件/目录的所有组的权限为 rx,使文件/目录的其他人的权限为 x)
chmod o+w 文件/目录名 功能描述 (使文件/目录的其他人的权限增加 w)
chmod a-x 文件/目录名 功能描述 (使文件/目录的所有人的权限撤销 x)
- 给 abc 文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限。
chmod u=rwx,g=rx,o=rx abc
- 给 abc 文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
- 给 abc 文件的所有用户添加读的权限
chmod a+r abc
2、第二种方式
第二种方式是通过数字变更权限
r = 4,w = 2,x = 1,rwx = 4+2+1=7
基本语法:
chmod u=rwx,g=rx,o=x 文件/目录名相当于chmod 751 文件/目录名
- 将 /home/abc.txt 文件的权限修改成 rwxr-xr-x,使用数字方式实现
chmod 755 /home/abc.txt
1.6.3、修改文件所有者
基本语法:
chown newowner文件/目录改变所有者chown newowner:newgroup文件/目录 改变所有者和所在组- -R 如果是目录,则使其下所有子文件或目录递归生效
- 将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
- 将 /home/test 目录下所有的文件和目录的所有者都修改成 tom
chmod -R tom /home/test
1.6.4、修改文件/目录所在组
基本语法:
chgrp newgroup 文件/目录改变所在组
- 将 /home/abc.txt 文件的所在组修改成 shaolin
chgrp shaolin /home/abc.txt
- 将 /home/test 目录下所有的文件和目录的所在组都修改成 shaolin
chgrp -R shaolin /home/test
PS:以上两个指令 chown(修改文件所有者)、chgrp(修改文件所在组)在前面其实已经提到过了,这里只是增加了个选项 R。用于递归改变该目录下的所有子文件
1.6.5 警察与土匪案例
userdel -r jack # 删除 jack 用户
# 创建 police与bandit两个组
groupadd police
groupadd bandit
# 创建 jack、jerry、xh、xq四个用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
# jack 创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限
su -jack
cd /home/jack
touch jack.txt # 创建文件的时候,系统本身就会给它分配一个权限
chmod 640 jack.txt
# jack 修改该文件,让其他组的人可以读,本组人可以读写
chmod 664 jack.txt
# xh 投靠警察,看看是否能读写(这里是改变用户所在组!)
su -root
usermod -g police xh(这一条需要root用户来改变,普通用户没有这个权限)
# 测试,看xh是否能去查看jack的文件
su -xh
cd /home/jack(很明显查看不了,因为jack的同组中,并没有打开可执行权限...所以不行)
su -jack(切换到jack或root用户进行权限升级)
cd /home
chmod 770 jack
ll (可以看到 jack的home目录的同组权限已经被打开了)
su -xh
cd /home/jack(这次就进得去了 PS:必须要给执行权限,才能访问文件)
cat jack.txt(由于也赋给同组r的权限,所以可以进行查看该文件)
vim jack.txt(本应该可以进行w的权限的,但因为jack.txt文件并没有打开w的权限,所以无法进行w操作)
su -jack
cd /home/jack
chmod g+w jack.txt(增加w权限)
su -xh
vim /home/jack/jack.txt(此时就可以对该文件进行编辑了)
PS:对文件能够进行编辑的一个前提条件是:该文件的文件夹必须是可写的,第二个条件是:该文件也必须是可写的
1.6.6、细节小结
- 关于在 root 下创建普通用户之后,想在普通用户下创建文件的时候,需要在该普通用户的对应 home目录下才能创建文件🙄 否者你没有权限创建文件...
su -用户名 用来切换用户chmod 可以修改文件所有者,chgrp 可以修改文件所在组,usermod 是修改用户所在组的必须给可执行的权限才能进去,rw进不去(指 cd不了,打开不了)- 对于目录的 rwx 权限操作
- r:代表可以 ls ,将目录的内容显示出来
- w:代表可以在该目录下删除或者创建文件or文件夹
- x:代表可以进入到该目录,比如 cd
PS:对文件能够进行编辑的一个前提条件是:该文件的文件夹必须是可写的,第二个条件是:该文件也必须是可写的。
总而言之:目录权限是文件权限的大门
2、定时任务调度
2.1、crond指令
crond 是Linux定期执行程序的命令。
crond命令 每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
任务调度:是指系统在某个时间执行的特定的命令或程序(有点像闹钟)
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 的数据库的备份
crontab 命令是 cron table 的简写,它是cron的配置文件,也可以叫它作业列表
基本语法:crontab [选项]
| 选项 | 说明 |
|---|---|
| -e | 编辑 crontab 定时任务 |
| -l | 查询 crontab 任务 |
| -r | 删除当前用户所有的crontab任务 |
- 设置个人任务调度,执行 crontab -e 命令然后回车
- 接着输入任务到调度文件
# 每小时的每分钟执行 以下指令
*/1 * * * * ls -l /etc > /temp/to.txt # 把etc目录下面的内容以列表的形式显示到终端然后将其重定向到 temp/to.txt 文件
PS:要先使用 crontab -e 来保存定时任务指令(*/1 * * * * ls -l /etc > /temp/to.txt)
crontab 的文件格式
2.2、参数细节说明
5个占位符的说明
| 占位符 | 含义 | 范围 |
|---|---|---|
| 第一个 * | 一小时当中的第几分钟 | 0-59,如果写的是 */1,代表每一分钟都执行 |
| 第二个 * | 一天当中的第几小时 | 0-23 |
| 第三个 * | 一个月当中的第几天 | 1-31 |
| 第四个 * | 一年当中的第几月 | 1-12 |
| 第五个 * | 一周当中的星期几 | 0-7(0、7都代表星期日) |
特殊符号说明
| 特殊符号 | 含义 |
|---|---|
| * | 代表任何时间。比如第一个 * 就代表一小时中每分钟都执行一次的意思 |
| , | 代表不连续时间。比如 0 8,12,16 * * * 命令,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
| - | 代表连续的时间范围,比如 0 5 * * 1-6 命令,代表在周一到周六的凌晨5点0分执行命令 |
| */n | 代表每隔多久执行一次。比如 */10 * * * * ,代表每隔10分钟就执行一遍命令 |
特殊时间执行案例
| 时间(分 时 日 月 星期) | 含义 |
|---|---|
| 45 22 * * * | 在22点45分执行命令 |
| 0 17 * * 1 | 每周1的17点0分执行命令 |
| 0 5 1,15 * * | 每月1号和15号的凌晨5点0分执行命令 |
| 40 4 * * 1-5 | 每周一到周五的凌晨4:40分执行一次命令 |
| */10 4 * * * | 每天的凌晨4点,每隔10分钟执行一次命令 |
| 0 0 1,15 * 1 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
2.2.1 crontab命令案例
- 每隔一分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
crontab -e
*/1 * * * * date >> /tmp/mydate.txt # 将该任务写入crond指令中
- 每隔一分钟,将当前日期和日历都追加到 /home/mycal 文件中
vim mycal.sh # 在其中写入 date >> /home/cal.txt 和 cal >> /home/cal.txt
chmod u+x /home/mycal.sh # 给该脚本打开执行权限
crontab -e
*/1 * * * * /home/mycal.sh
- 每天凌晨 2:00 将 mysql 数据库 test,备份到 /home/db.bak 文件中。
crontab -e
0 2 */1 * * mysqldump -u root -p123456 test > /home/db.bak
PS:这里存在疑问:每天是只用 * 即可还是用 */1 也行? 其实它们一样的 0.0
- 每1分钟执行一次cmd
* * * * * cmd
- 在上午8点到11点的第3和第15分钟执行cmd
3,15 8-11 * * * cmd
2.3、crond相关指令
- conrtab -e 编辑用户的Crontab文件
- conrtab -r 终止任务调度
- crontab -l 列出当前有哪些任务调度
- service crond restart 重启任务调度
2.4、at定时任务
at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行- 默认情况下,atd 守护进程每 60s 检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业 (所以 atd进程是用来检查是否有要执行的 at定时任务。他会去队列中找)
at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了- 在使用 at 命令时,一定要保证 atd 进程的启动,可以使用相关指令来查看
ps -ef 查看当前处于运行时的进程信息
基本语法:
- at [选项] [时间]
- Ctrl + D 结束 at 命令
| 选项 | 说明 |
|---|---|
| -m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
| -i | atq的别名(用于查看还没有执行的任务) |
| -d | atrm的别名(用于删除指定任务) |
| -v | 显示任务将被执行的时间 |
| -c | 打印任务的内容到标准输出 |
| -V | 显示版本信息 |
| -q<队列> | 使用指定的队列 |
| -f<文件> | 从指定文件读入任务而不是从标准输入读入 |
| -t<时间参数> | 以时间参数的形式提交要运行的任务 |
2.4.1、at时间定义
at 指定时间的方法:
接受在当天的 hh:mm(小时,分钟)式的时间指定。假如该时间已过去,那么久放在第二天执行。例如: 04:00- 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午四点)等比较模糊的词语来指定时间
采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm指定命令执行的具体日期,指定格式为 month day(月 日) 或者 mm/dd/yy(月/日/年) 或者 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04::00 2023-11-23使用相对计时法。指定格式为:now + count time-units,now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。例如: now + 5minutes- 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间
2.4.2、at 案例
- 2天后的下午5点执行 /bin/ls/home
- atq 命令来查看系统中没有执行的工作任务
- 明天17点钟,输出时间到指定文件内,比如 /root/data100.log
at 5pm tomorrow at> /root/data100.log
- 2分钟后,输出时间到指定文件内,比如 /root/date200.log
at now + 2 minutes at> /root/data200.log
- 删除已经设置的任务,atrm编号
atrm n(n=1,2,3...) 表示将 job 队列,编号为4的job删除。
3、磁盘分区、挂载
- 对于 Linux 来说无论有多少个分区,分给哪一目录使用,它归根结底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
Linux 采用了一种叫做"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3.1、硬盘说明
- Linux 硬盘分 IDE 硬盘 和 SCSI 硬盘,目前基本上是 SCSI 硬盘
- 对于IDE硬盘,驱动器标识符为 “hdx~”,其中hd 表明分区所在设备的类型,这里是指 IDE 硬盘了。 x 为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~ 代表分区,前四个分区用数字1到4表示,它们是主分区或者扩展分区,从5开始就是逻辑分区。
例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,sda2表示为第二个SCSI硬盘上的第二个主分区或扩展分区。
- 对于SCSI硬盘则标识为 “sdx~” ,SCSI 硬盘是用 sd 来表示分区所在设备的类型的,这里指 SCSI硬盘,其余则和 IDE 硬盘的表示方法一样。
PS:科普 v=virtual,vda是指虚拟硬盘
3.1.1、查看所有设备挂载情况
基本命令:lsblk 或者 lsblk -f
3.2、增加硬盘
Linux 系统常见分区格式:ext2/3/4,xfs,brtfs
Win 系统常见分区格式:FAT16/32,exFAT,NTFS
下面我们以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。
如何增加一块硬盘:
- 虚拟机添加硬盘
- 分区
- 格式化
- 挂载
- 设置可以自动挂载
3.2.1、增加硬盘(了解)
在虚拟机菜单中,选择设置,然后设备列表里添加硬盘,然后一路下一步,中间只有选择磁盘大小的地方需要修改。然后重启系统。
这里我们简单演示,所以只增加1个G的硬盘
记得要重启系统
重启完后输入 lsblk 就可以看到我们的新硬盘 sdb 了,下面就可以进行分区了。
3.2.2、分区
分区命令:fdisk /dev/sdb 开始对 /sdb 分区
- m 显示命令列表
- p 显示磁盘分区,同
fdisk -l - n 新增分区
- d 删除分区
- w 写入并退出
说明:开始分区后输入 n,新增分区,然后选择 p,分区类型为主分区。两次回车默认剩余全部空间,最后输入 w 写入分区并退出,若不保存退出输入q。
3.2.3、格式化磁盘
在挂载目录前,我们还需要格式化硬盘,UUID 就是硬盘被格式化后的唯一标识符,我们可以看到新分区没有UUID,也就是还未格式化。
使用命令 mkfs -t ext4 /dev/sdb1 对sdb1分区进行格式化,ext4 是分区类型
这样就可以看到UUID了
3.2.4、挂载
挂载:将一个分区与一个目录联系起来
基本语法: mount 设备名称 挂载目录
mount /dev/sdb1 /newdisk
取消挂载:
基本语法: umount 设备名称/挂载目录
umount /dev/sdb1 或者 umount /newdisk
PS:用命令行挂载,重启后会失效
永久挂载: 通过修改 /etc/fstab 实现挂载,添加完成后,执行 mount -a 即可生效
第一个 0 不做dump备份,第二个 0 不检查硬盘扇区
3.3、磁盘情况查询
3.3.1、查询系统整体磁盘使用情况
基本语法:df -h
3.3.2、查询指定目录的磁盘占用情况
基本语法:du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录:
- -s(size) 指定目录占用大小汇总(du -hac --max-depth=1 /opt # a表示 all 列出所有子目录深度为1的文件)
- -h(human) 带计量单位
- -a(all) 含文件
- --max-depth=1 子目录深度
- -c或--total 列出明细的同时,增加汇总值(即 空间总占用量)
- 查询 /opt 目录的磁盘占用情况,深度为1
du -hac --max-depth=1 /opt # a表示 all 列出所有子目录深度为1的文件
3.4、磁盘情况-工作实用指令
- 统计 /opt 文件夹下文件的个数
# wc命令用于统计文件数量,-l显示行数
ls -l /opt |grep "^-" | wc -l # 由于 grep指令支持正则表达式,所以可以使用 以-开头:"^-"
- 统计 /opt 文件夹下目录的个数
ls -l /opt |grep "^d"| wc -l
- 统计 /opt 文件夹下文件的个数,包括子文件夹里的
ls -lR /opt |grep "^-"| wc -l # 这里的R是递归,递归查询 /opt目录下的(包括其子文件)文件
- 统计 /opt 文件夹下目录的个数,包括子文件夹里的
ls -lR /opt |grep "^d" | wc -l
- 以树状显示目录结构 tree 目录。注意,如果没有 tree,则使用 yum install tree 安装
tree /opt [以树状显示opt目录]
4、网络配置
虚拟机有3种虚拟网卡:vmnet0(用作桥接模式上网)vmnet8(NAT模式上网)vmnet1(host-only主机与虚拟机通信)
4.1、Linux网络配置原理图
例如,我们的Windows电脑安装了Linux虚拟机,Windows电脑在教室,我们在Linux虚拟机上打开 www.baidu.com ,是可以访问的,为什么我们的虚拟机可以访问到百度呢?
vmnet 是虚拟网卡,链接虚拟机与主机间的通信(vmnet1 是hostonly模式,vmnet8是nat模式)
网关 是一个网络通向其他网络的出口,相当于去其他教室要从门口(网关)出去,不配置网关就没法出去上网。(网关相当于路由器)
PS:vmnet8 不是虚拟机的网关,只是用来让虚拟机和实体机通讯的,你把 vmnet8 给禁用了,虚拟机还是能连互联网的。
因为虚拟机通过 windows 的 vmnet8,使用无线网卡代理经过局域网网关,再去找到我们真正的 Internet网。
4.2、查看网络IP和网关
4.2.1、查看虚拟网络编辑器和修改IP地址
- 在VMware 编辑->虚拟网络编辑器
4.2.2、查看网关
4.3、查看 Windows 环境中的VM网络配置
指令:ipconfig
4.4、查看 Linux 环境中的网络配置
指令:ifconfig
4.5、ping测试主机之间网络连通性
基本语法:ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
- 测试当前服务器是否可以连接百度
ping www.baidu.com
4.6、Linux网络环境配置
4.6.1、第一种方法:自动获取
说明:登录后,通过界面来设置自动获取ip,特点:Linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样
- 打开应用程序->系统工具->设置
- 网络->设置
- 这里可以查看我们的ip是自动还是手动获取的
4.6.2、第二种方法:指定ip
直接修改配置文件来指定IP,并可以连接到外网(工作中使用)
要求:将ip地址配置成静态的,比如:ip地址为 192.168.200.130
- 首先以 vi 或者 vim 的方式进入
vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 将以下代码粘贴到 上述文件中,并进行修改
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2
ifcfg-ens33 文件说明
| DEVICE=eth0 | 接口名(设置,网卡) |
|---|---|
| HWADDR=00:0C:2x:6x:0x:xx | MAC地址 |
| TYPE=Ethernet | 网络类型(通常是Ethemet) |
| UUID= | 随机id |
| ONBOOT=yes | 系统启动的时候网络接口是否有效(yes/no) |
| BOOTPROTO=static | IP的配置方法[none/static/bootp/dhcp ] (引导时不使用协议、静态分配IP、BOOTP协议、DHCP协议) |
| IPADDR=192.168.200.130 | IP地址 |
| GATEWAY=192.168.200.130 | 网关 |
| DNSL=192.168.200.2 | 域名解析器 |
- 将IP的配置方法修改为静态分配,之后保存并退出。
- 打开编辑->虚拟网络编辑器
- 将虚拟机的子网IP更改
- 网关也更改
- 重启网络服务或者重启系统生效
- 重启网络服务:service network restart
- 重启系统:reboot
- 重启完成,我们查看ip
- 查看windows主机的Vmnet8的ip
- 此时就算更改成功了,我们要改Xshell连接虚拟机的ip和网关才能连接入Linux系统
4.7、设置主机名和hosts映射
4.7.1、设置主机名
- 为了方便记忆,可以给 Linux 系统设置主机名,也可以根据需要修改主机名
- 指令 hostname (功能描述:查看主机名)
- 修改文件 /etc/hostname 指令
- 修改后,重启生效
hostname # 查看该虚拟机的主机名
vim /etc/hostname # 进入该文件 修改主机名
4.7.2、设置hosts映射
如何通过主机名找到(比如ping)某个linux系统,也就是说我们不 ping ip,而是 ping 主机名
- 对于windows系统
打开 C:\Windows\System32\drivers\hosts 文件 然后在其中添加 ip 与对应主机名称 即可
- 对于Linux系统
在 /etc/hosts 文件指定
vim /etc/hosts # 打开该文件 对其进行添加 ip 与 主机名即可(与上述操作一致)
这样我们在 ping主机名 时就会自动去ping ip 地址。
4.7.3、主机名解析过程分析(Hosts、DNS)
Hosts 是一个文本文件,用来记录 IP 和 Hostname(主机名)的映射关系。
DNS,就是 Domain Name System 的缩写,翻译过来就是域名系统。是互联网上作为域名和IP地址相互映射的一个分布式数据库。
4.7.4、应用实例
应用实例:用户在浏览器上输入了 www.baidu.com
浏览器先检查浏览器缓存中有没有该域名解析的IP地址,有就先调用这个IP完全解析;如果没有,就检查DNS解析器缓存,如果有直接返回IP地址完成解析。这两个缓存,可以理解为本地解析器缓存。
一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析目录),如在cmd窗口中输入
ipconfig/displaydns DNS 域名解析缓存
ipconfig/flusdns 手动清理DNS缓存
如果本地服务器缓存没有找到对应映射,就检查系统中 hosts 文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回
如果本地DNS解析器缓存 和 hosts 文件中均没有找到对应的IP,则到域名服务DNS(互联网)进行解析域名
- 将IP的配置方法修改为静态分配,之后保存并退出。