Day02-前端入门——Linux基础|青训营笔记

79 阅读7分钟

2023.4.15//讲师:徐里桐

linux基础

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

学习目录

  1. 计算机硬件
  2. 计算机操作系统
  3. Linux 系统概览
  4. Linux 系统结构
  5. Linux 系统软件管理器

1.计算机硬件

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

  • 控制器:协调和指挥计算机中其他部件进行工作。
  • 运算器:进行算术和逻辑运算。(运算器和控制器一起组成了cpu单元)
  • 存储器单元:分为内存和外存(磁盘,光驱等)。
  • 输入单元:鼠标键盘等。
  • 输出单元:显示器,音箱等。 image.png

2.计算机操作系统

操作系统 (Operating System,OS):管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息(承上启下的作用)

操作系统启动流程 image.png

3.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操作系统

image.png

查看Linux系统的内核版本:

  • uname -a
  • cat /proc/version

查看Linux系统版本

  • cat /etc/ou-release

Linux系统应用领域

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

Linux系统结构

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

  • 内核:提供了操作系统的一些底层核心能力
  • shell:命令解释器,通过一些指令和内核进行交互
  • 文件系统:负责将用户的文件存进磁盘当中
  • 应用程序:在Linux系统上运行的一些程序

Linux体系结构 image.png

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

进程管理

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

查看进程信息

  • 查看启动的nginx进程:ps -ef|grep nginx
  • 查看某个进程:top -p 93824
  • 关闭指定的进程:kill 93824
  • 全部进程动态实时视图:top

问题思考

系统中运行的程序远远大于 CPU 的核数,那 Linux 系统是如何实现同时运行这么多程序的?

答:Linux是通过进程调度的形式来实现同时运行多个程序的。

进程调度

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

  • 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 而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
  • 进程执行消耗时间和进程量成正比

进程的系统调用

  • 内核空间(Kernal Space): 系统内核运行的空间
  • 用户空间(User Space): 应用程序运行的空间

image.png

文件系统

  • 文件系统负责管理持久化数据的子系统,负责把用户的文件存到磁盘硬件中
  • Linux 文件系统是采用树状的目录结构,最上层是 /(根)目录

image.png

虚拟文件系统(VFS)

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

查看文件系统类型

  • 命令报告文件系统磁盘空间利用率:df -T
  • mount命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息:mount
  • 查看文件夹下内容:is
  • 创建文件夹:mkdir demo
  • 移动 demo 文件夹到 /home:mv demo /home
  • 删除 demo 文件夹:rm -r demo
  • 创建空文件:touch file.txt
  • 复制文件:cp file.txt file bak.txt

文件读取流程 image.png

用户权限

用户账户

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

用户组

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

文件权限

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

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

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

查看用户信息

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

用户权限操作

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

5.Linux软件包管理

软件包

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

软件包管理

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

软件包管理工具

  • RPM (Red Hat Package Manager) ,为 Red hat 操作系统的包管理系统
  • DPKG (Debian package),为 Debian 操作系统的包管理系统

image.png

Debian APT 常用命令

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

Debian 配置软件源

通常Debian系的Linux软件源配置文件: /etc/apt/sources.list image.png 镜像地址

  • /dists:查看系统代号
  • /pool: 查看软件分支

nginx安装

  • 更新包缓存:apt update
  • 安装 nginx 包:apt install nginx
  • 查找 nginx 路径,/ete/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,发现默认的站点配置位J /etc/nginx/sites-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