Linux 基础|青训营笔记

96 阅读5分钟

Linux 基础

1、学习Linux 的价值(为什么学习Linux ?)

  • Linux 是现代应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
  • 一些公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux 系统
  • 熟悉Linux基础指令,能够熟练运维前端常用服务(Nginx,Node.js)
  • 有利于加深对操作系统概念和实现的理解

2、计算机硬件

五大基本单元

  • 控制器
  • 运算器
  • 存储器单元
  • 输入单元
  • 输出单元

3、计算机操作系统

操作系统(Operating System , OS)

管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息。

操作系统启动流程

操作系统启动流程.jpg

4、 Linux 发展简史与版本

发展简史

  1. 1969年,Unix 诞生于贝尔实验室

  2. 1984年,贝尔实验室将Unix 商业化

  3. 1984年,Tanenbaum 开发Minix 操作系统用于教学并开放源码

  4. 1984年 Richard M.Stallman 发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议

  5. 1991年,Linus Torvalds 受Minix 影响实现初版的Linux 内核

  6. 1992 年,Linux 内核以GPL 协议发行 V1.0

Linux 版本

内核版本发行版本

  • Linux 内核的主要组件有
    • 系统调用接口
    • 进程管理
    • 内存管理
    • 虚拟文件管理
    • 网络堆栈
    • 设备驱动程序
    • 硬件架构的相关代码
  • 发行版本 可以简单理解为
    • linux 内核 + 常用软件 = linux 发行版本
    • 常见的发行版本:Debian 系列、RedHad 系列、Slackware 系列、国产系列
    • 查看linux 系统内核版本的命令:
      • uname -a
      • cat /proc/version
      • cat /etc/os-release 查看发行版本

Linux 系统应用领域

  • IT 服务器(操作系统、虚拟化和云计算)
  • 嵌入式和智能设备
  • 个人办公桌面
  • 学术研究与软件研发

5、Linux 系统结构

(1)基本组成

  • 内核
    • 负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的性能和稳定性
    • 主要由以下几部分组成:
      • 内存管理
      • 进程管理
      • 设备驱动程序
      • 文件系统
      • 网络管理
    • 用户与内核之间的交互通过 系统调用接口完成
  • shell
    • shell 是系统的用户界面,提供了用户与内核进行交互操作的接口,它接收用户输入的命令并将它送到内核去执行
    • 目前大部分GNU操作系统上默认的就是bash shell
  • 文件系统
  • 应用程序

(2)体系结构

  • 用户空间
    • 应用程序
    • GNU C Library (glibc)
  • 内核空间
    • 系统调用
    • 内核
      • 内核硬件与软件之间的中间层
      • 内核是一个资源管理程序
      • 内核提供一组面向系统的命令
    • 平台架构相关的代码

(3)进程管理

特点: - 进程是正在执行的一个程序或命令 - 进程有自己的地址空间,占用一定的系统资源 - 一个CPU核同一时间只能运行一个进程 - 进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别

查看进程命令: ps -ef | grep 应用 ​ 例如: ps -ef | grep java

查看某个进程: top -p 进程ID

全部进程动态实时视图: top

关闭指定进程: kill 进程ID

(4)进程调度

进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程

进程调度原则: - 一个CPU核同一时间只能运行一个进程 - 每个进程有近乎相等的执行时间 - 对于逻辑CPU 而言,进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复 - 进程执行消耗时间和进程量成正比

(5) 文件系统

Linux 文件系统是采用树状的目录结构,最上层是 /(根目录)

虚拟文件系统(VFS) - 对应用层提供一个标准的文件操作接口 - 对文件系统提供一个标准的文件接入接口

VFS.jpg

查看文件系统类型:

  • df 命令报告文件系统磁盘空间利用率
  • mount 命令挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘 分区的信息

文件基本操作:

	- ls 查看文件夹下内容
	- mkdir demo 创建文件夹
	- mv demo / home 移动demo 文件夹到 /home
	- rm- r demo 删除 demo 文件夹
	- touch file.txt 创建空文件
	- cp file.txt file_bak.txt    复制文件

文件读取流程

文件读取流程.jpg

(6) 用户权限

用户账户:

  • 普通用户账户:在系统中进行普通作业
  • 超级用户账户:在系统中对普通用户和整个系统进行管理

用户组:

  • 标准组:可以容纳多个用户
  • 私有组:只有用户自己

文件权限关于用户有三个概念:

  • 所有者:文件的所有者
  • 所在组:文件的所有者所在的组
  • 其他人:除文件所有者及所在组外的其他人
  • 每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)

查看用户信息:

  • W 查看当前登陆用户信息
  • groups 查看当前用户所属的组
  • id xxxx(user) 查看用户的uid 信息

用户权限操作:

sudo useradd 用户名   # 创建一个用户
sudo passwd 密码     # 设置用户密码
su 用户     # 切换指定用户登陆
sudo chown -R 用户名: 用户名 ./权限   # 将指定给用户

6、软件包

软件包:通常指的是一个应用程序,它可以是一个GUI 应用程序、命令行工具或(其它软件程序需要的)软件库

软件包管理: - 底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM - 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF

软件包.jpg