分类 技术 下的文章

LogTool 是一组 Python 脚本,可帮助你找出 Overcloud 节点中问题的根本原因。

OpenStack 在其 Overcloud 节点和 Undercloud 主机上存储和管理了一堆日志文件。因此,使用 OSP 日志文件来排查遇到的问题并不是一件容易的事,尤其在你甚至都不知道是什么原因导致问题时。

如果你正处于这种情况,那么 LogTool 可以使你的生活变得更加轻松!它会为你节省本需要人工排查问题所需的时间和精力。LogTool 基于模糊字符串匹配算法,可提供过去发生的所有唯一错误和警告信息。你可以根据日志中的时间戳导出特定时间段(例如 10 分钟前、一个小时前、一天前等)的这些信息。

LogTool 是一组 Python 脚本,其主要模块 PyTool.py 在 Undercloud 主机上执行。某些操作模式使用直接在 Overcloud 节点上执行的其他脚本,例如从 Overcloud 日志中导出错误和警告信息。

LogTool 支持 Python 2 和 Python 3,你可以根据需要更改工作目录:LogTool\_Python2 or LogTool\_Python3

操作方式

1、从 Overcloud 日志中导出错误和警告信息

此模式用于从过去发生的 Overcloud 节点中提取 错误警告 信息。作为用户,系统将提示你提供“开始时间”和“调试级别”,以用于提取错误或警告消息。例如,如果在过去 10 分钟内出了问题,你则可以只提取该时间段内的错误和警告消息。

此操作模式将为每个 Overcloud 节点生成一个包含结果文件的目录。结果文件是经过压缩的简单文本文件(*.gz),以减少从 Overcloud 节点下载所需的时间。将压缩文件转换为常规文本文件,可以使用 zcat 或类似工具。此外,Vi 的某些版本和 Emacs 的任何最新版本均支持读取压缩数据。结果文件分为几部分,并在底部包含目录。

LogTool 可以即时检测两种日志文件:标准和非标准。在标准文件中,每条日志行都有一个已知的和已定义的结构:时间戳、调试级别、信息等等。在非标准文件中,日志的结构未知。例如,它可能是第三方的日志。在目录中,你可以找到每个部分的“名称 –> 行号”例如:

  • 原始数据 - 从标准 OSP 日志中提取的错误/警告消息: 这部分包含所有提取的错误/警告消息,没有任何修改或更改。这些消息是 LogTool 用于模糊匹配分析的原始数据。
  • 统计信息 - 每个标准 OSP 日志的错误/警告信息数量: 在此部分,你将找到每个标准日志文件的错误和警告数量。这些信息可以帮助你了解用于排查问题根本原因的潜在组件。
  • 统计信息 - 每个标准 OSP 日志文件的唯一消息: 这部分提供指定时间戳内的唯一的错误和警告消息。有关每个唯一错误或警告的更多详细信息,请在“原始数据”部分中查找相同的消息。
  • 统计信息 - 每个非标准日志文件在任意时间的唯一消息: 此部分包含非标准日志文件中的唯一消息。遗憾的是,LogTool 无法像标准日志文件那样的处理方式处理这些日志文件。因此,在你提取“特定时间”的日志信息时会被忽略,你会看到过去创建的所有唯一的错误/警告消息。因此,首先,向下滚动到结果文件底部的目录并查看其部分-使用目录中的行索引跳到相关部分,其中第 3、4 和 5 行的信息最重要。

2、从 Overcloud 节点下载所有日志

所有 Overcloud 节点的日志将被压缩并下载到 Undercloud 主机上的本地目录。

3、所有 Overcloud 日志中搜索字符串

该模式“grep”(搜索)由用户在所有 Overcloud 日志上提供的字符串。例如,你可能希望查看特定请求的所有日志消息,例如,“Create VM”的失败的请求 ID。

4、检查 Overcloud 上当前的 CPU、RAM 和磁盘使用情况

该模式显示每个 Overcloud 节点上的当前 CPU、RAM 和磁盘信息。

5、执行用户脚本

该模式使用户可以在 Overcloud 节点上运行自己的脚本。例如,假设 Overcloud 部署失败,你就需要在每个控制器节点上执行相同的过程来修复该问题。你可以实现“替代方法”脚本,并使用此模式在控制器上运行它。

6、仅按给定的时间戳下载相关日志

此模式仅下载 Overcloud 上 “给定的时间戳”的“上次修改时间”的日志。例如,如果 10 分钟前出现错误,则与旧日志文件就没有关系,因此无需下载。此外,你不能(或不应)在某些错误报告工具中附加大文件,因此此模式可能有助于编写错误报告。

7、从 Undercloud 日志中导出错误和警告信息

这与上面的模式 1 相同。

8、在 Overcloud 上检查不正常的 docker

此模式用于在节点上搜索不正常的 Docker。

9、下载 OSP 日志并在本地运行 LogTool

此模式允许你从 Jenkins 或 Log Storage 下载 OSP 日志(例如,cougar11.scl.lab.tlv.redhat.com),并在本地分析。

10、在 Undercloud 上分析部署日志

此模式可以帮助你了解 Overcloud 或 Undercloud 部署过程中出了什么问题。例如,在overcloud_deploy.sh 脚本中,使用 --log 选项时会生成部署日志;此类日志的问题是“不友好”,你很难理解是什么出了问题,尤其是当详细程度设置为 vv 或更高时,使得日志中的数据难以读取。此模式提供有关所有失败任务的详细信息。

11、分析 Gerrit(Zuul)失败的日志

此模式用于分析 Gerrit(Zuul)日志文件。它会自动从远程 Gerrit 门下载所有文件(HTTP 下载)并在本地进行分析。

安装

GitHub 上有 LogTool,使用以下命令将其克隆到你的 Undercloud 主机:

git clone https://github.com/zahlabut/LogTool.git

该工具还使用了一些外部 Python 模块:

Paramiko

默认情况下,SSH 模块通常会安装在 Undercloud 上。使用以下命令来验证是否已安装:

ls -a /usr/lib/python2.7/site-packages | grep paramiko

如果需要安装模块,请在 Undercloud 上执行以下命令:

sudo easy_install pip
sudo pip install paramiko==2.1.1

BeautifulSoup

此 HTML 解析器模块仅在使用 HTTP 下载日志文件的模式下使用。它用于解析 Artifacts HTML 页面以获取其中的所有链接。安装 BeautifulSoup,请输入以下命令:

