Linux基础学习 | 青训营笔记

152 阅读15分钟

计算机硬件

计算机五大基本单元

1.运算器

执行各种算术和逻辑运算操作的部件,将信息和数据处理为计算机能够理解和处理的形式。

2.控制器

控制计算机各部件协调工作的中心,负责接收用户输入的指令,对指令进行分析、译码,并发出相应的控制信号,控制计算机各部件有序地工作。

3.存储器

用于存储程序和数据的部件,包括半导体随机存取存储器(DRAM)、只读存储器(ROM)、高速缓存(Cache)和高速外部存储器(SSD)。

4.输入设备

用于接受用户输入数据和信息的设备,如键盘、鼠标、扫描仪和触摸屏等。

5.输出设备

用于将计算机处理结果输出给用户的设备,如显示器、打印机和音箱等。

计算机操作系统

计算机操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。

从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。

事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。

BIOS与UEFI

BIOS全称是Basic Input Output System,翻译成中文的意思就是基本输入输出系统。

UEFI全称是Unified Extensible Firmware Interface,翻译成中文的意思就是统一可扩展固件接口。它取代了BIOS,成为新一代电脑的标准配置。由于UEFI使用图形界面,在支持方面比BIOS更加全面,目前几乎所有新组装的电脑都是采用UEFI启动。

注意:BIOS和UEFI都是电脑启动时按 Delete 或者按 F1 进入,然后选择第一项进入到启动设置菜单。

Linux系统概览

Linux发展简史

  1. 起步(1991年至1993年):

1991年,芬兰的大学生Linus Torvalds在大学宿舍中编写了一个名为minix的操作系统,这是最早的Linux雏形。1992年,Linus Torvalds将minix操作系统移植到了x86架构的计算机上,并将其改名为Linux。在这个过程中,他结识了一些志同道合的程序员,如James Smith、Raymond Floyd等人,他们一起对Linux进行了改进和完善。

  1. 独立发展(1993年至1995年):

1993年,Linux开始独立发展,并逐渐获得了广泛的关注和认可。此时,Linux已经具备了一定的功能和特性,如文件系统、进程管理、内存管理等。同时,Linux也开始被应用于一些商业领域,如金融、电信等。

  1. 稳定发展(1995年至今):

1995年,Linux 2.0版本发布,这个版本相比之前的版本具有更加完善的功能和特性,如支持多个处理器、内存管理、文件系统改进等。此后,Linux逐渐成为了服务器端操作系统的首选,并在企业、政府等领域得到了广泛的应用。同时,随着互联网的普及,Linux也开始在互联网领域得到了广泛的应用,如Web服务器、电子邮件服务器等。

  1. 社区发展(2000年至今):

随着Linux的发展,越来越多的人开始参与到Linux社区中来,形成了一个庞大的开发者群体。在这个过程中,逐渐形成了一些非常活跃的社区组织,如GNOME、KDE、XFCE等。这些社区组织致力于维护Linux的稳定和发展,为广大用户提供更好的使用体验。

总的来说,Linux的发展历程是一个不断完善和发展的过程,经历了起步、独立发展、稳定发展和社区发展几个阶段。如今,Linux已经成为了全球最流行的操作系统之一,为数以亿计的用户提供了便捷、高效的计算机服务。

Linux版本

Linux发行版本非常多,每个版本都有自己的特点和用途。以下是一些常见的Linux发行版本:

  1. Debian 系列:Debian 是最早的Linux发行版之一,最初由瑞典的Linus Torvalds开发。Debian 系列的特点是稳定、安全、易用,广泛应用于服务器、嵌入式设备、台式机等领域。
  2. Ubuntu 系列:Ubuntu 是一个流行的开源社区版本,由Canonical公司维护。Ubuntu 系列的特点是轻量级、美观、易用,适合个人用户和轻度服务器使用。
  3. Red Hat 系列:Red Hat 是最大的Linux发行版之一,由美国的Red Hat公司发布。Red Hat 系列的特点是功能强大、稳定性好、安全性高,适合企业和高级用户使用。
  4. CentOS 系列:CentOS 是另一个流行的开源社区版本,由Red Hat公司的合作伙伴Oracle公司开发。CentOS 系列的特点是兼容性好、性能稳定、安全性高,适合企业级用户使用。
  5. Arch Linux 系列:Arch Linux 是一个基于 RPM 的发行版,由瑞典的Stack Exchange网站开发。Arch Linux 的特点是轻量级、高效、安全,适合桌面和嵌入式设备使用。
  6. Slackware 系列:Slackware 是一个自由软件发行版,最初由David Land于1995年创建。Slackware 的特点是稳定、简单、易于使用,适合学习和桌面环境使用。
  7. Mandriva 系列:Mandriva 是一个开源的、商业化的Linux发行版,由瑞典的Red Hat公司和Mandriva AB公司合作开发。Mandriva 的特点是稳定、功能强大、安全性高,适合企业和高级用户使用。
  8. Wartune Linux 系列:Wartune Linux 是红帽公司发布的一个付费版本,它基于Red Hat Enterprise Linux 7.4内核,并进行了定制和优化,适合高级用户和企业级应用。

