diff --git a/content/learn-linux-for-PC-1.md b/content/learn-linux-for-PC-1.md deleted file mode 100644 index a615ab0..0000000 --- a/content/learn-linux-for-PC-1.md +++ /dev/null @@ -1,100 +0,0 @@ -+++ -title = "Linux之旅(1):构成与发行版" -date = 2023-07-20 - -[taxonomies] -tags = ["Linux"] -+++ - - - -前言 Linux 作为一款强大、灵活且免费的操作系统,吸引了越来越多的用户。然而,对于初学者来说,Linux 可能显得有些陌生,甚至有些令人望而生畏。本文旨在为那些刚踏入 Linux 世界的新手提供一份指南,帮助他们更好地了解、使用这个令人着迷的操作系统。我们将探讨Linux的基本概念,解释为何选择Linux,深入剖析其主要构成要素以及不同的发行版之间的差异。 - -## 一.什么是Linux? - -Linux 是一种开源的类 UNIX 操作系统内核。它由芬兰的 Linus Torvalds 于1991年开始开发,是一个自由、免费的操作系统。Linux 内核是操作系统的核心,负责管理硬件资源,并提供各种系统服务。与 Windows 和 macOS 等操作系统不同,Linux 的源代码对所有人开放,任何人都可以查看、修改和重新分发。这使得 Linux 具有极高的自由度和可定制性,用户可以根据自己的需求和偏好来定制操作系统。Linux 广泛应用于各种设备,包括个人计算机、服务器、手机、嵌入式系统等,是一个功能强大且灵活多样的操作系统。 - - -## 二.为什么要用Linux? - -1. **开源免费**:Linux 是完全开源的,用户可以免费使用和修改源代码。 - -2. **稳定性和安全性**:Linux 系统以其稳定性和安全性而闻名,适合长时间运行的服务。 - -3. **灵活性和可定制性**:用户可以根据需要定制 Linux 系统。 - -4. **广泛的软件支持**:有大量的开源软件可供选择,满足不同需求。 - -> Liunx可以用来玩游戏吗? -实际上著名的 Steam Deck 的系统就是基于Arch linux 的。对于个人使用而言,现在有不少原生支持linux 的游戏;也可以使用Wine来运行Windows下的游戏。 - ->Linux上软件会不会太少? -参见 [常用跨平台开源软件](https://blog.dich.ink/open-source-software)一文,在社区的努力下如今软件生态已经非常丰富,你也可以使用如Flatpak等商店安装软件,或者直接使用Wine。如果有不得不在Windows下使用的软件,可以装双系统。 -## 三.Linux的主要构成 - -Linux操作系统主要由以下几个部分组成: - -1. **内核**:操作系统的核心,负责管理系统资源。如Zen内核,LTS内核等。 - -2. **Shell**:命令行界面,用户通过它与系统交互,如Bash,Zsh等。 - -3. **图形用户界面(GUI)**:提供图形化操作界面,如GNOME、KDE、XFCE等。 - -4. **文件系统**:如ext4、Btrfs等,用于组织和管理磁盘上的文件。 - -5. **系统库**:为应用程序提供运行时支持。 - -6. **应用程序**:用户可以直接使用的软件,如文本编辑器、网页浏览器等。其中也有著名的GNU工具,如Vim,GCC等。 - - -## 四.选择Linux发行版 - -从上文可以发现,选择Linux发行版实际上是在选择 **内核/包管理器/图形界面** 等组件的排列组合。其中最主要的因素是包管理器。 - -Linux有许多不同的发行版,但大致可以分为几个系: - - -**Debian系:** -Debian:Debian以稳定性,安全性和轻量级著称,适合用于服务器和桌面环境。我们常说的Ubuntu就是基于Debian的发行版,注重用户友好性和易用性。它提供了多种桌面环境选择,以及许多现成的软件包。 -``` -APT(Advanced Package Tool)是Debian系发行版的主要包管理器。它使用命令行工具如apt-get、aptitude等来管理软件包。 -``` -**Red Hat系:** -- Red Hat Enterprise Linux(RHEL):RHEL是一款商业发行版,专注于企业级应用和支持。它提供了长期支持和专业技术支持服务,适用于企业级服务器和工作站。 -- CentOS:CentOS是基于RHEL源代码编译而成的免费发行版,与RHEL兼容并提供类似的功能和性能。它也提供了长期支持版本和稳定性较高的特点。 -- Fedora:Fedora是由Red Hat支持的社区驱动的发行版,注重提供最新的软件特性和技术。它适用于开发者和技术爱好者,提供了稳定的发布周期和丰富的软件包。 -``` -YUM(Yellowdog Updater, Modified)是Red Hat系发行版的主要包管理器。最近的版本也开始采用DNF(Dandified YUM)。 -``` -**Arch系:** -Arch Linux:Arch Linux是一个简洁、轻量级且灵活的发行版,注重简洁性和滚动更新。它采用“滚动发布”的方式,用户可以通过自定义安装来构建自己的系统,适合有一定Linux经验的用户。 -``` -Pacman(Package Manager)是Arch Linux的主要包管理器。它使用简洁的命令来管理软件包,如pacman -S安装软件包、pacman -Syu更新系统等。 -``` -**Gentoo系:** -Gentoo:Gentoo是一个源码驱动的发行版,用户可以通过源代码自定义编译软件包以满足自己的需求。它注重性能和灵活性,适合高级用户和技术爱好者。 -``` -Portage是Gentoo的包管理器,它是一个源代码驱动的包管理器,允许用户从源代码构建和安装软件包。 -``` -除了以上列举的包管理器外,还有其他一些较为特殊的包管理器,如Slackware系的pkgtool、SUSE系的zypper等。 - -对于个人使用而言,我个人建议新手使用Ubuntu,有比较易用的界面和完善的资料参考;如果你是一个系统极客,可以使用Arch linux 或者 NixOS。 - -## 五.个人日常使用需要注意什么? - -1. **学习命令行**:命令行是Linux的强大工具,学习基本命令可以提高效率。 - -2. **选择合适的发行版**:根据个人需求和技术水平选择适合的发行版。 - -3. **系统备份**:定期备份重要数据,以防意外丢失。 - -4. **软件管理**:了解如何安装、更新和卸载软件。 - -5. **安全设置**:设置强密码,定期更新系统以修复安全漏洞。 - -6. **社区参与**:Linux社区非常活跃,遇到问题可以寻求社区帮助。 - -7. **硬件兼容性**:检查你的硬件是否与选择的Linux发行版兼容。 - -8. **驱动程序**:确保你的硬件设备有可用的驱动程序,以避免兼容性问题。 - diff --git a/content/learn-linux-for-PC-2.md b/content/learn-linux-for-PC-2.md deleted file mode 100644 index 38b52ee..0000000 --- a/content/learn-linux-for-PC-2.md +++ /dev/null @@ -1,127 +0,0 @@ -+++ -title = "Linux之旅(2):FHS与目录结构" -date = 2023-07-21 - -[taxonomies] -tags = ["Linux"] -+++ - -前言 在Linux世界中,Filesystem Hierarchy Standard(FHS)是一座引导我们进入系统核心的桥梁,它定义了Linux系统中目录结构的规范与作用,为我们提供了一张清晰的地图,指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构,解释各个目录的用途与功能,帮助我们更好地理解和利用Linux系统。 - - -## 一.认识FHS - -FHS是Filesystem Hierarchy Standard(文件系统层次结构标准)的缩写。它是一个定义了Linux系统中目录结构和各个目录作用的规范。FHS规定了Linux系统中各个目录的用途和预期内容,以便确保不同Linux发行版之间的兼容性,并使得用户能够更轻松地理解和管理系统。 - -FHS规范最初由Linux基金会(Linux Foundation)和自由软件基金会(Free Software Foundation)共同发布,并经过多次修订和更新。该规范不仅对Linux系统本身有用,也适用于其他类UNIX操作系统。 - -FHS规范定义了一些基本的目录,如/bin、/boot、/dev等,并规定了每个目录的作用和预期内容。这样做有助于系统管理员和开发人员更好地组织和管理文件系统,并使得用户能够更轻松地找到所需的文件和数据。 - -## 二.常见目录结构 - -在刚刚由Windows切换至Linux时,往往会对目录感到不解,不知道安装的软件放在哪个目录之下? - -以下是对Linux系统目录结构的详细说明: - -- **/(根目录)**: -根目录是整个文件系统的起点,包含了系统中所有其他目录和文件。在Linux系统中,根目录被表示为/。 -- **/bin(二进制文件)**: -/bin目录存放着一些最基本的系统命令,如ls、cp、mv等,这些命令通常被所有用户使用。 -- **/boot(引导文件)**: -/boot目录存放着启动Linux系统所需的引导文件,如内核映像(vmlinuz)、引导加载程序(boot loader)配置文件(如GRUB配置文件)等。 -- **/dev(设备文件)**: -/dev目录包含了系统中所有设备的特殊文件,如硬盘、键盘、鼠标等。在Linux中,一切皆文件,设备被抽象为文件,通过/dev目录中的特殊文件来表示。 -- **/etc(配置文件)**: -/etc目录包含了系统的配置文件,如网络配置、用户账户信息、服务配置等。这些配置文件通常以纯文本的形式存在,可以由系统管理员进行编辑和修改。 -- **/home(用户主目录)**: -/home目录是系统中所有普通用户的主目录所在地,每个用户通常都有一个对应的子目录,用于存放用户的个人文件和数据。 -- **/lib(库文件)**: -/lib目录存放着系统所需的共享库文件,这些库文件包含了一些程序运行所需的函数和数据,为程序提供了基本的支持。 -- **/mnt(挂载点)**: -/mnt目录用于挂载临时文件系统,如光盘、移动硬盘等。系统管理员可以将其他设备或文件系统挂载到/mnt目录下,以便访问其中的文件和数据。 -- **/opt(可选软件包)**: -/opt目录用于存放一些可选的软件包和应用程序,这些软件包通常不属于Linux发行版的默认安装范围,但可以被用户自行安装和管理。 -- **/proc(进程信息)**: -/proc目录是一个虚拟的文件系统,包含了系统运行时的各种进程信息和系统状态信息。用户可以通过读取/proc目录中的特殊文件来获取系统信息。 -- **/sbin(系统命令)**: -/sbin目录存放着一些系统管理和维护命令,这些命令通常只能由超级用户(root)执行,用于系统的管理和维护。 -- **/srv(服务数据)**: -/srv目录用于存放一些服务相关的数据文件,如Web服务器的网站数据、FTP服务器的文件等。每个服务通常都会有一个对应的子目录。 -- **/tmp(临时文件)**: -/tmp目录用于存放临时文件和临时数据,这些文件通常在系统重启时会被删除。任何用户都可以在/tmp目录下创建临时文件。 -- **/usr(用户程序)**: -/usr目录包含了系统中大部分用户可用的程序和文件,如用户应用程序、共享库文件、文档等。它通常是系统的二级目录,类似于Windows系统中的Program Files目录。 -- **/var(可变数据)**: -/var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。这些数据通常会随着系统的运行而不断变化。 - -> 注意:NixOS不符合FHS标准! - -## 三.分区大小 - -对各个分区进行容量分配时,需要根据系统的实际需求和用途来进行规划。一般而言在安装引导时可以选择让程序自动分区。 - -- **根目录(/)**:根目录是整个文件系统的起点,通常会分配较大的空间,以确保系统和应用程序有足够的空间运行。建议分配至少20GB的空间给根目录。 -- **/home目录**:/home目录用于存放用户的个人文件和数据,因此需要根据用户数量和存储需求来进行容量分配。一般情况下,建议为每个用户分配至少10GB的空间。 -- **/var目录**:/var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。根据系统的运行情况和日志文件的大小来进行容量分配,一般建议分配10-20GB的空间。 -- **/tmp目录**:/tmp目录用于存放临时文件和临时数据,通常不需要分配太大的空间。建议分配至少1-2GB的空间给/tmp目录。 -- **/boot目录**:/boot目录存放着启动Linux系统所需的引导文件,通常只需要分配几百MB的空间即可。 -- **Swap分区**:Swap分区是一种虚拟内存,用于暂时存放不常用的内存数据。当系统内存不足时,Linux会将一部分内存数据移动到Swap分区中,以避免内存耗尽导致系统崩溃。Swap分区的大小通常与系统内存大小有关,一般建议为系统内存的1.5-2倍。例如,如果系统内存为4GB,则建议设置Swap分区大小为6-8GB。 - -> 这里特别讲讲Swap分区 - -Swap分区可以通过以下几种方式实现: - -- 交换分区(Swap Partition):创建一个独立的交换分区,通常是一个专门的分区,用于存放Swap数据。 -- 交换文件(Swap File):创建一个专门的文件用于存放Swap数据,而不是创建独立的分区。这种方式更加灵活,可以根据需要动态调整Swap的大小。 -- Swap大小:Swap的大小应该根据系统的内存大小和使用情况来确定,一般建议为系统内存的1.5-2倍。 -- Swap分区/文件的位置:Swap分区/文件应该位于较快的存储介质上,以确保交换操作的效率。 -Swap的优先级:如果同时存在多个Swap分区/文件,可以通过设置优先级来指定系统使用的Swap空间。 - -## 四.将 `home` 目录下的文件夹改为英文 - -可以使用 `xdg-user-dirs-update` 工具来更新用户目录为英文版本。你可以按照以下步骤进行: - -1. **编辑用户目录配置文件**: - 打开或创建 `~/.config/user-dirs.dirs` 文件,用文本编辑器编辑它: - ```bash - nano ~/.config/user-dirs.dirs - ``` - -2. **将目录名称更改为英文**: - 在该文件中,你可以看到类似以下的条目: - ```bash - XDG_DESKTOP_DIR="$HOME/桌面" - XDG_DOWNLOAD_DIR="$HOME/下载" - XDG_DOCUMENTS_DIR="$HOME/文档" - XDG_MUSIC_DIR="$HOME/音乐" - XDG_PICTURES_DIR="$HOME/图片" - XDG_VIDEOS_DIR="$HOME/视频" - ``` - 将这些路径改为英文,例如: - ```bash - XDG_DESKTOP_DIR="$HOME/Desktop" - XDG_DOWNLOAD_DIR="$HOME/Downloads" - XDG_DOCUMENTS_DIR="$HOME/Documents" - XDG_MUSIC_DIR="$HOME/Music" - XDG_PICTURES_DIR="$HOME/Pictures" - XDG_VIDEOS_DIR="$HOME/Videos" - ``` - -3. **重命名现有的文件夹**: - 手动将 `home` 目录下的文件夹重命名为英文版本: - ```bash - mv ~/桌面 ~/Desktop - mv ~/下载 ~/Downloads - mv ~/文档 ~/Documents - mv ~/音乐 ~/Music - mv ~/图片 ~/Pictures - mv ~/视频 ~/Videos - ``` - -4. **应用更改**: - 完成以上操作后,运行以下命令应用新配置: - ```bash - xdg-user-dirs-update - ``` - -这样,`home` 目录下的文件夹就会改为英文,并且系统也会正确识别这些新的目录路径。 diff --git a/content/learn-linux-for-PC-3.md b/content/learn-linux-for-PC-3.md deleted file mode 100644 index 383241a..0000000 --- a/content/learn-linux-for-PC-3.md +++ /dev/null @@ -1,176 +0,0 @@ -+++ -title = "Linux之旅(3):内核/shell/包管理/文件系统/桌面环境" -date = 2023-07-22 - -[taxonomies] -tags = ["Linux"] -+++ - -前言 在Linux世界中,内核/shell/包管理/文件系统构成了Linux系统的核心,它们相互配合,共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分,解释它们的作用和原理,帮助读者更好地理解Linux系统的运作机制。 - - -## **一.Linux内核** - -有许多不同的版本,每个版本都包含了一系列的功能改进、bug修复和性能优化。在Linux发行版中,通常会使用某个特定版本的Linux内核,或者在需要时进行升级。以下是一些常见的Linux内核及其主要特点: - -**Zen内核**: - - Zen内核是Linux内核的一个变体,旨在提供更好的性能和响应性。它通常包含了一些特定的调度程序和调优参数,以提高系统的负载均衡和响应速度。Zen内核也可能包含一些来自其他内核变体的功能和补丁,以进一步优化性能。 - -**LTS内核**: - - LTS(Long-Term Support)内核是一种长期支持的内核版本,它会获得更长时间的更新和维护。LTS内核通常会选择一些相对稳定和经过充分测试的功能,并对其进行长期支持,以确保系统的稳定性和安全性。 - -**Real-Time内核**: - - Real-Time内核是一种专门针对实时应用场景进行优化的内核变体。它通常包含了一些实时调度算法和机制,以确保系统能够及时响应各种事件,并满足实时性要求。Real-Time内核适用于一些对实时性要求较高的应用,如工业控制、机器人控制等领域。 - -**Hardened内核**: - - Hardened内核是一种针对安全性进行优化的内核变体。它通常包含了一些安全增强功能和补丁,以提高系统的安全性和抵御攻击的能力。Hardened内核适用于一些对安全性要求较高的应用,如服务器、云计算等场景。 - -**XanMod内核**: - - XanMod内核是一个基于Linux内核的自定义内核,旨在提供更好的响应性和性能。它包含了一些针对桌面和工作站系统优化的功能和补丁,如MuQSS调度器、BFQ I/O调度器等,以提高系统的响应速度和性能稳定性。XanMod内核还支持一些实时性应用,如音视频处理等,适用于对系统响应速度要求较高的用户。 - -**CachyOS内核**: - - CachyOS内核是一个专门针对缓存优化的Linux内核变体。它包含了一些针对缓存系统优化的功能和调整,以提高系统的缓存性能和数据访问速度。CachyOS内核通常适用于需要高性能缓存的应用场景,如数据库服务器、Web服务器等。 - -这些内核变体针对不同的需求和使用场景进行了优化,可以根据具体的应用需求来选择合适的内核版本。例如,如果您需要更好的性能和响应性,可以选择Zen内核;如果您需要长期支持和稳定性,可以选择LTS内核;如果您需要实时性能,可以选择Real-Time内核;如果您需要更高的安全性,可以选择Hardened内核。 - -## **二.Linux Shell** - -在Linux系统中,有许多不同的Shell(命令行解释器),每种Shell都有自己的特点和用途。以下是一些常见的Linux Shell及其主要特点: - -**Bash(Bourne Again Shell)**: - - Bash是Linux系统中最常用的Shell之一,也是默认的命令行解释器。它是Bourne Shell的增强版,提供了丰富的功能和扩展性,包括命令历史、命令补全、作业控制等。Bash具有良好的兼容性和易用性,适用于日常的系统管理和脚本编程。 - -**Zsh(Z Shell)**: - - Zsh是一种功能强大的Shell,提供了丰富的功能和扩展性,如更强大的命令补全、自动纠正拼写错误、主题和插件系统等。Zsh具有良好的可定制性和用户体验,适用于高级用户和程序员。 - -**Fish(Friendly Interactive Shell)**: - - Fish是一种用户友好的交互式Shell,提供了直观的命令提示和自动补全功能,以及丰富的语法高亮和命令提示信息。Fish具有良好的用户体验和易用性,适用于初学者和普通用户。 - -**Dash(Debian Almquist Shell)**: - - Dash是一种轻量级的Shell,专门设计用于系统启动过程和脚本执行。Dash具有较高的执行速度和较低的内存占用,适用于系统启动脚本和简单的脚本编程。 - -Bash是最常用的Shell之一,具有良好的兼容性和功能性;Zsh提供了更多的高级特性和定制选项,适用于高级用户和程序员;Fish具有友好的交互式体验和直观的用户界面,适用于初学者和普通用户;Dash则是一个轻量级的Shell,专门用于系统启动过程和简单的脚本编程。用户可以根据自己的需求和偏好选择合适的Shell。 - - -## **三.Linux包管理器** - -在Linux系统中,有几种常见的包管理器,它们各自管理着不同的发行版,具有不同的特点和用途。以下是一些常见的Linux包管理器及其主要特点: - -**APT(Advanced Package Tool)**: - - APT是Debian系(如Debian、Ubuntu)中最常用的包管理器之一。它使用基于命令行的工具,如`apt-get`、`apt-cache`等来安装、升级和删除软件包。APT还支持依赖关系的自动解决,使得软件包的安装和管理变得更加方便。 - -**YUM(Yellowdog Updater, Modified)**: - - YUM是Red Hat系(如CentOS、Fedora)中常用的包管理器之一。它使用基于命令行的工具,如`yum`来管理软件包。YUM具有良好的依赖关系解决能力和事务处理功能,使得系统升级和软件包管理变得更加简单和可靠。 - -**DNF(Dandified YUM)**: - - DNF是YUM的下一代版本,逐渐取代了YUM在Fedora和RHEL系列中的地位。DNF具有更快的包查询和事务处理能力,以及更友好的用户界面。它是未来主流的包管理器之一。 - -**Pacman(Package Manager)**: - - Pacman是Arch Linux中常用的包管理器,也被一些其他发行版如Manjaro采用。Pacman使用简洁的命令,如`pacman -S`安装软件包、`pacman -Syu`更新系统等来管理软件包。Pacman具有简单、直观的界面和快速的操作速度,适用于对系统有一定了解的用户。 - -**zypper**: - - zypper是openSUSE中常用的包管理器,它使用基于命令行的工具,如`zypper install`、`zypper update`等来管理软件包。zypper具有良好的依赖关系解决能力和事务处理功能,使得系统升级和软件包管理变得更加简单和可靠。 - -**dpkg**: - - dpkg是Debian系(如Debian、Ubuntu)中的低级别软件包管理工具,用于直接管理软件包的安装、升级和删除。它提供了一系列的命令,如`dpkg -i`安装软件包、`dpkg -r`删除软件包等。 - -**RPM(RPM Package Manager)**: - - RPM是Red Hat系(如CentOS、Fedora)中的低级别软件包管理工具,用于直接管理软件包的安装、升级和删除。它提供了一系列的命令,如`rpm -i`安装软件包、`rpm -e`删除软件包等。 - -**Portage**: - - Portage是Gentoo Linux中的包管理器,它使用源代码进行软件包的安装和管理。Portage具有高度定制化和灵活性,允许用户根据需要自定义软件包的编译参数和依赖关系。 - -**Snap**: - - Snap是一种跨发行版的软件包格式和包管理器,允许用户在不同的Linux发行版上安装和管理软件包。Snap具有自包含性和隔离性,使得软件包的安装和升级变得更加简单和安全。 - -**Flatpak**: - - Flatpak是另一种跨发行版的软件包格式和包管理器,类似于Snap,允许用户在不同的Linux发行版上安装和管理软件包。Flatpak提供了一种统一的应用分发和运行环境,使得软件包的安装和升级更加简单和可靠。 - - - -## **四.Linux文件系统** - -Linux系统支持多种文件系统,每种文件系统都有自己的特点和优势,适用于不同的应用场景和需求。以下是一些常见的Linux文件系统及其主要特点: - -**ext4**: - - ext4是Linux系统中最常用的文件系统之一,它是ext文件系统的后续版本,提供了更好的性能和扩展性。ext4支持更大的文件和分区大小,更快的文件系统检查和恢复速度,以及更高的性能和稳定性。 - -**Btrfs**: - - Btrfs是一种先进的文件系统,具有许多先进的功能和特性,如快照、数据校验、数据压缩等。Btrfs支持在线扩展和收缩分区大小,以及动态添加和删除磁盘,适用于需要高级特性和灵活性的应用场景。此外,Btrfs对快照功能支持较好。 - -> 快照功能是一种文件系统的特性,它允许用户在特定时间点对文件系统的状态进行快照或备份,并且可以在需要时一键恢复到该时间点的状态。 -快照允许用户轻松地创建文件系统的历史版本,并在需要时回滚到特定的版本;快照允许用户在文件系统中进行实验和测试,并在测试失败或不需要时轻松地回滚到初始状态,以避免对系统造成影响。在升级或安装过程中出现问题时快速恢复到原始状态 - - - -**XFS**: - - XFS是一种高性能的日志文件系统,适用于大型文件和高吞吐量的应用场景。XFS支持大容量的文件和分区,具有较低的碎片化和较高的并发性能,适用于大规模存储和数据分析等应用。 - -**ZFS**: - - ZFS是一种先进的文件系统,具有强大的数据管理和保护功能,如快照、数据校验、数据压缩等。ZFS支持软件RAID和存储池(pool),以及动态添加和删除磁盘,适用于数据中心和大规模存储等应用场景。 - -**F2FS**: - - F2FS是一种针对闪存存储设备进行优化的文件系统,具有高性能和高可靠性。F2FS支持闪存特性如块擦除计数(block erase count)和块生命周期管理(block lifetime management),适用于固态硬盘(SSD)和闪存卡等闪存设备。 - -## **五.Linux桌面环境** - -Linux系统有多种不同的桌面环境,每种环境都有其独特的特点、风格和用户体验。以下是一些常见的Linux桌面环境及其主要特点: - -**GNOME**: - - GNOME是一个功能强大、现代化的桌面环境,具有直观的用户界面和丰富的功能。它采用了扁平化的设计风格和简洁的用户界面,提供了丰富的应用程序和插件,适用于普通用户和开发人员。 - -**KDE Plasma**: - - KDE Plasma是一个灵活、可定制的桌面环境,提供了丰富的特性和选项,如桌面特效、窗口管理器、小部件等。它采用了现代化的设计风格和强大的桌面管理功能,适用于高级用户和技术爱好者。 - -**XFCE**: - - XFCE是一个轻量级、快速的桌面环境,具有简洁的用户界面和低资源消耗。它采用了传统的桌面布局和简约的设计风格,提供了基本的桌面管理功能和应用程序,适用于老旧计算机和资源有限的环境。 - -**LXQt**: - - LXQt是一个轻量级、快速的桌面环境,是LXDE和Razor-qt的合并项目。它采用了现代化的设计风格和简洁的用户界面,提供了丰富的特性和可定制选项,适用于资源有限的环境和嵌入式系统。 - -**Cinnamon**: - - Cinnamon是一个基于GNOME的桌面环境,具有类似于传统Windows桌面的用户界面和功能。它采用了传统的桌面布局和直观的用户体验,提供了丰富的特性和可定制选项,适用于对传统桌面风格有需求的用户。 - -GNOME和KDE Plasma提供了丰富的特性和高度定制化选项,适用于高级用户和开发人员;XFCE和LXQt则提供了轻量级和快速的用户体验,适用于资源有限的环境;Cinnamon则提供了类似于传统Windows桌面的用户界面和功能,适用于对传统桌面风格有需求的用户。可以根据自己的需求和偏好选择合适的桌面环境。 - -> 当然,也可以使用轻量级的窗口管理器。 -窗口管理器是Linux系统中控制窗口布局、管理窗口行为的关键组件。它们决定了窗口的外观和行为方式,以及如何管理和排列窗口。以下是一些常见的窗口管理器及其主要特点: - -**X Window Manager (XWM)**: - - X Window Manager是最基本的窗口管理器,用于管理X Window系统中的窗口。它提供了最基本的窗口布局和管理功能,如窗口移动、调整大小、最小化等。XWM本身并不提供任何外观效果,但可以与其他工具配合使用来实现更丰富的窗口管理和外观特性。 - -**Openbox**: - - Openbox是一个轻量级的窗口管理器,具有简洁的用户界面和低资源消耗。它提供了丰富的自定义选项和扩展功能,如虚拟桌面、窗口装饰、键盘快捷键等。Openbox适用于资源有限的环境和对简洁风格有需求的用户。 - -**i3**: - - i3是一个动态平铺窗口管理器,采用了平铺式布局,将窗口按照一定规则自动排列在屏幕上。它提供了快速的窗口切换和管理功能,支持键盘操作和自动布局调整,适用于需要高效多任务处理的用户。 - -**Awesome**: - - Awesome是一个高度可定制的动态平铺窗口管理器,具有丰富的特性和扩展功能。它采用Lua脚本语言进行配置和定制,支持强大的自定义选项和扩展功能,适用于高级用户和技术爱好者。 - -**KWin**: - - KWin是KDE桌面环境中的默认窗口管理器,具有丰富的特性和功能。它提供了多种窗口布局和管理选项,支持虚拟桌面、窗口效果、窗口组织等功能,适用于需要丰富特性和高度定制化的用户。 - -这些窗口管理器之间的主要异同在于窗口布局、外观效果、自定义选项和功能特性等方面。Openbox和i3提供了简洁的用户界面和低资源消耗,适用于资源有限的环境;Awesome和KWin则提供了丰富的特性和扩展功能,适用于高级用户和技术爱好者。用户可以根据自己的需求和偏好选择合适的窗口管理器。 - -> Wayland和X11 -Wayland和X11都是用于Linux系统的图形显示协议,它们负责管理图形用户界面(GUI)的显示和交互。下面是它们的简要介绍以及异同点: - -- **X11(X Window System)**: -X11是一个由MIT开发的图形显示协议,长期以来一直是Linux系统中最常用的图形显示系统。它采用客户端-服务器模型,图形应用程序(客户端)通过X服务器与显示设备(服务器)进行通信。X11提供了丰富的图形特性和功能,如窗口管理、窗口装饰、多任务处理等。 - -- **Wayland**: -Wayland是一个由Red Hat主导开发的新一代图形显示协议,旨在取代X11成为Linux系统的标准图形显示系统。Wayland采用了现代化的设计理念和架构,取消了X11中复杂的客户端-服务器模型,将图形显示功能直接集成到操作系统中。Wayland具有更低的延迟和更高的性能,支持更好的硬件加速和多触摸设备,以及更简洁的代码结构。 - -**异同点**: -- **架构差异**:X11采用了客户端-服务器模型,图形应用程序通过X服务器与显示设备进行通信;而Wayland取消了这种模型,将图形显示功能直接集成到操作系统中,减少了中间层的复杂性。 -- **性能差异**:Wayland具有更低的延迟和更高的性能,支持更好的硬件加速和多触摸设备,使得图形显示更加流畅和响应。 -- **功能差异**:X11提供了丰富的图形特性和功能,如窗口管理、窗口装饰、多任务处理等;Wayland在功能上相对较少,但提供了更简洁的代码结构和更好的性能。 -- **兼容性差异**:X11在Linux系统中被广泛使用,拥有大量的应用程序和工具的支持;而Wayland在兼容性方面仍在发展中,尚未完全取代X11成为Linux系统的标准图形显示系统。 - -总的来说,Wayland是未来Linux系统中的趋势,具有更好的性能和更简洁的架构,但在兼容性和功能丰富度上仍有待改进。X11则是当前仍然广泛使用的图形显示系统,拥有丰富的生态和大量的应用程序支持。 - - -## **六.后记** - -个人使用推荐Zen+Zsh+Pacman+Btrfs+Hyprland,并使用 paru xxx 来搜索软件包,使用paru -S xxx 安装软件。 diff --git a/content/learn-linux-for-PC-4.md b/content/learn-linux-for-PC-4.md deleted file mode 100644 index 80890bd..0000000 --- a/content/learn-linux-for-PC-4.md +++ /dev/null @@ -1,82 +0,0 @@ -+++ -title = "Linux之旅(4):Terminal,Console and Shell" -date = 2023-07-23 - -[taxonomies] -tags = ["Linux"] -+++ - - -前言 在linux的学习过程中,我们常常遇到诸如 Terminal,Console,bash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。 - - - -## 终端和控制台 - -终端,英文叫做 terminal ,通常简称为 term;控制台,英文叫做 console。 - -要明白这两者的关系,还得从最初的计算机说起。当时的计算机价格昂贵,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机的设备就叫做终端。 - - - - -而控制台又是什么回事呢?其概念来自于管风琴的控制台。顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。 - - - - -终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。 - - - - -以上是控制台和终端的历史遗留区别。现在由于计算机硬件越来越便宜,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。 -   - - - - -## 内核与外壳 - -内核( Kernel )和外壳( Shell )是 linux 的两个主要部分。Kernel 是操作系统的核心,系统的文件管理、进程管理、内存管理、设备管理这些功能,都是由 Kernel 提供的。 - - - - -用户和操作系统内核交流需要一个工具,那么这个工具就是 Shell。 - - - - -什么是 Shell?在 Linux 中,最常见的 Shell 形式有命令行界面命令行界面和图形界面两种。并不是打开的那个终端窗口就是 Shell,如Alacritty、Gnome-Terminal、xterm 、kitty等程序,它们不是 Shell,而它们里面运行的 Bash、Zsh、fish 等命令行解释器程序,才是 Shell。 - - - - -那 Alacritty、Gnome-Terminal、xtermxterm 是什么? - - - - -它们是终端模拟器。 - -前面提到过,在远古时代,终端和控制台都是有实体的。控制台直接和计算机在一起,你可以通过控制台控制计算机。终端通过数据线和计算机连接,终端也提供一个键盘和一个屏幕,你可以通过键盘向计算机下达指令,然后通过屏幕观察输出。 - - - - -但是现在的计算机组成和以前不一样了,一般一台电脑都是自带键盘和屏幕,很少再外接终端设备。 - -所以 Linux 提供了另外一个更高级的功能,那就是虚拟终端。那就是在一台电脑上,通过软件的模拟,好像有好几个终端连接在这台计算机上一样。 - - - - -现在说的终端,比如 linux 中的虚拟终端,都是软件的概念。虚拟终端称之为 tty,tty 是电传打字机电传打字机 Teletypewriter 的缩写,在带显示屏的视频终端出现之前,tty是最流行的终端设备。每一个 tty 都有一个编号,在/dev目录下有相应的设备文件。其中/dev/tty1到/dev/tty7可以通过 Ctrl+Alt+F1 到 Ctrl+Alt+F7 进行切换,也可以通过 chvt 命令进行切换,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这个叫“虚拟终端”的原因。 - - - - -## 时代变迁 - -随着时间的推移,我们看到了从硬件到软件的转变,以及从多用户共享到个人使用的转变。这种变迁不仅影响了终端和控制台的概念,也塑造了我们对计算机的理解和期待。 diff --git a/content/learn-linux-for-PC-5.md b/content/learn-linux-for-PC-5.md deleted file mode 100644 index cd9d724..0000000 --- a/content/learn-linux-for-PC-5.md +++ /dev/null @@ -1,130 +0,0 @@ -+++ -title = "Linux之旅(5):BIOS-UEFI-MBR-GPT-GRUB" -date = 2023-07-24 - -[taxonomies] -tags = ["Linux"] -+++ - - -前言 在计算机领域,系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFI,MBR与GPT,以及它们之间的异同点。此外,我们还会讨论与这些概念密切相关的引导加载程序——GRUB。 - -## BIOS - -> `BIOS(Basic Input Output System)`,直译成中文名称就是"`基本输入输出系统`"。它是一组固化到主板中一个ROM芯片上的程序,它可以从CMOS中读写系统设置的具体信息。此程序保存着计算机最重要的基本输入输出程序、开机后的自检程序和系统自启动程序。简单来说,BIOS只认识设备,不认识分区、不认识文件。 - -## UEFI - -> UEFI(统一可扩展固件接口)是一个公开的规范,定义了操作系统和平台固件之间的软件接口。UEFI 是传统 PC BIOS 的继承者,是取代传统BIOS的,相比传统BIOS来说,它更易实现,容错和纠错特性也更强。 它将引导数据存储在 .efi 文件中,而不是固件中。你经常会在新款的主板中找到 UEFI 启动模式。UEFI 启动模式包含一个特殊的 EFI 分区,用于存储 .efi 文件并用于引导过程和引导加载程序。 - -> UEFI使用GPT的分区引导方案,支持更大的硬盘。由于省去了BIOS自检的过程,所以启动速度更快。传统BIOS主要支持MBR引导,UEFI则是取代传统BIOS,它加入了对新硬件的支持,其中就有支持2TB以上硬盘。 - -## MBR - -> 全新硬盘在使用之前必须进行分区格式化,硬盘分区初始化的格式主要有两种,分别为`MBR`格式和`GPT`格式。MBR是传统的分区表类型,当一台电脑启动时,它会先启动主板上的BIOS系统,BIOS再从硬盘上读取MBR主引导记录,硬盘上的MBR运行后,就会启动操作系统,但最大的缺点则是不支持容量大于2T的硬盘。 - -## GPT - -> 而GPT是另一种更先进的磁盘系统分区方式,它的出现弥补了MBR这个缺点,最大支持`18EB`的硬盘,是基于`UEFI`使用的磁盘分区架构。目前所有Windows系统均支持`MBR`,而`GPT`只有`64`位系统才能支持。`BIOS只支持MBR引导系统,而GPT仅可用UEFI引导系统`。正因为这样,现在主板大多采用BIOS集成UEFI,或UEFI集成BIOS,以此达到同时兼容MBR和GPT引导系统的目的。 - -## GRUB - -> GRUB(GRand unified bootloader),多操作系统启动程序。它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。 -> -> GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。`它是一个多重操作系统启动管理器,用来引导不同系统`,如Windows、Linux。Linux常见的引导程序包括LILO、GRUB、GRUB2。 - -## Legacy - -> 如果你遇到过刚制作的U盘启动盘无法启动,或者新买的固态硬盘做好系统后无法启动,那么大概率的问题就出现在BIOS的引导模式的选择上,是UEFI还是Legacy。legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程,Legacy启动模式包含一系列已安装的设备,这些设备在引导过程中计算机执行 POST (开机自检)测试时会被初始化。传统引导将检查所有连接设备的主引导记录 (MBR),通常位于磁盘的第一个扇区。 -当它在设备中找不到引导加载程序时,Legacy会切换到列表中的下一个设备并不断重复此过程,直到找到引导加载程序,否则返回错误。 - -## 表格 - -### BIOS/UEFI - -| BIOS | UEFI | -| ---------------------------------- | --------------------------------------------------------------- | -| 用于初始化计算机硬件并引导操作系统 | 在计算机启动时运行 | -| 具有较少功能和灵活性 | 具有更多功能和灵活性 | -| | 支持更大的硬盘容量、更快的启动速度、更好的安全性和更多的扩展性v | -| | 通常具有图形用户界面(GUI) | - - -### MBR/GPT -| MBR | GPT | -| ----------------------------------------- | ---------------------------------------------------------------------------------- | -| 用于分区磁盘并存储分区布局信息 | 用于分区磁盘并存储分区布局信息 | -| 支持最多4个主分区或3个主分区加1个扩展分区 | 支持最多4个主分区或3个主分区加1个扩展分区支持最多4个主分区或3个主分区加1个扩展分区 | -| | 具有更好的数据完整性和可靠性,使用校验和检测数据损坏 | -| | UEFI需要GPT格式的磁盘才能引导 | - -### UEFI/Legacy -| UEFI 引导模式 | Legacy引导模式 | -| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | -| UEFI 提供了更好的用户界面 | Legacy引导模式是传统的且非常基本的 | -| 使用 GPT 分区方案 | 使用 MBR 分区方案 | -| UEFI 提供更快的启动时间 | 相比UEFI,它的速度较慢 | -| 由于 UEFI 使用 GPT 分区方案,因此它可以支持多达 9 zB 的存储设备 | Legacy使用的 MBR 分区方案仅支持最多 2 TB 存储设备 | -| UEFI 以 32 位和 64 位运行,支持鼠标和触摸板 | Legacy在仅支持键盘,仅 16 位模式下运行 | -| 它允许安全启动,防止加载未经授权的应用程序它还可能阻碍双启动,因为它将操作系统(OS)视为应用程序 | 它不提供允许加载未经授权的应用程序的安全启动方法,未限制双启动 | -| 它具有更简单的更新过程 | 与UEFI相比,它更复杂 | - -## 组合 - -- **BIOS+MBR**: - - 这是最传统的,系统都会支持;唯一的缺点就是`不支持容量大于2T的硬盘`。 - -- **BIOS+GPT**: - - BIOS是可以使用GPT分区表的硬盘来作为数据盘的,但不能引导系统;若电脑同时带有容量小于2T的硬盘和容量大于2T的硬盘,`小于2T的可以用MBR分区表安装系统,而大于2T的可以使用GPT分区表来存放资料`。但系统须使用64位系统。 - -- **UEFI+MBR**: - - 可以把UEFI设置成`Legacy模式`(传统模式)让其支持传统MBR启动,效果同`BIOS+MBR`;也可以建立FAT分区,放置UEFI启动文件来,可应用在U盘和移动硬盘上实现双模式启动。 - -- **UEFI+GPT**: - - 如果要把大于2T的硬盘作为系统盘来安装系统的话,就必须`UEFI+GPT`。而且系统须使用64位系统,否则无法引导。但系统又不是传统在PE下安装后就能直接使用的,引导还得经过处理才行。 - -## 系统的启动过程 - -从按下计算机的开机按钮到用户开始使用计算机,涉及了多个步骤和组件,让我们一起详细了解整个过程: - -**1. 电源启动**: - - 用户按下计算机的开机按钮,电源开始供电,计算机硬件开始初始化。电源将电流传递到主板上的BIOS/UEFI芯片。 - -**2. BIOS/UEFI启动**: - - BIOS/UEFI芯片接收到电源信号后,开始执行初始化过程。它首先进行自检(POST),检测主板、CPU、内存等硬件设备的工作状态,并在显示屏上输出相关信息。 - - BIOS/UEFI根据配置的启动顺序(通常为硬盘、光盘、USB等)搜索启动设备,并加载位于启动设备上的引导加载程序。 - -**3. 引导加载程序加载**: - - 引导加载程序(如GRUB)被加载到内存中,它负责后续的操作系统加载过程。GRUB通常会显示启动菜单,列出可用的操作系统选项。 - - 用户可以在GRUB菜单中选择要启动的操作系统,或者等待默认选项启动。 - -**4. 操作系统加载**: - - 一旦选择了启动选项,引导加载程序会加载操作系统的内核和初始化RAM磁盘(initramfs/initrd)。 - - 内核加载完成后,操作系统开始启动初始化过程,包括加载系统服务、挂载文件系统、启动用户界面等。 - -**5. 用户登录**: - - 操作系统初始化完成后,显示登录界面(如果配置了图形用户界面),用户输入用户名和密码登录系统。 - - 如果登录成功,操作系统加载用户的桌面环境或命令行界面,用户开始使用计算机。 - -## 各种引导加载程序 - -| 特性 | GRUB(GRand Unified Bootloader) | LILO(Linux Loader) | systemd-boot(前身为 gummiboot) | rEFInd(UEFI 引导管理器) | -|--------------------|----------------------------------|-----------------------------------|----------------------------------|------------------------------------| -| **支持的系统类型** | BIOS 和 UEFI | 仅支持 BIOS 模式 | 仅支持 UEFI | 仅支持 UEFI | -| **多系统引导支持** | ✅ 强大支持 | ❌ 不支持多系统引导 | ✅ 支持(需手动配置) | ✅ 自动检测操作系统 | -| **图形界面支持** | ✅ 支持(可自定义主题) | ❌ 不支持 | ❌ 不支持 | ✅ 支持(可自定义主题) | -| **配置方式** | 配置文件(复杂) | 配置文件(简单) | 配置文件(简单) | 配置文件(简单) | -| **命令行支持** | ✅ 支持(交互式命令行) | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | -| **文件系统支持** | ✅ 支持多种文件系统 | ✅ 支持 ext2/ext3/ext4 等 | ✅ 支持 ext4、FAT 等 | ✅ 支持 ext4、FAT 等 | -| **安全启动支持** | ✅ 支持(需配置) | ❌ 不支持 | ✅ 支持(需配置) | ✅ 支持(需配置) | -| **安装复杂度** | 中等(需配置) | 较低 | 较低 | 中等(需配置) | -| **适用场景** | 多系统引导、复杂配置 | 简单系统引导 | 简单系统引导 | 多系统引导、美观界面 | - -## 后记 - - -- [聊聊BIOS、UEFI、MBR、GPT、GRUB……](https://segmentfault.com/a/1190000020850901) diff --git a/content/learn-linux-for-PC-6.md b/content/learn-linux-for-PC-6.md deleted file mode 100644 index 456d2a0..0000000 --- a/content/learn-linux-for-PC-6.md +++ /dev/null @@ -1,231 +0,0 @@ -+++ -title = "Linux之旅(6):常用命令与性能分析" -date = 2023-07-25 - -[taxonomies] -tags = ["Linux"] -+++ - -前言 在学习Linux操作系统时,熟悉常用命令和性能分析工具是至关重要的。让我们一起探索Linux的世界,提升技能,解锁无限可能! - - -> 翻译自https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55。 - -## **问题背景** -当登录到一台有性能问题的Linux服务器,第一分钟要检查什么? - -在Netflix,我们拥有庞大的EC2 Linux虚拟机云,我们有众多性能分析工具来监视和诊断这些Linux服务器的性能。这些工具包括Atlas(负责整个虚拟机云的监控)和Vector(负责按需对虚拟机实例进行性能分析)。这些工具可以帮助我们解决大多数问题,但有时我们需要登录到虚拟机实例,并运行一些标准的Linux性能工具。 - -## **前60秒:摘要** -在本文中,Netflix性能工程团队将使用您应该使用的标准Linux工具在命令行中向您展示一个性能诊断过程的前60秒。在60秒内,您可以通过运行以下十个命令来了解有关系统资源使用和运行进程的信息。最应该关注的是一些很容易理解的错误、饱和度指标和资源利用率等指标。饱和度是衡量资源负载超出其处理能力的指标,它可以通过观察请求队列的长度或等待时间反映出来。 - -``` -uptime -dmesg | tail -vmstat 1 -mpstat -P ALL 1 -pidstat 1 -iostat -xz 1 -free -m -sar -n DEV 1 -sar -n TCP,ETCP 1 -top -``` -其中的一些命令需要安装sysstat软件包。这些命令暴露出的指标将帮助您完成一些USE方法:一种查找性能瓶颈的方法。它们涉及检查所有资源(CPU、内存、磁盘等)的利用率,饱和度和错误指标。在诊断过程中还应该注意检查和排除某些资源的问题。因为通过排除某些资源的问题,可以缩小诊断的范围,并指民后续的诊断。 - - -## **uptime** -``` -$ uptime -23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02 -``` -这是快速查看平均负载的方法,该平均负载指标了要运行的任务(进程)的数量。在Linux系统上,这些数字包括要在CPU上运行的进程以及在不中断IO(通常是磁盘IO)中阻塞的进程。这里给出了资源负载高层次的概览,但是没有其它工具就很难正确理解,值得快速看一眼。 - -这三个数字是指数衰减移动平均值,分别代表了1分钟、5分钟、15分钟的平均值。这三个数字使我们对负载如何随时间变化有了一定的了解。例如,如果您去诊断一个有问题的服务器,发现1分钟的值比15分钟的值低很多,那么您可能已经登录得太晚了,错过了问题。 - -在上面的例子中,平均负载有所增加,因为1分钟的值30相对15分钟的值19来说大了一些。数字变大意味着很多种可能:有可能是CPU的需求变多了,使用3和4中提到的vmstat或mpstat命令将可以进一步确认问题。 - -## **dmesg|tail** -``` -$ dmesg | tail -[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 -[...] -[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child -[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB -[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request. Check SNMP counters. -``` -该命令展示最近 10条系统消息。在这些系统消息中查找有可能引起性能问题的报错。上面的例子包括oom-killer和TCP丢弃了一个请求。 - -不能忘记这个步骤,dmesg通常对诊断问题很有价值。 -``` -## **vmstat 1** -$ vmstat 1 -procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu----- - r b swpd free buff cache si so bi bo in cs us sy id wa st -34 0 0 200889792 73708 591828 0 0 0 5 6 10 96 1 3 0 0 -32 0 0 200889920 73708 591860 0 0 0 592 13284 4282 98 1 1 0 0 -32 0 0 200890112 73708 591860 0 0 0 0 9501 2154 99 1 0 0 0 -32 0 0 200889568 73712 591856 0 0 0 48 11900 2459 99 0 0 0 0 -32 0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0 -``` -vmstat是虚拟内存统计(Virtual Memory Stat)的缩写,vmstat(8)是一个通常可用的工具(最初是在之前的BSD时代创建的),它每行打印一行服务器关键统计的概览。 - -vmstat使用参数1运行,意味着每1秒打印打印一次概览。命令输出的第一行展示的是从启动开始的平均值,而不是最近一秒的平均值。因此跳过第一行,除非您想学习并记住哪一列是哪一列。 - -要检查的列: - -r:在CPU上运行并等待回合的进程数。由于它不包含IO,因此它比指示CPU饱和的平均负载提供了更多的信息。一个大于CPU核数的r值就是饱和的。 -free:空闲的内存(单位的KB)。如果计数很大,说明服务器有足够的内存,free -m命令将对空闲内存的状态有更好的说明。 -si、so:交换置入和交换置出。如果这两个值是非空,说明物理内存用完了,现在在使用交换内存了。 -us、sy、id、wa、st:这些是CPU时间的分类,其是所有CPU的平均值。它们是用户时间、系统时间(内核)、空闲时间、等待IO和被偷窃时间(被其它宾客系统进行使用,或宾客系统隔离的驱动程序域Xen) -通过将用户时间和系统时间这两个分类相加,即可判断CPU是否繁忙。一定的等待IO时间说明磁盘有可能是性能瓶颈。你可以认为等待IO时间是另一种形式的空闲时间,它提供了它是如何空闲的线索。 - -IO处理需要占用CPU系统时间。一个较高的CPU系统时间(超过20%)可能会很有趣,有必要进一步研究:也许内核在很低效地处理IO。 - -在上面的示例中,CPU时间基本全在用户时间,这说明应用程序本身在大量占用CPU时间。CPU的平均利用率也远远超过90%。这不一定是问题,可以使用r列来检查饱和度。 - -## **mpstat -P ALL 1** -``` -$ mpstat -P ALL 1 -Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) -07:38:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle -07:38:50 PM all 98.47 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.78 -07:38:50 PM 0 96.04 0.00 2.97 0.00 0.00 0.00 0.00 0.00 0.00 0.99 -07:38:50 PM 1 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00 -07:38:50 PM 2 98.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00 -07:38:50 PM 3 96.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.03 -[...] -``` -此命令显示每个CPU的CPU时间明细,可用于检查不平衡的情况。单个热CPU说明是单线程应用程序在大量占用CPU时间。 - -## **pidstat 1** -``` -$ pidstat 1 -Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) -07:41:02 PM UID PID %usr %system %guest %CPU CPU Command -07:41:03 PM 0 9 0.00 0.94 0.00 0.94 1 rcuos/0 -07:41:03 PM 0 4214 5.66 5.66 0.00 11.32 15 mesos-slave -07:41:03 PM 0 4354 0.94 0.94 0.00 1.89 8 java -07:41:03 PM 0 6521 1596.23 1.89 0.00 1598.11 27 java -07:41:03 PM 0 6564 1571.70 7.55 0.00 1579.25 28 java -07:41:03 PM 60004 60154 0.94 4.72 0.00 5.66 9 pidstat -07:41:03 PM UID PID %usr %system %guest %CPU CPU Command -07:41:04 PM 0 4214 6.00 2.00 0.00 8.00 15 mesos-slave -07:41:04 PM 0 6521 1590.00 1.00 0.00 1591.00 27 java -07:41:04 PM 0 6564 1573.00 10.00 0.00 1583.00 28 java -07:41:04 PM 108 6718 1.00 0.00 0.00 1.00 0 snmp-pass -07:41:04 PM 60004 60154 1.00 4.00 0.00 5.00 9 pidstat -``` -pidstat有点像top的每个进程摘要,但是会滚动打印,而不是清屏再打印。这对于观察一段时间内的模式以及将所看到的内容(复制&粘贴)记录到调查记录中很有用。 - -上面的示例显示两个Java进程要为消耗大量CPU负责。%CPU这一列是所有CPU核的总和,1591%说明Java进程差不多消耗了16个核的CPU。 - -## **iostat -xz 1** -``` -$ iostat -xz 1 -Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) -avg-cpu: %user %nice %system %iowait %steal %idle - 73.96 0.00 3.73 0.03 0.06 22.21 -Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util -xvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09 -xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25 -xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26 -dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04 -dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00 -dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03 -[...] -``` -这是了解块设备(磁盘),应用的工作负载和产生的性能影响的绝佳工具。重点关注下面的指标: - -- r/s、w/s、 rkB/s、 wkB/s:这些是设备每秒交付的读取、写入、读取千字节和写入千字节。使用这些来表征块设备的工作负载。性能问题可能是由于向块设备施加了过多的工作负载。 -- await:IO的平均时间,以毫秒为单位。这是应用程序所感受到的时间,它包括IO排队时间和IO服务时间。大于预期的平均时间可能表示块设备饱和或设备出现问题了。 -- avgqu-sz:发给设备的平均请求数。值大于1可以表明已达到饱和状态(尽管设备通常可以并行处理请求,尤其是在多个后端磁盘所组成的前端虚拟设备的情况下)。 -- %util:设备利用率。这是一个表征繁忙度的百分比,它表示设备每秒工作的时间。尽管它的值取决于设备,但值大于60%通常会导致性能不佳(也会通过await的值观察到)。接近100%的值通常表示饱和。 - -如果存储设备是有许多后端磁盘组成的前端逻辑磁盘设备,则100%的利用率可能仅意味着100%的时间正在处理某些IO,但是后端磁盘可能远远没有饱和,并且可能还可以处理更多的工作。 - -请记住,性能不佳的磁盘IO不一定是应用问题,通常可以使用许多技术以执行异步IO,以便使应用程序不会被阻塞住而产生直接产生IO延迟(例如,预读和缓冲写入技术) - -## **free -m** -``` -$ free -m - total used free shared buffers cached -Mem: 245998 24545 221453 83 59 541 --/+ buffers/cache: 23944 222053 -Swap: 0 0 0 -``` -右边两列: - -buffers:缓冲区高速缓存,用于块设备I / O -cached:页面缓存,由文件系统使用 -我们只需要检查下它们的大小是否接近零。如果接近零的话,这可能导致较高的磁盘IO(可以使用iostat进行确认)和较差的性能。上面的示例看起来不错,每列都有较大的数据。 - --/+ buffers/cache为已用和空闲内存提供较少让人产生混乱的值。Linux将可用内存用于高速缓存,但是如果应用程序需要,它们可以快速被回收。因此应以某种方式将缓存的内存包括在free列中,这也就是这一行的所做的。甚至还有一个网站专门讨论了这种混乱。 - -如果在Linux上使用ZFS,就像我们对某些服务所做的那么,因为ZFS具有自己的文件系统缓存,它们并不会反映在free -m的列中,因此这种场景下这种混乱还将存在。所以会看到似乎系统的可用内存不足,而实际上可根据需要从ZFS缓存中申请到内存。 - -## **sar -n DEV 1** - -``` -$ sar -n DEV 1 -Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) -12:16:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -12:16:49 AM eth0 18763.00 5032.00 20686.42 478.30 0.00 0.00 0.00 0.00 -12:16:49 AM lo 14.00 14.00 1.36 1.36 0.00 0.00 0.00 0.00 -12:16:49 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -12:16:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -12:16:50 AM eth0 19763.00 5101.00 21999.10 482.56 0.00 0.00 0.00 0.00 -12:16:50 AM lo 20.00 20.00 3.25 3.25 0.00 0.00 0.00 0.00 -12:16:50 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -``` -此工具可以检查网络接口的吞吐量:rxkB/s和txkB/s,作为工作负载的度量,还可以检查是否已达到网络接口的限制。在上面的示例中,eth0接收速率达到22MB/s,即176Mbit/s(远低于1Gbit/s的网络接口限制,假设是千兆网卡)。 - -此版本还具有%ifutil用来指示设备利用率(全双工双向),这也是我们使用的Brendan的nicstat工具测量出来的。就像nicstat一样,这个指标很难计算正确,而且在本例中好像不起作用(数据是0.00)。 - -## **sar -n TCP,ETCP 1** -``` -$ sar -n TCP,ETCP 1 -Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) -12:17:19 AM active/s passive/s iseg/s oseg/s -12:17:20 AM 1.00 0.00 10233.00 18846.00 -12:17:19 AM atmptf/s estres/s retrans/s isegerr/s orsts/s -12:17:20 AM 0.00 0.00 0.00 0.00 0.00 -12:17:20 AM active/s passive/s iseg/s oseg/s -12:17:21 AM 1.00 0.00 8359.00 6039.00 -12:17:20 AM atmptf/s estres/s retrans/s isegerr/s orsts/s -12:17:21 AM 0.00 0.00 0.00 0.00 0.00 -``` -这是一些关键的TCP指标的摘要,包括: - -- active / s:每秒本地启动的TCP连接数(例如,通过connect())。 -- passive/s:每秒远程启动的TCP连接数(例如,通过accept())。 -- retrans / s:每秒TCP重传的次数。 -主动和被动计数通常作为服务器TCP负载的粗略度量:新接受的连接数(被动)和新出站的连接数(主动)。将主动视为出站,将被动视为入站可能对理解这两个指标有些帮助,但这并不是严格意义上的(例如,考虑从localhost到localhost的连接)。 - -重新传输是网络或服务器问题的迹象;它可能是不可靠的网络(例如,公共Internet),也可能是由于服务器过载并丢弃了数据包。上面的示例仅显示每秒一个新的TCP连接。 - -## **top** - -$ top -``` -top - 00:15:40 up 21:56, 1 user, load average: 31.09, 29.87, 29.92 -Tasks: 871 total, 1 running, 868 sleeping, 0 stopped, 2 zombie -%Cpu(s): 96.8 us, 0.4 sy, 0.0 ni, 2.7 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st -KiB Mem: 25190241+total, 24921688 used, 22698073+free, 60448 buffers -KiB Swap: 0 total, 0 used, 0 free. 554208 cached Mem - PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND - 20248 root 20 0 0.227t 0.012t 18748 S 3090 5.2 29812:58 java - 4213 root 20 0 2722544 64640 44232 S 23.5 0.0 233:35.37 mesos-slave - 66128 titancl+ 20 0 24344 2332 1172 R 1.0 0.0 0:00.07 top - 5235 root 20 0 38.227g 547004 49996 S 0.7 0.2 2:02.74 java - 4299 root 20 0 20.015g 2.682g 16836 S 0.3 1.1 33:14.42 java - 1 root 20 0 33620 2920 1496 S 0.0 0.0 0:03.82 init - 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd - 3 root 20 0 0 0 0 S 0.0 0.0 0:05.35 ksoftirqd/0 - 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H - 6 root 20 0 0 0 0 S 0.0 0.0 0:06.94 kworker/u256:0 - 8 root 20 0 0 0 0 S 0.0 0.0 2:38.05 rcu_sched -``` -top命令包括我们之前检查的许多指标。运行它可以很方便地查看是否有任何东西与以前的命令有很大不同,这表明负载是可变的。 - -top命令不太好的地方是,随着时间的推移很难看到指标变化的模式,这在提供滚动输出的vmstat和pidstat之类的工具中可能更清楚一点。如果您没有足够快地暂停输出(Ctrl-S暂停,Ctrl-Q继续),在屏幕输出被top命令清除后,间歇性问题的证据也可能被丢失了。 diff --git a/content/learn-linux-for-PC-7.md b/content/learn-linux-for-PC-7.md deleted file mode 100644 index bfd4b90..0000000 --- a/content/learn-linux-for-PC-7.md +++ /dev/null @@ -1,48 +0,0 @@ -+++ -title = "Linux之旅(7):系统与终端字体设置" -date = 2023-08-01 - -[taxonomies] -tags = ["Linux"] -+++ - -前言 一个好看的字体会提高工作效率与审美.Linux 下的字体可以很漂亮,但需要一些设置. - - -随着 FreeType2 由于专利过期默认开启了高质量的 LCD 优化,以及一批高质量的开源字体的公布,Linux 上的中文字体渲染比过去好了太多. - -> Windows 的字体渲染从技术上来说是相当先进的,问题是在中文字体的选择上实在是一坨... - - -## 选择字体 - -近几年来出现了一大批自由字体(包括工作量极大的 CJK 字体),使 Linux 下的字体选择一下子丰富了起来.如果愿意花一点时间的话,可以去[ArchWiki](https://wiki.archlinux.org/title/Fonts#Font_packages) 上看看,里面涵盖了相当多的自由字体. - -### 终端字体 - -[Maple Mono](https://github.com/subframe7536/maple-font?tab=readme-ov-file),这是一款字形整洁、拥有手写风格的斜体、细粒度配置、内置 Nerd-Font、中英文2:1等宽 的字体.我使用的: -``` -MapleMono-Bold -``` -### 阅读器字体 - -[霞鹜文楷](https://github.com/lxgw/LxgwWenKai),一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生.我使用的: -``` -LXGW WenKai -``` -### 浏览器字体 -``` -拉丁字体 -├── Inter -无衬线,类似于 Roboto 但更适合屏幕显示的字体 -├── Noto Serif -衬线 -└── Sarasa Term SC -等宽,拉丁文字符严格为半宽的字体,中英文混排时较协调 -├── 如果不适应这种较瘦的字体风格, 则可以尝试使用: -│ ├── Adobe Source Pro -│ ├── Cascadia Code -│ └── Fira Code -中文字体 -├── Noto Sans CJK SC (思源黑体) -└── Noto Serif CJK SC(思源宋体) -``` ---- -**Done.** diff --git a/public/archive/index.html b/public/archive/index.html index 3b64cff..5be4484 100644 --- a/public/archive/index.html +++ b/public/archive/index.html @@ -515,76 +515,6 @@ :: #综合工程 - -
  • - - - :: Linux之旅(7):系统与终端字体设置 - - - :: - - -
  • -
  • - - - :: Linux之旅(6):常用命令与性能分析 - - - :: - - -
  • -
  • - - - :: Linux之旅(5):BIOS-UEFI-MBR-GPT-GRUB - - - :: - - -
  • -
  • - - - :: Linux之旅(4):Terminal,Console and Shell - - - :: - - -
  • -
  • - - - :: Linux之旅(3):内核/shell/包管理/文件系统/桌面环境 - - - :: - - -
  • -
  • - - - :: Linux之旅(2):FHS与目录结构 - - - :: - - -
  • -
  • - - - :: Linux之旅(1):构成与发行版 - - - :: - -
  • diff --git a/public/atom.xml b/public/atom.xml index 96f3872..422f7b7 100644 --- a/public/atom.xml +++ b/public/atom.xml @@ -1186,137 +1186,4 @@ <p>前言 linux搭建安卓虚拟机有Waydroid,QEMU和Docker三种方案,各有不同。</p> - - Linux之旅(7):系统与终端字体设置 - 2023-08-01T00:00:00+00:00 - 2023-08-01T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-7/ - - <p>前言 一个好看的字体会提高工作效率与审美.Linux 下的字体可以很漂亮,但需要一些设置.</p> - - - - Linux之旅(6):常用命令与性能分析 - 2023-07-25T00:00:00+00:00 - 2023-07-25T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-6/ - - <p>前言 在学习Linux操作系统时,熟悉常用命令和性能分析工具是至关重要的。让我们一起探索Linux的世界,提升技能,解锁无限可能!</p> - - - - Linux之旅(5):BIOS-UEFI-MBR-GPT-GRUB - 2023-07-24T00:00:00+00:00 - 2023-07-24T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-5/ - - <p>前言 在计算机领域,系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFI,MBR与GPT,以及它们之间的异同点。此外,我们还会讨论与这些概念密切相关的引导加载程序——GRUB。</p> - - - - Linux之旅(4):Terminal,Console and Shell - 2023-07-23T00:00:00+00:00 - 2023-07-23T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-4/ - - <p>前言 在linux的学习过程中,我们常常遇到诸如 Terminal,Console,bash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。</p> - - - - Linux之旅(3):内核/shell/包管理/文件系统/桌面环境 - 2023-07-22T00:00:00+00:00 - 2023-07-22T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-3/ - - <p>前言 在Linux世界中,内核/shell/包管理/文件系统构成了Linux系统的核心,它们相互配合,共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分,解释它们的作用和原理,帮助读者更好地理解Linux系统的运作机制。</p> - - - - Linux之旅(2):FHS与目录结构 - 2023-07-21T00:00:00+00:00 - 2023-07-21T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-2/ - - <p>前言 在Linux世界中,Filesystem Hierarchy Standard(FHS)是一座引导我们进入系统核心的桥梁,它定义了Linux系统中目录结构的规范与作用,为我们提供了一张清晰的地图,指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构,解释各个目录的用途与功能,帮助我们更好地理解和利用Linux系统。</p> - - - - Linux之旅(1):构成与发行版 - 2023-07-20T00:00:00+00:00 - 2023-07-20T00:00:00+00:00 - - - - - Unknown - - - - - - https://blog.dich.bid/learn-linux-for-pc-1/ - - <p>前言 Linux 作为一款强大、灵活且免费的操作系统,吸引了越来越多的用户。然而,对于初学者来说,Linux 可能显得有些陌生,甚至有些令人望而生畏。本文旨在为那些刚踏入 Linux 世界的新手提供一份指南,帮助他们更好地了解、使用这个令人着迷的操作系统。我们将探讨Linux的基本概念,解释为何选择Linux,深入剖析其主要构成要素以及不同的发行版之间的差异。</p> - - \ No newline at end of file diff --git a/public/awesome-vm-android/index.html b/public/awesome-vm-android/index.html index c73f204..013dbe5 100644 --- a/public/awesome-vm-android/index.html +++ b/public/awesome-vm-android/index.html @@ -415,13 +415,6 @@
    - - -   - Linux之旅(7):系统与终端字体设置 - - - diff --git a/public/learn-linux-for-pc-1/index.html b/public/learn-linux-for-pc-1/index.html deleted file mode 100644 index 5e9a1ca..0000000 --- a/public/learn-linux-for-pc-1/index.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(1):构成与发行版

    - - - - - - -
    -

    前言 Linux 作为一款强大、灵活且免费的操作系统,吸引了越来越多的用户。然而,对于初学者来说,Linux 可能显得有些陌生,甚至有些令人望而生畏。本文旨在为那些刚踏入 Linux 世界的新手提供一份指南,帮助他们更好地了解、使用这个令人着迷的操作系统。我们将探讨Linux的基本概念,解释为何选择Linux,深入剖析其主要构成要素以及不同的发行版之间的差异。

    -

    一.什么是Linux?

    -

    Linux 是一种开源的类 UNIX 操作系统内核。它由芬兰的 Linus Torvalds 于1991年开始开发,是一个自由、免费的操作系统。Linux 内核是操作系统的核心,负责管理硬件资源,并提供各种系统服务。与 Windows 和 macOS 等操作系统不同,Linux 的源代码对所有人开放,任何人都可以查看、修改和重新分发。这使得 Linux 具有极高的自由度和可定制性,用户可以根据自己的需求和偏好来定制操作系统。Linux 广泛应用于各种设备,包括个人计算机、服务器、手机、嵌入式系统等,是一个功能强大且灵活多样的操作系统。

    -

    二.为什么要用Linux?

    -
      -
    1. -

      开源免费:Linux 是完全开源的,用户可以免费使用和修改源代码。

      -
    2. -
    3. -

      稳定性和安全性:Linux 系统以其稳定性和安全性而闻名,适合长时间运行的服务。

      -
    4. -
    5. -

      灵活性和可定制性:用户可以根据需要定制 Linux 系统。

      -
    6. -
    7. -

      广泛的软件支持:有大量的开源软件可供选择,满足不同需求。

      -
    8. -
    -
    -

    Liunx可以用来玩游戏吗? -实际上著名的 Steam Deck 的系统就是基于Arch linux 的。对于个人使用而言,现在有不少原生支持linux 的游戏;也可以使用Wine来运行Windows下的游戏。

    -
    -
    -

    Linux上软件会不会太少? -参见 常用跨平台开源软件一文,在社区的努力下如今软件生态已经非常丰富,你也可以使用如Flatpak等商店安装软件,或者直接使用Wine。如果有不得不在Windows下使用的软件,可以装双系统。

    -
    -

    三.Linux的主要构成

    -

    Linux操作系统主要由以下几个部分组成:

    -
      -
    1. -

      内核:操作系统的核心,负责管理系统资源。如Zen内核,LTS内核等。

      -
    2. -
    3. -

      Shell:命令行界面,用户通过它与系统交互,如Bash,Zsh等。

      -
    4. -
    5. -

      图形用户界面(GUI):提供图形化操作界面,如GNOME、KDE、XFCE等。

      -
    6. -
    7. -

      文件系统:如ext4、Btrfs等,用于组织和管理磁盘上的文件。

      -
    8. -
    9. -

      系统库:为应用程序提供运行时支持。

      -
    10. -
    11. -

      应用程序:用户可以直接使用的软件,如文本编辑器、网页浏览器等。其中也有著名的GNU工具,如Vim,GCC等。

      -
    12. -
    -

    四.选择Linux发行版

    -

    从上文可以发现,选择Linux发行版实际上是在选择 内核/包管理器/图形界面 等组件的排列组合。其中最主要的因素是包管理器。

    -

    Linux有许多不同的发行版,但大致可以分为几个系:

    -

    Debian系: -Debian:Debian以稳定性,安全性和轻量级著称,适合用于服务器和桌面环境。我们常说的Ubuntu就是基于Debian的发行版,注重用户友好性和易用性。它提供了多种桌面环境选择,以及许多现成的软件包。

    -
    APT(Advanced Package Tool)是Debian系发行版的主要包管理器。它使用命令行工具如apt-get、aptitude等来管理软件包。
    -
    -

    Red Hat系:

    -
      -
    • Red Hat Enterprise Linux(RHEL):RHEL是一款商业发行版,专注于企业级应用和支持。它提供了长期支持和专业技术支持服务,适用于企业级服务器和工作站。
    • -
    • CentOS:CentOS是基于RHEL源代码编译而成的免费发行版,与RHEL兼容并提供类似的功能和性能。它也提供了长期支持版本和稳定性较高的特点。
    • -
    • Fedora:Fedora是由Red Hat支持的社区驱动的发行版,注重提供最新的软件特性和技术。它适用于开发者和技术爱好者,提供了稳定的发布周期和丰富的软件包。
    • -
    -
    YUM(Yellowdog Updater, Modified)是Red Hat系发行版的主要包管理器。最近的版本也开始采用DNF(Dandified YUM)。
    -
    -

    Arch系: -Arch Linux:Arch Linux是一个简洁、轻量级且灵活的发行版,注重简洁性和滚动更新。它采用“滚动发布”的方式,用户可以通过自定义安装来构建自己的系统,适合有一定Linux经验的用户。

    -
    Pacman(Package Manager)是Arch Linux的主要包管理器。它使用简洁的命令来管理软件包,如pacman -S安装软件包、pacman -Syu更新系统等。
    -
    -

    Gentoo系: -Gentoo:Gentoo是一个源码驱动的发行版,用户可以通过源代码自定义编译软件包以满足自己的需求。它注重性能和灵活性,适合高级用户和技术爱好者。

    -
    Portage是Gentoo的包管理器,它是一个源代码驱动的包管理器,允许用户从源代码构建和安装软件包。
    -
    -

    除了以上列举的包管理器外,还有其他一些较为特殊的包管理器,如Slackware系的pkgtool、SUSE系的zypper等。

    -

    对于个人使用而言,我个人建议新手使用Ubuntu,有比较易用的界面和完善的资料参考;如果你是一个系统极客,可以使用Arch linux 或者 NixOS。

    -

    五.个人日常使用需要注意什么?

    -
      -
    1. -

      学习命令行:命令行是Linux的强大工具,学习基本命令可以提高效率。

      -
    2. -
    3. -

      选择合适的发行版:根据个人需求和技术水平选择适合的发行版。

      -
    4. -
    5. -

      系统备份:定期备份重要数据,以防意外丢失。

      -
    6. -
    7. -

      软件管理:了解如何安装、更新和卸载软件。

      -
    8. -
    9. -

      安全设置:设置强密码,定期更新系统以修复安全漏洞。

      -
    10. -
    11. -

      社区参与:Linux社区非常活跃,遇到问题可以寻求社区帮助。

      -
    12. -
    13. -

      硬件兼容性:检查你的硬件是否与选择的Linux发行版兼容。

      -
    14. -
    15. -

      驱动程序:确保你的硬件设备有可用的驱动程序,以避免兼容性问题。

      -
    16. -
    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-2/index.html b/public/learn-linux-for-pc-2/index.html deleted file mode 100644 index 3ed7974..0000000 --- a/public/learn-linux-for-pc-2/index.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(2):FHS与目录结构

    - - - - - - -
    -

    前言 在Linux世界中,Filesystem Hierarchy Standard(FHS)是一座引导我们进入系统核心的桥梁,它定义了Linux系统中目录结构的规范与作用,为我们提供了一张清晰的地图,指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构,解释各个目录的用途与功能,帮助我们更好地理解和利用Linux系统。

    -

    一.认识FHS

    -

    FHS是Filesystem Hierarchy Standard(文件系统层次结构标准)的缩写。它是一个定义了Linux系统中目录结构和各个目录作用的规范。FHS规定了Linux系统中各个目录的用途和预期内容,以便确保不同Linux发行版之间的兼容性,并使得用户能够更轻松地理解和管理系统。

    -

    FHS规范最初由Linux基金会(Linux Foundation)和自由软件基金会(Free Software Foundation)共同发布,并经过多次修订和更新。该规范不仅对Linux系统本身有用,也适用于其他类UNIX操作系统。

    -

    FHS规范定义了一些基本的目录,如/bin、/boot、/dev等,并规定了每个目录的作用和预期内容。这样做有助于系统管理员和开发人员更好地组织和管理文件系统,并使得用户能够更轻松地找到所需的文件和数据。

    -

    二.常见目录结构

    -

    在刚刚由Windows切换至Linux时,往往会对目录感到不解,不知道安装的软件放在哪个目录之下?

    -

    以下是对Linux系统目录结构的详细说明:

    -
      -
    • /(根目录): -根目录是整个文件系统的起点,包含了系统中所有其他目录和文件。在Linux系统中,根目录被表示为/。
    • -
    • /bin(二进制文件): -/bin目录存放着一些最基本的系统命令,如ls、cp、mv等,这些命令通常被所有用户使用。
    • -
    • /boot(引导文件): -/boot目录存放着启动Linux系统所需的引导文件,如内核映像(vmlinuz)、引导加载程序(boot loader)配置文件(如GRUB配置文件)等。
    • -
    • /dev(设备文件): -/dev目录包含了系统中所有设备的特殊文件,如硬盘、键盘、鼠标等。在Linux中,一切皆文件,设备被抽象为文件,通过/dev目录中的特殊文件来表示。
    • -
    • /etc(配置文件): -/etc目录包含了系统的配置文件,如网络配置、用户账户信息、服务配置等。这些配置文件通常以纯文本的形式存在,可以由系统管理员进行编辑和修改。
    • -
    • /home(用户主目录): -/home目录是系统中所有普通用户的主目录所在地,每个用户通常都有一个对应的子目录,用于存放用户的个人文件和数据。
    • -
    • /lib(库文件): -/lib目录存放着系统所需的共享库文件,这些库文件包含了一些程序运行所需的函数和数据,为程序提供了基本的支持。
    • -
    • /mnt(挂载点): -/mnt目录用于挂载临时文件系统,如光盘、移动硬盘等。系统管理员可以将其他设备或文件系统挂载到/mnt目录下,以便访问其中的文件和数据。
    • -
    • /opt(可选软件包): -/opt目录用于存放一些可选的软件包和应用程序,这些软件包通常不属于Linux发行版的默认安装范围,但可以被用户自行安装和管理。
    • -
    • /proc(进程信息): -/proc目录是一个虚拟的文件系统,包含了系统运行时的各种进程信息和系统状态信息。用户可以通过读取/proc目录中的特殊文件来获取系统信息。
    • -
    • /sbin(系统命令): -/sbin目录存放着一些系统管理和维护命令,这些命令通常只能由超级用户(root)执行,用于系统的管理和维护。
    • -
    • /srv(服务数据): -/srv目录用于存放一些服务相关的数据文件,如Web服务器的网站数据、FTP服务器的文件等。每个服务通常都会有一个对应的子目录。
    • -
    • /tmp(临时文件): -/tmp目录用于存放临时文件和临时数据,这些文件通常在系统重启时会被删除。任何用户都可以在/tmp目录下创建临时文件。
    • -
    • /usr(用户程序): -/usr目录包含了系统中大部分用户可用的程序和文件,如用户应用程序、共享库文件、文档等。它通常是系统的二级目录,类似于Windows系统中的Program Files目录。
    • -
    • /var(可变数据): -/var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。这些数据通常会随着系统的运行而不断变化。
    • -
    -
    -

    注意:NixOS不符合FHS标准!

    -
    -

    三.分区大小

    -

    对各个分区进行容量分配时,需要根据系统的实际需求和用途来进行规划。一般而言在安装引导时可以选择让程序自动分区。

    -
      -
    • 根目录(/):根目录是整个文件系统的起点,通常会分配较大的空间,以确保系统和应用程序有足够的空间运行。建议分配至少20GB的空间给根目录。
    • -
    • /home目录:/home目录用于存放用户的个人文件和数据,因此需要根据用户数量和存储需求来进行容量分配。一般情况下,建议为每个用户分配至少10GB的空间。
    • -
    • /var目录:/var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。根据系统的运行情况和日志文件的大小来进行容量分配,一般建议分配10-20GB的空间。
    • -
    • /tmp目录:/tmp目录用于存放临时文件和临时数据,通常不需要分配太大的空间。建议分配至少1-2GB的空间给/tmp目录。
    • -
    • /boot目录:/boot目录存放着启动Linux系统所需的引导文件,通常只需要分配几百MB的空间即可。
    • -
    • Swap分区:Swap分区是一种虚拟内存,用于暂时存放不常用的内存数据。当系统内存不足时,Linux会将一部分内存数据移动到Swap分区中,以避免内存耗尽导致系统崩溃。Swap分区的大小通常与系统内存大小有关,一般建议为系统内存的1.5-2倍。例如,如果系统内存为4GB,则建议设置Swap分区大小为6-8GB。
    • -
    -
    -

    这里特别讲讲Swap分区

    -
    -

    Swap分区可以通过以下几种方式实现:

    -
      -
    • 交换分区(Swap Partition):创建一个独立的交换分区,通常是一个专门的分区,用于存放Swap数据。
    • -
    • 交换文件(Swap File):创建一个专门的文件用于存放Swap数据,而不是创建独立的分区。这种方式更加灵活,可以根据需要动态调整Swap的大小。
    • -
    • Swap大小:Swap的大小应该根据系统的内存大小和使用情况来确定,一般建议为系统内存的1.5-2倍。
    • -
    • Swap分区/文件的位置:Swap分区/文件应该位于较快的存储介质上,以确保交换操作的效率。 -Swap的优先级:如果同时存在多个Swap分区/文件,可以通过设置优先级来指定系统使用的Swap空间。
    • -
    -

    四.将 home 目录下的文件夹改为英文

    -

    可以使用 xdg-user-dirs-update 工具来更新用户目录为英文版本。你可以按照以下步骤进行:

    -
      -
    1. -

      编辑用户目录配置文件: -打开或创建 ~/.config/user-dirs.dirs 文件,用文本编辑器编辑它:

      -
      nano ~/.config/user-dirs.dirs
      -
      -
    2. -
    3. -

      将目录名称更改为英文: -在该文件中,你可以看到类似以下的条目:

      -
      XDG_DESKTOP_DIR="$HOME/桌面"
      -XDG_DOWNLOAD_DIR="$HOME/下载"
      -XDG_DOCUMENTS_DIR="$HOME/文档"
      -XDG_MUSIC_DIR="$HOME/音乐"
      -XDG_PICTURES_DIR="$HOME/图片"
      -XDG_VIDEOS_DIR="$HOME/视频"
      -
      -

      将这些路径改为英文,例如:

      -
      XDG_DESKTOP_DIR="$HOME/Desktop"
      -XDG_DOWNLOAD_DIR="$HOME/Downloads"
      -XDG_DOCUMENTS_DIR="$HOME/Documents"
      -XDG_MUSIC_DIR="$HOME/Music"
      -XDG_PICTURES_DIR="$HOME/Pictures"
      -XDG_VIDEOS_DIR="$HOME/Videos"
      -
      -
    4. -
    5. -

      重命名现有的文件夹: -手动将 home 目录下的文件夹重命名为英文版本:

      -
      mv ~/桌面 ~/Desktop
      -mv ~/下载 ~/Downloads
      -mv ~/文档 ~/Documents
      -mv ~/音乐 ~/Music
      -mv ~/图片 ~/Pictures
      -mv ~/视频 ~/Videos
      -
      -
    6. -
    7. -

      应用更改: -完成以上操作后,运行以下命令应用新配置:

      -
      xdg-user-dirs-update
      -
      -
    8. -
    -

    这样,home 目录下的文件夹就会改为英文,并且系统也会正确识别这些新的目录路径。

    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-3/index.html b/public/learn-linux-for-pc-3/index.html deleted file mode 100644 index ef019a4..0000000 --- a/public/learn-linux-for-pc-3/index.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(3):内核/shell/包管理/文件系统/桌面环境

    - - - - - - -
    -

    前言 在Linux世界中,内核/shell/包管理/文件系统构成了Linux系统的核心,它们相互配合,共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分,解释它们的作用和原理,帮助读者更好地理解Linux系统的运作机制。

    -

    一.Linux内核

    -

    有许多不同的版本,每个版本都包含了一系列的功能改进、bug修复和性能优化。在Linux发行版中,通常会使用某个特定版本的Linux内核,或者在需要时进行升级。以下是一些常见的Linux内核及其主要特点:

    -

    Zen内核

    -
      -
    • Zen内核是Linux内核的一个变体,旨在提供更好的性能和响应性。它通常包含了一些特定的调度程序和调优参数,以提高系统的负载均衡和响应速度。Zen内核也可能包含一些来自其他内核变体的功能和补丁,以进一步优化性能。
    • -
    -

    LTS内核

    -
      -
    • LTS(Long-Term Support)内核是一种长期支持的内核版本,它会获得更长时间的更新和维护。LTS内核通常会选择一些相对稳定和经过充分测试的功能,并对其进行长期支持,以确保系统的稳定性和安全性。
    • -
    -

    Real-Time内核

    -
      -
    • Real-Time内核是一种专门针对实时应用场景进行优化的内核变体。它通常包含了一些实时调度算法和机制,以确保系统能够及时响应各种事件,并满足实时性要求。Real-Time内核适用于一些对实时性要求较高的应用,如工业控制、机器人控制等领域。
    • -
    -

    Hardened内核

    -
      -
    • Hardened内核是一种针对安全性进行优化的内核变体。它通常包含了一些安全增强功能和补丁,以提高系统的安全性和抵御攻击的能力。Hardened内核适用于一些对安全性要求较高的应用,如服务器、云计算等场景。
    • -
    -

    XanMod内核

    -
      -
    • XanMod内核是一个基于Linux内核的自定义内核,旨在提供更好的响应性和性能。它包含了一些针对桌面和工作站系统优化的功能和补丁,如MuQSS调度器、BFQ I/O调度器等,以提高系统的响应速度和性能稳定性。XanMod内核还支持一些实时性应用,如音视频处理等,适用于对系统响应速度要求较高的用户。
    • -
    -

    CachyOS内核

    -
      -
    • CachyOS内核是一个专门针对缓存优化的Linux内核变体。它包含了一些针对缓存系统优化的功能和调整,以提高系统的缓存性能和数据访问速度。CachyOS内核通常适用于需要高性能缓存的应用场景,如数据库服务器、Web服务器等。
    • -
    -

    这些内核变体针对不同的需求和使用场景进行了优化,可以根据具体的应用需求来选择合适的内核版本。例如,如果您需要更好的性能和响应性,可以选择Zen内核;如果您需要长期支持和稳定性,可以选择LTS内核;如果您需要实时性能,可以选择Real-Time内核;如果您需要更高的安全性,可以选择Hardened内核。

    -

    二.Linux Shell

    -

    在Linux系统中,有许多不同的Shell(命令行解释器),每种Shell都有自己的特点和用途。以下是一些常见的Linux Shell及其主要特点:

    -

    Bash(Bourne Again Shell)

    -
      -
    • Bash是Linux系统中最常用的Shell之一,也是默认的命令行解释器。它是Bourne Shell的增强版,提供了丰富的功能和扩展性,包括命令历史、命令补全、作业控制等。Bash具有良好的兼容性和易用性,适用于日常的系统管理和脚本编程。
    • -
    -

    Zsh(Z Shell)

    -
      -
    • Zsh是一种功能强大的Shell,提供了丰富的功能和扩展性,如更强大的命令补全、自动纠正拼写错误、主题和插件系统等。Zsh具有良好的可定制性和用户体验,适用于高级用户和程序员。
    • -
    -

    Fish(Friendly Interactive Shell)

    -
      -
    • Fish是一种用户友好的交互式Shell,提供了直观的命令提示和自动补全功能,以及丰富的语法高亮和命令提示信息。Fish具有良好的用户体验和易用性,适用于初学者和普通用户。
    • -
    -

    Dash(Debian Almquist Shell)

    -
      -
    • Dash是一种轻量级的Shell,专门设计用于系统启动过程和脚本执行。Dash具有较高的执行速度和较低的内存占用,适用于系统启动脚本和简单的脚本编程。
    • -
    -

    Bash是最常用的Shell之一,具有良好的兼容性和功能性;Zsh提供了更多的高级特性和定制选项,适用于高级用户和程序员;Fish具有友好的交互式体验和直观的用户界面,适用于初学者和普通用户;Dash则是一个轻量级的Shell,专门用于系统启动过程和简单的脚本编程。用户可以根据自己的需求和偏好选择合适的Shell。

    -

    三.Linux包管理器

    -

    在Linux系统中,有几种常见的包管理器,它们各自管理着不同的发行版,具有不同的特点和用途。以下是一些常见的Linux包管理器及其主要特点:

    -

    APT(Advanced Package Tool)

    -
      -
    • APT是Debian系(如Debian、Ubuntu)中最常用的包管理器之一。它使用基于命令行的工具,如apt-getapt-cache等来安装、升级和删除软件包。APT还支持依赖关系的自动解决,使得软件包的安装和管理变得更加方便。
    • -
    -

    YUM(Yellowdog Updater, Modified)

    -
      -
    • YUM是Red Hat系(如CentOS、Fedora)中常用的包管理器之一。它使用基于命令行的工具,如yum来管理软件包。YUM具有良好的依赖关系解决能力和事务处理功能,使得系统升级和软件包管理变得更加简单和可靠。
    • -
    -

    DNF(Dandified YUM)

    -
      -
    • DNF是YUM的下一代版本,逐渐取代了YUM在Fedora和RHEL系列中的地位。DNF具有更快的包查询和事务处理能力,以及更友好的用户界面。它是未来主流的包管理器之一。
    • -
    -

    Pacman(Package Manager)

    -
      -
    • Pacman是Arch Linux中常用的包管理器,也被一些其他发行版如Manjaro采用。Pacman使用简洁的命令,如pacman -S安装软件包、pacman -Syu更新系统等来管理软件包。Pacman具有简单、直观的界面和快速的操作速度,适用于对系统有一定了解的用户。
    • -
    -

    zypper

    -
      -
    • zypper是openSUSE中常用的包管理器,它使用基于命令行的工具,如zypper installzypper update等来管理软件包。zypper具有良好的依赖关系解决能力和事务处理功能,使得系统升级和软件包管理变得更加简单和可靠。
    • -
    -

    dpkg

    -
      -
    • dpkg是Debian系(如Debian、Ubuntu)中的低级别软件包管理工具,用于直接管理软件包的安装、升级和删除。它提供了一系列的命令,如dpkg -i安装软件包、dpkg -r删除软件包等。
    • -
    -

    RPM(RPM Package Manager)

    -
      -
    • RPM是Red Hat系(如CentOS、Fedora)中的低级别软件包管理工具,用于直接管理软件包的安装、升级和删除。它提供了一系列的命令,如rpm -i安装软件包、rpm -e删除软件包等。
    • -
    -

    Portage

    -
      -
    • Portage是Gentoo Linux中的包管理器,它使用源代码进行软件包的安装和管理。Portage具有高度定制化和灵活性,允许用户根据需要自定义软件包的编译参数和依赖关系。
    • -
    -

    Snap

    -
      -
    • Snap是一种跨发行版的软件包格式和包管理器,允许用户在不同的Linux发行版上安装和管理软件包。Snap具有自包含性和隔离性,使得软件包的安装和升级变得更加简单和安全。
    • -
    -

    Flatpak

    -
      -
    • Flatpak是另一种跨发行版的软件包格式和包管理器,类似于Snap,允许用户在不同的Linux发行版上安装和管理软件包。Flatpak提供了一种统一的应用分发和运行环境,使得软件包的安装和升级更加简单和可靠。
    • -
    -

    四.Linux文件系统

    -

    Linux系统支持多种文件系统,每种文件系统都有自己的特点和优势,适用于不同的应用场景和需求。以下是一些常见的Linux文件系统及其主要特点:

    -

    ext4

    -
      -
    • ext4是Linux系统中最常用的文件系统之一,它是ext文件系统的后续版本,提供了更好的性能和扩展性。ext4支持更大的文件和分区大小,更快的文件系统检查和恢复速度,以及更高的性能和稳定性。
    • -
    -

    Btrfs

    -
      -
    • Btrfs是一种先进的文件系统,具有许多先进的功能和特性,如快照、数据校验、数据压缩等。Btrfs支持在线扩展和收缩分区大小,以及动态添加和删除磁盘,适用于需要高级特性和灵活性的应用场景。此外,Btrfs对快照功能支持较好。
    • -
    -
    -

    快照功能是一种文件系统的特性,它允许用户在特定时间点对文件系统的状态进行快照或备份,并且可以在需要时一键恢复到该时间点的状态。 -快照允许用户轻松地创建文件系统的历史版本,并在需要时回滚到特定的版本;快照允许用户在文件系统中进行实验和测试,并在测试失败或不需要时轻松地回滚到初始状态,以避免对系统造成影响。在升级或安装过程中出现问题时快速恢复到原始状态

    -
    -

    XFS

    -
      -
    • XFS是一种高性能的日志文件系统,适用于大型文件和高吞吐量的应用场景。XFS支持大容量的文件和分区,具有较低的碎片化和较高的并发性能,适用于大规模存储和数据分析等应用。
    • -
    -

    ZFS

    -
      -
    • ZFS是一种先进的文件系统,具有强大的数据管理和保护功能,如快照、数据校验、数据压缩等。ZFS支持软件RAID和存储池(pool),以及动态添加和删除磁盘,适用于数据中心和大规模存储等应用场景。
    • -
    -

    F2FS

    -
      -
    • F2FS是一种针对闪存存储设备进行优化的文件系统,具有高性能和高可靠性。F2FS支持闪存特性如块擦除计数(block erase count)和块生命周期管理(block lifetime management),适用于固态硬盘(SSD)和闪存卡等闪存设备。
    • -
    -

    五.Linux桌面环境

    -

    Linux系统有多种不同的桌面环境,每种环境都有其独特的特点、风格和用户体验。以下是一些常见的Linux桌面环境及其主要特点:

    -

    GNOME

    -
      -
    • GNOME是一个功能强大、现代化的桌面环境,具有直观的用户界面和丰富的功能。它采用了扁平化的设计风格和简洁的用户界面,提供了丰富的应用程序和插件,适用于普通用户和开发人员。
    • -
    -

    KDE Plasma

    -
      -
    • KDE Plasma是一个灵活、可定制的桌面环境,提供了丰富的特性和选项,如桌面特效、窗口管理器、小部件等。它采用了现代化的设计风格和强大的桌面管理功能,适用于高级用户和技术爱好者。
    • -
    -

    XFCE

    -
      -
    • XFCE是一个轻量级、快速的桌面环境,具有简洁的用户界面和低资源消耗。它采用了传统的桌面布局和简约的设计风格,提供了基本的桌面管理功能和应用程序,适用于老旧计算机和资源有限的环境。
    • -
    -

    LXQt

    -
      -
    • LXQt是一个轻量级、快速的桌面环境,是LXDE和Razor-qt的合并项目。它采用了现代化的设计风格和简洁的用户界面,提供了丰富的特性和可定制选项,适用于资源有限的环境和嵌入式系统。
    • -
    -

    Cinnamon

    -
      -
    • Cinnamon是一个基于GNOME的桌面环境,具有类似于传统Windows桌面的用户界面和功能。它采用了传统的桌面布局和直观的用户体验,提供了丰富的特性和可定制选项,适用于对传统桌面风格有需求的用户。
    • -
    -

    GNOME和KDE Plasma提供了丰富的特性和高度定制化选项,适用于高级用户和开发人员;XFCE和LXQt则提供了轻量级和快速的用户体验,适用于资源有限的环境;Cinnamon则提供了类似于传统Windows桌面的用户界面和功能,适用于对传统桌面风格有需求的用户。可以根据自己的需求和偏好选择合适的桌面环境。

    -
    -

    当然,也可以使用轻量级的窗口管理器。 -窗口管理器是Linux系统中控制窗口布局、管理窗口行为的关键组件。它们决定了窗口的外观和行为方式,以及如何管理和排列窗口。以下是一些常见的窗口管理器及其主要特点:

    -
    -

    X Window Manager (XWM)

    -
      -
    • X Window Manager是最基本的窗口管理器,用于管理X Window系统中的窗口。它提供了最基本的窗口布局和管理功能,如窗口移动、调整大小、最小化等。XWM本身并不提供任何外观效果,但可以与其他工具配合使用来实现更丰富的窗口管理和外观特性。
    • -
    -

    Openbox

    -
      -
    • Openbox是一个轻量级的窗口管理器,具有简洁的用户界面和低资源消耗。它提供了丰富的自定义选项和扩展功能,如虚拟桌面、窗口装饰、键盘快捷键等。Openbox适用于资源有限的环境和对简洁风格有需求的用户。
    • -
    -

    i3

    -
      -
    • i3是一个动态平铺窗口管理器,采用了平铺式布局,将窗口按照一定规则自动排列在屏幕上。它提供了快速的窗口切换和管理功能,支持键盘操作和自动布局调整,适用于需要高效多任务处理的用户。
    • -
    -

    Awesome

    -
      -
    • Awesome是一个高度可定制的动态平铺窗口管理器,具有丰富的特性和扩展功能。它采用Lua脚本语言进行配置和定制,支持强大的自定义选项和扩展功能,适用于高级用户和技术爱好者。
    • -
    -

    KWin

    -
      -
    • KWin是KDE桌面环境中的默认窗口管理器,具有丰富的特性和功能。它提供了多种窗口布局和管理选项,支持虚拟桌面、窗口效果、窗口组织等功能,适用于需要丰富特性和高度定制化的用户。
    • -
    -

    这些窗口管理器之间的主要异同在于窗口布局、外观效果、自定义选项和功能特性等方面。Openbox和i3提供了简洁的用户界面和低资源消耗,适用于资源有限的环境;Awesome和KWin则提供了丰富的特性和扩展功能,适用于高级用户和技术爱好者。用户可以根据自己的需求和偏好选择合适的窗口管理器。

    -
    -

    Wayland和X11 -Wayland和X11都是用于Linux系统的图形显示协议,它们负责管理图形用户界面(GUI)的显示和交互。下面是它们的简要介绍以及异同点:

    -
    -
      -
    • -

      X11(X Window System): -X11是一个由MIT开发的图形显示协议,长期以来一直是Linux系统中最常用的图形显示系统。它采用客户端-服务器模型,图形应用程序(客户端)通过X服务器与显示设备(服务器)进行通信。X11提供了丰富的图形特性和功能,如窗口管理、窗口装饰、多任务处理等。

      -
    • -
    • -

      Wayland: -Wayland是一个由Red Hat主导开发的新一代图形显示协议,旨在取代X11成为Linux系统的标准图形显示系统。Wayland采用了现代化的设计理念和架构,取消了X11中复杂的客户端-服务器模型,将图形显示功能直接集成到操作系统中。Wayland具有更低的延迟和更高的性能,支持更好的硬件加速和多触摸设备,以及更简洁的代码结构。

      -
    • -
    -

    异同点

    -
      -
    • 架构差异:X11采用了客户端-服务器模型,图形应用程序通过X服务器与显示设备进行通信;而Wayland取消了这种模型,将图形显示功能直接集成到操作系统中,减少了中间层的复杂性。
    • -
    • 性能差异:Wayland具有更低的延迟和更高的性能,支持更好的硬件加速和多触摸设备,使得图形显示更加流畅和响应。
    • -
    • 功能差异:X11提供了丰富的图形特性和功能,如窗口管理、窗口装饰、多任务处理等;Wayland在功能上相对较少,但提供了更简洁的代码结构和更好的性能。
    • -
    • 兼容性差异:X11在Linux系统中被广泛使用,拥有大量的应用程序和工具的支持;而Wayland在兼容性方面仍在发展中,尚未完全取代X11成为Linux系统的标准图形显示系统。
    • -
    -

    总的来说,Wayland是未来Linux系统中的趋势,具有更好的性能和更简洁的架构,但在兼容性和功能丰富度上仍有待改进。X11则是当前仍然广泛使用的图形显示系统,拥有丰富的生态和大量的应用程序支持。

    -

    六.后记

    -

    个人使用推荐Zen+Zsh+Pacman+Btrfs+Hyprland,并使用 paru xxx 来搜索软件包,使用paru -S xxx 安装软件。

    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-4/index.html b/public/learn-linux-for-pc-4/index.html deleted file mode 100644 index f10c063..0000000 --- a/public/learn-linux-for-pc-4/index.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(4):Terminal,Console and Shell

    - - - - - - -
    -

    前言 在linux的学习过程中,我们常常遇到诸如 Terminal,Console,bash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。

    -

    终端和控制台

    -

    终端,英文叫做 terminal ,通常简称为 term;控制台,英文叫做 console。

    -

    要明白这两者的关系,还得从最初的计算机说起。当时的计算机价格昂贵,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机的设备就叫做终端。

    -

    而控制台又是什么回事呢?其概念来自于管风琴的控制台。顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。

    -

    终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。

    -

    以上是控制台和终端的历史遗留区别。现在由于计算机硬件越来越便宜,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。 -  

    -

    内核与外壳

    -

    内核( Kernel )和外壳( Shell )是 linux 的两个主要部分。Kernel 是操作系统的核心,系统的文件管理、进程管理、内存管理、设备管理这些功能,都是由 Kernel 提供的。

    -

    用户和操作系统内核交流需要一个工具,那么这个工具就是 Shell。

    -

    什么是 Shell?在 Linux 中,最常见的 Shell 形式有命令行界面命令行界面和图形界面两种。并不是打开的那个终端窗口就是 Shell,如Alacritty、Gnome-Terminal、xterm 、kitty等程序,它们不是 Shell,而它们里面运行的 Bash、Zsh、fish 等命令行解释器程序,才是 Shell。

    -

    那 Alacritty、Gnome-Terminal、xtermxterm 是什么?

    -

    它们是终端模拟器。

    -

    前面提到过,在远古时代,终端和控制台都是有实体的。控制台直接和计算机在一起,你可以通过控制台控制计算机。终端通过数据线和计算机连接,终端也提供一个键盘和一个屏幕,你可以通过键盘向计算机下达指令,然后通过屏幕观察输出。

    -

    但是现在的计算机组成和以前不一样了,一般一台电脑都是自带键盘和屏幕,很少再外接终端设备。

    -

    所以 Linux 提供了另外一个更高级的功能,那就是虚拟终端。那就是在一台电脑上,通过软件的模拟,好像有好几个终端连接在这台计算机上一样。

    -

    现在说的终端,比如 linux 中的虚拟终端,都是软件的概念。虚拟终端称之为 tty,tty 是电传打字机电传打字机 Teletypewriter 的缩写,在带显示屏的视频终端出现之前,tty是最流行的终端设备。每一个 tty 都有一个编号,在/dev目录下有相应的设备文件。其中/dev/tty1到/dev/tty7可以通过 Ctrl+Alt+F1 到 Ctrl+Alt+F7 进行切换,也可以通过 chvt 命令进行切换,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这个叫“虚拟终端”的原因。

    -

    时代变迁

    -

    随着时间的推移,我们看到了从硬件到软件的转变,以及从多用户共享到个人使用的转变。这种变迁不仅影响了终端和控制台的概念,也塑造了我们对计算机的理解和期待。

    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-5/index.html b/public/learn-linux-for-pc-5/index.html deleted file mode 100644 index ac90858..0000000 --- a/public/learn-linux-for-pc-5/index.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(5):BIOS-UEFI-MBR-GPT-GRUB

    - - - - - - -
    -

    前言 在计算机领域,系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFI,MBR与GPT,以及它们之间的异同点。此外,我们还会讨论与这些概念密切相关的引导加载程序——GRUB。

    -

    BIOS

    -
    -

    BIOS(Basic Input Output System),直译成中文名称就是"基本输入输出系统"。它是一组固化到主板中一个ROM芯片上的程序,它可以从CMOS中读写系统设置的具体信息。此程序保存着计算机最重要的基本输入输出程序、开机后的自检程序和系统自启动程序。简单来说,BIOS只认识设备,不认识分区、不认识文件。

    -
    -

    UEFI

    -
    -

    UEFI(统一可扩展固件接口)是一个公开的规范,定义了操作系统和平台固件之间的软件接口。UEFI 是传统 PC BIOS 的继承者,是取代传统BIOS的,相比传统BIOS来说,它更易实现,容错和纠错特性也更强。 它将引导数据存储在 .efi 文件中,而不是固件中。你经常会在新款的主板中找到 UEFI 启动模式。UEFI 启动模式包含一个特殊的 EFI 分区,用于存储 .efi 文件并用于引导过程和引导加载程序。

    -
    -
    -

    UEFI使用GPT的分区引导方案,支持更大的硬盘。由于省去了BIOS自检的过程,所以启动速度更快。传统BIOS主要支持MBR引导,UEFI则是取代传统BIOS,它加入了对新硬件的支持,其中就有支持2TB以上硬盘。

    -
    -

    MBR

    -
    -

    全新硬盘在使用之前必须进行分区格式化,硬盘分区初始化的格式主要有两种,分别为MBR格式和GPT格式。MBR是传统的分区表类型,当一台电脑启动时,它会先启动主板上的BIOS系统,BIOS再从硬盘上读取MBR主引导记录,硬盘上的MBR运行后,就会启动操作系统,但最大的缺点则是不支持容量大于2T的硬盘。

    -
    -

    GPT

    -
    -

    而GPT是另一种更先进的磁盘系统分区方式,它的出现弥补了MBR这个缺点,最大支持18EB的硬盘,是基于UEFI使用的磁盘分区架构。目前所有Windows系统均支持MBR,而GPT只有64位系统才能支持。BIOS只支持MBR引导系统,而GPT仅可用UEFI引导系统。正因为这样,现在主板大多采用BIOS集成UEFI,或UEFI集成BIOS,以此达到同时兼容MBR和GPT引导系统的目的。

    -
    -

    GRUB

    -
    -

    GRUB(GRand unified bootloader),多操作系统启动程序。它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

    -

    GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。它是一个多重操作系统启动管理器,用来引导不同系统,如Windows、Linux。Linux常见的引导程序包括LILO、GRUB、GRUB2。

    -
    -

    Legacy

    -
    -

    如果你遇到过刚制作的U盘启动盘无法启动,或者新买的固态硬盘做好系统后无法启动,那么大概率的问题就出现在BIOS的引导模式的选择上,是UEFI还是Legacy。legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程,Legacy启动模式包含一系列已安装的设备,这些设备在引导过程中计算机执行 POST (开机自检)测试时会被初始化。传统引导将检查所有连接设备的主引导记录 (MBR),通常位于磁盘的第一个扇区。
    -当它在设备中找不到引导加载程序时,Legacy会切换到列表中的下一个设备并不断重复此过程,直到找到引导加载程序,否则返回错误。

    -
    -

    表格

    -

    BIOS/UEFI

    - - - - - -
    BIOSUEFI
    用于初始化计算机硬件并引导操作系统在计算机启动时运行
    具有较少功能和灵活性具有更多功能和灵活性
    支持更大的硬盘容量、更快的启动速度、更好的安全性和更多的扩展性v
    通常具有图形用户界面(GUI)
    -

    MBR/GPT

    - - - - - -
    MBRGPT
    用于分区磁盘并存储分区布局信息用于分区磁盘并存储分区布局信息
    支持最多4个主分区或3个主分区加1个扩展分区支持最多4个主分区或3个主分区加1个扩展分区支持最多4个主分区或3个主分区加1个扩展分区
    具有更好的数据完整性和可靠性,使用校验和检测数据损坏
    UEFI需要GPT格式的磁盘才能引导
    -

    UEFI/Legacy

    - - - - - - - - -
    UEFI 引导模式Legacy引导模式
    UEFI 提供了更好的用户界面Legacy引导模式是传统的且非常基本的
    使用 GPT 分区方案使用 MBR 分区方案
    UEFI 提供更快的启动时间相比UEFI,它的速度较慢
    由于 UEFI 使用 GPT 分区方案,因此它可以支持多达 9 zB 的存储设备Legacy使用的 MBR 分区方案仅支持最多 2 TB 存储设备
    UEFI 以 32 位和 64 位运行,支持鼠标和触摸板Legacy在仅支持键盘,仅 16 位模式下运行
    它允许安全启动,防止加载未经授权的应用程序它还可能阻碍双启动,因为它将操作系统(OS)视为应用程序它不提供允许加载未经授权的应用程序的安全启动方法,未限制双启动
    它具有更简单的更新过程与UEFI相比,它更复杂
    -

    组合

    -
      -
    • -

      BIOS+MBR

      -

      这是最传统的,系统都会支持;唯一的缺点就是不支持容量大于2T的硬盘

      -
    • -
    • -

      BIOS+GPT

      -

      BIOS是可以使用GPT分区表的硬盘来作为数据盘的,但不能引导系统;若电脑同时带有容量小于2T的硬盘和容量大于2T的硬盘,小于2T的可以用MBR分区表安装系统,而大于2T的可以使用GPT分区表来存放资料。但系统须使用64位系统。

      -
    • -
    • -

      UEFI+MBR

      -

      可以把UEFI设置成Legacy模式(传统模式)让其支持传统MBR启动,效果同BIOS+MBR;也可以建立FAT分区,放置UEFI启动文件来,可应用在U盘和移动硬盘上实现双模式启动。

      -
    • -
    • -

      UEFI+GPT

      -

      如果要把大于2T的硬盘作为系统盘来安装系统的话,就必须UEFI+GPT。而且系统须使用64位系统,否则无法引导。但系统又不是传统在PE下安装后就能直接使用的,引导还得经过处理才行。

      -
    • -
    -

    系统的启动过程

    -

    从按下计算机的开机按钮到用户开始使用计算机,涉及了多个步骤和组件,让我们一起详细了解整个过程:

    -

    1. 电源启动

    -
      -
    • 用户按下计算机的开机按钮,电源开始供电,计算机硬件开始初始化。电源将电流传递到主板上的BIOS/UEFI芯片。
    • -
    -

    2. BIOS/UEFI启动

    -
      -
    • BIOS/UEFI芯片接收到电源信号后,开始执行初始化过程。它首先进行自检(POST),检测主板、CPU、内存等硬件设备的工作状态,并在显示屏上输出相关信息。
    • -
    • BIOS/UEFI根据配置的启动顺序(通常为硬盘、光盘、USB等)搜索启动设备,并加载位于启动设备上的引导加载程序。
    • -
    -

    3. 引导加载程序加载

    -
      -
    • 引导加载程序(如GRUB)被加载到内存中,它负责后续的操作系统加载过程。GRUB通常会显示启动菜单,列出可用的操作系统选项。
    • -
    • 用户可以在GRUB菜单中选择要启动的操作系统,或者等待默认选项启动。
    • -
    -

    4. 操作系统加载

    -
      -
    • 一旦选择了启动选项,引导加载程序会加载操作系统的内核和初始化RAM磁盘(initramfs/initrd)。
    • -
    • 内核加载完成后,操作系统开始启动初始化过程,包括加载系统服务、挂载文件系统、启动用户界面等。
    • -
    -

    5. 用户登录

    -
      -
    • 操作系统初始化完成后,显示登录界面(如果配置了图形用户界面),用户输入用户名和密码登录系统。
    • -
    • 如果登录成功,操作系统加载用户的桌面环境或命令行界面,用户开始使用计算机。
    • -
    -

    各种引导加载程序

    - - - - - - - - - - -
    特性GRUB(GRand Unified Bootloader)LILO(Linux Loader)systemd-boot(前身为 gummiboot)rEFInd(UEFI 引导管理器)
    支持的系统类型BIOS 和 UEFI仅支持 BIOS 模式仅支持 UEFI仅支持 UEFI
    多系统引导支持✅ 强大支持❌ 不支持多系统引导✅ 支持(需手动配置)✅ 自动检测操作系统
    图形界面支持✅ 支持(可自定义主题)❌ 不支持❌ 不支持✅ 支持(可自定义主题)
    配置方式配置文件(复杂)配置文件(简单)配置文件(简单)配置文件(简单)
    命令行支持✅ 支持(交互式命令行)❌ 不支持❌ 不支持❌ 不支持
    文件系统支持✅ 支持多种文件系统✅ 支持 ext2/ext3/ext4 等✅ 支持 ext4、FAT 等✅ 支持 ext4、FAT 等
    安全启动支持✅ 支持(需配置)❌ 不支持✅ 支持(需配置)✅ 支持(需配置)
    安装复杂度中等(需配置)较低较低中等(需配置)
    适用场景多系统引导、复杂配置简单系统引导简单系统引导多系统引导、美观界面
    -

    后记

    - - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-6/index.html b/public/learn-linux-for-pc-6/index.html deleted file mode 100644 index 8f55691..0000000 --- a/public/learn-linux-for-pc-6/index.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(6):常用命令与性能分析

    - - - - - - -
    -

    前言 在学习Linux操作系统时,熟悉常用命令和性能分析工具是至关重要的。让我们一起探索Linux的世界,提升技能,解锁无限可能!

    - -
    -

    翻译自https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55。

    -
    -

    问题背景

    -

    当登录到一台有性能问题的Linux服务器,第一分钟要检查什么?

    -

    在Netflix,我们拥有庞大的EC2 Linux虚拟机云,我们有众多性能分析工具来监视和诊断这些Linux服务器的性能。这些工具包括Atlas(负责整个虚拟机云的监控)和Vector(负责按需对虚拟机实例进行性能分析)。这些工具可以帮助我们解决大多数问题,但有时我们需要登录到虚拟机实例,并运行一些标准的Linux性能工具。

    -

    前60秒:摘要

    -

    在本文中,Netflix性能工程团队将使用您应该使用的标准Linux工具在命令行中向您展示一个性能诊断过程的前60秒。在60秒内,您可以通过运行以下十个命令来了解有关系统资源使用和运行进程的信息。最应该关注的是一些很容易理解的错误、饱和度指标和资源利用率等指标。饱和度是衡量资源负载超出其处理能力的指标,它可以通过观察请求队列的长度或等待时间反映出来。

    -
    uptime
    -dmesg | tail
    -vmstat 1
    -mpstat -P ALL 1
    -pidstat 1
    -iostat -xz 1
    -free -m
    -sar -n DEV 1
    -sar -n TCP,ETCP 1
    -top
    -
    -

    其中的一些命令需要安装sysstat软件包。这些命令暴露出的指标将帮助您完成一些USE方法:一种查找性能瓶颈的方法。它们涉及检查所有资源(CPU、内存、磁盘等)的利用率,饱和度和错误指标。在诊断过程中还应该注意检查和排除某些资源的问题。因为通过排除某些资源的问题,可以缩小诊断的范围,并指民后续的诊断。

    -

    uptime

    -
    $ uptime 
    -23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
    -
    -

    这是快速查看平均负载的方法,该平均负载指标了要运行的任务(进程)的数量。在Linux系统上,这些数字包括要在CPU上运行的进程以及在不中断IO(通常是磁盘IO)中阻塞的进程。这里给出了资源负载高层次的概览,但是没有其它工具就很难正确理解,值得快速看一眼。

    -

    这三个数字是指数衰减移动平均值,分别代表了1分钟、5分钟、15分钟的平均值。这三个数字使我们对负载如何随时间变化有了一定的了解。例如,如果您去诊断一个有问题的服务器,发现1分钟的值比15分钟的值低很多,那么您可能已经登录得太晚了,错过了问题。

    -

    在上面的例子中,平均负载有所增加,因为1分钟的值30相对15分钟的值19来说大了一些。数字变大意味着很多种可能:有可能是CPU的需求变多了,使用3和4中提到的vmstat或mpstat命令将可以进一步确认问题。

    -

    dmesg|tail

    -
    $ dmesg | tail
    -[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
    -[...]
    -[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
    -[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
    -[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.
    -
    -

    该命令展示最近 10条系统消息。在这些系统消息中查找有可能引起性能问题的报错。上面的例子包括oom-killer和TCP丢弃了一个请求。

    -

    不能忘记这个步骤,dmesg通常对诊断问题很有价值。

    -
    ## **vmstat 1**
    -$ vmstat 1
    -procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
    - r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    -34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0
    -32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0
    -32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0
    -32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0
    -32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0
    -
    -

    vmstat是虚拟内存统计(Virtual Memory Stat)的缩写,vmstat(8)是一个通常可用的工具(最初是在之前的BSD时代创建的),它每行打印一行服务器关键统计的概览。

    -

    vmstat使用参数1运行,意味着每1秒打印打印一次概览。命令输出的第一行展示的是从启动开始的平均值,而不是最近一秒的平均值。因此跳过第一行,除非您想学习并记住哪一列是哪一列。

    -

    要检查的列:

    -

    r:在CPU上运行并等待回合的进程数。由于它不包含IO,因此它比指示CPU饱和的平均负载提供了更多的信息。一个大于CPU核数的r值就是饱和的。 -free:空闲的内存(单位的KB)。如果计数很大,说明服务器有足够的内存,free -m命令将对空闲内存的状态有更好的说明。 -si、so:交换置入和交换置出。如果这两个值是非空,说明物理内存用完了,现在在使用交换内存了。 -us、sy、id、wa、st:这些是CPU时间的分类,其是所有CPU的平均值。它们是用户时间、系统时间(内核)、空闲时间、等待IO和被偷窃时间(被其它宾客系统进行使用,或宾客系统隔离的驱动程序域Xen) -通过将用户时间和系统时间这两个分类相加,即可判断CPU是否繁忙。一定的等待IO时间说明磁盘有可能是性能瓶颈。你可以认为等待IO时间是另一种形式的空闲时间,它提供了它是如何空闲的线索。

    -

    IO处理需要占用CPU系统时间。一个较高的CPU系统时间(超过20%)可能会很有趣,有必要进一步研究:也许内核在很低效地处理IO。

    -

    在上面的示例中,CPU时间基本全在用户时间,这说明应用程序本身在大量占用CPU时间。CPU的平均利用率也远远超过90%。这不一定是问题,可以使用r列来检查饱和度。

    -

    mpstat -P ALL 1

    -
    $ mpstat -P ALL 1
    -Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)
    -07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle
    -07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78
    -07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99
    -07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00
    -07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00
    -07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03
    -[...]
    -
    -

    此命令显示每个CPU的CPU时间明细,可用于检查不平衡的情况。单个热CPU说明是单线程应用程序在大量占用CPU时间。

    -

    pidstat 1

    -
    $ pidstat 1
    -Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)
    -07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    -07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0
    -07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave
    -07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java
    -07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java
    -07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java
    -07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat
    -07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    -07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave
    -07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java
    -07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java
    -07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass
    -07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat
    -
    -

    pidstat有点像top的每个进程摘要,但是会滚动打印,而不是清屏再打印。这对于观察一段时间内的模式以及将所看到的内容(复制&粘贴)记录到调查记录中很有用。

    -

    上面的示例显示两个Java进程要为消耗大量CPU负责。%CPU这一列是所有CPU核的总和,1591%说明Java进程差不多消耗了16个核的CPU。

    -

    iostat -xz 1

    -
    $ iostat -xz 1
    -Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)
    -avg-cpu:  %user   %nice %system %iowait  %steal   %idle
    -          73.96    0.00    3.73    0.03    0.06   22.21
    -Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    -xvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09
    -xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25
    -xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26
    -dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04
    -dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00
    -dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03
    -[...]
    -
    -

    这是了解块设备(磁盘),应用的工作负载和产生的性能影响的绝佳工具。重点关注下面的指标:

    -
      -
    • r/s、w/s、 rkB/s、 wkB/s:这些是设备每秒交付的读取、写入、读取千字节和写入千字节。使用这些来表征块设备的工作负载。性能问题可能是由于向块设备施加了过多的工作负载。
    • -
    • await:IO的平均时间,以毫秒为单位。这是应用程序所感受到的时间,它包括IO排队时间和IO服务时间。大于预期的平均时间可能表示块设备饱和或设备出现问题了。
    • -
    • avgqu-sz:发给设备的平均请求数。值大于1可以表明已达到饱和状态(尽管设备通常可以并行处理请求,尤其是在多个后端磁盘所组成的前端虚拟设备的情况下)。
    • -
    • %util:设备利用率。这是一个表征繁忙度的百分比,它表示设备每秒工作的时间。尽管它的值取决于设备,但值大于60%通常会导致性能不佳(也会通过await的值观察到)。接近100%的值通常表示饱和。
    • -
    -

    如果存储设备是有许多后端磁盘组成的前端逻辑磁盘设备,则100%的利用率可能仅意味着100%的时间正在处理某些IO,但是后端磁盘可能远远没有饱和,并且可能还可以处理更多的工作。

    -

    请记住,性能不佳的磁盘IO不一定是应用问题,通常可以使用许多技术以执行异步IO,以便使应用程序不会被阻塞住而产生直接产生IO延迟(例如,预读和缓冲写入技术)

    -

    free -m

    -
    $ free -m
    -             total       used       free     shared    buffers     cached
    -Mem:        245998      24545     221453         83         59        541
    --/+ buffers/cache:      23944     222053
    -Swap:            0          0          0
    -
    -

    右边两列:

    -

    buffers:缓冲区高速缓存,用于块设备I / O -cached:页面缓存,由文件系统使用 -我们只需要检查下它们的大小是否接近零。如果接近零的话,这可能导致较高的磁盘IO(可以使用iostat进行确认)和较差的性能。上面的示例看起来不错,每列都有较大的数据。

    -

    -/+ buffers/cache为已用和空闲内存提供较少让人产生混乱的值。Linux将可用内存用于高速缓存,但是如果应用程序需要,它们可以快速被回收。因此应以某种方式将缓存的内存包括在free列中,这也就是这一行的所做的。甚至还有一个网站专门讨论了这种混乱。

    -

    如果在Linux上使用ZFS,就像我们对某些服务所做的那么,因为ZFS具有自己的文件系统缓存,它们并不会反映在free -m的列中,因此这种场景下这种混乱还将存在。所以会看到似乎系统的可用内存不足,而实际上可根据需要从ZFS缓存中申请到内存。

    -

    sar -n DEV 1

    -
    $ sar -n DEV 1
    -Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015     _x86_64_    (32 CPU)
    -12:16:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    -12:16:49 AM      eth0  18763.00   5032.00  20686.42    478.30      0.00      0.00      0.00      0.00
    -12:16:49 AM        lo     14.00     14.00      1.36      1.36      0.00      0.00      0.00      0.00
    -12:16:49 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    -12:16:49 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    -12:16:50 AM      eth0  19763.00   5101.00  21999.10    482.56      0.00      0.00      0.00      0.00
    -12:16:50 AM        lo     20.00     20.00      3.25      3.25      0.00      0.00      0.00      0.00
    -12:16:50 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    -
    -

    此工具可以检查网络接口的吞吐量:rxkB/s和txkB/s,作为工作负载的度量,还可以检查是否已达到网络接口的限制。在上面的示例中,eth0接收速率达到22MB/s,即176Mbit/s(远低于1Gbit/s的网络接口限制,假设是千兆网卡)。

    -

    此版本还具有%ifutil用来指示设备利用率(全双工双向),这也是我们使用的Brendan的nicstat工具测量出来的。就像nicstat一样,这个指标很难计算正确,而且在本例中好像不起作用(数据是0.00)。

    -

    sar -n TCP,ETCP 1

    -
    $ sar -n TCP,ETCP 1
    -Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)
    -12:17:19 AM  active/s passive/s    iseg/s    oseg/s
    -12:17:20 AM      1.00      0.00  10233.00  18846.00
    -12:17:19 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
    -12:17:20 AM      0.00      0.00      0.00      0.00      0.00
    -12:17:20 AM  active/s passive/s    iseg/s    oseg/s
    -12:17:21 AM      1.00      0.00   8359.00   6039.00
    -12:17:20 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
    -12:17:21 AM      0.00      0.00      0.00      0.00      0.00
    -
    -

    这是一些关键的TCP指标的摘要,包括:

    -
      -
    • active / s:每秒本地启动的TCP连接数(例如,通过connect())。
    • -
    • passive/s:每秒远程启动的TCP连接数(例如,通过accept())。
    • -
    • retrans / s:每秒TCP重传的次数。 -主动和被动计数通常作为服务器TCP负载的粗略度量:新接受的连接数(被动)和新出站的连接数(主动)。将主动视为出站,将被动视为入站可能对理解这两个指标有些帮助,但这并不是严格意义上的(例如,考虑从localhost到localhost的连接)。
    • -
    -

    重新传输是网络或服务器问题的迹象;它可能是不可靠的网络(例如,公共Internet),也可能是由于服务器过载并丢弃了数据包。上面的示例仅显示每秒一个新的TCP连接。

    -

    top

    -

    $ top

    -
    top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92
    -Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie
    -%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
    -KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers
    -KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem
    -   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    - 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java
    -  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave
    - 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top
    -  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java
    -  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java
    -     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init
    -     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd
    -     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0
    -     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    -     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0
    -     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched
    -
    -

    top命令包括我们之前检查的许多指标。运行它可以很方便地查看是否有任何东西与以前的命令有很大不同,这表明负载是可变的。

    -

    top命令不太好的地方是,随着时间的推移很难看到指标变化的模式,这在提供滚动输出的vmstat和pidstat之类的工具中可能更清楚一点。如果您没有足够快地暂停输出(Ctrl-S暂停,Ctrl-Q继续),在屏幕输出被top命令清除后,间歇性问题的证据也可能被丢失了。

    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/learn-linux-for-pc-7/index.html b/public/learn-linux-for-pc-7/index.html deleted file mode 100644 index 431404f..0000000 --- a/public/learn-linux-for-pc-7/index.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    - -

    Linux之旅(7):系统与终端字体设置

    - - - - - - -
    -

    前言 一个好看的字体会提高工作效率与审美.Linux 下的字体可以很漂亮,但需要一些设置.

    - -

    随着 FreeType2 由于专利过期默认开启了高质量的 LCD 优化,以及一批高质量的开源字体的公布,Linux 上的中文字体渲染比过去好了太多.

    -
    -

    Windows 的字体渲染从技术上来说是相当先进的,问题是在中文字体的选择上实在是一坨...

    -
    -

    选择字体

    -

    近几年来出现了一大批自由字体(包括工作量极大的 CJK 字体),使 Linux 下的字体选择一下子丰富了起来.如果愿意花一点时间的话,可以去ArchWiki 上看看,里面涵盖了相当多的自由字体.

    -

    终端字体

    -

    Maple Mono,这是一款字形整洁、拥有手写风格的斜体、细粒度配置、内置 Nerd-Font、中英文2:1等宽 的字体.我使用的:

    -
    MapleMono-Bold
    -
    -

    阅读器字体

    -

    霞鹜文楷,一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生.我使用的:

    -
    LXGW WenKai
    -
    -

    浏览器字体

    -
    拉丁字体
    -├── Inter -无衬线,类似于 Roboto 但更适合屏幕显示的字体 
    -├── Noto Serif -衬线
    -└── Sarasa Term SC -等宽,拉丁文字符严格为半宽的字体,中英文混排时较协调
    -├── 如果不适应这种较瘦的字体风格, 则可以尝试使用:
    -│   ├── Adobe Source Pro
    -│   ├── Cascadia Code
    -│   └── Fira Code
    -中文字体
    -├── Noto Sans CJK SC (思源黑体)
    -└── Noto Serif CJK SC(思源宋体)
    -
    -
    -

    Done.

    - -
    - - - - -
    - -
    - - -
    - -
    - -
    - - - diff --git a/public/page/10/index.html b/public/page/10/index.html deleted file mode 100644 index fb3cc54..0000000 --- a/public/page/10/index.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Dich'blog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - -
    - - -
    - -
    -
    - -

    Linux之旅(3):内核/shell/包管理/文件系统/桌面环境

    - - - - - - - - -
    -

    前言 在Linux世界中,内核/shell/包管理/文件系统构成了Linux系统的核心,它们相互配合,共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分,解释它们的作用和原理,帮助读者更好地理解Linux系统的运作机制。

    -
    - - - -
    - -
    - -

    Linux之旅(2):FHS与目录结构

    - - - - - - - - -
    -

    前言 在Linux世界中,Filesystem Hierarchy Standard(FHS)是一座引导我们进入系统核心的桥梁,它定义了Linux系统中目录结构的规范与作用,为我们提供了一张清晰的地图,指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构,解释各个目录的用途与功能,帮助我们更好地理解和利用Linux系统。

    -
    - - - -
    - -
    - -

    Linux之旅(1):构成与发行版

    - - - - - - - - -
    -

    前言 Linux 作为一款强大、灵活且免费的操作系统,吸引了越来越多的用户。然而,对于初学者来说,Linux 可能显得有些陌生,甚至有些令人望而生畏。本文旨在为那些刚踏入 Linux 世界的新手提供一份指南,帮助他们更好地了解、使用这个令人着迷的操作系统。我们将探讨Linux的基本概念,解释为何选择Linux,深入剖析其主要构成要素以及不同的发行版之间的差异。

    -
    - - - -
    - -
    - -
    - - - - -
    - - - diff --git a/public/page/9/index.html b/public/page/9/index.html index bbbe198..32fdee0 100644 --- a/public/page/9/index.html +++ b/public/page/9/index.html @@ -133,138 +133,6 @@
    - - -
    - -

    Linux之旅(7):系统与终端字体设置

    -
    - - - -
    - - - - :: tags:  - - - - - -
    -

    前言 一个好看的字体会提高工作效率与审美.Linux 下的字体可以很漂亮,但需要一些设置.

    -
    -
    - - - Read more  - ↩︎ - -
    - - -
    - -
    - -

    Linux之旅(6):常用命令与性能分析

    -
    - - - -
    - - - - :: tags:  - - - - - -
    -

    前言 在学习Linux操作系统时,熟悉常用命令和性能分析工具是至关重要的。让我们一起探索Linux的世界,提升技能,解锁无限可能!

    -
    -
    - - - Read more  - ↩︎ - -
    - - -
    - -
    - -

    Linux之旅(5):BIOS-UEFI-MBR-GPT-GRUB

    -
    - - - -
    - - - - :: tags:  - - - - - -
    -

    前言 在计算机领域,系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFI,MBR与GPT,以及它们之间的异同点。此外,我们还会讨论与这些概念密切相关的引导加载程序——GRUB。

    -
    -
    - - - Read more  - ↩︎ - -
    - - -
    - -
    - -

    Linux之旅(4):Terminal,Console and Shell

    -
    - - - -
    - - - - :: tags:  - - - - - -
    -

    前言 在linux的学习过程中,我们常常遇到诸如 Terminal,Console,bash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。

    -
    -
    - - - Read more  - ↩︎ - -
    - -
    diff --git a/public/pagefind/fragment/en_21bbb30.pf_fragment b/public/pagefind/fragment/en_21bbb30.pf_fragment deleted file mode 100644 index aa010d9..0000000 Binary files a/public/pagefind/fragment/en_21bbb30.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_369d015.pf_fragment b/public/pagefind/fragment/en_369d015.pf_fragment deleted file mode 100644 index 4c71c39..0000000 Binary files a/public/pagefind/fragment/en_369d015.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_38c825d.pf_fragment b/public/pagefind/fragment/en_38c825d.pf_fragment deleted file mode 100644 index 475a853..0000000 Binary files a/public/pagefind/fragment/en_38c825d.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_3e7c54a.pf_fragment b/public/pagefind/fragment/en_3e7c54a.pf_fragment deleted file mode 100644 index c84704f..0000000 Binary files a/public/pagefind/fragment/en_3e7c54a.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_41ba37b.pf_fragment b/public/pagefind/fragment/en_41ba37b.pf_fragment deleted file mode 100644 index efad58d..0000000 Binary files a/public/pagefind/fragment/en_41ba37b.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_4c4e833.pf_fragment b/public/pagefind/fragment/en_4c4e833.pf_fragment new file mode 100644 index 0000000..bcbfb76 Binary files /dev/null and b/public/pagefind/fragment/en_4c4e833.pf_fragment differ diff --git a/public/pagefind/fragment/en_5d53f6f.pf_fragment b/public/pagefind/fragment/en_5d53f6f.pf_fragment deleted file mode 100644 index 6d9c96e..0000000 Binary files a/public/pagefind/fragment/en_5d53f6f.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_6a30a86.pf_fragment b/public/pagefind/fragment/en_6a30a86.pf_fragment new file mode 100644 index 0000000..ad861ee Binary files /dev/null and b/public/pagefind/fragment/en_6a30a86.pf_fragment differ diff --git a/public/pagefind/fragment/en_81bba3d.pf_fragment b/public/pagefind/fragment/en_81bba3d.pf_fragment deleted file mode 100644 index 3094d70..0000000 Binary files a/public/pagefind/fragment/en_81bba3d.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_852bd42.pf_fragment b/public/pagefind/fragment/en_852bd42.pf_fragment deleted file mode 100644 index 1156abc..0000000 Binary files a/public/pagefind/fragment/en_852bd42.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_a7362c6.pf_fragment b/public/pagefind/fragment/en_a7362c6.pf_fragment deleted file mode 100644 index d60dd71..0000000 Binary files a/public/pagefind/fragment/en_a7362c6.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_ab22bbd.pf_fragment b/public/pagefind/fragment/en_ab22bbd.pf_fragment deleted file mode 100644 index 3fcc162..0000000 Binary files a/public/pagefind/fragment/en_ab22bbd.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_abd3ea9.pf_fragment b/public/pagefind/fragment/en_abd3ea9.pf_fragment new file mode 100644 index 0000000..41aea63 Binary files /dev/null and b/public/pagefind/fragment/en_abd3ea9.pf_fragment differ diff --git a/public/pagefind/fragment/en_b3e4c27.pf_fragment b/public/pagefind/fragment/en_b3e4c27.pf_fragment new file mode 100644 index 0000000..4ad7e6d Binary files /dev/null and b/public/pagefind/fragment/en_b3e4c27.pf_fragment differ diff --git a/public/pagefind/fragment/en_dab85c5.pf_fragment b/public/pagefind/fragment/en_dab85c5.pf_fragment deleted file mode 100644 index 2dbfb9b..0000000 Binary files a/public/pagefind/fragment/en_dab85c5.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_e3a7970.pf_fragment b/public/pagefind/fragment/en_e3a7970.pf_fragment deleted file mode 100644 index a96459e..0000000 Binary files a/public/pagefind/fragment/en_e3a7970.pf_fragment and /dev/null differ diff --git a/public/pagefind/fragment/en_e4efb3a.pf_fragment b/public/pagefind/fragment/en_e4efb3a.pf_fragment deleted file mode 100644 index 275fa66..0000000 Binary files a/public/pagefind/fragment/en_e4efb3a.pf_fragment and /dev/null differ diff --git a/public/pagefind/index/en_4ebbe20.pf_index b/public/pagefind/index/en_4ebbe20.pf_index deleted file mode 100644 index 0b3710b..0000000 Binary files a/public/pagefind/index/en_4ebbe20.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_561fa0a.pf_index b/public/pagefind/index/en_561fa0a.pf_index deleted file mode 100644 index 8a30760..0000000 Binary files a/public/pagefind/index/en_561fa0a.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_5bb3a48.pf_index b/public/pagefind/index/en_5bb3a48.pf_index new file mode 100644 index 0000000..8dcff02 Binary files /dev/null and b/public/pagefind/index/en_5bb3a48.pf_index differ diff --git a/public/pagefind/index/en_6b8418e.pf_index b/public/pagefind/index/en_6b8418e.pf_index new file mode 100644 index 0000000..45434d1 Binary files /dev/null and b/public/pagefind/index/en_6b8418e.pf_index differ diff --git a/public/pagefind/index/en_9dd4ebf.pf_index b/public/pagefind/index/en_9dd4ebf.pf_index new file mode 100644 index 0000000..181402d Binary files /dev/null and b/public/pagefind/index/en_9dd4ebf.pf_index differ diff --git a/public/pagefind/index/en_a2ccc91.pf_index b/public/pagefind/index/en_a2ccc91.pf_index deleted file mode 100644 index 004000f..0000000 Binary files a/public/pagefind/index/en_a2ccc91.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_a880ccc.pf_index b/public/pagefind/index/en_a880ccc.pf_index new file mode 100644 index 0000000..98f10df Binary files /dev/null and b/public/pagefind/index/en_a880ccc.pf_index differ diff --git a/public/pagefind/index/en_c3c01de.pf_index b/public/pagefind/index/en_c3c01de.pf_index deleted file mode 100644 index 21c6ba1..0000000 Binary files a/public/pagefind/index/en_c3c01de.pf_index and /dev/null differ diff --git a/public/pagefind/index/en_e1b091c.pf_index b/public/pagefind/index/en_e1b091c.pf_index deleted file mode 100644 index e0a8597..0000000 Binary files a/public/pagefind/index/en_e1b091c.pf_index and /dev/null differ diff --git a/public/pagefind/pagefind-entry.json b/public/pagefind/pagefind-entry.json index 126a36a..d01edb6 100644 --- a/public/pagefind/pagefind-entry.json +++ b/public/pagefind/pagefind-entry.json @@ -1 +1 @@ -{"version":"1.3.0","languages":{"en":{"hash":"en_7daeb22a63","wasm":"en","page_count":98}}} \ No newline at end of file +{"version":"1.3.0","languages":{"en":{"hash":"en_a0487c4152","wasm":"en","page_count":89}}} \ No newline at end of file diff --git a/public/pagefind/pagefind.en_7daeb22a63.pf_meta b/public/pagefind/pagefind.en_7daeb22a63.pf_meta deleted file mode 100644 index 8fa6340..0000000 Binary files a/public/pagefind/pagefind.en_7daeb22a63.pf_meta and /dev/null differ diff --git a/public/pagefind/pagefind.en_a0487c4152.pf_meta b/public/pagefind/pagefind.en_a0487c4152.pf_meta new file mode 100644 index 0000000..59e24bb Binary files /dev/null and b/public/pagefind/pagefind.en_a0487c4152.pf_meta differ diff --git a/public/sitemap.xml b/public/sitemap.xml index b761b38..2044df5 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -113,34 +113,6 @@ https://blog.dich.bid/awesome-vm-android/ 2023-08-10 - - https://blog.dich.bid/learn-linux-for-pc-1/ - 2023-07-20 - - - https://blog.dich.bid/learn-linux-for-pc-2/ - 2023-07-21 - - - https://blog.dich.bid/learn-linux-for-pc-3/ - 2023-07-22 - - - https://blog.dich.bid/learn-linux-for-pc-4/ - 2023-07-23 - - - https://blog.dich.bid/learn-linux-for-pc-5/ - 2023-07-24 - - - https://blog.dich.bid/learn-linux-for-pc-6/ - 2023-07-25 - - - https://blog.dich.bid/learn-linux-for-pc-7/ - 2023-08-01 - https://blog.dich.bid/links/ @@ -204,9 +176,6 @@ https://blog.dich.bid/page/1/ - - https://blog.dich.bid/page/10/ - https://blog.dich.bid/page/2/ @@ -237,9 +206,6 @@ https://blog.dich.bid/tags/ - - https://blog.dich.bid/tags/linux/ - https://blog.dich.bid/tags/luan-qi-ba-zao/ diff --git a/public/tags/index.html b/public/tags/index.html index 218a4e1..7ee064e 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -108,12 +108,6 @@