Linux 详解:最完整的入门指南_linux菜鸟入门指南

由于Linux存在于许多设备中并带来了许多优势,因此了解它是什么以及它如何影响计算机行业是至关重要的。

本文将深入探讨 Linux 以及为什么它是当今最常用的技术之一。

Linux 定义

Linux 是一个内核,它有一个开源操作系统的生态系统。该系统基于 UNIX 操作系统,并围绕同一内核构建了许多发行版。

注:Linux 通常指的是内核和操作系统。Linux 内核是每个 Linux 发行版的核心。

Linux 以可靠、稳定、安全和灵活著称。它的特性使它成为运行超级计算机、服务器和台式计算机的热门选择。它也经常被用作嵌入式系统中的嵌入式应用程序(软件)。Linux 是许多日常设备的核心,例如电话、智能电视和可穿戴设备。

Unix vs Linux

Unix 和 Linux 是两种截然不同的技术解决方案:

  • Linux 是一种类似 Unix 的操作系统,特别是一种受 Unix 内核版本启发的内核。
  • Unix 是一个具有许多不同内核版本的操作系统。

尽管这两种技术有一些相似之处,但每种解决方案都有独特的功能。下表提供了对这些差异的简要概述。

UnixLinux 操作系统
由贝尔实验室研究人员在 1960 年代和 1970 年代开发由 Linus Torvalds 于 1991 年开发
原始许可证是私有的,源代码具有受限的分发和修改选项源代码可免费分发和修改(开源)
多个内核版本单个内核,多个发行版
具有不同特性和功能的多个商业版本众多商业和社区创建的发行版
开发由供应商关闭和维护发展是开放的,由社区驱动

Linux 是 Unix 的克隆,但它不是 Unix。内核借鉴了 Unix 的许多思想,例如使用 POSIX 标准编程api 的接口。尽管如此,该代码并不是Unix源代码的直接派生。

Linux 操作系统历史

Linus Torvalds 于 1991 年开发了 Linux,当时他还是赫尔辛基大学的学生。最初的 Linux 内核是为使用英特尔 80386 微处理器的计算机设计的。

在那段时间里,Linus 使用 Minix,一个廉价的 Unix 作为学习平台。由于许可证限制了对源代码的修改,Linus 决定创建一个操作系统内核。这个项目最初是一个简单的终端模拟器,用于连接大学里的大型 Unix 系统,后来得到了进一步的开发和改进。

1991 年,第一个 Linux 版本出现在互联网上。项目变得协作,许多程序员参与到它的开发中。因此,该系统可以在许多不同的处理器版本上运行。新的公司开始专攻 Linux,比如红帽公司,而像英特尔这样的巨头则为嵌入式系统、桌面机器和服务器提供 Linux 解决方案。

Linux 最令人兴奋的特性之一是它不是一个商业产品。创建者维护内核,而一组连接的开发人员继续开发。该项目是通过互联网合作的结果。

Linux 架构

Linux 内核具有单一的开放体系结构。Linux 操作系统的基本架构由三层组成:

硬件:机器的物理组成部分,内存(RAM)和处理器(CPU)。
内核:内存软件和CPU控制器,内核充当硬件和进程之间的连接器。
进程:系统上由内核控制的运行程序,进程构成了内核之外的所有任务。

Linux 系统将虚拟内存分成两个不同的空间:

  • **内核空间:**为运行系统内核、内核模块和大多数设备驱动程序而保留的虚拟内存段。
  • 用户空间(或用户区):为运行内核之外的所有代码而保留的虚拟内存段。

内核在 Linux 操作系统中起着中心作用,并与许多不同的体系结构部分一起工作。下面是 Linux 主要组件的简要概述。

引导装载程序

引导加载程序是每次 Linux 系统启动或重新启动时运行的程序。引导加载程序的主要功能是将内核加载到内存中并启动引导过程。

除了定位和加载内核之外,该程序还为内核设置初始启动环境并提供所需的信息。

