2020年2月

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 分钟,大大的提升了云原生普及的可能。

之前的文章中,我介绍过一些开源 内容管理系统 Content Management System (CMS),顾名思义,这些 CMS 平台更适用于以内容为主的站点。

那如果想要建立自己的线上购物站点呢?我们正好还有一些优秀的开源电商解决方案,可以自行部署在自己的 Linux 服务器上。

这些电商解决方案是专为搭建线上购物站点设计的,因此都集成了库存管理、商品列表、购物车、下单、愿望清单以及支付这些必需的基础功能。

但请注意,这篇文章并不会进行深入介绍。因此,我建议最好广泛试用其中的多个产品,以便进一步的了解和比较。

优秀的开源电商解决方案

开源电商解决方案种类繁多,一些缺乏维护的都会被我们忽略掉,以免搭建出来的站点因维护不及时而受到影响。

另外,以下的列表排名不分先后。

1、nopCommerce

nopCommerce 是基于 ASP.NET Core 的自由开源的电商解决方案。如果你要找的是基于 PHP 的解决方案,可以跳过这一节了。

nopCommerce 的管理面板界面具有简洁易用的特点,如果你还使用过 OpenCart,就可能会感到似曾相识(我不是在抱怨)。在默认情况下,它就已经自带了很多基本的功能,同时还为移动端用户提供了响应式的设计。

你可以在其官方商店中获取到一些兼容的界面主题和应用扩展,还可以选择付费的支持服务。

在开始使用前,你可以从 nopCommerce 的官方网站下载源代码包,然后进行自定义配置和部署;也可以直接下载完整的软件包快速安装到 web 服务器上。详细信息可以查阅 nopCommerce 的 GitHub 页面或官方网站。

2、OpenCart

OpenCart 是一个基于 PHP 的非常流行的电商解决方案,就我个人而言,我曾为一个项目用过它,并且体验非常好,如果不是最好的话。

或许你会觉得它维护得不是很频繁,但实际上使用 OpenCart 的开发者并不在少数。你可以获得许多受支持的扩展并将它们的功能加入到 OpenCart 中。

OpenCart 不一定是适合所有人的“现代”电商解决方案,但如果你需要的只是一个基于 PHP 的开源解决方案,OpenCart 是个值得一试的选择。在大多数具有一键式应用程序安装支持的网络托管平台中,应该可以安装 OpenCart。想要了解更多,可以查阅 OpenCart 的官方网站或 GitHub 页面

3、PrestaShop

PrestaShop 也是一个可以尝试的开源电商解决方案。

PrestaShop 是一个积极维护下的开源解决方案,它的官方商店中也有额外提供主题和扩展。与 OpenCart 不同,在托管服务平台上,你可能找不到一键安装的 PrestaShop。但不需要担心,从官方网站下载下来之后,它的部署过程也并不复杂。如果你需要帮助,也可以参考 PrestaShop 的安装指南

PrestaShop 的特点就是配置丰富和易于使用,我发现很多其它用户也在用它,你也不妨试用一下。

你也可以在 PrestaShop 的 GitHub 页面查阅到更多相关内容。

4、WooCommerce

如果你想用 WordPress 来搭建电商站点,不妨使用 WooCommerce。

从技术上来说,这种方式其实是搭建一个 WordPress 应用,然后把 WooCommerce 作为一个插件或扩展以实现电商站点所需要的功能。很多 web 开发者都知道如何使用 WordPress,因此 WooCommerce 的学习成本不会很高。

WordPress 作为目前最好的开源站点项目之一,对大部分人来说都不会有太高的门槛。它具有易用、稳定的特点,同时还支持大量的扩展插件。

WooCommerce 的灵活性也是一大亮点,在它的线上商店提供了许多设计和扩展可供选择。你也可以到它的 GitHub 页面查看相关介绍。

5、Zen Cart

这或许是一个稍显古老的电商解决方案,但同时也是最好的开源解决方案之一。如果你喜欢老式风格的模板(主要基于 HTML),而且只需要一些基础性的扩展,那你也可以尝试使用 Zen Cart。

就我个人而言,我不建议把 Zen Cart 用在一个新项目当中。但考虑到它仍然是一个活跃更新中的解决方案,如果你喜欢的话,也不妨用它来进行试验。

你也可以在 SourceForge 找到 Zen Cart 这个项目。

6、Magento

Image Credits: Magestore