pip install beautifulsoup4

你还可以通过执行以下命令使用 requirements.txt 文件安装所有必需的模块:

pip install -r requirements.txt

配置

所有必需的参数都直接在 PyTool.py 脚本中设置。默认值为:

overcloud_logs_dir = '/var/log/containers'
overcloud_ssh_user = 'heat-admin'
overcloud_ssh_key = '/home/stack/.ssh/id_rsa'
undercloud_logs_dir ='/var/log/containers'
source_rc_file_path='/home/stack/'

用法

此工具是交互式的,因此要启动它,只需输入:

cd LogTool
python PyTool.py

排除 LogTool 故障

在运行时会创建两个日志文件:Error.logRuntime.log。请在你要打开的问题的描述中添加两者的内容。

局限性

LogTool 进行硬编码以处理最大 500 MB 的文件。

LogTool\_Python3 脚本

github.com/zahlabut/LogTool 获取。


via: https://opensource.com/article/20/1/logtool-root-cause-identification

作者:Arkady Shtempler 选题:lujun9972 译者:Morisun029 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

云原生 Cloud Native 绝对算的上是热词一个,但是,对于绝大多数的企业,甚至是绝大多数的互联网企业来说,却从来没有动手实践过云原生。无他,现在的云原生实践成本太高。

企业面临的云原生困境

云原生很好,弹性拓展、容错性好、易于管理、便于观察,但是,云原生的优势对应的是其高昂的实现和落地成本。对于绝大多数企业来说,想要在自己的企业中应用云原生绝非我们说的那么简单。云原生整个生态中包含了大量的软件设备、硬件基础设施、开发运维成本等,对于绝大多数的企业来说,绝非易事。

对于不少企业来说,其核心是自己的业务逻辑,而非处理容器编排、自动化测试、微服务等,企业的需求只是让自己的业务可以更加的平稳、高性能的运转,服务好自己的客户,解决客户的问题,赚取收益。

对于这些企业来说,他们希望能够被云原生赋能,但又无法支撑起高昂的落地费用和维护成本,毕竟,看起来云原生所使用的各种组件都已经开源,企业都可以免费使用,但免费使用不意味着好用。作为云原生容器编排的首选工具,Kubernetes 的学习成本很高且安装部署极为复杂,更不用说云原生还需要配合各种组件搭配使用,还要和网络、存储等基础设施配合使用,学习成本,使用成本极高。

对于企业来说,亟需一款能够帮助他们解决云原生基础部署和配置的产品,帮助他们抹平云原生落地场景下所需的各项应用,打通网络、存储等基础设施,让云原生变得开箱即用。

QKE —— 极简的云原生方案

青云QingCloud很早就感知了这个问题,并在 2018 年开发了 KubeSphere ,解决了云原生组件落地的使用和管理问题,让更多的开发者从学习 Kubernetes 的命令中解脱出来,借助 KubeSphere 的 GUI 来完成各项管理控制操作。

为了帮助企业快速稳定地落地云原生,青云又推出了 QKE (QingCloud KubeSphere Engine) 服务,是在青云QingCloud公有云上提供的 KubeSphere 容器服务,整合了来自青云公有云的计算、网络、存储资源,彻底抹平云原生落地的成本。

QKE 是基于青云QingCloud 数年的基础设施研发经验而来的,青云有自己的网络产品、存储产品,在 SDN 、存储方面有着大规模云平台经验和应用,可以很好的解决企业所需要的弹性拓展等问题。 QKE 基于 KubeSphere 提供的 Kubernetes 的标准接口,对接了青云的各项基础设施,可以让企业可以更加轻松的完成基础设施的调用和配置,为开发者屏蔽掉底层的基础设施、运维问题,更加专注于应用本身的日常开发、运维等工作。

同时,由于 QKE 是基于 KubeSphere 提供的,QKE 也支持了构建多云和混合云环境,只需要简单的配置,就可以将公有云中的 QKE 和部署在客户私有云或其他云环境的 KubeSphere 整合在一起,轻松的构建一整套高可用、高性能的云原生应用架构。

如何在 10 分钟内构建云原生方案?

QKE 的使用十分简单,对于绝大多数人来说,都可以在 10 分钟内构建出一套完整的云原生运行平台方案。

1、准备工作

创建 QKE 服务之前,需要创建相应的私有网络和 VPC ,以方便后续构建 QKE 云原生集群使用。

此外,还需要创建一个 API Key,用以后续 QKE 帮助你自动调整网络及存储相关的配置。

这样就完成了基础的准备工作

2、选择配置

准备工作完成后,就可以开始选择 QKE 所需的配置了。

根据实际的情况,选择所需的配置、私有网络、计费方式等。

再选择 QKE 所使用的 API KEY 和对应的公网 IP ,就可以点击创建了。

3、创建成功

点击创建后,会自动进入到 QKE 的管理控制台中。在这里可以看到 QKE 帮助开发者自动创建好了所需要的集群。

4、体验管理控制台

点击确认后,稍等几分钟,当看到所有的节点都变为活跃状态,就说明集群已经正常运行,就可以开始体验 QKE 提供的管理控制台了。

点击 QKE 集群详情页的 “KubeSphere 控制台链接” 标签页,找到其中的 KubeSphere 控制台地址,并使用账号 [email protected] ,密码 P@88w0rd 即可登录到 KubeSphere 上,享受来自 KubeSphere 提供的 CI/CD、微服务管理、集群运维管理等功能。

整个 QKE 创建的过程流畅,一气呵成,十分钟,就可以轻松的部署一个 QKE 集群,十分的方便。

QKE :开源与云的完美结合

开源社区的兴盛近几年有目共睹,但开源社区的最大问题在于,过于理想化和技术化,这使得整个产品在可用性、产品化方面举步维艰。QKE 的出现是一个很好的开源与云计算的结合。

一方面, QKE 可以借助开源项目 KubeSphere ,吸收来自开源社区的优秀创意和修改,让用户体验得到提升,用户能力得到拓展。

另一方面,QKE 基于云计算构建,可以让开源产品得以产品化,让过去难以落地的云原生现在触手可及。对于一些技术能力储备没有那么充沛的企业来说,也可以轻松用上云原生方案,享受云原生带来的企业和商业价值。

总结

