Linux基础 | 青训营笔记

75 阅读6分钟

1计算机硬件基本单元

  • 控制器(controller):对指令进行解释
  • 运算器(ALU):计算逻辑单元
  • 存储器(memory):当前或者即将执行的数据或程序
  • I/O设备

2操作系统

2.1定义

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

  • 操作系统提供了两部分能力

    • 管理计算机资源

      • 处理器管理
      • 存储器管理
      • 设备管理
      • 文件管理
    • 提供接口(用户与计算机交互的能力)

      • 命令接口
      • 图形用户接口
      • 程序接口

2.2操作系统启动流程

  • bios和uefi,都是固化在主板上的、随着通电开始后自行运行的程序,以该程序为首,按照一系列流程去启动操作系统

  • uefi可以算是bios的优化

3Linux系统概览

3.1Unix操作系统

3.1.1Unix是什么

  • 是一个分时系统
  • 1970年问世
  • 影响深远

3.1.2Unix操作系统历史

  • 1969年开发

    • 使用汇编语言
  • 1970年投入使用

  • 汤普森为其开发了B语言

  • 之后Dennis Ritchie开发了C语言

  • 然后他们用C语言重新写了Unix程序

3.1.3类Unix系统

  • 定义:是指继承UNIX的设计风格演变出来的系统

    • 与Unix有许多相似之处
    • 遵守POSIX标准规范
  • BSD

    • 伯克利版本

3.1.4Unix哲学

  • 根据开发经验总结出来一些想法和方法

  • kiss原则

  • Everything is a file

3.2Linux系统

3.2.1Linux操作系统

  • Unix Minix和Linux

    • 由于Unix开始闭源,Minix被开发出来,不包含任何Unix的源码
    • 现在Minix面向嵌入式
  • Linux操作系统

    • bash:默认的shell
    • gcc
  • 发行版

3.2.2自由软件

  • 自由软件运动

    • 软件受知识产权相关的法律保护copyright
    • 在Unix不再提供源码,理查德推进自由软件gnc
    • 1989采用GPL
  • 自由的含义

    • 理查德的自由是什么呢:自由关乎权利,而不是价格

    • 四项自由(用户的自由权利)

      • 自由度0:自由运行软件(最基本的权利)
      • 自由度1:自由学习和修改软件源代码
      • 自由度2:自由再发布软件拷贝
      • 自由度3:自由发布修改后的软件版本
  • GNU项目

    • 目的是为了开发一个类似Unix的操作系统
    • 理查德开发了Emacs编辑器和gcc编译器
    • Gnu's not unix
    • 目前包含大量工具,但是缺乏一个内核
  • GPL许可证

    • Copyleft

      • 使用或者修改程序后,也必须基于GPL公开程序

      • 不能附加限制条件

3.2.3开源软件

  • 什么是开源

    • 开源运动(open-source movement)
    • Netscape
  • 开源目标

    • 是开发高质量软件

      • 高品质:经过充分测试,测试人员也是用户
      • 低风险:闭源代码无人维护,知道问题也无法处理
      • 低成本:自愿参加
      • 高透明:源码公开
  • 代码托管(版本控制,仓库)

  • 版本控制工具

    • 集中式svn
    • 分布式git
  • 代码托管平台

    • github,gitlab,gitee

3.3linux版本

  • 内核版本(核心)

  • 发行版本

    • linux内核+常用软件=linux发行版本

3.4查看内核版本号

  • Uname方法

    • 使用uname命令和附加命令选项
  • proc目录

    • /proc下的version文件
  • 不同版本的内核软件

    • $ cat /etc/redhat-release (centos)

    • $ cat /etc/issue (Ubuntu)

3.5linux系统应用领域

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

  • 嵌入式和智能设备

  • 个人办公软件

  • 学术研究与软件研发

4linux系统结构

4.1linux基本组成

  • 内核

  • Shell

    • 命令解释器
  • 文件系统

    • 管理持久数据
  • 应用程序

4.2linux体系结构

  • 用户空间

    • 应用程序
    • GNU C Library
  • 内核空间

    • 系统调用
    • 内核
    • 平台架构相关的代码
  • 独立性和权限划分

内核是硬件与软件之间的中间层

内核是一个资源管理程序

内核提供一组面向系统的命令

4.3进程管理

  • 进程的特点

    • 是一个正在执行的一个程序或命令
    • 进程有自己的地址空间,占用一定的系统资源
    • 一个cpu核同一时间只能运行一个进程
    • 进程由它的进程id(pid)和它父进程id(ppid)唯一识别
  • 查看进程信息

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

# 查看某个进程
top -p 93824

# 关闭指定进程
kill 93824

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

4.4进程调度

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

  • 原则

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

    • 用户态->内核态->用户态

4.5文件系统

  • 核心思想:一切皆文件,包括设备

  • 目录结构:树状

  • 虚拟文件系统(VFS)

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

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

# mount命令是挂载文件系统,不带任何参数运行时,打印包含文件系统类型在内的磁盘分区的信息
mount
  • 一些基本操作

    • ls
      
      mkdir
      
      mv
      
      rm
      
      touch
      
      cp
      
    • 注意

      • touch命令本身并不是为了创建空文件而产生的

4.6用户权限

  • 用户账户

    • 用户账户

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

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

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

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

# 查看用户的uid信息
id xxxx

4.7文件权限

  • 基本概念

    • 所有者:文件所有者
    • 所在组:文件的所有者所在组
    • 其他人:除文件所有者及所在组外的其他人
  • drwxrwxrwx 例如链接文件为777

cd / && mkdir demo && ls -ld demo


sudo useradd ceshi # 创建用户,赋予可写操作 
sudo passwd ceshi # 设置用户密码
su ceshi
cd demo
touch index.js

sudo chown -R ceshi:ceshi ./demo # demo文件夹权限给ceshi用户
su ceshi
cd demo
touch index.js

4.8软件包

  • 软件包管理

    • 底层:用来处理安装和删除软件包文件等任务:DPKG,RPM

      • rpm:redhat
      • dpkg:debian
    • 上层:搜索任务和依赖解析任务:APT,YUM,DNF

操作系统格式软件包管理系统前端工具
Debian.debdpkgapt,apt-get
Ubuntu.debdpkgapt,apt-get
centos.rpmrpmyum
Fedora.rpmrpmdnf
openSUSE.rpmrpmzypper
  • debian配置软件源

    • 配置文件:/etc/apt/sources.list
    • deb 镜像地址 buster main contrib non-free