文章摘要: Debian Linux 12 操作系统,多用户、多任务、多线程、非实时的操作系统。
相关信息
外部相关文章
- Debian官方文档:https://wiki.debian.org/zh_CN/FrontPage
- 规范存储库:https://specifications.freedesktop.org/
- GNOME桌面功能扩展插件网站:
- GNOME桌面美化网站:https://www.pling.com/
内部相关文章
- 部署配置方案-个人桌面:OS-DebianLinux-热门推荐-部署配置方案-GNOME个人桌面
- 部署配置方案-Web应用服务器:OS-DebianLinux-热门推荐-部署配置方案-Web应用服务器
- 系统维护规划:OS-DebianLinux-热门推荐-系统维护规划
简介
简要说明
- 多用户、多任务、多线程、非实时的操作系统。
- GNU/Linux 用户在挑选软件方面有着极大的自由。例如,他们可以选择几十种不同的命令行外壳和多种图形桌面。
- GNU/Linux 很少会崩溃、适合在同一时间运行多个程序,而且比大多数操作系统更为安全。
- 将 Debian 哲学与方法论,GNU 工具集、Linux 内核,以及其他重要的自由软件结合在一起所构成的独特的软件发行版称为 Debian Linux 。
- 该发行版由大量的软件包组成。
- 发行版中的每个软件包都包含了执行文件、脚本、文档和配置信息,并拥有一位维护者,其职责是保持软件包更新、跟踪 bug 报告,并与软件源作者保持联络。
- 支持的CPU架构:官方说明
主要功能
- 稳定性:Debian以其稳定性和可靠性而著称,适合需要长期运行的服务器。
- 软件包管理:使用dpkg包管理系统和APT(Advanced Package Tool)来安装、更新和管理软件包。
- 自由软件:Debian致力于自由软件,默认情况下只包含完全自由的软件。
- 广泛支持:支持多种硬件平台,包括常见的x86和ARM架构。
- 安全更新:定期发布安全更新,确保系统的安全性。
- 桌面环境:提供多种桌面环境选择,如GNOME、KDE Plasma、Xfce等。
- 服务器优化:适用于各种服务器应用,如文件服务器、邮件服务器、Web服务器等。
注意事项
- 软件自由性:Debian坚持使用自由软件,可能不包括某些专有软件或驱动。
- 系统更新:在进行系统更新时,应确保备份重要数据,避免更新过程中出现问题。
- 硬件兼容性:某些硬件可能需要额外的驱动程序,这些可能不在Debian的官方软件仓库中。
- 社区支持:虽然Debian有强大的社区支持,但官方的客服支持可能不如商业发行版。
- 版本更新周期:Debian的稳定版更新周期较长,可能不会包含最新的软件版本。
适用场景
- 服务器部署:由于其稳定性和安全性,Debian非常适合用作服务器操作系统。
- 桌面使用:对于追求稳定和自由的桌面用户,Debian是一个很好的选择。
- 开发环境:为开发者提供了稳定且功能丰富的开发环境。
- 教育机构:由于其开源和自由软件的原则,Debian适合用于教育目的。
- 嵌入式系统:Debian的轻量级版本,如Debian Minimal,适用于嵌入式系统。
Linux的组成
- Linux/GNU 操作系统由“Linux 内核 + 多种基础程序”构成。
- 操作系统最重要的组成部分是内核,Linux 就是内核组件,而该系统的其余部分主要是由 GNU 工程编写和提供的程序组成,因此被称为 GNU/Linux 一词来表达通常所说的 Linux操作系统。
内核(kernel)
- 内核是Linux操作系统的核心。
- 直接与计算机的硬件交互,并提供基本的服务,如进程管理、内存管理、设备管理和文件系统管理。
- 内核空间是操作系统的一个特权区域,只有内核代码可以执行。
壳(shell)
- 是系统的用户界面,提供来用户和内核进行交互操作的一种接口。
- 接收用户输入的命令并送入内核去执行,是一个命令解释器。
- 是高级编程语言,shell编程。
- 作用是提供人机交互,使用户与内核之间交互。
- 命令行界面(CLI):如Bash、Zsh等,允许用户通过命令行与系统交互。
- 图形用户界面(GUI):如GNOME、KDE、XFCE等,提供图形化的操作环境。
Bash shell命令交互界面操作的详细总结:Language-BashShell
文件系统(File Systems)
- 文件系统是文件存放在磁盘等存储设备上的组织方法。
- Linux支持多种文件系统。如:ext4、ext3、ext2、NFS等。
EXT4文件系统的详细总结:基础知识-文件系统-EXT4
系统守护进程(Daemons)
- 在后台运行的服务进程,如网络服务、打印服务、数据库服务等。
系统库
- 提供程序和内核之间的接口,使得应用程序可以访问内核的功能。
- 如glibc(GNU C Library)。
系统工具和实用程序
- 用于系统管理的工具,如文件管理器、文本编辑器、系统监控工具等。
应用程序
- 标准的Linux操作系统都会有一套应用程序。
- 用户安装的软件,用于执行特定任务,如Web浏览器、办公软件、开发工具等。
用户空间
- 用户空间是应用程序和用户操作的环境,它不直接与硬件交互,而是通过系统调用与内核通信。
- 用户空间包括系统库、系统工具、应用程序和用户数据。
目录结构
- 在很多操作系统中软件都是通过读取配置文件来改变执行方式的。
- Linux是一切皆文件,因此可选择使用 “命令” 或者 “手动修改文件” 的方式进行操作。
- 磁盘分区建议提起规划并计算将使用多少存储空间,这样才能减少分区后存储空间浪费。
Linux操作系统中的注意事项
- Linux中严格区分大小写。
- Linux中所有内容都以文件形式保存。
- Linux不靠扩展名区分文件类型
- Linux所有的存储设备都必须“挂载”之后用户才能使用。
- Windows下的程序不能直接在Linux中安装和运行。
文件于目录结构
- 文件目录是以
/为根目录,没有分区的概念,只有将目录实际存储位置进行区分的概念,只在存储位置中发现不同,实际操作并无不同。 - 需要学习命令行界面管理系统,需要提前了解Linux的基本概念。
注释
- FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次化标准)
- FHS 定义了系统中每个文件夹的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
- 允许使用者改动结构来构建适合自己的目录结构。
/ ,根目录,整个Debian文件系统的起点。
|-- boot/ ,引导Linux内核启动时所需的文件,如内核映像和引导加载程序配置文件等。
|-- dev/ ,设备文件,以管理普通文件一样来管理硬件或驱动程序。
|-- etc/ ,存储系统和软件的配置文件,如网络配置、用户账户、服务等。
|-- home/ ,用户的个人主目录,个人文件夹会在这里生成。
|-- media/ ,挂载外部设备,系统建议用来挂载媒体设备,如USB或光盘等。
|-- mnt/ ,临时挂载目录,用于挂载其他文件系统或额外设备,如U盘、移动硬盘和其他操作系统的分区。
|-- opt/ ,存放第三方额外的软件包。
|-- proc/ ,虚拟文件系统,该目录的数据存放在内存当中,记录运行时的系统进程和内核信息。
|-- root/ ,超级用户的主目录。
|-- run/ ,存储系统运行时的信息,当前登入的yoghurt和运行中的服务。
|-- srv/ ,存放服务相关的数据文件,一些系统服务启动之后,可以在该目录中保存所需要的数据,如WWW服务和web内容
|-- sys/ ,虚拟文件系统,提供访问内核设备、模块、其他内核相关功能的接口。
|-- tmp/ ,存储临时文件,系统重启时文件将会被清除。
|-- usr/ ,系统软件程序和文件,包含非用户手动安装的软件、文档、共享库等,可共享
|-- bin/ ,普通命令(二进制可执行文件),全部用户都能使用。
|-- games/,游戏安装目录
|-- include/
|-- lib/ ,系统所需的共享库(二进制文件)文件。
|-- systemd/system/ ,系统级别的服务文件。
|-- lib32/ ,系统所需的共享库(二进制文件)文件。
|-- lib64/ ,系统所需的共享库(二进制文件)文件。
|-- libexec/
|-- libx32/
|-- local/ ,用户手动编译源码程序的应用存放位置。
|-- sbin/ ,管理员命令,仅限管理员用户使用。
|-- share/ ,共享文件。
|-- src/
|-- var/ ,存储经常改变的动态数据文件,如日志、缓存等,不共享。
|-- backups/
|-- cache/
|-- lib/
|-- apt/ ,软件包信息。
|-- dpkg/ ,软件包信息。
|-- local/
|-- run/lock/
|-- log/
|-- mail/
|-- opt/
|-- run/
|-- spool/
|-- tmp/
相关信息
工作目录
- 当前所在目录。
绝对路径
- 以根目录为起点,描述路径的一种写法,路径描述以
/开头。 - 案例:
/usr/local/bin
相对路径
- 以当前工作目录为起点,描述路径的一种写法,路径描述无需以
/开头。 ./:表示当前路径。../:表示上一级目录。../../:表示上上一级目录。~:表示HOME目录。- 案例:
./bin当前路径下,../local/bin上一级路径下。
磁盘分区
- Linux系统中磁盘管理就是将硬盘通过挂载的方式挂载到Linux文件系统中。
- 挂载点 == 盘符
- 手动创建以下分区:/(根分区)、swap(交换分区)(不存在盘符,这是给系统内部使用)、
fdisk分区
/etc/fstab文件修复
分配swap分区
磁盘
需要对磁盘进行合理分区的主要原因是:
- 提高系统性能
- 将不同类型的文件和数据存储在不同的分区可以提高系统的读写性能。
- 例如,将频繁变动的文件(如日志和缓存)和用户数据分开,可以避免对系统核心部分的频繁访问,从而提高整体性能。
- 数据安全与完整性
- 将数据分散在不同的分区可以降低因单个分区损坏而导致数据都是的风险。
- 例如,如果
home分区发生故障,系统管理员可以通过将其替换或修复,而不会影响系统其他分区。
- 管理和维护的便利性
- 通过将不同的文件和数据类型放在不同的分区,系统管理员可以更轻松地进行管理和维护。
- 例如,如果某个应用程序导致磁盘空间不足,管理员只需查看对应的分区,而不是整个磁盘。
- 灵活性和可扩展性
- 随着时间推移,系统可能需要更多的存储空间或进行特定的配置更改。
- 通过预先为未来的需求留出空间,或为特定功能创建独立的分区,可以更容易地进行这些更改。
- 备份和迁移的便捷性
- 将数据分散在不同的分区可以简化备份和迁移的过程。
- 例如,如果只对某个分区进行备份或迁移,而不是整个磁盘,那么这个过程会更快更简单。
- 隔离和安全性
- 通过将不同的功能或应用程序放在不同的分区,可以增加隔离性并提高安全性。
- 例如,如果某个应用程序受到攻击或出现问题,它可能只影响该应用程序所在的分区,而不是整个系统。
逻辑分区的存在的意义
- 由于MBR仅能保存4个分区的数据信息,如果超过4个,系统允许在额外的硬盘空间存放另一份磁盘分区信息,这就是扩展分区.若将硬盘分成3P+E,则E实际上是告诉系统,磁盘分区表在另外的那份分区表,即扩展分区其实是指向正确的额外分区表。本身扩展分区不能直接使用,还需要额外将扩展分区分成逻辑分区才能使用,因此,用户通过扩展分区就可以使用5个以上的分区了。
- 在Windows操作系统中,是先将物理地址分开,再在分区上建立目录.在Windows操作系统中,所有路径都是从盘符开始,如C://program file。
- Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为3个分区,分别是boot分区、swap分区和根分区。
配置文件
详细总结:OS-DebianLinux-配置文件
终端和命令
介绍
终端
- 即Linux终端(Treminal)。
- 一种命令提示符界面。
- 以纯“字符”的形式操作系统。
- 可以使用各种字符化命令对系统发出操作指令。
命令
- 即Linux程序。
- 一个命令就是一个Linux的程序。
- 命令没有图形化页面。
- 可以通过终端来提供字符化的反馈。
在Linux中,可执行的文件也进行了分类:
- 内置命令:出于效率的考虑,将一些常用命令的解释程序构造在Shell内部。
- 外置命令:存放在/bin、/sbin目录下的命令
- 实用程序:存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目录下的实用程序
- 用户程序:用户程序经过编译生成可执行文件后,可作为Shell命令运行
- Shell脚本:由Shell语言编写的批处理文件,可作为Shell命令运行
大多数命令行工具和程序确实是通过包的形式来安装和管理的。
- 大多数命令都是包的一部分:确实,大多数你在终端中使用的命令,如ls、cp、mv等,都是某个软件包的一部分。例如,ls、cp和mv命令通常属于coreutils包。
- bash shell:bash shell本身也是一个包。在Debian系统中,这个包通常被称为bash。安装这个包会提供bash命令行解释器。
- 系统必备包:有些包被认为是系统必备的,因为它们提供了基本的系统功能。在Debian中,这些包可能被标记为“Essential”。
- 非包形式的命令:然而,并不是所有命令都是通过包来安装的。有些命令可能是手动编译安装的,或者是由系统管理员直接放置在系统路径中的。这些命令可能不是任何包的一部分。
- 内置命令:另外,有些命令是shell内置的,这意味着它们是shell本身的一部分,而不是单独的包。例如,cd命令是bash shell的内置命令。
详细总结:OS-DebianLinux-终端命令
注释
如何总结命令?
- 命令都属于软件包中的命令,因此需要明白命令属于哪个软件包,去总结软件包,从而整理命令。
终端格式
示例:root@host01:~#
root:用户名,root为超级用户@:分隔符host01:主机名称~:当前所在目录,默认目录为~\#:表示当前用户是超级用户,普通用户为$
命令格式
命令格式:
命令 [-选项] [参数]
例子:ls -la /etc
说明:
- 个别命令使用不遵循此格式
- 当有多个选项时,可以写在一起
- 简化选项与完整选项,-a等于--all
用户和用户组
用户管理简介
对安全性要求越高的计算机越需要建立合理的用户权限等级制度和操作规范
Linux 操作系统中主要通过用户配置文件来查看和修改用户信息
初始组:用户登入时就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
附加组:用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
Shell 是 Linux 操作系统的命令解释器,Shell用于将用户的输入传递给Linux系统内核执行相应操作,在 /etc/passwd 当中,有多种Shell可以选择其中之一。
用户配置
用户基本信息文件(/etc/passwd)
用户名称
密码标志
UID(用户ID)
- 0 超级用户
- 1-499 系统用户(伪用户)
- 500-65535 普通用户
GID(用户初始组ID)
用户说明
家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
登入之后的Shell
影子文件(/etc/shadow)
用户名
加密密码
密码最后一次修改时间
密码过期后的宽限天数
账号失效时间
保留
组信息文件(/etc/group)
组名
组密码标志
GID
组中附加用户
组密码文件(/etc/gshadow)
组名
组密码
组管理员用户名
组中附加用户
用户管理相关文件
用户的家目录
- 普通用户:
/home/用户名/,所有者和所属组都是此用户,权限是700。 - 超级用户:
/root/,所有者和所属组都是root用户,权限550。
用户的邮箱
- /var/spool/mail/用户名/
用户模板目录
- /etc/skel/
用户管理命令
用户组管理命令
权限
文件权限查询表
-rwxr--r--
- 将其分为四个区块理解,文件类型(1),u所有者权限(2,3,4),g所属组权限(5,6,7),o其他人权限(8,9,10)
- 文件类型表示符号:文件(
-),目录(d),软连接文件(l) - 权限表示符号:无权限(
-),读(r),写(w),执行(x)
ACL权限
简介
开启
查看
设定ACL权限
最大有效权限
删除ACL权限
默认ACL权限
递归ACL权限
文件特殊权限
文件系统属性chattr权限
系统命令sudo权限
进程与服务
系统运行级别
- Linux允许在不同场合分配不同的开机启动程序,称为“运行级别”
- 许多程序需要开机启动,在Linux中称为“守护进程”。
- Linux预置7种运行级别(0~6)
| 运行级别 | 介绍 |
|---|---|
| 0 | 关机 |
| 1 | 单用户模式(即维护模式) |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | 重启 |
用户登录方式
- Linux支持3种登录方式:命令行登登录、SSH登录、图形界面登录
详细总结:OS-DebianLinux-问题总结-用户登录方式
系统启动过程
详细总结:OS-DebianLinux-问题总结-系统启动过程
服务与进程
环境变量
系统环境变量是一组由操作系统维护的变量,它们存储了影响程序行为的配置信息。
提供程序运行时所需的信息,如路径、配置设置和系统状态。
允许程序在不同环境中(如开发、测试、生产)以相同的方式运行。
使得用户和程序能够在不修改程序代码的情况下,定制程序的行为。
程序在启动时可以读取环境变量来配置自己的行为。
程序也可以设置环境变量,但这些设置通常只影响程序的子进程。
常见的环境变量
PATH: 决定了Shell命令的搜索路径。HOME: 指定用户的主目录。PWD: 当前工作目录。USER: 当前登录的用户名。HOSTNAME: 当前机器的主机名。LANG/LANGUAGE: 指定系统语言和字符编码。TMPDIR/TEMP/TMP: 临时文件存放目录。
日志管理
启动管理
备份与修复
软件
注释
Debian软件包格式的文件扩展名是deb。
程序或软件的组成部分
- 可执行文件、库文件、配置文件、数据、帮助文档(非必须)
可执行文件
- 文件一般是可执行的二进制文件,也有shell脚本执行文件,特点是不可变性。
- 软件一旦安装, 在它的生命周期中, 这些可执行文件几乎是不怎么改变的, 直到升级到新的版本, 或者被卸载。
- 根据不可变性的特点,通过共享来做到多个用户或统一网络中的多台设备中只使用一份可执行文件。
库文件
- 程序执行时依赖的一些动态或静态类库, 如一些
dll文件。 - 多个应用程序可能使用同一份类库,因此会产生依赖关系。
- 在删除或更新类库时有可能会导致依赖的应用程序无法运行或兼容问题。
配置文件
- 文件通常是文本文件。
- 特点是具有可变性、不具有共享性。
- 主要针对不同用户有自己专属的配置文件。
数据
- 特点是具有可变性。
- 数据是比较重要的文件,如日志文件需要定期整理、归档和备份。
帮助文档(非必须)
- 特点是具有高可变性、高共享性,具有不可变性。
- 帮助文档通过更新或针对特定版本的应用程序来更改文档内容,因此是几乎不变化的。
软件的分类
- 从系统管理的角度分类:系统软件、应用软件
- 系统软件一般是指支撑整个系统运行的必要软件,如shell、磁盘管理工具等。
- 应用软件是指运行系统之上提供特定功能的软件,如办公、娱乐、播放器等。
源代码包
- 源码包就是未进行编译、能够看到源代码的程序软件。
优点和缺点
- 开源,可修改源代码,可以自由选择所需的功能。
- 软件是编译安装,因此更加适合自己的系统,更加稳定且效率更高。
- 卸载方便,只需要直接将安装目录下的文件夹删除即可。
- 安装过程步骤较多。
- 编译过程时间较长。
安装
- 源码包保存位置:
/usr/local/src/ - 源码包安装位置:
/usr/local/
删除
- 只需要删除源码包安装的目录即可,不会存在软件卸载后存在残留垃圾文件。
预构建二进制包
预构建二进制包,就是官方已经将源代码包根据各个系统平台预先编译后的文件包。
该包可直接在本地系统中执行可执行文件。
仅需要将可执行文件添加到环境变量,以及软件配置文件。
二进制包就是已经进行编译过的软件。
二进制包可使用 Debian Linux 操作系统中的包管理工具
apt进行管理二进制包。
优点和缺点
- 包管理系统简单,通过命令实现包的安装、升级、查询、卸载。
- 安装速度比源码包安装更快。
- 经过编译,无法看源代码。
- 功能选择不如源码包灵活。
- 包大多存在大量依赖性。
软件包管理工具
Debian 建立一致的自由软件的预编译二进制包并从档案库中分发它们。
许多远程镜像站提供了
HTTP和FTP的方式来访问“Debian档案库”。Debian 的软件包管理系统是
高级软件包工具(APT)。Debian软件包管理系统可以让用户从档案库安装统一设置的二进制软件包到系统中,并进行管理,自动解决依赖问题。
每个软件包都带有自己的配置脚本。
apt软件包管理工具详细总结:Package-Apt
dpkg软件包管理工具详细总结:Package-Dpkg
注意事项
- 在源文件中不要包含
testing或unstable。 - 在源文件中不要在标准的Debian档案库中混合使用其它非标准的Debian档案库。
- 不要建立“
/etc/apt/preferences”。 - 不了解会照成的全部影响,就不要通过配置文件改变软件包管理工具的默认行为。
- 不要使用“
dpkg -i random_package”安装任何软件包。 - 绝不使用“
dpkg --force-all -i random_package”安装任何软件包。 - 不要删除或修改“
/var/lib/dpkg”中的文件。 - 不要让从源码安装的程序覆盖系统文件,若必须要覆盖,则请将它们安装到“
/usr/local”或“/opt”目录中。
用户态与内核态
注释
用户态与内核态的切换
- 当一个用户态的程序需要执行特权操作时,如读写文件、发送网络数据等,它会通过系统调用(或中断)进入内核态。
- 执行完系统调用后,控制权会从内核态返回到用户态,程序继续执行。
这种权限的划分是现代操作系统安全策略的核心部分,确保了操作系统的稳定性和安全性。
用户态
定义
- 操作系统为普通程序执行设定的一个较低权限的执行环境。在用户态下,程序不能直接访问硬件资源或者执行特权指令。
特点
- 程序运行在用户态时,如果发生错误,如访问非法内存,通常只会导致该程序崩溃,而不会影响整个系统。
- 用户态的程序受到操作系统的严格限制,比如不能直接进行I/O操作,不能访问其他程序的内存空间。
- 用户态下的程序可以通过系统调用(System Call)请求内核执行某些操作。
目的
- 限制程序的能力,以保护系统资源的完整性和稳定性,防止一个程序的错误或恶意行为影响其他程序或操作系统本身。
内核态
定义
- 操作系统内核运行的特权模式,拥有访问硬件资源和执行所有CPU指令的能力。
特点
- 在内核态下运行的代码具有最高的权限,可以直接访问所有的内存空间和硬件设备。
- 内核态下的程序错误可能会导致整个系统的崩溃。
- 内核态的程序负责管理系统资源,如内存管理、进程调度、设备驱动程序等。
目的
- 为了执行那些只有操作系统才能执行的操作,如低级硬件操作、资源分配等,确保这些操作的安全性和有效性。
常用快捷键
详细总结:OS-DebianLinux-快捷键
部署方案
个人文件目录结构和系统目录结构的配合方法。
问题总结
详细总结:OS-DebianLinux-问题总结