QKE 的出现,是开源的一小步,更是云原生的一大步。对于开源来说,产品化的路径被打通,后人可以借鉴。从云原生来说,QKE 的出现让过去需要数十个人,数人日的工作,被缩短为 10 分钟,大大的提升了云原生普及的可能。

快速启动嵌入式设备或电信设备,对于时间要求紧迫的应用程序是至关重要的,并且在改善用户体验方面也起着非常重要的作用。这个文章给予一些关于如何增强任意设备的启动时间的重要技巧。

快速启动或快速重启在各种情况下起着至关重要的作用。为了保持所有服务的高可用性和更好的性能,嵌入式设备的快速启动至关重要。设想有一台运行着没有启用快速启动的 Linux 操作系统的电信设备,所有依赖于这个特殊嵌入式设备的系统、服务和用户可能会受到影响。这些设备维持其服务的高可用性是非常重要的,为此,快速启动和重启起着至关重要的作用。

一台电信设备的一次小故障或关机,即使只是几秒钟,都可能会对无数互联网上的用户造成破坏。因此,对于很多对时间要求严格的设备和电信设备来说,在它们的设备中加入快速启动的功能以帮助它们快速恢复工作是非常重要的。让我们从图 1 中理解 Linux 启动过程。

图 1:启动过程

监视工具和启动过程

在对机器做出更改之前,用户应注意许多因素。其中包括计算机的当前启动速度,以及占用资源并增加启动时间的服务、进程或应用程序。

启动图

为监视启动速度和在启动期间启动的各种服务,用户可以使用下面的命令来安装:

sudo apt-get install pybootchartgui

你每次启动时,启动图会在日志中保存一个 png 文件,使用户能够查看该 png 文件来理解系统的启动过程和服务。为此,使用下面的命令:

cd /var/log/bootchart

用户可能需要一个应用程序来查看 png 文件。Feh 是一个面向控制台用户的 X11 图像查看器。不像大多数其它的图像查看器,它没有一个精致的图形用户界面,但它只用来显示图片。Feh 可以用于查看 png 文件。你可以使用下面的命令来安装它:

sudo apt-get install feh

你可以使用 feh xxxx.png 来查看 png 文件。

图 2:启动图

图 2 显示了一个正在查看的引导图 png 文件。

systemd-analyze

但是,对于 Ubuntu 15.10 以后的版本不再需要引导图。为获取关于启动速度的简短信息,使用下面的命令:

systemd-analyze

图 3:systemd-analyze 的输出

图表 3 显示命令 systemd-analyze 的输出。

命令 systemd-analyze blame 用于根据初始化所用的时间打印所有正在运行的单元的列表。这个信息是非常有用的,可用于优化启动时间。systemd-analyze blame 不会显示服务类型为简单(Type=simple)的服务,因为 systemd 认为这些服务应是立即启动的;因此,无法测量初始化的延迟。

图 4:systemd-analyze blame 的输出

图 4 显示 systemd-analyze blame 的输出。

下面的命令打印时间关键的服务单元的树形链条:

command systemd-analyze critical-chain

图 5 显示命令 systemd-analyze critical-chain 的输出。

图 5:systemd-analyze critical-chain 的输出

减少启动时间的步骤

下面显示的是一些可以减少启动时间的各种步骤。

BUM(启动管理器)

BUM 是一个运行级配置编辑器,允许在系统启动或重启时配置初始化服务。它显示了可以在启动时启动的每个服务的列表。用户可以打开和关闭各个服务。BUM 有一个非常清晰的图形用户界面,并且非常容易使用。

在 Ubuntu 14.04 中,BUM 可以使用下面的命令安装:

sudo apt-get install bum

为在 15.10 以后的版本中安装它,从链接 http://apt.ubuntu.com/p/bum 下载软件包。

以基本的服务开始,禁用扫描仪和打印机相关的服务。如果你没有使用蓝牙和其它不想要的设备和服务,你也可以禁用它们中一些。我强烈建议你在禁用相关的服务前学习服务的基础知识,因为这可能会影响计算机或操作系统。图 6 显示 BUM 的图形用户界面。

图 6:BUM

编辑 rc 文件

要编辑 rc 文件,你需要转到 rc 目录。这可以使用下面的命令来做到:

cd /etc/init.d

然而,访问 init.d 需要 root 用户权限,该目录基本上包含的是开始/停止脚本,这些脚本用于在系统运行时或启动期间控制(开始、停止、重新加载、启动启动)守护进程。

init.d 目录中的 rc 文件被称为 运行控制 run control 脚本。在启动期间,init 执行 rc 脚本并发挥它的作用。为改善启动速度,我们可以更改 rc 文件。使用任意的文件编辑器打开 rc 文件(当你在 init.d 目录中时)。

例如,通过输入 vim rc ,你可以更改 CONCURRENCY=noneCONCURRENCY=shell。后者允许某些启动脚本同时执行,而不是依序执行。

在最新版本的内核中,该值应该被更改为 CONCURRENCY=makefile

图 7 和图 8 显示编辑 rc 文件前后的启动时间比较。可以注意到启动速度有所提高。在编辑 rc 文件前的启动时间是 50.98 秒,然而在对 rc 文件进行更改后的启动时间是 23.85 秒。

但是,上面提及的更改方法在 Ubuntu 15.10 以后的操作系统上不工作,因为使用最新内核的操作系统使用 systemd 文件,而不再是 init.d 文件。

图 7:对 rc 文件进行更改之前的启动速度

图 8:对 rc 文件进行更改之后的启动速度

E4rat

E4rat 代表 e4 减少访问时间 reduced access time (仅在 ext4 文件系统的情况下)。它是由 Andreas Rid 和 Gundolf Kiefer 开发的一个项目。E4rat 是一个通过碎片整理来帮助快速启动的应用程序。它还会加速应用程序的启动。E4rat 使用物理文件的重新分配来消除寻道时间和旋转延迟,因而达到较高的磁盘传输速度。

E4rat 可以 .deb 软件包形式获得,你可以从它的官方网站 http://e4rat.sourceforge.net/ 下载。

Ubuntu 默认安装的 ureadahead 软件包与 e4rat 冲突。因此必须使用下面的命令安装这几个软件包:

sudo dpkg purge ureadahead ubuntu-minimal

现在使用下面的命令来安装 e4rat 的依赖关系:

sudo apt-get install libblkid1 e2fslibs