Magento 是 Abode 旗下的开源电商解决方案,从某种角度来说,可能比 WordPress 表现得更为优秀。

Magento 完全是作为电商应用程序而生的,因此你会发现它的很多基础功能都非常好用,甚至还提供了高级的定制。

但如果你使用的是 Magento 的开源版,可能会接触不到托管版的一些高级功能,两个版本的差异,可以在官方文档中查看到。如果你使用托管版,还可以选择相关的托管支持服务。

想要了解更多,可以查看 Magento 的 GitHub 页面

7、Drupal

Drupal

Drupal 是一个适用于创建电商站点的开源 CMS 解决方案。

我没有使用过 Drupal,因此我不太确定它用起来是否足够灵活。但从它的官方网站上来看,它提供的扩展模块和主题列表,足以让你轻松完成一个电商站点需要做的任何事情。

跟 WordPress 类似,Drupal 在服务器上的部署并不复杂,不妨看看它的使用效果。在它的下载页面可以查看这个项目以及下载最新的版本。

8、Odoo eCommerce

Odoo Ecommerce Platform

如果你还不知道,Odoo 提供了一套开源商务应用程序。他们还提供了开源会计软件和 CRM 解决方案,我们将会在单独的列表中进行介绍。

对于电子商务门户,你可以根据需要使用其在线拖放生成器自定义网站。你也可以推广该网站。除了简单的主题安装和自定义选项之外,你还可以利用 HTML/CSS 在一定程度上手动自定义外观。

你也可以查看其 GitHub 页面以进一步了解它。

总结

我敢肯定还有更多的开源电子商务平台,但是,我现在还没有遇到比我上面列出的更好的东西。

如果你还有其它值得一提的产品,可以在评论区发表。也欢迎在评论区分享你对开源电商解决方案的经验和想法。


via: https://itsfoss.com/open-source-ecommerce/

作者:Ankush Das 选题:lujun9972 译者:HankChow 校对:wxy

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

用这三个开源工具检查你的互联网和局域网速度。

能够验证网络连接速度使您可以控制计算机。 使您可以在命令行中检查互联网和网络速度的三个开源工具是 Speedtest、Fast 和 iPerf。

Speedtest

Speedtest 是一个旧宠。它用 Python 实现,并打包在 Apt 中,也可用 pip 安装。你可以将它作为命令行工具或在 Python 脚本中使用。

使用以下命令安装:

sudo apt install speedtest-cli

或者

sudo pip3 install speedtest-cli

然后使用命令 speedtest 运行它:

$ speedtest
Retrieving speedtest.net configuration...
Testing from CenturyLink (65.128.194.58)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by CenturyLink (Cambridge, UK) [20.49 km]: 31.566 ms
Testing download speed................................................................................
Download: 68.62 Mbit/s
Testing upload speed......................................................................................................
Upload: 10.93 Mbit/s

它给你提供了互联网上传和下载的网速。它快速而且可脚本调用,因此你可以定期运行它,并将输出保存到文件或数据库中,以记录一段时间内的网络速度。

Fast

Fast 是 Netflix 提供的服务。它的网址是 Fast.com,同时它有一个可通过 npm 安装的命令行工具:

npm install --global fast-cli

网站和命令行程序都提供了相同的基本界面:它是一个尽可能简单的速度测试:

$ fast

     82 Mbps ↓

该命令返回你的网络下载速度。要获取上传速度,请使用 -u 标志:

$ fast -u

   ⠧ 80 Mbps ↓ / 8.2 Mbps ↑

iPerf

iPerf 测试的是局域网速度(而不是像前两个工具一样测试互联网速度)的好方法。Debian、Raspbian 和 Ubuntu 用户可以使用 apt 安装它:

sudo apt install iperf

它还可用于 Mac 和 Windows。

安装完成后,你需要在同一网络上的两台计算机上使用它(两台都必须安装 iPerf)。指定其中一台作为服务器。

获取服务端计算机的 IP 地址:

ip addr show | grep inet.*brd

你的本地 IP 地址(假设为 IPv4 本地网络)以 192.16810 开头。记下 IP 地址,以便可以在另一台计算机(指定为客户端的计算机)上使用它。

在服务端启动 iperf

iperf -s

它会等待来自客户端的传入连接。将另一台计算机作为为客户端并运行此命令,将示例中的 IP 替换为服务端计算机的 IP:

iperf -c 192.168.1.2

 title=