除了以上这些常见的Linux发行版本之外,还有许多其他的发行版本,如Debian GNU/Linux、Arch-Linux、Gentoo、Debian Longhorn、Fedora、CentOS-RHEL等。每个发行版本都有自己的特点和用途,适合不同类型的用户和环境。

查看Linux系统内核版本

#方法1
uname -a
//显示系统的所有信息,包括内核版本号、操作系统发行版、主机名、处理器类型和架构等等
uname -r
//只显示当前Linux系统的内核版本号

#方法2
cat /proc/version
//cat /proc/version 命令用于显示当前 Linux 系统内核的版本号、编译者和编译日期。该命令读取 /proc/version 文件的内容并将其输出到终端上。

//该命令可以提供有关 Linux 内核的基本信息,包括内核版本、内核编译器和内核构建日期等。此外,它还提供了有关操作系统的其他信息,例如 GNU 工具链的版本和 CPU 架构信息。

//一些 Linux 系统中可能没有 /proc/version 文件,但是它们通常会提供其他方式来查看内核版本号,例如方法1的 uname -r 命令

Linux系统应用领域

  1. 桌面应用:Linux系统广泛应用于个人计算机和笔记本电脑,提供了丰富的桌面应用程序,如GNOME、KDE、XFCE、MATE等。这些应用程序可以提供办公、娱乐、游戏等多种功能。

  2. 服务器应用:Linux系统可以用于构建各种类型的服务器,如Web服务器、数据库服务器、反向代理服务器、邮件服务器、DNS服务器等。Linux系统的高可靠性和高性能特性使得它在高端服务器市场中占据了重要地位。

  3. 嵌入式应用:Linux系统可以用于各种类型的嵌入式设备,如智能手机、智能电视、嵌入式路由器、嵌入式音频设备等。Linux系统的低成本、高可靠性和易用性使得它在嵌入式设备市场中受到广泛欢迎。

  4. 物联网应用:Linux系统可以用于构建各种类型的物联网设备,如智能家居、智能城市、智能交通等。Linux系统的开放性和灵活性,使得它在物联网领域具有广泛的应用前景。

  5. 游戏娱乐:Linux系统可以用于游戏和娱乐设备,如街机游戏、电视游戏机、电脑游戏等。Linux系统的优秀性能和多平台支持,使得它在游戏娱乐领域具有广泛的应用前景。

  6. 软件开发:Linux系统可以用于开发各种类型的软件,如操作系统、编译器、虚拟机、集成开发环境等。Linux系统的开源性和易用性,使得它成为许多开发者首选的开发平台。

  7. 其他领域:Linux系统还可以用于许多其他领域,如数据中心、云计算、虚拟化、安全等。

Linux系统结构

Linux四个主要部分

1、内核,控制着计算机系统上的所有硬件和软件,主要负责系统内存管理、软件程序管理、硬件设备管理、文件系统管理;

2、GNU工具,除内核控制的硬件设备外的必须工具,例shell;

3、桌面环境,例如KDE;

4、应用软件。

Linux体系结构

Linux体系结构是Linux操作系统的设计哲学、组成部分、内核架构、系统调用和工具链的集合。Linux体系结构的设计目标是提供一个稳定、可靠、易于使用且高效的操作系统,使得在不同的硬件平台上都可以运行。

Linux体系结构主要包括以下几个部分:

  1. 内核:内核是Linux体系结构的核心,负责控制计算机系统上的所有硬件和软件,包括内存管理、进程管理、设备管理、文件系统管理等。内核是Linux的核心,负责处理系统中的各种事件和任务,并与用户空间进行交互。内核使用C语言编写,并采用了模块化的设计,将系统的不同功能划分为多个模块,便于维护和更新。
  2. 库和工具:Linux体系结构还包括大量的库和工具,用于提供系统调用和底层服务。例如,shell(如bash、sh、ksh等)、C编译器、链接器、交叉编译器、调试工具等。这些库和工具是开发者编写应用程序和驱动程序的必备工具。
  3. 系统调用接口:Linux体系结构提供了一套系统调用接口(system call interface),使得应用程序可以通过C语言访问系统调用。这些系统调用接口是由C语言编写的,并提供了一些标准的调用方法,如fork()、exec()等。这些系统调用接口是硬件与系统进行交互的必要途径。
  4. 文件系统:Linux体系结构的文件系统是ext4或者XFS等,这些文件系统支持超级块、inode、file and directory management,并采用了一些安全特性,如rwxr-xr-x(mask)。ext4是目前最流行的文件系统之一,被广泛应用于服务器和桌面系统。
  5. 工具链:Linux体系结构还包括一套完整的工具链,包括编译器、链接器、调试工具等。这些工具链为开发者提供了必要的开发环境,以便于编写、编译、调试和执行C语言程序。

