扩展:VMware虚拟机的三种网络模式:
➢ 桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理
主机的网卡访问外网。
➢ NAT模式:让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟
的主机可以通过物理主机访问外网,在真机中 NAT 虚拟机网卡对应的物理网卡是VMnet8。
➢ 仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机
模式模拟网卡对应的物理网卡是 VMnet1。
修改root密码:挽救模式
启动虚拟机--->进入linux系统引导界面,按下键盘“e”--->进入内核编辑界面--->在linux参数这行的后
面(.UTF-8)追加“rd.break”参数--->按下组合键Ctrl+x运行修改过的内核程序--->进入到紧急救援模式
并输入一下命令:mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot 重启即可
1.1 RPM红帽软件包管理器
rpm -ivh filename.rpm //安装软件
rpm -Uvh filename.rpm //升级软件
rpm -e filename.rpm //卸载软件
rpm -qpi filename.rpm //查询软件描述信息
rpm -qpl filename.rpm //列出软件文件信息
rpm -qf filename.rpm //查询文件属于哪个RPM
rpm -qa | grep filename //查询filename软件包
1.2 Yum软件仓库
yum repolist all //列出所有的仓库
yum list all //列出仓库中的所有软件包
yum info 软件包 //查询软件包信息
yum install 软件包 //安装
yum reinstall 软件包 //重新安装
yum update 软件包 //更新软件包
yum remove 软件包 //移除软件包
yum clean all //清除Yum仓库缓存
yum check-update //检查课更新的软件包
yum grouplist //查询系统中已经安装的软件组
yum groupinstall 软件包组 //安装指定软件包组
yum groupremove 软件包组 //移除指定软件包组
yum groupinfo 软件包组 //查询指定的软件包组信息
1.3 systemd初始化进程
Linux 操作系统的开机过程,即从 BIOS 开始,然后进入 Boot Loader,再加
载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为 Linux 系统的
第一个进程,它需要完成 Linux 系统中相关的初始化工作,为用户提供合适的工作环境。
复习题:
1. 为什么建议读者校验下载的系统镜像或工具?
答:为了检查软件包的安全与完整性。
2. 使用虚拟机安装linux系统时,为什么要先选择稍后安装操作系统,而不是选择RHEL 7系统镜像光盘?
答:直接选用RHEL 7 系统镜像,虚拟机VMware Workstation会使用内置的安装向导自动进行安装,安装出来的系统和进行实验系统环境有所不同。
3. RPM(红帽软件包管理器)只有企业系统在使用,对吗?
答:错误。RPM被众多linux系统所采用,包括CentOS、Fedora、opensuse等。
4. 简述RPM与Yum 软件仓库的作用。
答:rpm是为了简化安装的复杂度;
yum软件仓库是为了解决软件包之间的依赖关系。
5.RHEL 7 系统采用了systemd作为初始化进程,那么如何查看某个服务的运行状态?
答:运用命令:systemctl status 服务名称 即可查看服务运行状态。
2.1 强大的好用的shell
计算机基础知识:计算机硬件是由运算器、控制器、存储器、输入\输出设备组成的,而各让种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。
shell 是一个令行工具。shell(终端或壳)充当人与内核(硬件)之间的翻译官,用户把命令告诉终端,shell会调用相应的程序服务去完成某些工作。现在红帽系统主流的Linux系统默认使用的是Bash(Bourne-Again SHell)解释器。主流解释器优势:
➢ 通过上下方向键来调取过往执行过的 Linux 命令;
➢ 命令或参数仅需输入前几位就可以用 Tab 键补全;
➢ 具有强大的批处理脚本;
➢ 具有实用的环境变量功能。
2.2 查看帮助命令 man
man命令常用按键以及用途
2.3 常用系统工作命令
1. echo 命令
用于在终端上输出字符串或变量提取后的值,格式"echo [字符串 | $变量]"
[root@wen ~]# echo nebula
nebula
[root@wen ~]# echo $SHELL --------------->$变量的方式提取变量 SHELL 的值
/bin/bash
2. date 命令 date [选项] [+指定格式]
实例:
设置当前系统时间,格式为[MMDDhhmm[[CC]YY][.ss]]
[root@wen ~]# date -s
还可设置指定时间、指定格式:date -s "20170901 8:30:00"
按照年月日时分秒格式查看当前时间:
[root@wen ~]# date "+%Y-%m-%d %H:%M:%S"
2018-08-13 17:13:13
查看今天是今年中的第几天:[root@wen ~]# date "+%j"
3. reboot命令 重启系统
4. poweroff 关闭系统
5. wget命令
wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
实例:wget http://www.baidu.com
6. ps 命令 查看系统中的进程状态 格式 ps [参数]
-a //显示左右的进程(包括其他用户进程)
-u //用户以及其他详细信息
-x //显示没有控制的终端的进程
5种进程状态:运行、中断、不可中断、僵死、停止
➢ R(运行):进程正在运行或在运行队列中等待。
➢ S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时, 则脱离该状态。
➢ D(不可中断):进程不响应系统异步信号,用 kill 命令也不能将其中断。
➢ Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
➢ T(停止):进程收到停止信号后停止运行。
7. top命令
top命令用于动态监视进程活动与系统负载等信息;动态查看运维状态。
➢ 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5
分钟、15 分钟内的平均值,数值越小意味着负载越低)。
➢ 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
➢ 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。数据为CPU数据以格式显示99.7 id,表示99.7%的CPU处理器资源空闲
➢ 第 4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
➢ 第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
8. pidof 命令
pidof 命令用于查询某个指定服务进程的 PID 值,格式为“pidof [参数] [服务名称]”。
每个进程的进程号码值(PID)是唯一的,因此可以通过 PID 来区分不同的进程。
实例:查询sshd服务程序的PID : pidof sshd
9. kill 命令
kill 命令用于终止某个指定 PID 的服务进程,格式为“kill [参数] [进程 PID]”。
kill -9 服务 ----强制杀掉进程
10. killall 命令
killall 命令终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [服务名称]”。
2.4系统状态检测命令
1. ifconfig 命令
ifconfig 命令用于获取网卡配置(网卡、IP、MAC)与网络状态等信息。
2. uname命令
uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
查看当前系统版本的详细信息,则需要查看 redhat-release 文件:
cat /etc/redhat-release
3. uptime命令
uptime 用于查看系统的负载信息,格式为 uptime。
uptime 命令可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。
[root@wen ~]# uptime
18:12:05 up 14:32, 2 users, load average: 0.03, 0.03, 0.05
4. free命令
free 用于显示当前系统中内存的使用量信息,格式为“free [-h]”。
5.who命令
who 用于查看当前登入主机的用户终端信息,格式为“who [参数]”。
6. last命令
last 命令用于查看所有系统的登录记录,格式为“last [参数]”。
7. history 命令
history 命令用于显示历史执行过的命令,格式为“history [-c]”
历史命令保存在.bash_history文件中:cat ~/.bash_history
清空历史记录:history -c
8.sosreport命令
sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport。
2.5 工作目录切换命令
1.pwd 命令
pwd 命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。
2. cd命令
cd 命令用于切换工作路径,格式为“cd [目录名称]”。
3.ls 命令
-a:查看全部文件(包括隐藏文件)
-l:查看文件属性、大小等详细信息
d:文件类型 d b c l s p
-:普通文件
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件(symbolic link file)
p:命令管道文件(pipe)
s:套接字文件(socket)
2.6 文本文件编辑命令
1. cat命令
cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”
2. more命令
more 命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。
3. head命令
head 命令用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”。
4. tail命令
tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。
5. tr 命令
tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
实例:more /etc/passwd | tr [tom] [job]-----将文件中的tom换为job
6. wc 命令
wc 命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
-l //只显示行数
-w //只显示单词数
-c //只显示字节数
7.stat 命令
stat 命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”
三种时间状态:Access、Modify、Change
8. cut 命令
cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”
提取/etc/passwd文件中第一列:cut -d: -f1 /etc/passwd
-f 参数来设置需要看的列数,使用-d 参数来设置间隔符号
9. fiff命令
diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”
diff --brief diff_A.txt diff_B.txt //显示diff_A和diff_B文件是否相同
diff -c diff_A.txt diff_B.txt //描述文件中具体的不同
2.7 文件目录管理命令
1. touch 命令
touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改 atime 和 mtime
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg
[root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >>
anaconda-ks.cfg
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg
[root@linuxprobe ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg
修改后的文件时间设置成修改之前的时间:
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg
2. mkdir 命令
mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”
3. cp 命令
cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”
复制操作的三种情况:
➢ 如果目标文件是目录,则会把源文件复制到该目录中;
➢ 如果目标文件也是普通文件,则会询问是否要覆盖它;
➢ 如果目标文件不存在,则执行正常的复制操作。
cp命令参数及作用:
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r 为上述参数)
4. mv 命令
mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]
5. rm 命令
rm 命令用于删除文件或目录,格式为“rm [选项] 文件”
-f 递归删除
6. dd 命令
dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
if 输入的文件名称
of 输出的文件名称
bs 设置每个“块”的大小
count 设置要复制“块”的个数
dd if=/dev/zero of=560_file count=1 bs=560M //从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成名为 560_file 的文件
dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso //将光驱设备中的光盘制作成ISO格式的镜像文件
7. file命令
file 命令用于查看文件的类型,格式为“file 文件名”
2.8 打包压缩与搜索命令
1. tar 命令
tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”
tar命令参数及作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用 Gzip 压缩或解压
-j 用 bzip2 压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名--------->它必须放到参数的最后一位,代表要压缩或解压的软件包名称
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
tar -czvf etc.tar.gz /etc //将/etc目录文件打包压缩并重命名为etc.tar.gz
tar xvf etc.tar.gz -C /root/etc //将压缩文件etc.tar.gz解压到 /etc目录中
2. grep 命令
grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”
grep 命令参数及其作用
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择 — 仅列出没有“关键词”的行
3. find 命令
语法是 find [option] [path...] [expression] [action]
以下的操作都是在root用户权限下做的
1、按照文件名查找
find / -name ifcfg-ens32
find /etc /home /dev -name ifcfg-ens32 find后面可以跟多个路径
find /etc -iname "*cfg*" 当我们名字不确定的时候就可以使用通配符,-iname 是忽略字母大小写
2、按照文件大小查找
find /etc -size +5M -ls 超过5M的文件
find /etc -size 5M
find /etc -size -5M -print print可加可不加,默认的动作是print,
后面跟的动作和我们的 ls 不一样
3、指定查找的目录深度
find /etc -maxdepth 1 -iname "ifcfg-ens32" 目录最大深度为1并且名字为ifcfg-ens32,这是两个条件,关系为且
4、按照时间查找文件(atime mtime ctime)
atime 访问过的时间
mtime文件内容发生变化的时间
ctime文件权限更改的时间
find /etc -mtime +300 -ls 查找内容修改时间超过300天的文件
find /etc -mtime -1 -ls 一天以内的文件
find /etc -mtime 1 等于一天的 是按照24小时往前推的时间
5、按照文件的所有者查找
find /etc -user u1
find /ect -group hr
find /ect -user u1 -a -group hr(-a可有可无) 既是u1用户的又是属于hr组的文件
find /etc -user u1 -o -group hr 两者之间是或的关系
find /home -nouser
//查找没有所有者的文件,删除用户的时候userdel不会删除家目录,此时就是无所有者的文件
//没人管的文件比较恐怖,因为以后创建用户的时候uid如果一样的话,新建的这些用户就可以访问这些文件
6、按照文件类型查找
find /dev -type f (普通) -d(目录) -l(链接) -b(块设备) -c(字符设备) -s(套接字) -p(管道)
7、按照文件权限查找 permission
find .-perm 644 -ls 在当前目录下查找权限为644的文件 这种找法是很明确权限的情况下查找
find .-perm -644 -ls 我要求的时所有者是读写g和o是读,至于多出来的权限我不管
-633的时候是特殊情况
-4000
[root@tuo ~]# find /usr/bin /usr/sbin/ -perm -4000 -ls 查找出来的结果很多,说明当普通用户执行这些权限的时候都是以root身份来运行的
作业:
1.在RHEL 7系统及众多的Linux系统中,最常使用的Shell终端是什么?
答:Bash解释器
2.执行Linux系统命令时,添加参数的目的是什么?
答:为了让 Linux 系统命令能够更贴合用户的实际需求进行工作。
3.Linux系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?
答:普遍用空格间隔
4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。
答:echo $SHELL
5.简述Linux系统中5种进程的名称及含义。
答: R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
D(不可中断):进程不响应系统异步信号,用 kill 命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
6.请尝试使用Linux系统命令关闭PID为5529的服务进程。
答:kill -9 5529 或者查询服务名称 killall 服务名称
7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?
答:网卡名称;IP地址;MAC地址; RX/TX 的收发流量数据大小
8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15
分钟内负载压力最大的是哪个时间段?
答:一分钟时间内的负载时最大的
9.使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?
答:执行“!序号”命令,可执行此命令
10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?
答:最合适的是more,文本较短的适合cat
11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?
答:mkdir -p -p递归迭代参数
12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?
答:rm -rf 使用-f参数避免二次确认
13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?
答:tar -xzvf backup.tar.gz -x可解压不同类型文件
14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参
数?
答:grep -v 进行内容反选