打开下载的 .deb 文件,并安装它。现在需要恰当地收集启动数据来使 e4rat 工作。

遵循下面所给的步骤来使 e4rat 正确地运行并提高启动速度。

  • 在启动期间访问 Grub 菜单。这可以在系统启动时通过按住 shift 按键来完成。
  • 选择通常用于启动的选项(内核版本),并按 e
  • 查找以 linux /boot/vmlinuz 开头的行,并在该行的末尾添加下面的代码(在句子的最后一个字母后按空格键):init=/sbin/e4rat-collect or try - quiet splash vt.handsoff =7 init=/sbin/e4rat-collect
  • 现在,按 Ctrl+x 来继续启动。这可以让 e4rat 在启动后收集数据。在这台机器上工作,并在接下来的两分钟时间内打开并关闭应用程序。
  • 通过转到 e4rat 文件夹,并使用下面的命令来访问日志文件:cd /var/log/e4rat
  • 如果你没有找到任何日志文件,重复上面的过程。一旦日志文件就绪,再次访问 Grub 菜单,并对你的选项按 e
  • 在你之前已经编辑过的同一行的末尾输入 single。这可以让你访问命令行。如果出现其它菜单,选择恢复正常启动(Resume normal boot)。如果你不知为何不能进入命令提示符,按 Ctrl+Alt+F1 组合键。
  • 在你看到登录提示后,输入你的登录信息。
  • 现在输入下面的命令:sudo e4rat-realloc /var/lib/e4rat/startup.log。此过程需要一段时间,具体取决于机器的磁盘速度。
  • 现在使用下面的命令来重启你的机器:sudo shutdown -r now
  • 现在,我们需要配置 Grub 来在每次启动时运行 e4rat。
  • 使用任意的编辑器访问 grub 文件。例如,gksu gedit /etc/default/grub
  • 查找以 GRUB CMDLINE LINUX DEFAULT= 开头的一行,并在引号之间和任何选项之前添加下面的行:init=/sbin/e4rat-preload 18
  • 它应该看起来像这样:GRUB CMDLINE LINUX DEFAULT = init=/sbin/e4rat- preload quiet splash
  • 保存并关闭 Grub 菜单,并使用 sudo update-grub 更新 Grub 。
  • 重启系统,你将发现启动速度有明显变化。

图 9 和图 10 显示在安装 e4rat 前后的启动时间之间的差异。可注意到启动速度的提高。在使用 e4rat 前启动所用时间是 22.32 秒,然而在使用 e4rat 后启动所用时间是 9.065 秒。

图 9:使用 e4rat 之前的启动速度

图 10:使用 e4rat 之后的启动速度

一些易做的调整

使用很小的调整也可以达到良好的启动速度,下面列出其中两个。

SSD

使用固态设备而不是普通的硬盘或者其它的存储设备将肯定会改善启动速度。SSD 也有助于加快文件传输和运行应用程序方面的速度。

禁用图形用户界面

图形用户界面、桌面图形和窗口动画占用大量的资源。禁用图形用户界面是获得良好的启动速度的另一个好方法。


via: https://opensourceforu.com/2019/10/how-to-go-about-linux-boot-time-optimisation/

作者:B Thangaraju 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

最近在网上看到一张图(原图出处不详,题图据原图重制,有修改。)