总之,Linux体系结构是一个非常庞大和复杂的系统,包括多个组件和接口,提供了丰富的功能和特性,能够满足不同类型的应用需求。

进程的特点

进程是操作系统中的一个基本概念,它是系统分配资源和调度的独立单位,它包含了一个程序的执行实例。进程具有以下特点:

  1. 动态性:进程是在运行时动态产生和消亡的,它们是系统中的基本执行单位。
  2. 并发性:进程可以并发执行,多个进程可以同时运行,它们相互独立,互不干扰。
  3. 独立性:进程是一个独立的执行单位,它具有自己的地址空间、数据空间和系统资源,互不干扰。
  4. 隔离性:进程在运行时是相互隔离的,不受其他进程的影响,它们可以独立地访问系统资源。
  5. 负载性:进程承担了一个程序的执行任务,它可以处理多个任务,具有负载性能。
  6. 结构性:进程由程序、数据和进程控制块(PCB)三部分组成,它们构成了一个独立的执行单元。

进程的命令

1.查看进程:

ps aux | grep <PID>

2.查看进程ID:

pgrep <PID>

3.终止进程:

kill <PID>

4.启动进程:

start <PID>

5.等待进程结束:

wait <PID>

6.显示进程信息:

ls -l /proc/[PID]/cwd

7.显示进程的CPU使用率:

top -bn1 | grep <PID>

8.显示进程的内存使用率:

top -bn1 | grep <PID> -sh

9.显示进程的磁盘I/O使用率:

iostat -x -x <PID>

进程的状态

进程是操作系统中的一个独立执行单元,它包含了一个程序的执行实例。进程具有以下状态:

  1. 就绪态:进程已经准备好开始执行,等待合适的时机。
  2. 运行态:进程已经开始执行,等待I/O设备或者其他操作系统服务的连接。
  3. 阻塞态:进程被阻塞,等待某些事件发生,例如等待I/O设备或者其他操作系统服务的连接。
  4. 死亡态:进程没有响应,处于已终止状态。
  5. 挂起态:进程被挂起,暂停执行。可用于调试进程。
  6. 睡眠态:进程进入睡眠状态,等待某些事件发生,例如等待I/O设备或者其他操作系统服务的连接。
  7. 残留态:进程处理完当前任务后,但是由于某些原因(如资源不足)还没有结束,系统会把这个进程保留下来,在适当的时候进行终止。

Linux --文件系统

Linux 是一种自由和开放源代码的操作系统,其文件系统是其核心之一。Linux文件系统(也称为 ext4)是一种常见的文件系统,广泛用于 Linux 发行版和其他类Unix系统。

Linux文件系统的结构可以分为以下几个层次:

  1. 文件:文件是文件系统中最基本的单元,它是一个数据存储的基本单位。在 Linux 中,文件通常以 / 开头,表示该文件存储在根目录下。
  2. 目录:目录是文件系统中的第二级元素,用于组织文件和文件夹。每个目录都有一个名为 / 的路径作为它在文件系统中的基本位置。/ 路径之后跟着目录名,组成了一个目录的完整路径。
  3. 文件夹:文件夹是文件系统中的第三级元素,用于组织一组相关的文件和文件夹。每个文件夹都有一个名为 / 的路径作为它在文件系统中的基本位置。/ 路径之后跟着文件夹名,组成了一个文件夹的完整路径。
  4. 设备节点:设备节点是用于存储磁盘设备的元素。它们通常包含了一个或多个设备的信息,如设备名称、设备类型、设备号等。设备节点通常存储在磁盘的特定位置,如/dev/sda(U盘)、/dev/sdb(硬盘)等。
  5. 块设备:块设备是用于存储大量数据的设备,如硬盘、闪存等。与设备节点不同,块设备通常以 /dev/ 开头,表示该设备存储在 /dev 目录下。块设备可以分为多个设备节点,每个设备节点存储了一个或多个分区。

在 Linux 中,文件和目录都是用户可见的,用户可以创建、删除、重命名文件和目录。文件和目录的权限也非常重要,不同的用户和组可以具有不同的权限,以便对文件和目录进行操作。此外,Linux 还支持挂载(mounting)和卸载(unmounting)文件系统,使得用户可以在不同的操作系统之间进行文件系统转换。

学习完linux基础,收获颇多。学习Linux可以帮助前端开发人员更好地了解操作系统的工作原理和系统架构,这对于开发高性能、高可靠性的应用程序至关重要。Linux是开源的,这意味着源代码可以公开获取,前端开发人员可以从开源项目中获取灵感和技术支持,减少自己探索的时间和成本。Linux具有强大的网络管理和调试工具,例如 iftopiptraf 等,这些工具可以帮助前端开发人员监控和分析应用程序的网络流量和性能,以便进行调试和优化。