只需几秒钟即可完成测试,然后返回传输大小和计算出的带宽。我使用家用服务器作为服务端,在 PC 和笔记本电脑上进行了一些测试。我最近在房屋周围安装了六类线以太网,因此我的有线连接速度达到 1Gbps,但 WiFi 连接速度却低得多。

你可能注意到它记录到 16Gbps。那是我使用服务器进行自我测试,因此它只是在测试写入磁盘的速度。该服务器具有仅 16 Gbps 的硬盘驱动器,但是我的台式机有 46Gbps,另外我的(较新的)笔记本超过了 60Gbps,因为它们都有固态硬盘。

 title=

总结

通过这些工具来了解你的网络速度是一项非常简单的任务。如果你更喜欢脚本或者在命令行中运行,上面的任何一个都能满足你。如果你要了解点对点的指标,iPerf 能满足你。

你还使用其他哪些工具来衡量家庭网络?在评论中分享你的评论。

本文最初发表在 Ben Nuttall 的 Tooling blog 上,并获准在此使用。


via: https://opensource.com/article/20/1/internet-speed-tests

作者:Ben Nuttall 选题:lujun9972 译者:geekpi 校对:wxy

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

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

快速启动或快速重启在各种情况下起着至关重要的作用。为了保持所有服务的高可用性和更好的性能,嵌入式设备的快速启动至关重要。设想有一台运行着没有启用快速启动的 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中国 荣誉推出

在我们的 20 个使用开源提升生产力的系列的第十三篇文章中使用 wego 来了解出门前你是否要需要外套、雨伞或者防晒霜。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 wego 了解天气

过去十年我对我的职业最满意的地方之一是大多数时候是远程工作。尽管现实情况是我很多时候是在家里办公,但我可以在世界上任何地方工作。缺点是,离家时我会根据天气做出一些决定。在我居住的地方,“晴朗”可以表示从“酷热”、“低于零度”到“一小时内会小雨”。能够了解实际情况和快速预测非常有用。

 title=

Wego 是用 Go 编写的程序,可以获取并显示你的当地天气。如果你愿意,它甚至可以用闪亮的 ASCII 艺术效果进行渲染。

要安装 wego,你需要确保在系统上安装了Go。之后,你可以使用 go get 命令获取最新版本。你可能还想将 ~/go/bin 目录添加到路径中:

go get -u github.com/schachmat/wego
export PATH=~/go/bin:$PATH
wego

首次运行时,wego 会报告缺失 API 密钥。现在你需要决定一个后端。默认后端是 Forecast.io,它是 Dark Sky的一部分。wego 还支持 OpenWeatherMapWorldWeatherOnline。我更喜欢 OpenWeatherMap,因此我将在此向你展示如何设置。

你需要在 OpenWeatherMap 中注册 API 密钥。注册是免费的,尽管免费的 API 密钥限制了一天可以查询的数量,但这对于普通用户来说应该没问题。得到 API 密钥后,将它放到 ~/.wegorc 文件中。现在可以填写你的位置、语言以及使用公制、英制(英国/美国)还是国际单位制(SI)。OpenWeatherMap 可通过名称、邮政编码、坐标和 ID 确定位置,这是我喜欢它的原因之一。

# wego configuration for OEM
aat-coords=false
aat-monochrome=false
backend=openweathermap
days=3
forecast-lang=en
frontend=ascii-art-table
jsn-no-indent=false
location=Pittsboro
owm-api-key=XXXXXXXXXXXXXXXXXXXXX
owm-debug=false
owm-lang=en
units=imperial

现在,在命令行运行 wego 将显示接下来三天的当地天气。

wego 还可以输出 JSON 以便程序使用,还可显示 emoji。你可以使用 -f 参数或在 .wegorc 文件中指定前端。

 title=

如果你想在每次打开 shell 或登录主机时查看天气,只需将 wego 添加到 ~/.bashrc(我这里是 ~/.zshrc)即可。

wttr.in 项目是 wego 上的基于 Web 的封装。它提供了一些其他显示选项,并且可以在同名网站上看到。关于 wttr.in 的一件很酷的事情是,你可以使用 curl 获取一行天气信息。我有一个名为 get_wttr 的 shell 函数,用于获取当前简化的预报信息。

get_wttr() {
  curl -s "wttr.in/Pittsboro?format=3"    
}

 title=

现在,在我离开家之前,我就可以通过命令行快速简单地获取我是否需要外套、雨伞或者防晒霜了。


via: https://opensource.com/article/20/1/open-source-weather-forecast

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

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