Linux 基础| 青训营笔记

144 阅读8分钟

Linux 基础

笔者:YDSUPER

课程地址:点我前往

零、课程介绍

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

题外话:Linux 为什么选企鹅作为 Logo呢?

企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界上的任何国家。所以Linux选择🐧,寓意着开源的Linux,为全人类共同所有,任何公司无权将其私有。

一、计算机硬件

计算机由五大基本单元组成

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

基本运算流程:从输入设备输入,经过存储器、运算器和控制器,最后输出设备输出。

二、计算机操作系统

操作系统(Operating System, OS)

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

当今主流的操作系统:MacOS\Linux\Windows\Android\HarmonyOS ...

操作系统启动流程

image.png

  • 基于BIOS的传统模式
  • 基于UEFI的主流模式

简而言之:固化在主板上的一段程序,主要作用让计算机开机就能执行和解析到这段程序,执行后,进行初始化,然后找到Bootloader进行加载和运行相应的操作系统的程序。

区别:UEFI是BIOS的一种优化和升级的版本,优化了BIOS自检过程,提升了加载速度。

三、Linux 系统概览

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 发行版本 image-20230505153919160.png

查看 Linux 系统内核版本

# 方法一
uname -a

# 方法二
cat /proc/version

# 查看Linux系统的发行版本
cat /etc/os-release

Linux 系统应用领域

  • IT 服务器(操作系统、虚拟化和云计算)

  • 嵌入式和智能设备

    安卓手机的底层就是使用的Linux开发的

  • 个人办公桌面

  • 学术研究与软件研发

Linux 基本组成

Linux 系统一般有 4 个主要部分

  • 内核
  • shell
  • 文件系统
  • 应用程序

image-20230505155015593.png

Linux 体系结构

  • 内核是硬件与软件之间的中间层
  • 内核是一个资源管理程序
  • 内核提供一组面向系统的命令

44a8d723-c996-4a0d-91b3-2e362008683a.png

  • Linux 体系结构 从大体结构上,主要分为用户空间和内核空间
  • 用户空间主要包含应用程序和GNU C Library(glibc)
  • 内核空间主要包含系统调用、内核模块和平台架构相关的代码

内核漫画

image-20230505155308053.png

  • 上层:命令行工具、命令行输入线交互使用,通过 TTY 交给进程
  • 中层:进程管理
  • 底层:文件管理系统

四、Linux 系统结构

进程管理

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

查看进程信息

# 查看启动的 nginx 进程
ps -ef | grep nginx

# 查看某个进程
top -p 93824

# 关闭指定进程
kill 93824

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

进程调度

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

image-16832809286493.png

  • R (TASK RUNNING),可执行状态
  • S (TASK INTERRUPTIBLE),可中断的睡眠状态
  • D (TASK UNINTERRUPTIBLE),不可中断的睡眠状态
  • T (TASK STOPPED or TASK TRACED),暂停状态或跟踪状态
  • Z (TASK DEAD - EXIT ZOMBIE),退出状态,进程成为僵尸进程
  • X (TASK DEAD - EXIT DEAD),退出状态,进程即将被销毁

进程调度原则

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

进程的系统调用

内核空间:系统内核运行的空间
用户空间:应用程序运行的空间

image-16833458581275.png

文件系统

文件系统是操作系统中负责管理持久化数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。

Linux中一切皆文件

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

image-16833542184278.png

虚拟文件系统(VFS)

  • 对应用层提供一个标准的文件操作接口
  • 对文件系统提供一个标准的文件接入接口

image-168335428182010.png

查看文件系统类型

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

文件基本操作

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

文件读取流程

image-168335523639212.png

用户权限

  • 用户账户

    普通用户账户:在系统中进行普通作业

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

  • 用户组

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

文件权限

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

所有者:文件的所有者

所在组:文件的所有者所在的组

其他人:除文件所有者及所在组外的其他人

每个文件对于文件都有不同权限,包括读(R)、写(W)、执行(X)

image-168335622948814.png

查看用户信息

# 查看当前登录用户信息
w
​
# 查看当前用户所属的组
groups# 查看用户的 uid 信息
id xxxx

用户权限操作

# 在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd / && mkidr demo && ls -Id demo
​
sudo useradd ceshi  #创建一个用户,并赋予可写操作
sudo passwd ceshi   #设置用户密码
su ceshi  #切换ceshi 用户登录
cd demo  #进入demo 文件夹
touch index.js  #创建index.js 文件,提示无权限,需要给 ceshi 用户 demo 文件夹的权限
​
sudo chmod o+r ./demo   #demo文件夹写权限赋予其他人
su ceshi  #切换ceshi 用户登录
cd demo   #进入demo 文件夹
touch index.js  #创建index.js 文件成功

五、Linux 系统软件包管理器

软件包

  • 软件包

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

  • 软件包管理

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

软件包管理工具

  • RPM(Red Hat Package Manager),为Red hat 操作系统的包管理系统
  • DPKG(Debian package),为Debian操作系统的包管理系统
操作系统格式软件包管理系统前端工具
Debian.debdpkgapt, apt-get
Ubuntu.debdpkgapt, apt-get
Centos.rpmrpmyum
Fedora.rpmrpmdnf
openSUSE.rpmrpmzypper

Debian APT 常用命令

  • 列出所有可更新的软件清单命令:apt update
  • 安装指定的软件命令:apt install
  • 安装多个软件包:apt install <package_1> <package_2> <package_3>
  • 更新指定的软件命令:apt update
  • 删除软件包命令:apt remove
  • 查找软件包命令:apt search
  • 列出所有已安装的包:apt list --installed

Debian 配置软件源

通常 Debian 系的 Linux 软件源配置文件: /etc/apt/sources.list

image-168335761217818.png

镜像地址:mirrors.aliyun.com/ /dists:查看系统代号 /pool:查看软件分支

nginx 安装

#更新包缓存
apt update
#安装nginx包
apt install nginx
#查找nginx路径,etc/nginx配置文件路径,usr/sbin/nginx可执行文件
whereis nginx
#访问nginx部署的默认站点
curl http://localhost:80
#关闭ng
sudo /usr/sbin/nginx -s stop
#启动ng
sudo /usr/sbin/nginx

nginx 配置修改

#进入nginx配置文件夹
cd /etc/nginx
#打开nginx配置文件nginx.conf,发现默认的站点配置位于/etc/nginxsites-enabled
cat nginx.conf
#进入sites-enabled文件夹,并对default文件进行配置,修改80端口为8080
cd sites-enabled && vim default
#重启nginx服务
sudo /usr/sbin/nginx -s reload
#访问nginx部署的默认站点
curl http://localhost:8080

总结

image-168335711270116.png