Linux 上最常见的两个引导加载程序是:

  • GRUB:大统一引导加载程序(GRUB)是各种 Linux 发行版中最常见的默认引导加载程序。该程序允许在多操作系统环境中选择操作系统、配置启动选项、运行 GRUB 拯救模式以及选择备用内核。
  • LILO:Linux LOader (LILO)是一种在某些 Linux 系统上不太常见但仍在使用的引导加载程序。与 GRUB 相比,该程序具有简单的设计和众多配置选项。

完成引导过程后,Linux 内核继续运行操作系统。

内核

内核是操作系统中最底层的软件。它充当硬件和应用程序之间的通信点。Linux 内核是单片的,用C 语言和汇编语言编写。它提供了运行系统所需的所有低级进程。

Linux 内核管理以下组件:

  • **设备驱动程序:**内核充当硬件和进程之间的中介。
  • **内存:**内核跟踪内存使用情况,包括存储的内容和位置。
  • **进程管理:**调度来自进程的CPU请求,并相应地分配处理器时间。
  • **系统调用和安全:**内核处理所有系统调用,并在内核空间中处理请求。

通过管理低级任务,内核在用户和硬件之间提供了一个抽象层,同时允许用户访问硬件信息。库的使用可以打开和关闭内核中的某些功能,使其非常可定制和灵活。
在抽象硬件的同时访问信息的额外灵活性提供了一个非常模块化的内核模型。

初始化系统

init 系统是由内核启动的 Linux 守护进程。init 系统的目的是在引导期间初始化用户空间,并在运行时期间管理系统进程。init系统任务包括:

  • 启动、停止和重启服务。
  • 管理其他守护进程。
  • 协调引导顺序。

最初的 Linux 初始化系统是基于 Unix SystemV (SysV) 初始化系统。SysV 依赖于 /etc/init.d 目录下中的脚本,根据运行级别顺序启动、停止和重启服务。

大多数主要的 Linux 发行版(Ubuntu、CentOS、Fedora、Debian)使用 systemd 实现 init 系统,它向后兼容 SysV。该系统提供更快的引导时间和更好的系统管理功能,例如通过 journalctl 进行详细的日志记录。

有些 Linux 系统允许在安装过程中选择不同的初始化系统。这个选择很关键,会影响整个系统的行为。

守护进程

守护进程是在引导过程中启动的后台进程。并等待特定的事件或请求在没有用户干预的情况下发生。守护进程的一些例子包括:

  • systemd:负责管理其他守护进程的中心守护进程。
  • sshd:SSH服务器守护进程监听传入的SSH连接请求,启用到远程服务器的安全连接,并允许文件传输。
  • httpd:侦听HTTP请求并提供网页服务的web服务器守护进程。
  • cron:在请求时间执行cron表(crontab)中的计划任务或脚本的守护进程。

Linux 包含许多守护进程,每个进程都具有特定的功能。总的来说,守护进程确保程序在系统上顺利运行。

图形化服务

图形服务器是 Linux 上的一个基本框架,用于在监视器上显示图形。该组件实现了 X 窗口系统(X11或X),并支持窗口管理、键盘/鼠标输入和多显示支持。

X 窗口系统不提供用户界面。不同的程序处理用户与之交互的可视化界面的细节。

桌面环境

桌面环境提供实现图形用户界面(GUI)的软件。桌面环境提供了一种合乎逻辑且用户友好的方式来导航各种操作系统组件。

Linux 提供了几种不同的桌面环境可供选择,它们是独立于发行版的。
桌面环境包含几个内置的应用程序,如文本编辑器、配置程序、web 浏览器和其他实用程序。

应用程序

应用程序是 Linux 操作系统的最高层。大多数 Linux 发行版提供集中的应用程序商店环境来搜索和安装应用程序。

注意:对于迁移到 Linux 的 Windows 用户,Wine 等程序允许在 Linux 上运行 Windows 应用程序。

Linux 是如何工作的