唔,感觉很有道理啊,你看,rm 是删除,这个单词简单好记;连 rf 都给出了解释,“垃圾文件”;/* 代表目录下的所有文件,没毛病;sudo 也有了,确保权限没问题。

哈哈,你一定会说,又编段子搞笑,没人会信的。

会有人执行这样的命令来清理所谓的垃圾文件么?你别说,这还真不好说。

我们经常会发一些关于关于 Bash 别名的文章,总有一些同学皮一下“贡献”一些别致的别名,比如 alias ls=rm -rfalias cd=rm -rf 等等。虽然我认为几乎没有人会被这些命令恶搞,但是大家也屡屡乐此不疲。

我将这张图发到朋友圈里,好友“龙十三”表示,这不仅仅清除垃圾文件,而且清除垃圾系统管理员

是啊,为什么会有这样的段子一再出现呢?就是因为我们有些不求甚解的人,遇到问题了,习惯于从网上随便找个命令示例瞎试,不去探究其原理,也不去核实可靠性。所以,这样的段子真是用来清除“系统管理员里的垃圾”的。

那么让我们来探究一下上面这条命令,看看这里有多少知识点。

rm 的那些事

首先,这条命令是用来清除 Linux 系统的根目录(/)下所有文件的。它使用了两个命令选项:

  • -r 递归 recursive ,对目录及其下的内容进行递归操作
  • -f 强制 force ,无需确认操作

这两个选项可以单独写作 -r-f ,也可以按 POSIX 惯例,将两个选项合并成 -rf 。这里的 -r-f 选项,绝非上图中恶搞的 “Rubbish” 和 “Files”。

其后的参数 /* 指的是根目录 / 下的所有文件。

-r 选项

-r 选项代表 递归 recurive ,其意思是指递归地对参数中的目录及其下的文件或子目录进行删除操作。

这个选项除了短选项风格,还有 GNU 风格的长选项 --recursive ;也出于兼容性的原因,支持同义的大写 -R 参数。

如果没有该选项,则不会删除目录及其下的内容。

-f 选项

在介绍 -f 选项之前,让我们先看一下这里没有出现的 -i 选项。

原生的 rm 命令在删除文件或目录时,遵循 UNIX 惯例,在执行删除操作前和操作成功后,是静默的,毫无提示的。除非遇到错误(如要删除的文件不存在)时,否则绝不抱怨。

后来,可能是鉴于很多人经常会错误删除文件,在绝大多数的 Linux 发行版上的 rm 命令是一个添加了 -i 选项的别名:

alias rm=rm -i

这里的 -i 选项用于在每一个删除动作前做个提示,需要用户明确给予确认才会删除。

但是,有时候,这种提示实在是太烦了,所以,很多人在操作时,特意使用 -f 选项覆盖了 -i 选项的行为,使得这个别名的定义毫无意义。

因此,还有一个 -I 选项,这个选项在要删除三个及更多的文件或递归删除时,会做一次确认提示。这样,既没有 -i 选项那么烦人,又能防止大部分错误操作。所以,可以将上述别名采用 -I 选项,并避免使用 -f 选项。

* 通配了什么

我们看到命令中以* 来指代目录下的所有文件。但是严格来说,* 这个通配符代表不以点 “.” 开头的所有文件。以 “.” 开头的文件默认属于 Linux 下的隐藏文件。

因此,这个命令不会删除 / 目录下以 . 开头的隐藏文件,以及 ... 两个目录。但是在递归操作时,会递归地删除子目录下除了 ... 目录之外的所以文件和子目录——无论是否以 . 开头——因为递归操作不是由 Bash 等 shell 进行通配展开的。

至于为什么不在删除目录下的内容时也将 ... 一视同仁?因为自从 1979 年 rm 命令开始有删除目录的能力时,就专门避开了这两个特殊目录。

根目录保护

有一定经验的系统管理员可能这个时候会想起来,rm 命令有一对专门针对根目录的选项 --preserve-root--no-preserve-root 。这对选项的意思是:

  • --preserve-root:保护根目录,这是默认行为。
  • --no-preserve-root:不保护根目录。

这对选项是后来添加到 rm 命令的。可能几乎每个系统管理员都犯过操作错误,而这其中删除过根目录的比比皆是(我就是一个)。出现这种情况的原因有几种:

  • 输入手误:比如本来想输入 rm /tmp/test.txt,结果不小心键盘打的飞起,多输入了一个空格变成: rm / tmp/test.txt 。看到根目录(/)后面的空格了么?!——这就是我当前自己亲手犯过的错误,而且是在生产服务器上。
  • 未正确初始化或命名错误的 shell 脚本变量:比如在脚本中,rm -rf /${tmp_dir},如果无论是 tmp_dir 变量没有正确赋值还是输入错误(原本或许是 tmpdir ?),那会导致什么?当然是删除根目录咯~

鉴于这种情况层出不穷,在 Linux 圈子几乎和“初学者如何退出 vi” 一样成为经典笑话了。所以,在 POSIX 第七版规范中,rm 命令添加--preserve-root 选项,并将其作为默认行为,以降低出现这种错误的可能。

但是,这个选项不能防范本文中所述的清除根目录下所有文件(/*)的操作。

有的同学可能要问,那为什么还会专门出现 --no-preserve-root 选项呢?这可能主要是出于 UNIX 哲学的考虑,给予你想要的一切权力,犯傻是你的事情,而不是操作系统的事情。万一,你真的想删除根目录下的所有文件呢?

你还别说,真有这种需求:比如你要清除一个 chroot 环境下的所有文件。 chroot 我们这里不多讲,它就是以一个目录作为“监狱”,该目录在逻辑上形成了新的“根目录”,在该监狱内的文件操作不能跨出该目录范畴。近些年流行的 Docker、LXC/LXD 之类的容器技术,都是一种 chroot 技术。

UEFI 系统

好吧,你可能更特立独行一些,就是要清除物理环境中的根目录下所有文件!但是在你按下回车键之前,请再考虑一下,你是否在一个 UEFI 系统上?

因为 UEFI 系统会将其固件、变量和设置映射到根目录下的 /sys 分区里面,所以,如果在 UEFI 环境中清除根目录下的所有内容,也会同样清除 /sys ,这将可能会导致你丢失 UEFI 的固件设置,从而使设备变砖。

sudo 提权

为了可以删除属于 root 等系统和其它用户的文件,这个命令还需要在前面加上 sudo 来提权。

输入该命令后,会要求输入密码。谁的密码?不是 root 密码,而是输入该命令的当前用户的密码。

而对于谁能执行 sudo 命令,以及他可以通过 sudo 命令执行什么命令等知识点,这里就不再赘述,请参阅我们的其它文章。顺便说一句,要记得区分 sudosu 命令的联系与区别

垃圾文件

研究到这里,我们不能忘记这条命令原本的意图,删除“垃圾文件”。

Linux 下有垃圾文件么?有。这些垃圾文件一般来源于:

  • 没有被包管理器管理的孤儿文件,在软件包被删除后,遗留在系统中
  • 无用的依赖包,在需要这些依赖包的软件被删除后,没有相应删除
  • 没有清理的临时文件
  • 遗留的诊断文件

那么这些垃圾文件需要清除么?一般而言,Linux 系统上的这些文件大多不会对系统的健康运行造成任何影响,除非太多了,占据了很多存储空间和 inode。

所以,如果你感觉你的 Linux 系统慢了,那几乎可以肯定不是由于垃圾文件导致的,至少在这一点上,来自 Windows 系统的经验并不值得复制。


好了,关于这个简单的命令,我们已经挖掘了这么多知识点,你都知道了吗?

事实上,关于这些知识,还有更多的内涵、外延和历史信息,作为一个真正的系统管理员,而不是一个脚本小子,需要认真地研究每个命令和细节。

Linux 并不像 Windows,你经常不会有图形界面可供使用,特别是在服务器环境中。

作为一名 Linux 管理员,知道如何获取当前可用的和已经使用的资源情况,比如内存、CPU、磁盘等,是相当重要的。如果某一应用在你的系统上占用了太多的资源,导致你的系统无法达到最优状态,那么你需要找到并修正它。

如果你想找到消耗内存前十名的进程,你需要去阅读这篇文章:如何在 Linux 中找出内存消耗最大的进程

在 Linux 中,命令能做任何事,所以使用相关命令吧。在这篇教程中,我们将会给你展示 8 个有用的命令来即查看在 Linux 系统中内存的使用情况,包括 RAM 和交换分区。

创建交换分区在 Linux 系统中是非常重要的,如果你想了解如何创建,可以去阅读这篇文章:在 Linux 系统上创建交换分区

下面的命令可以帮助你以不同的方式查看 Linux 内存使用情况。

  • free 命令
  • /proc/meminfo 文件
  • vmstat 命令
  • ps_mem 命令
  • smem 命令
  • top 命令
  • htop 命令
  • glances 命令

1)如何使用 free 命令查看 Linux 内存使用情况

free 命令 是被 Linux 管理员广泛使用的主要命令。但是它提供的信息比 /proc/meminfo 文件少。

free 命令会分别展示物理内存和交换分区内存中已使用的和未使用的数量,以及内核使用的缓冲区和缓存。

这些信息都是从 /proc/meminfo 文件中获取的。

# free -m
              total        used        free      shared  buff/cache   available
Mem:          15867        9199        1702        3315        4965        3039
Swap:         17454         666       16788
  • total:总的内存量
  • used:被当前运行中的进程使用的内存量(used = totalfreebuff/cache
  • free: 未被使用的内存量(free = totalusedbuff/cache
  • shared: 在两个或多个进程之间共享的内存量
  • buffers: 内存中保留用于内核记录进程队列请求的内存量
  • cache: 在 RAM 中存储最近使用过的文件的页缓冲大小
  • buff/cache: 缓冲区和缓存总的使用内存量
  • available: 可用于启动新应用的可用内存量(不含交换分区)

2) 如何使用 /proc/meminfo 文件查看 Linux 内存使用情况

/proc/meminfo 文件是一个包含了多种内存使用的实时信息的虚拟文件。它展示内存状态单位使用的是 kB,其中大部分属性都难以理解。然而它也包含了内存使用情况的有用信息。

# cat /proc/meminfo

MemTotal:       16248572 kB
MemFree:         1764576 kB
MemAvailable:    3136604 kB
Buffers:          234132 kB
Cached:          4731288 kB
SwapCached:        28516 kB
Active:          9004412 kB
Inactive:        3552416 kB
Active(anon):    8094128 kB
Inactive(anon):  2896064 kB
Active(file):     910284 kB
Inactive(file):   656352 kB
Unevictable:          80 kB
Mlocked:              80 kB
SwapTotal:      17873388 kB
SwapFree:       17191328 kB
Dirty:               252 kB
Writeback:             0 kB
AnonPages:       7566736 kB
Mapped:          3692368 kB
Shmem:           3398784 kB
Slab:             278976 kB
SReclaimable:     125480 kB
SUnreclaim:       153496 kB
KernelStack:       23936 kB
PageTables:        73880 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    25997672 kB
Committed_AS:   24816804 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             3392 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:     1059088 kB
DirectMap2M:    14493696 kB
DirectMap1G:     2097152 kB

3) 如何使用 vmstat 命令查看 Linux 内存使用情况

vmstat 命令 是另一个报告虚拟内存统计信息的有用工具。

vmstat 报告的信息包括:进程、内存、页面映射、块 I/O、陷阱、磁盘和 CPU 特性信息。vmstat 不需要特殊的权限,并且它可以帮助诊断系统瓶颈。

# vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 682060 1769324 234188 4853500  0    3    25    91   31   16 34 13 52  0  0

如果你想详细了解每一项的含义,阅读下面的描述。

  • procs:进程

    • r: 可以运行的进程数目(正在运行或等待运行)
    • b: 处于不可中断睡眠中的进程数目
  • memory:内存

    • swpd: 使用的虚拟内存数量
    • free: 空闲的内存数量
    • buff: 用作缓冲区内存的数量
    • cache: 用作缓存内存的数量
    • inact: 不活动的内存数量(使用 -a 选项)
    • active: 活动的内存数量(使用 -a 选项)
  • Swap:交换分区

    • si: 每秒从磁盘交换的内存数量
    • so: 每秒交换到磁盘的内存数量
  • IO:输入输出

    • bi: 从一个块设备中收到的块(块/秒)
    • bo: 发送到一个块设备的块(块/秒)
  • System:系统

    • in: 每秒的中断次数,包括时钟。
    • cs: 每秒的上下文切换次数。
  • CPU:下面这些是在总的 CPU 时间占的百分比

    • us: 花费在非内核代码上的时间占比(包括用户时间,调度时间)
    • sy: 花费在内核代码上的时间占比 (系统时间)
    • id: 花费在闲置的时间占比。在 Linux 2.5.41 之前,包括 I/O 等待时间
    • wa: 花费在 I/O 等待上的时间占比。在 Linux 2.5.41 之前,包括在空闲时间中
    • st: 被虚拟机偷走的时间占比。在 Linux 2.6.11 之前,这部分称为 unknown

运行下面的命令查看详细的信息。

# vmstat -s

        16248580 K total memory
         2210256 K used memory
         2311820 K active memory
         2153352 K inactive memory
        11368812 K free memory
          107584 K buffer memory
         2561928 K swap cache
        17873388 K total swap
               0 K used swap
        17873388 K free swap
           44309 non-nice user cpu ticks
             164 nice user cpu ticks
           14332 system cpu ticks
          382418 idle cpu ticks
            1248 IO-wait cpu ticks
            1407 IRQ cpu ticks
            2147 softirq cpu ticks
               0 stolen cpu ticks
         1022437 pages paged in
          260296 pages paged out
               0 pages swapped in
               0 pages swapped out
         1424838 interrupts
         4979524 CPU context switches
      1577163147 boot time
            3318 forks

4) 如何使用 ps\_mem 命令查看 Linux 内存使用情况

ps\_mem 是一个用来查看当前内存使用情况的简单的 Python 脚本。该工具可以确定每个程序使用了多少内存(不是每个进程)。

该工具采用如下的方法计算每个程序使用内存:总的使用 = 程序进程私有的内存 + 程序进程共享的内存。

计算共享内存是存在不足之处的,该工具可以为运行中的内核自动选择最准确的方法。

# ps_mem

 Private  +   Shared  =  RAM used    Program
180.0 KiB +  30.0 KiB = 210.0 KiB    xf86-video-intel-backlight-helper (2)
192.0 KiB +  66.0 KiB = 258.0 KiB    cat (2)
312.0 KiB +  38.5 KiB = 350.5 KiB    lvmetad
380.0 KiB +  25.5 KiB = 405.5 KiB    crond
392.0 KiB +  32.5 KiB = 424.5 KiB    rtkit-daemon
852.0 KiB + 117.0 KiB = 969.0 KiB    gnome-session-ctl (2)
928.0 KiB +  56.5 KiB = 984.5 KiB    gvfs-mtp-volume-monitor
  1.0 MiB +  42.5 KiB =   1.0 MiB    dconf-service
  1.0 MiB + 106.5 KiB =   1.1 MiB    gvfs-goa-volume-monitor
  1.0 MiB + 180.5 KiB =   1.2 MiB    gvfsd
.
.
  5.3 MiB +   3.0 MiB =   8.3 MiB    evolution-addressbook-factory
  8.5 MiB +   1.2 MiB =   9.7 MiB    gnome-session-binary (4)
  7.5 MiB +   3.1 MiB =  10.5 MiB    polkitd
  7.4 MiB +   3.3 MiB =  10.7 MiB    pulseaudio (2)
  7.0 MiB +   7.0 MiB =  14.0 MiB    msm_notifier
 12.7 MiB +   2.3 MiB =  15.0 MiB    evolution-source-registry
 13.3 MiB +   2.5 MiB =  15.8 MiB    gnome-terminal-server
 15.8 MiB +   1.0 MiB =  16.8 MiB    tracker-miner-fs
 18.7 MiB +   1.8 MiB =  20.5 MiB    python3.7
 16.6 MiB +   4.0 MiB =  20.5 MiB    evolution-calendar-factory
 22.3 MiB + 753.0 KiB =  23.0 MiB    gsd-keyboard (2)
 22.4 MiB + 832.0 KiB =  23.2 MiB    gsd-wacom (2)
 20.8 MiB +   2.5 MiB =  23.3 MiB    blueman-tray
 22.0 MiB +   1.8 MiB =  23.8 MiB    blueman-applet
 23.1 MiB + 934.0 KiB =  24.0 MiB    gsd-xsettings (2)
 23.7 MiB +   1.2 MiB =  24.9 MiB    gsd-media-keys (2)
 23.4 MiB +   1.6 MiB =  25.0 MiB    gsd-color (2)
 23.9 MiB +   1.2 MiB =  25.1 MiB    gsd-power (2)
 16.5 MiB +   8.9 MiB =  25.4 MiB    evolution-alarm-notify
 27.2 MiB +   2.0 MiB =  29.2 MiB    systemd-journald
 28.7 MiB +   2.8 MiB =  31.5 MiB    c
 29.6 MiB +   2.2 MiB =  31.8 MiB    chrome-gnome-sh (2)
 43.9 MiB +   6.8 MiB =  50.7 MiB    WebExtensions
 46.7 MiB +   6.7 MiB =  53.5 MiB    goa-daemon
 86.5 MiB +  55.2 MiB = 141.7 MiB    Xorg (2)
191.4 MiB +  24.1 MiB = 215.4 MiB    notepadqq-bin
306.7 MiB +  29.0 MiB = 335.7 MiB    gnome-shell (2)
601.6 MiB +  77.7 MiB = 679.2 MiB    firefox
  1.0 GiB + 109.7 MiB =   1.1 GiB    chrome (15)
  2.3 GiB + 123.1 MiB =   2.5 GiB    Web Content (8)
----------------------------------
                           5.6 GiB
==================================

5)如何使用 smem 命令查看 Linux 内存使用情况

smem 是一个可以为 Linux 系统提供多种内存使用情况报告的工具。不同于现有的工具,smem 可以报告 比例集大小 Proportional Set Size (PSS)、 唯一集大小 Unique Set Size (USS)和 驻留集大小 Resident Set Size (RSS)。

  • 比例集大小(PSS):库和应用在虚拟内存系统中的使用量。
  • 唯一集大小(USS):其报告的是非共享内存。
  • 驻留集大小(RSS):物理内存(通常多进程共享)使用情况,其通常高于内存使用量。
# smem -tk

 PID User     Command                         Swap      USS      PSS      RSS
3383 daygeek  cat                                0    92.0K   123.0K     1.7M
3384 daygeek  cat                                0   100.0K   129.0K     1.7M
1177 daygeek  /usr/lib/gnome-session-ctl         0   436.0K   476.0K     4.6M
1171 daygeek  /usr/bin/dbus-daemon --conf        0   524.0K   629.0K     3.8M
1238 daygeek  /usr/lib/xdg-permission-sto        0   592.0K   681.0K     5.9M
1350 daygeek  /usr/lib/gsd-screensaver-pr        0   652.0K   701.0K     5.8M
1135 daygeek  /usr/lib/gdm-x-session --ru        0   648.0K   723.0K     6.0M
.
.
1391 daygeek  /usr/lib/evolution-data-ser        0    16.5M    25.2M    63.3M
1416 daygeek  caffeine-ng                        0    28.7M    31.4M    66.2M
4855 daygeek  /opt/google/chrome/chrome -        0    38.3M    46.3M   120.6M
2174 daygeek  /usr/lib/firefox/firefox -c        0    44.0M    50.7M   120.3M
1254 daygeek  /usr/lib/goa-daemon                0    46.7M    53.3M    80.4M
3416 daygeek  /opt/google/chrome/chrome -        0    44.7M    54.2M   103.3M
4782 daygeek  /opt/google/chrome/chrome -        0    57.2M    65.8M   142.3M
1137 daygeek  /usr/lib/Xorg vt2 -displayf        0    77.2M   129.6M   192.3M
3376 daygeek  /opt/google/chrome/chrome          0   117.8M   131.0M   210.9M
4448 daygeek  /usr/lib/firefox/firefox -c        0   124.4M   133.8M   224.1M
3558 daygeek  /opt/google/chrome/chrome -        0   157.3M   165.7M   242.2M
2310 daygeek  /usr/lib/firefox/firefox -c        0   159.6M   169.4M   259.6M
4331 daygeek  /usr/lib/firefox/firefox -c        0   176.8M   186.2M   276.8M
4034 daygeek  /opt/google/chrome/chrome -        0   179.3M   187.9M   264.6M
3911 daygeek  /opt/google/chrome/chrome -        0   183.1M   191.8M   269.4M
3861 daygeek  /opt/google/chrome/chrome -        0   199.8M   208.2M   285.2M
2746 daygeek  /usr/bin/../lib/notepadqq/n        0   193.5M   217.5M   261.5M
1194 daygeek  /usr/bin/gnome-shell               0   203.7M   219.0M   285.1M
2945 daygeek  /usr/lib/firefox/firefox -c        0   294.5M   308.0M   410.2M
2786 daygeek  /usr/lib/firefox/firefox -c        0   341.2M   354.3M   459.1M
4193 daygeek  /usr/lib/firefox/firefox -c        0   417.4M   427.6M   519.3M
2651 daygeek  /usr/lib/firefox/firefox -c        0   417.0M   430.1M   535.6M
2114 daygeek  /usr/lib/firefox/firefox -c        0   430.6M   473.9M   610.9M
2039 daygeek  /usr/lib/firefox/firefox --        0   601.3M   677.5M   840.6M
-------------------------------------------------------------------------------
  90 1                                           0     4.8G     5.2G     8.0G

6) 如何使用 top 命令查看 Linux 内存使用情况

top 命令 是一个 Linux 系统的管理员最常使用的用于查看进程的资源使用情况的命令。

该命令会展示了系统总的内存量、当前内存使用量、空闲内存量和缓冲区使用的内存总量。此外,该命令还会展示总的交换空间内存量、当前交换空间的内存使用量、空闲的交换空间内存量和缓存使用的内存总量。

# top -b | head -10

top - 11:04:39 up 40 min,  1 user,  load average: 1.59, 1.42, 1.28
Tasks: 288 total,   2 running, 286 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.3 us,  1.5 sy,  0.0 ni, 84.4 id,  0.0 wa,  0.3 hi,  0.5 si,  0.0 st
KiB Mem : 16248572 total,  7755928 free,  4657736 used,  3834908 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  9179772 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 2114 daygeek   20     3182736 616624 328228 R  83.3   3.8   7:09.72 Web Content
 2039 daygeek   20     4437952 849616 261364 S  13.3   5.2   7:58.54 firefox
 1194 daygeek   20     4046856 291288 165460 S   4.2   1.8   1:57.68 gnome-shell
 4034 daygeek   20      808556 273244  88676 S   4.2   1.7   1:44.72 chrome
 2945 daygeek   20     3309832 416572 150112 S   3.3   2.6   4:04.60 Web Content
 1137 daygeek   20      564316 197292 183380 S   2.5   1.2   2:55.76 Xorg
 2651 daygeek   20     3098420 547260 275700 S   1.7   3.4   2:15.96 Web Content
 2786 daygeek   20     2957112 463912 240744 S   1.7   2.9   3:22.29 Web Content
    1 root      20      182756  10208   7760 S   0.8   0.1   0:04.51 systemd
  442 root     -51                           S   0.8         0:05.02 irq/141-iw+
 1426 daygeek   20      373660  48948  29820 S   0.8   0.3   0:03.55 python3
 2174 daygeek   20     2466680 122196  78604 S   0.8   0.8   0:17.75 WebExtensi+

7) 如何使用 htop 命令查看 Linux 内存使用情况

htop 命令 是一个可交互的 Linux/Unix 系统进程查看器。它是一个文本模式应用,且使用它需要 Hisham 开发的 ncurses 库。

该名令的设计目的使用来代替 top 命令。该命令与 top 命令很相似,但是其允许你可以垂直地或者水平地的滚动以便可以查看系统中所有的进程情况。

htop 命令拥有不同的颜色,这个额外的优点当你在追踪系统性能情况时十分有用。

此外,你可以自由地执行与进程相关的任务,比如杀死进程或者改变进程的优先级而不需要其进程号(PID)。

8)如何使用 glances 命令查看 Linux 内存使用情况

Glances 是一个 Python 编写的跨平台的系统监视工具。

你可以在一个地方查看所有信息,比如:CPU 使用情况、内存使用情况、正在运行的进程、网络接口、磁盘 I/O、RAID、传感器、文件系统信息、Docker、系统信息、运行时间等等。


via: https://www.2daygeek.com/linux-commands-check-memory-usage/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:萌新阿岩 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ubuntu 19.04 已在 2020 年 1 月 23 日到期,这意味着运行 Ubuntu 19.04 的系统将不再会接收到安全和维护更新,因此将使其容易受到攻击。

Ubuntu 19.04 发布于 2019 年 4 月 18 日。由于它不是长期支持(LTS)版本,因此只有 9 个月的支持。完成它的发行周期后,Ubuntu 19.04 于 2020 年 1 月 23 日到期。

Ubuntu 19.04 带来了一些视觉和性能方面的改进,为时尚和美观的 Ubuntu 外观铺平了道路。与其他常规 Ubuntu 版本一样,它的生命周期为 9 个月。它如今结束了。

Ubuntu 19.04 终止了吗?这是什么意思?

EOL(End of life)是指在某个日期之后操作系统版本将无法获得更新。你可能已经知道 Ubuntu(或其他操作系统)提供了安全性和维护升级,以使你的系统免受网络攻击。当发行版到期后,操作系统将停止接收这些重要更新。

如果你的操作系统版本到期后继续使用该系统,那么系统将容易受到网络和恶意软件的攻击。不仅如此。在 Ubuntu 中,你使用 APT 从软件中心下载的应用也不会更新。实际上,你将不再能够使用 apt-get 命令安装新软件(如果不是立即,那就是逐渐地)。

所有 Ubuntu 19.04 用户必须升级到 Ubuntu 19.10

从 2020 年 1 月 23 日开始,Ubuntu 19.04 将停止接收更新。你必须升级到 2020 年 7 月之前受支持的 Ubuntu 19.10。这也适用于其他官方 Ubuntu 衍生版,例如 Lubuntu、Xubuntu、Kubuntu 等。

你可以在“设置 -> 细节” 或使用如下命令来检查你的 Ubuntu 版本

lsb_release -a

如何升级到 Ubuntu 19.10?

值得庆幸的是,Ubuntu 提供了简单的方法来将现有系统升级到新版本。实际上,Ubuntu 还会提示你有新的 Ubuntu 版本可用,你应该升级到该版本。

Existing Ubuntu 19.04 should see a message to upgrade to Ubuntu 19.10

如果你的互联网连接良好,那么可以使用和更新 Ubuntu 一样的 Software Updater 工具。在上图中,你只需单击 “Upgrade” 按钮并按照说明进行操作。我已经编写了有关使用此方法升级到 Ubuntu 18.04的文章。

如果你没有良好的互联网连接,那么有一种临时方案。在外部磁盘上备份家目录或重要数据。

然后,制作一个 Ubuntu 19.10 的 Live USB。下载 Ubuntu 19.10 ISO,并使用 Ubuntu 系统上已安装的启动磁盘创建器从该 ISO 创建 Live USB。

从该 Live USB 引导,然后继续“安装” Ubuntu 19.10。在安装过程中,你应该看到一个删除 Ubuntu 19.04 并将其替换为 Ubuntu 19.10 的选项。选择此选项,然后像重新安装 Ubuntu一样进行下去。

你是否仍在使用 Ubuntu 19.04、18.10、17.10 或其他不受支持的版本?

你应该注意,目前仅 Ubuntu 16.04、18.04 和 19.10(或更高版本)版本还受支持。如果你运行的不是这些 Ubuntu 版本,那么你必须升级到较新版本。


via: https://itsfoss.com/ubuntu-19-04-end-of-life/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出