一、软件运行和编译
-
ABI
1).Windows与Linux不兼容
2).ELF;PE
3).库级别的虚拟化
4).Linux;Windows -
API
1).API 可以在各种不同的操作系统上实现给应用程序提供完全相同的接口。主流的操作系统有两种,一种是Windows系统,一种是Linux系统
2).API 分为Windows API和Linux API
3).POSIX 可移植操作系统接口,定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。
4).Linux和Windows都要实现基本的posix标准,程序就在源代码级别可移植了 -
C语言的程序编译主要经过以下四个过程
-
预处理
1). 将所有的#define删除,并且展开所有的宏定义
2).处理所有的条件预编译指令,比如 #if #ifder #elif #else #endif等
3).处理#include预编译指令,将被包含的文件插入到该预编译指令的位置
4).删除所有注释“//”和“/* */”.
5).添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号
6).保留所有的#pragma编译器指令,因为编译器需要使用它们 -
编译:编译过程就是把与预理完的文件进行一系列的词法分析、语法分析、语义分析及优化后,最后生成相应的汇编代码
-
汇编:将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编想对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可
-
链接:通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可以执行文件
-
软件模块的静态和动态链接:链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地链接,分为静态和动态链接
二、软件包 -
软件包中的分类
1).二进制文件
2).库文件
3).配置文件
4). 帮助文件 -
主流的程序包管理器
1).redhat:rpm文件,rpm包管理器
2).debian:deb文件,dpkg包管理器 -
解决依赖包管理工具
1).yum:rpm包管理器的前端工具
2).dnf:Fedora 18+rpm包管理器前端管理工具,Centos8版代替yum
3).apt:deb包管理器前端工具
4).zypper:suse上的rpm前端管理工具 -
rpm -q 查询 rpm -i安装 -vh 查看过程 rpm -e 卸载 rpm -ql 查询包安装的文件分别在哪个目录 rpm -qi查询包的详细信息 rpm -qf查看文件来自于哪个包 rpm -qc只看配置文件 rpm -qd 看配置文档 rpm -tv 查看包内文件 rpm -k 检查包是否合法
-
/etc/pki/rpm-gpg 存放公钥 rpm -v 安装之后是否被修改过
-
du -sh * 查看哪个目录最大
三、磁盘分区与逻辑卷 -
两种分区方式:MBR 和GPT
-
MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
-
GPT:GUD partition table支持128个分区
-
BIOS是固化在电脑主板上的程序,主要用于开机系统自检和引导操作系统
-
lsblk 列出块设备 fdisk 管理MBR分区 gdisk 管理GPT分区 parted 高级分区操作,可以是交互或非交互方式
1). partprode:可以把硬盘中新的分区同步到内存中
2).dumpe2fs:可以查看ext系统的文件信息
3).e2fsck:只能修复ext系列文件
4).xfs_repair:只能修复xfs系列文件 -
挂载:把你的设备和当前根下的某个目录里面的文件夹建立链接关系
-
挂载规则
1).通常情况下,一个文件夹只能挂一个设备
2).允许一个设备同时挂载两个文件夹上面
3).一个挂载点同一时间挂在了多个设备,只能看到最后一个设备的数据,其他设备上的数据将被隐藏
4).通常挂载点一般是已存在空的目录 -
卸载时:可使用设备,也可以使用挂载点
-
findmnt 查看挂载点情况 mount 查看挂载 lsof 查看某个挂载点是否正在被别人使用
-
swap交换分区
-
交换分区实现过程
1).创建交换分区或者文件
2).使用mkswap写入特殊签名
3).在/etc/fstab文件中添加适当的条目
4). 使用swapon -a激活交换空间 -
swapon -s可以看得更加详细
-
eject 弹出光盘 eject -t弹入光盘
-
创建ISO文件
cp /dev/cdrom /root/centos.iso -
df 查看文件系统的使用情况(必须是已挂载的) du查看文件空间释放 df不释放 du 查看文件夹的使用情况
-
raid原理:多快硬盘组织在一起,形成新的设备
-
逻辑卷对应设备名:/dev/dm-#
-
ll /dev/vg0/mysql 查看文件名 ll/dev/dm-0 创建文件系统
-
逻辑卷扩容
第一步
第二步、同步里面的文件系统或者直接执行下面这个命令
34.缩容:必须离线缩容,可能会有丢数据的风险, 缩容之前一定要备份
34. 逻辑卷快照是一次性的