Linux 管理硬件资源,并提供与系统资源交互的接口。内核是操作系统与硬件交互的核心组件。
围绕内核构建的支持 Linux 工作的关键组件将在以下部分中介绍。

Linux Shell

Linux 使用称为 shell 的命令行接口与内核通信。shell 使用户能够使用各种 Linux 命令而不是 GUI 与操作系统进行交互。有几种流行的 shel l类型,如 Bash、Zsh、Fish 等。

使用基于文本的命令可以访问各种 Linux 实用程序和工具。shell 支持文件管理、管理任务和配置系统设置。

Linux 文件系统

Linux 文件系统决定了文件和目录在 SSD 或 HDD 上的存储方式。Linux 支持各种文件系统类型,最常见的是扩展文件系统(ext)。

Linux上常见的文件系统包括:
ext2:在许多早期的 Linux 系统上,不包括日志记录。
ext3:是 ext2 的扩展,增加了日志记录功能来跟踪文件系统的更改。
**ext4:**是大多数现代Linux发行版的默认设置。文件系统支持大文件系统,具有更好的性能和可扩展性。
Btrfs: (B-tree文件系统)提供高级特性,如 RAID 支持和自修复。
XFS:是一种健壮的高性能文件系统,适用于大型文件系统和文件。

文件系统的选择取决于具体的需要、需求和用例。

Linux进程

Linux中的进程是操作系统中的单个工作单元。正在运行的命令或程序的任何实例都是具有唯一标识符(进程ID或PID)的进程。

进程有几种不同的状态,例如:

  • Running:当前在CPU中执行的进程的状态。
  • Sleeping:进程正在等待资源或特定事件的状态。
  • Zombie:僵尸进程被停止并且没有被彻底清理。
  • Stopped:进程未运行并准备恢复或终止的状态。
  • Orphaned:父进程结束的进程。

Linux提供了各种实用程序和工具来管理进程:

  • 有几个不同的命令列出正在运行的进程,包括 top 和 ps 命令。
  • 终止(杀死)进程的命令。
  • 进程控制命令,如 exec() 和 fork(),支持并发执行或多任务处理。

处理进程对于 Linux 来说是必不可少的。了解如何管理进程有助于解决软件问题,优化性能,并直接管理系统资源。

Linux 用户权限

Linux 采用文件系统的权限模式。该模型基于三个不同的级别分配不同的权限:

  • **User(u):**文件或目录的用户。
  • **Group(g):**具有相似权限的多个用户。
    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

[外链图片转存中…(img-MInAtMfz-1714136632865)]
[外链图片转存中…(img-Y4g0nncS-1714136632865)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,包是一种组织Python模块的方法,它将相关的模块组合在一起,形成一个大的模块。包可以包含子包和模块,以及其他资源文件。 在一个包目录中,通常会有一个名为`__init__.py`的文件。这个文件的主要作用是标识该目录为Python包,同时可以在其中编写一些初始化代码。 `__init__.py`可以为空文件,也可以包含Python代码。如果`__init__.py`文件存在,则在导入包时会自动执行其中的代码。这就使得我们可以在包的初始化过程中完成一些需要执行的操作,例如设置环境变量、导入必要的模块等。 例如,如果我们有一个名为`mypackage`的包,那么它的目录结构可能如下所示: ``` mypackage/ __init__.py module1.py module2.py ``` 其中,`__init__.py`可以包含一些初始化代码,例如: ```python # 在 __init__.py 中导入模块 from .module1 import * from .module2 import * ``` 这样,在导入`mypackage`包时,就会自动导入`module1`和`module2`模块。 此外,`__init__.py`还可以定义包级别的变量和函数,供包内的模块使用。例如: ```python # 定义包级别的变量 PI = 3.14 # 定义包级别的函数 def square(x): return x ** 2 ``` 这样,在包内的模块中,我们就可以直接使用`mypackage.PI`和`mypackage.square()`来访问这些变量和函数了。 总之,`__init__.py`文件是Python包的重要组成部分,它可以帮助我们更好地组织和管理Python代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值