Linux基础

60 阅读6分钟

Linux基础

Linux的价值

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

Linux选用企鹅作为logo的原因是企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界上的任何国家。Linux选择企鹅作为logo,其含义是:开源的Linux,可以为任何人在任何地方使用,任何公司或个人无权将其私有

计算机硬件

计算机的五大基本单元

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

image.png

计算机操作系统

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

image.png

操作系统启动流程

  1. 启动BIOS。进行硬件自检和初始化
  2. 系统引导。找到操作系统。
  3. 启动系统
  4. 初始化系统

启动BIOS

BIOS,Basic Input/Output System,基本输入输出系统。 早期的 BIOS 存储在内存的 ROM 中,不会断电消失;现在大多存储在内存的闪存(Flash Memory)中。

BIOS 程序执行过程有以下几步:

  1. 供电初始化
  2. POST硬件自检
  3. 搜索可引导的存储设备

系统引导

  1. 读取MBR
  2. 查找活动分区

启动系统 初始化系统

image.png

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系统版本

cat/etc/os-release

Linux 系统应用领域

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

Linux系统结构

Linux基本组成

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

image.png

image.png

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

进程管理

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

image.png

查看进程信息

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

# 查看某个进程
top -p 93824

# 关闭指定的进程
kill 93824

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

进程调度

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

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

进程的系统调用

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

image.png

文件系统

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

虚拟文件系统(VFS)

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

查看文件系统类型

# df命令报告文件系统磁盘空间利用率
df -T

# mount命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息
mount

文件基本操作

ls #查看文件夹下内容

mkdir demo #创建文件夹

mv demo/home #移动demo文件夹到/home

rm -r demo #删除demo文件夹

touch file.txt #创建空文件

cp file.txt file_bak.txt # 复制文件

用户权限

用户账户

文件权限

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

查看用户信息

# 查看当前登录用户信息
w

# 查看当前用户所属的组
grops

# 查看用户的uid信息
id xxxx

用户权限操作

# 在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd /&& mkdir 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
    • 上层工具:主要用于数据的搜索任务和依赖解析任务,ART,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
  • 列出所有已安装的包:apt list --installed