目录
第0章 计算机概论
基本知识
电脑主要由五大单元组成: 输入单元,输出单元,cpu内部的控制单元,算数逻辑单元与内存
cpu 为一个具有特定功能的芯片·主要由两个单元组成: 算数逻辑单元与控制单元
两种最常见的CPU架构: 精简指令集(RISC) 和 复杂指令集(CISC)
CPU所使用的数据都来自内存
频率:CPU每秒可以进行工作的次数
位宽:每个时钟周期能够传输的数据量
字长:CPU每次能够处理的数据量,字长根据cpu的设计有 32位和64位 ,也是电脑64位的由来
硬盘:硬盘基本术语(磁道、扇区、柱面、磁头数、簇)_大漠雁-CSDN博客_磁道的编号
CMOS与BIOS
常用的英文编码表为ASCII , 后有Unicode编码系统,俗称 UTF-8或万国码
操作系统:
(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。
0. 操作系统提供一套API供开发使用
1. 操作系统的内核层直接参考硬件规则写成,所以同一个操作系统程序不能购在不一样的硬件架构下运行
2.操作系统只管理整个硬件资源,包括CPU,内存,输入输出设备以及文件系统等,如果没有其他应用程序辅助,只能让主机准备妥当而已
3.应用程序的开发都是参考操作系统提供的API,所以该应用程序只能在该操作系统上面运行而已,不能在其他操作系统上运行
内核功能:
系统调用接口
进程管理
内存管理
文件系统管理
设备驱动:
应用程序:
参考操作系统提供的API所开发出来的软件
第一章 什么是Linux
每种操作系统都是在它专门的硬件架构上面运行的
GNU计划:
开源协议专题(二):开源之父和 GUN 计划 - 知乎 (zhihu.com)
建议学习知识:
1 计算机概论与硬件相关知识
2 Linux 安装与命令
3 linux操作系统的基础技能
4 vi文本编辑器
5 shell与shell脚本的学习
6软件管理
7 网络基础的建立
第二章 主机规划与磁盘分区
各设备在Linux中的文件名:
每个设备都被当做一个文件来对待:
虚拟机选择: VMware
VMware16的安装及VMware配置Linux虚拟机(详解版)_何故M的博客-CSDN博客_vmware16安装linux
一台主机安装两个以上操作系统:需要懂 启动流程与多重引导
磁盘划分
MBR( MS-DOS) :
master boot record 的方式来处理启动引导程序与分区表。放在磁盘的第一个扇区,共512个字节:
主导引导记录(MBR):可以安装启动引导程序的地方,446字节
分区表(partition table):记录整块硬盘的分区状态,64字节
因为每组分区表的地址记录要占用16个字节,所以一共能有4组记录区,每组记录区记录了该段的 起始与结束的柱面号码
扇区->磁道(圆圈)->柱面(立体)
可以得到几个重要信息:
1 所谓的分区只是针对那64字节的分区表进行设置而已
2 硬盘默认的分区表仅能写人四组分区信息
3 分为主要 或 扩展分区
4 分区的最小单位为柱面
5 当系统写人磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据处理
可以用扩展分区来划分额外的扇区,其内部称为逻辑分区
定义:
1 主要分区和扩展分区一共最多有4个(硬盘64kb限制)
2 扩展分区至多有一个,可以没有(操作系统限制)
3 逻辑分区是由扩展分区持续划分出来分区
4 能被格式化后储存数据的分区是主分区和逻辑分区,扩展分区无法格式化
5 逻辑分区的数量依据操作系统而定
6 逻辑分区一定从p5 开始
GPT(GUID partition table)磁盘分区表
将所有区块以LBA(logical block address)来划分 :从 0开始
无主分区,扩展,逻辑分区的概念,都是独立存在可以当做主分区
除了前面34个LBA之外,整个磁盘的最后34个拿来做另一个备份
LBA0: MBR兼容区块
LBA1: GPT表头记录 - 记录了分区表本身位置与大小 + 备用分区位置+ 分区表校验码
LBA 2 -33: 实际存放数据处
每个LBA都可以记录4组分区记录 ,总共 4*32 1=128 组分组记录
BIOS与 UEFI 启动检测程序
BIOS:
启动时执行的第一个程序 ->读取引导程序(如MBR的引导程序)->引导程序->加载内核->启动操作系统
boot loader:
要点:
1 启动引导程序只会认识自己的系统分区内的可启动的内核程序, 以及其他启动引导程序
2 启动引导程序可以直接指向或间接将管理权交给另一个管理程序
UEFI :统一可扩展固件接口
因为BIOS是16位程序,无法很好解读GPT ,因此有了uefi
与BIOS主要区别
Linux的磁盘分区选择
/ 代表根目录,由此衍生出目录树
挂载:利用一个目录当成进入点,将磁盘分区的数据放在该目录下;即 进入该目录就可以读取该分区
第三章 安装Cent OS 7.x
VMware16的安装及VMware配置Linux虚拟机(详解版)_何故M的博客-CSDN博客_vmware16安装linux
要点: 1 不要安装在机械硬盘上,会报错
2 要进入BIOS 将 AMD-V 打开 重启:此主机支持 AMD-V,但 AMD-V 处于禁用状态的解决办法_多看书少睡觉的博客-CSDN博客_此主机支持amd-v但处于禁用状态
3 选择安装源url
Centos7安装源_老糊涂Lion的博客-CSDN博客_centos7安装源
4 选择手动 如图:要留空间给以后练习用
第四章:帮助指令 与 终端
X window:
X Window即X Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽象层,允许设备独立性和重用方案的任何计算机上实现。
GUI 与 命令行终端 切换:
Ctrl+Alt+F2-F6 :登录终端
Ctrl+Alt+F1: 图形用户界面模式
注销登录: exit 命令(注意不是关机)
终端执行命令方式:
$ 命令 -选项 参数1 参数2 ...
注意点:
1 命令包括 绝对命令 与 可执行文件
2 linux区分大小写
3 选项代表可选,可以省略。有很多选项,分别不同字母表示,多个选项时中间不用空开
Linux 命令大全 | 菜鸟教程 (runoob.com)
4 多个空格shell都视为一个空格
基础命令:
显示时间:date
显示日历的命令:cal
计算器:bc
详细用法自行查询·
执行命令时会出现的情况:
1 一种是该命令直接显示出结果,然后回到命令提示符等待下一个命令输入
2 进入该命令的环境,指导该命令结束才回到命令提示符环境(例如bc环境中输入quit)
重要热键 :
Tab:
接在一串命令的第一个字段后面,则为命令补全
接在一串命令的第二个字段后面,则为文件补全
----可以避免出错
Ctrl+c:
强制中断目前程序
Ctrl+d:
键盘输入结束,可以取代exit的输入
shift+ pgup/pgdn:
上下翻页
在线求助命令:
$ 命令 --help
$ man 命令
(按q离开man环境)
第一行的数字代号:
/+字符串 :搜索指定字符
$ info 命令
与man 一口气输出一堆信息不同,info - 则是将文件数据拆成一个一个段落,每个段落用自己的页面来编写,并且在各个页面中还有类似网页的超链接来跳转到各个不同的页面中,每个独立的页面也被称为一个节点(node)
文本编辑器:nano
$ nano 文件名
如果有就打开,没有就新建文件
组合键:
M代表ALT
^代表ctrl
关机命令
sync:将数据写入硬盘,防止缓冲区的数据丢失
shutdown:需root权限
Linux shutdown 命令 | 菜鸟教程 (runoob.com)
reboot,halt,poweroff:都是重新启动
注意:以上其实都是调用 systemctl 命令
$ su - :切换到root权限,可退回到原本用户(exit离开su的命令环境)
第五章 文件权限与目录配置
权限划分:
拥有者:
用户组:小组,可以有多名用户
其他人:除了以上其他人
root:天神组,无视任何,拥有绝对权限
文件属性:
通过 :ls -al查看
Linux ls命令 | 菜鸟教程 (runoob.com)
第一项:分为10个字符位
1+3*3
1:文件类型
3*3:不同权限划分可对应的操作(可读,可写,可执行) * 拥有者/用户组/其他人
修改文件属性:
chgrp:change group 修改文件 用户组
chown:change owner 修改文件 拥有者
chmod:修改文件的权限 - 3*3对应的权限
cp:复制文件 会复制文件的内容包括属性
chmod :
第一种方式:
可读可写可执行代表不同位权:
r:4
w:2
x:1
---> 3*3当中:数字范围0-7
$chmod -R 值*3 +文件名或目录名
-R:递归,子目录所有都会修改
值:rwx加起来的总值 ,如可读可写可执行 则为
*3:代表三种权限划分(拥有者,用户组拥有者,其他人)
如所有权限都开放:chmod 777 文件名
第二种方式:
用 u,g,o 来代表 三种身份的权限
:这种方法可以单独增加或减去某一权限
目录与文件权限的意义
1:我们的文件能否被执行,是有 X 来决定的,跟后缀无关
注意:具有可执行权限与具有可执行代码是两回事
2:w不包含删除改文件
3:
针对目录而言:
r:可以查询该目录下的文件名数据
w:建立新的文件与目录
删除已经存在的文件与目录(不管该文件与目录的权限是什么)
更名,移动等
x:能不能进入某一目录,只与该目录的x(可执行)权限有关
要操作(也就是要进入)一个文件时,要具有此文件的上一级目录x权限
Linux文件种类与扩展名:
任何设备在linux下都是文件
Linux文件类型详解 - Surpassme - 博客园 (cnblogs.com)
常用扩展名:
*.sh:脚本或批处理文件,因为用shell写成
*Z,*tar:压缩文件
*.html,*.php:网页相关文件
单一文件名或目录名最大为255字节,应避免用特殊符号
Linux目录配置
FHS标准 :
1定义的四种交互作用状态
2 定义的三个目录:
3
/ 根目录是最重要的一个目录 ,不但所有的目录都是根目录的子目录同时根目录也与启动,还原,系统修复等操作有关
目录树与绝对路径,相对路径
1 目录树的起始点为根目录(/)
2
绝对路径:从根目录开始由 / 左斜杠来访问
相对路径:对于目前文件来说的路径
要点:
不是/开头的都是相对路径
.代表当前路径(一点)
..代表上一层目录 (两点)
第六章 Linux 文件与目录管理
目录的相关操作:
. 代表当前目录
.. 代表上一层目录
- 上一个工作目录 (返回跳转前的目录)
~ 当前用户的家目录
~用户名 : 该用户的家目录
cd:切换目录 change directory + 具体 或 上述的代表符号
pwd:显示当前目录
mkdir:创建一个新目录
可以-p 递归创建 。 否则得现有上一层目录存在
rmdir:删除一个空目录
可以-p递归删除。
注意:只能删除当前目录下的目录 不包括当前目录本身 且只能删除空目录
执行文件路径的变量: $PATH
比如执行命令ls时,无论在哪个目录都能执行呢? (其实要找到该可执行文件)
当我们在执行一个命令时,系统会依照PATH定义的目录中去寻找该名字的可执行文件
Linux PATH环境变量及作用(初学者必读) (biancheng.net)
1 echo $PATH 显示定义的目录 ,每个中间用:冒号来隔开
2 PATH="${path}:+目录 来添加
3 当重名时,先找到的先执行
4 最好不要加入.当前目录,会有危险
文件与目录管理(命令)
ls:查看
Linux ls命令 | 菜鸟教程 (runoob.com)
cp:复制
Linux cp 命令 | 菜鸟教程 (runoob.com)
要点: 1 是否需要完整的保留原文件的信息? -a
2 源文件是否为链接文件 -d
3 是否为特殊文件
4 源文件是否为目录? 若为 则得加上 -a 或 -r(递归复制)
5 复制多个文件到一个文件夹时 ,最后一个必须是目录
rm:删除
Linux rm 命令 | 菜鸟教程 (runoob.com)
要点:
1. rm -r 非常危险
2 可以通过加上反斜杠来规避询问 \rm -r
mv:移动
Linux mv 命令 | 菜鸟教程 (runoob.com)
1 可以通过原地移动来修改名称
辨别文件名或者目录
basename :获取最后的文件名
dirname :获取目录名(取最大)
文件内容查看
cat :由第一行开始显示文件内容
Linux cat 命令 | 菜鸟教程 (runoob.com)
tac:最后一行开始
nl:显示的时候,同时输出行号
more:一页一页的显示内容 (enter 向前翻页 b 向后翻页 可查找)
less:与more类似 ,但能向前翻页
head:只看前几页 (-n +数字 表示显示开头几行 若是负数 则不显示倒数几行)
tail:只看后几页 (-n +数字 表示显示末尾几行 若是+号 则不显示开头几行)
od:以二进制的方式显示
管道: | 来隔开 前面的命令所输出的信息,通过 管道交由后面的命令进行使用,不会直接打印出结果
echo:输出字符串?Linux中如何使用echo命令?(用法详解)-linux运维-PHP中文网
;分号用来一次执行多条命令
修改文件时间或创建新文件touch
status time ,cttime:状态数据修改时间(权限与属性)
modification time,mtime:内容数据修改时间 : 默认时显示 mtime
access time ,atime:改文件内容被读取时,就会更新
使用touch 来改变时间:
Linux touch命令 | 菜鸟教程 (runoob.com)
注意:
1 复制文件时 无法复制ctime
2 若不存在则创建新的文件
默认权限(umask)与隐藏权限(-attr)
umask: 显示 默认减去的权限
注意:默认的权限 与 默认减去的权限 不同
如 默认没有 x权限 则最大值为666 ,umask 为022 ,也就是rw-r--r--
Linux umask命令 | 菜鸟教程 (runoob.com)
chattr:change attribu
Linux chattr命令 | 菜鸟教程 (runoob.com)
xfs文件系统仅支持部分
lsattr:显示隐藏属性
文件特殊权限(S ugb ID)
若出现在拥有者x上的为S ,则为拥有SUID特权:
1 仅对二进制程序有效(文件)
2 执行者需要对此文件有x权限
3 本权限仅在执行程序中有效
4 执行者将拥有该程序拥有者的权限,相当于暂时获取对应权限
若出现在用户组x上的为S ,则为拥有SGID特权:
1 可以对文件或目录来设置
2 需要拥有x权限
3 若对文件: 获得改文件的用户组支持
目录:有r与x权限,才能进入 --- 所做操作相当于该用户组权限所做操作
Sticky Bit :SBIT
1 仅针对目录有效
2 当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除
--相当与只有目录的的建立者或root才能删除,别人不行
特殊权限S的添加 :
chmod时:在前面再加一位 变为4位 ,最高为7777
1 sbit 2 sgid 4 suid
注意: 若没有x权限而空有特殊权限 则标志为大写S或T ,换句话说 特殊权限建立在有x的权限之上;不互相冲突
观察文件类型 :file
命令与文件查找
命令
which:根据path环境变量来查找 命令
Linux which命令 | 菜鸟教程 (runoob.com)
文件:
whereis:从一些特定的目录中查找
Linux whereis命令 | 菜鸟教程 (runoob.com)
locate:从已建立的数据库查找
updatedb:更新数据库
Linux locate命令 | 菜鸟教程 (runoob.com)
find:
Linux find 命令 | 菜鸟教程 (runoob.com)
find path -option [ -print ] [ -exec -ok command ] {} \;
1 可以增加时间选项 :
如: -mtime n/+n/-n
n:查找n天至n+1天前的文件
+n:查找n+1天前的文件
-n:查找n-1天前的文件
2 -uid -gid 等,可以限定用户来查找
3 可以限定大小 -size ,名字(用正则),类型-type,权限 -perm等
4 可以能进行额外操作 -exec +其它命令 到 \;转义结束
5 多个条件 就要多个前缀
如 查找/etc下 容量大于1500k 以及容量等于 0的文件 ,并显示出来
find /etc -size 0 -size +1500c -exec ls -l \;
6 +表示大于 -表示小于 没加表示等于
附:mv 修改目录名 linux怎么修改目录名-linux运维-PHP中文网
第七章 linux磁盘与文件管理系统
为什么磁盘使用前需要格式化: 每个操作系统所设置的文件属性/权限并不一样,要让其成为能够 利用的文件系统格式
通常称 一个可被挂载的数据为一个文件系统而不是一个分区
怎么理解`通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区槽喔!`? - SegmentFault 思否
技术|LFCS 系列第五讲:如何在 Linux 中挂载/卸载本地文件系统和网络文件系统(Samba 和 NF
索引式文件系统: 通过一个索引(区块),来指出全部数据块
fat文件系统: 没有索引区块,一个数据块后指向后一个数据块(不能随机访问)
ext2
linux second extended dile system
区块群组:分为多个组 每组都有独立的数据块,inode,超级区块
数据区块 :
每个block都有固定最小容量(可选择),当一个文件大于时 用多个区块 ,小于时 则浪费
inode table:
1 每个文件只会占用一个inode ,因此文件系统能建立的文件数量与inode有关
2 至少记录着: 文件的真正指向(数据块),权限属性,大小,各种时间
3 每个inode大小固定为128B(新的xfs与ext4已经到256B)
具体为: a 文件信息记录区
b 记录区块号码的区域:12个直接 ,间接 双间接 三间接 各一个
c 通过索引的索引(间接,以block延伸作为记录)--能记录更多区块(大文 件) ,每个区块号码记录会用上4B
d 如双间接 :假设一个block延伸记录区块有1KB,能记录256条记录
双间接就能记录 256*256个区块
superblock :
1 主要记录 数据块与inode的总量 ,已使用和未使用的数目,大小
2 文件系统的挂载信息,最近一次写入,检验的时间
3 一个有效位数值
文件系统描述说明:
每个区块群组的开始与结束区块,以及说明每个区段(上文)的开始与结束
区块对照表 与 inode 对照表 :
使用或未使用的区块号码/inode,方便使用与释放
可以使用 dumpe2fs + 磁盘文件名 命令来查看超级区块信息。
与目录树的关系:
建立时:
对照表(查询空的inode与block)->分配 inode -> 区块 :
若是目录:inode记录着目录的相关权限与属性 ,指向的区块内记录着 目录下的文件名及其 inode号(须有x和w权限)
若是文件:分配一个inode和 多个区块
日志功能:
若步骤发生错误,导致inode记录的区块不必配等,会进行一致性检查,耗费很多时间,因此引入日志记录区块;
异步处理:
当一个文件加载到内存后,分为两种状态
修改过: dirty , 会不定时的自动写会磁盘中 ,以保证磁盘与内存数据的一致性
没修改:clean
挂载点的意义
每个文件系统(如ext2)都有独立的 inode,区块,超级区块等信息,每个文件系统要能连接到
目录树底下才能使用,挂载点一定是目录,该目录为进入该文件系统的入口
什么是挂载,Linux挂载详解 (biancheng.net)
将设备文件连接到某一目录,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文 件进行挂载。
linux其他支持的文件系统:
vfs:virtual filesystem switch 通过此内核功能自动识别文件系统,不需要知道每个硬盘分区上的文件系统是什么
xfs:
centos 7.x 的默认文件系统 ,日志式文件系统
分为
数据区: 也分为多个存储区群组,与ext的主要区别是 inode与区块是动态产生的,并非一开始与格式化就完成了配置的。
文件系统活动登录区: 记录文件系统的变化,类似于日志区
实时运行区:当要建立新的时,会在这个区段内找到数个extent区块,写入到 数据区中(inode +区块)
----------------------------------------
可以用 xfs_info 挂载点|设备名称 命令 来查看
磁盘与目录容量
df:列出文件系统整体磁盘容量(从超级区块内读取)
Linux df 命令 | 菜鸟教程 (runoob.com)
du:命令用于显示目录或文件的大小(具体一个个去查看)
Linux du 命令 | 菜鸟教程 (runoob.com)
区别:linux中du, df两个命令的区别 - 简书 (jianshu.com)
通过 df 命令找到根目录硬盘的文件名,然后使用 dump2fs 命令观察文件系统的详细信息,执行命令如下:
Linux dumpe2fs命令:查看文件系统信息 (biancheng.net)
链接:
创建链接指令:ln
Linux ln 命令 | 菜鸟教程 (runoob.com)
ln 【-sf】 源文件 目标文件
注意 :默认进行硬链接
ls -l 第二个字段: 有多少个文件名链接到这个inode号码
硬链接:
在某个目录下新增一条文件名 链接到某个inode号码的关联记录,第二个字段会+1
不会增加inode个数
不能跨文