Linux基础
Linux是现代化应用程序交付的首选平台,我们一般将其部署在裸机、虚拟化或容器化环境中。
1. 计算机硬件
冯·诺依曼结构:控制器、运算器、存储器、输入设备、输出设备
2. 计算机操作系统
操作系统(Operating System,OS):管理和控制计算机的硬件和软件资源,负责在用户与系统硬件之间传递信息
-
管理计算机资源:
- 处理器管理
- 存储器管理
- 设备管理
- 文件管理
-
提供用户接口:
- 命令接口
- 图形用户接口
- 程序接口
操作系统启动流程:
- 接通电源 —— BIOS —— BIOS自检 —— Bootloader —— OS
- 接通电源 —— UEFI —— Bootloader —— OS
3. Linux系统概览
(不谈历史)
-
Linux 版本
- Debian 系列
- Red Hat 系列
- Slackware 系列
- 国产系列 Linux 内核 + 常用软件 = Linux 发行版本
-
Linux 系统应用领域
- IT 服务器(云服务器)
- 嵌入式和智能设备
- 学术研究和软件研发
- 个人使用
4. Linux 系统结构
-
基本组成
- 内核
- Shell
- 文件系统
- 应用程序
-
体系结构
- 用户空间:应用程序、GNU C Library
- 内核空间:系统调用、内核、平台架构 内核时硬件与软件的中间层 内核是一个资源管理程序 内核提供一组面向系统的命令
-
进程管理 进程:
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间、占用一定系统资源
- 一个CPU核同一时间只能运行一个进程
- 进程由进程ID(PID)和其父进程ID(PPID)唯一识别
-
进程调度 操作系统按某种策略先择进程占用CPU进行运行的过程
6种状态 R / S / D / T / Z / X
进程调度原则:
- 一个CPU核同一时间只能运行一个进程
- 每个进程执行时间近乎相等
- 逻辑CPU采取轮询方式执行,轮询完成后回到第一个反复
- 进程执行消耗时间和进程量成正比
-
文件系统 Linux 中一切皆文件,文件系统负责管理持久化数据的子系统,负责把用户的文件存到磁盘硬件中
文件系统采用树状的目录结构,最上层是根目录 包括,普通文件、目录、设备、套接字四种文件类型
文件读取流程:
- read:用户缓冲区——内核缓冲区——磁盘
- write:用户缓冲区——Socket缓冲区——网卡
-
用户权限 用户账户:普通用户、超级用户 组账户:标准组、私有组
文件权限:所有者、所在组、其他人 包括 R / W / X 三种权限类型
5. Linux 软件包管理
软件包:通常指一个应用程序
软件包管理:
- 底层工具:处理安装和删除软件包文件等任务
- 上层工具:用于数据的搜索任务和依赖解析任务
Shell脚本编程
Shell 脚本的应用场景: Linux 服务器的基本操作和管理 Node.js 服务的进程管理、问题排查、资源监控等 编写TCE、SCM、Docker 脚本,完成服务器编译和部署
1. Shell 基本概念
- 终端:获取用户输入、展示运算结果的硬件设备
- TTY:TeletypeWriter,等价于终端
- 终端模拟器:关联 tty 的输入/输出设备
- Shell:command interpreter,处理终端数据的脚本语言
- Bash:shell的一种实例
Shell 的构成: - 解释器:Bash内置命令、GNU 核心工具集、第三方库 - 编程语言:变量、运算、语句、函数
2. 语法和命令
- 变量
- 自定义变量
- 环境变量
- 系统环境变量
- 配置文件加载
- login shell —— /etc/profile
- non-login shell —— ~./bashrc
- 运算符和引用
- 算数运算符
- 逻辑运算符
- 比较运算符
- 引号
- 圆括号
- 命令连接
- 后台运行
- 管道
管道和管道运算符 | ,作用是将前一个命令的结果传递给后面的命令
- 重定向
- 输入重定向
- 输出重定向
- 判断命令
- 整数测试
- 字符串测试
- 文件测试
- 分支语句
- if else
- case in
- 循环语句
- while
- until
- for
- 函数
- funcName(){}
- function funcName(){}
- 模块化
- source './path'
3. 执行过程和原理
- 执行:
- shell脚本一般以 .sh 结尾,第一行需要声明用什么命令解释器来执行
- 启动方式:文件名运行、解释器运行、source 运行
- 执行过程:
- 字符解析
- shell展开
- 重定向
- 执行命令
- 收集状态并返回