mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-29 21:41:00 +08:00
commit
34fc18bf60
138
published/20171216 Sysadmin 101- Troubleshooting.md
Normal file
138
published/20171216 Sysadmin 101- Troubleshooting.md
Normal file
@ -0,0 +1,138 @@
|
||||
系统管理员入门:排除故障
|
||||
======
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201908/06/100659pox8xkkr8zek888r.jpg)
|
||||
|
||||
我通常会严格保持此博客的技术性,将观察、意见等内容保持在最低限度。但是,这篇和接下来的几篇文章将介绍刚进入系统管理/SRE/系统工程师/sysops/devops-ops(无论你想称自己是什么)角色的常见的基础知识。
|
||||
|
||||
请跟我来!
|
||||
|
||||
> “我的网站很慢!”
|
||||
|
||||
我只是随机选择了本文的问题类型,这也可以应用于任何与系统管理员相关的故障排除。我并不是要炫耀那些可以发现最多的信息的最聪明的“金句”。它也不是一个详尽的、一步步指导的、并在最后一个方框中导向“利润”一词的“流程图”。
|
||||
|
||||
我会通过一些例子展示常规的方法。
|
||||
|
||||
示例场景仅用于说明本文目的。它们有时会做一些不适用于所有情况的假设,而且肯定会有很多读者在某些时候说“哦,但我觉得你会发现……”。
|
||||
|
||||
但那可能会让我们错失重点。
|
||||
|
||||
十多年来,我一直在从事于支持工作,或在支持机构工作,有一件事让我一次又一次地感到震惊,这促使我写下了这篇文章。
|
||||
|
||||
**有许多技术人员在遇到问题时的本能反应,就是不管三七二十一去尝试可能的解决方案。**
|
||||
|
||||
*“我的网站很慢,所以”,*
|
||||
|
||||
* 我将尝试增大 `MaxClients`/`MaxRequestWorkers`/`worker_connections`
|
||||
* 我将尝试提升 `innodb_buffer_pool_size`/`effective_cache_size`
|
||||
* 我打算尝试启用 `mod_gzip`(遗憾的是,这是真实的故事)
|
||||
|
||||
*“我曾经看过这个问题,它是因为某种原因造成的 —— 所以我估计还是这个原因,它应该能解决这个问题。”*
|
||||
|
||||
这浪费了很多时间,并会让你在黑暗中盲目乱撞,胡乱鼓捣。
|
||||
|
||||
你的 InnoDB 的缓冲池也许达到 100% 的利用率,但这可能只是因为有人运行了一段时间的一次性大型报告导致的。如果没有排除这种情况,那你就是在浪费时间。
|
||||
|
||||
### 开始之前
|
||||
|
||||
在这里,我应该说明一下,虽然这些建议同样适用于许多角色,但我是从一般的支持系统管理员的角度来撰写的。在一个成熟的内部组织中,或与规模较大的、规范管理的或“企业级”客户合作时,你通常会对一切都进行检测、测量、绘制、整理(甚至不是文字),并发出警报。那么你的方法也往往会有所不同。让我们在这里先忽略这种情况。
|
||||
|
||||
如果你没有这种东西,那就随意了。
|
||||
|
||||
### 澄清问题
|
||||
|
||||
首先确定实际上是什么问题。“慢”可以是多种形式的。是收到第一个字节的时间吗?从糟糕的 Javascript 加载和每页加载要拉取 15 MB 的静态内容,这是一个完全不同类型的问题。是慢,还是比通常慢?这是两个非常不同的解决方案!
|
||||
|
||||
在你着手做某事之前,确保你知道实际报告和遇到的问题。找到问题的根源通常很困难,但即便找不到也必须找到问题本身。
|
||||
|
||||
否则,这相当于系统管理员带着一把刀去参加枪战。
|
||||
|
||||
### 唾手可得
|
||||
|
||||
首次登录可疑服务器时,你可以查找一些常见的嫌疑对象。事实上,你应该这样做!每当我登录到服务器时,我都会发出一些命令来快速检查一些事情:我们是否发生了页交换(`free` / `vmstat`),磁盘是否繁忙(`top` / `iostat` / `iotop`),是否有丢包(`netstat` / `proc` / `net` / `dev`),是否处于连接数过多的状态(`netstat`),有什么东西占用了 CPU(`top`),谁在这个服务器上(`w` / `who`),syslog 和 `dmesg` 中是否有引人注目的消息?
|
||||
|
||||
如果你从 RAID 控制器得到 2000 条抱怨直写式缓存没有生效的消息,那么继续进行是没有意义的。
|
||||
|
||||
这用不了半分钟。如果什么都没有引起你的注意 —— 那么继续。
|
||||
|
||||
### 重现问题
|
||||
|
||||
如果某处确实存在问题,并且找不到唾手可得的信息。
|
||||
|
||||
那么采取所有步骤来尝试重现问题。当你可以重现该问题时,你就可以观察它。**当你能观察到时,你就可以解决。**如果在第一步中尚未显现出或覆盖了问题所在,询问报告问题的人需要采取哪些确切步骤来重现问题。
|
||||
|
||||
对于由太阳耀斑或只能运行在 OS/2 上的客户端引起的问题,重现并不总是可行的。但你的第一个停靠港应该是至少尝试一下!在一开始,你所知道的是“某人认为他们的网站很慢”。对于那些人,他们可能还在用他们的 GPRS 手机,也可能正在安装 Windows 更新。你在这里挖掘得再深也是浪费时间。
|
||||
|
||||
尝试重现!
|
||||
|
||||
### 检查日志
|
||||
|
||||
我对于有必要包括这一点感到很难过。但是我曾经看到有人在运行 `tail /var/log/...` 之后几分钟就不看了。大多数 *NIX 工具都特别喜欢记录日志。任何明显的错误都会在大多数应用程序日志中显得非常突出。检查一下。
|
||||
|
||||
### 缩小范围
|
||||
|
||||
如果没有明显的问题,但你可以重现所报告的问题,那也很棒。所以,你现在知道网站是慢的。现在你已经把范围缩小到:浏览器的渲染/错误、应用程序代码、DNS 基础设施、路由器、防火墙、网卡(所有的)、以太网电缆、负载均衡器、数据库、缓存层、会话存储、Web 服务器软件、应用程序服务器、内存、CPU、RAID 卡、磁盘等等。
|
||||
|
||||
根据设置添加一些其他可能的罪魁祸首。它们也可能是 SAN,也不要忘记硬件 WAF!以及…… 你明白我的意思。
|
||||
|
||||
如果问题是接收到第一个字节的时间,你当然会开始对 Web 服务器去应用上已知的修复程序,就是它响应缓慢,你也觉得几乎就是它,对吧?但是你错了!
|
||||
|
||||
你要回去尝试重现这个问题。只是这一次,你要试图消除尽可能多的潜在问题来源。
|
||||
|
||||
你可以非常轻松地消除绝大多数可能的罪魁祸首:你能从服务器本地重现问题吗?恭喜,你刚刚节省了自己必须尝试修复 BGP 路由的时间。
|
||||
|
||||
如果不能,请尝试使用同一网络上的其他计算机。如果可以的话,至少你可以将防火墙移到你的嫌疑人名单上,(但是要注意一下那个交换机!)
|
||||
|
||||
是所有的连接都很慢吗?虽然服务器是 Web 服务器,但并不意味着你不应该尝试使用其他类型的服务进行重现问题。[netcat][1] 在这些场景中非常有用(但是你的 SSH 连接可能会一直有延迟,这可以作为线索)! 如果这也很慢,你至少知道你很可能遇到了网络问题,可以忽略掉整个 Web 软件及其所有组件的问题。用这个知识(我不收 200 美元)再次从顶部开始,按你的方式由内到外地进行!
|
||||
|
||||
即使你可以在本地复现 —— 仍然有很多“因素”留下。让我们排除一些变量。你能用普通文件重现它吗? 如果 `i_am_a_1kb_file.html` 很慢,你就知道它不是数据库、缓存层或 OS 以外的任何东西和 Web 服务器本身的问题。
|
||||
|
||||
你能用一个需要解释或执行的 `hello_world.(py|php|js|rb..)` 文件重现问题吗?如果可以的话,你已经大大缩小了范围,你可以专注于少数事情。如果 `hello_world` 可以马上工作,你仍然学到了很多东西!你知道了没有任何明显的资源限制、任何满的队列或在任何地方卡住的 IPC 调用,所以这是应用程序正在做的事情或它正在与之通信的事情。
|
||||
|
||||
所有页面都慢吗?或者只是从第三方加载“实时分数数据”的页面慢?
|
||||
|
||||
**这可以归结为:你仍然可以重现这个问题所涉及的最少量的“因素”是什么?**
|
||||
|
||||
我们的示例是一个缓慢的网站,但这同样适用于几乎所有问题。邮件投递?你能在本地投递吗?能发给自己吗?能发给<常见的服务提供者>吗?使用小的、纯文本的消息进行测试。尝试直到遇到 2MB 拥堵时。使用 STARTTLS 和不使用 STARTTLS 呢?按你的方式由内到外地进行!
|
||||
|
||||
这些步骤中的每一步都只需要几秒钟,远远快于实施大多数“可能的”修复方案。
|
||||
|
||||
### 隔离观察
|
||||
|
||||
到目前为止,当你去除特定组件时无法重现问题时,你可能已经偶然发现了问题所在。
|
||||
|
||||
但如果你还没有,或者你仍然不知道**为什么**:一旦你找到了一种方法来重现问题,你和问题之间的“东西”(某个技术术语)最少,那么就该开始隔离和观察了。
|
||||
|
||||
请记住,许多服务可以在前台运行和/或启用调试。对于某些类别的问题,执行此操作通常非常有帮助。
|
||||
|
||||
这也是你的传统武器库发挥作用的地方。`strace`、`lsof`、`netstat`、`GDB`、`iotop`、`valgrind`、语言分析器(cProfile、xdebug、ruby-prof ……)那些类型的工具。
|
||||
|
||||
一旦你走到这一步,你就很少能摆脱剖析器或调试器了。
|
||||
|
||||
[strace][2] 通常是一个非常好的起点。
|
||||
|
||||
你可能会注意到应用程序停留在某个连接到端口 3306 的套接字文件描述符上的特定 `read()` 调用上。你会知道该怎么做。
|
||||
|
||||
转到 MySQL 并再次从顶部开始。显而易见:“等待某某锁”、死锁、`max_connections` ……进而:是所有查询?还是只写请求?只有某些表?还是只有某些存储引擎?等等……
|
||||
|
||||
你可能会注意到调用外部 API 资源的 `connect()` 需要五秒钟才能完成,甚至超时。你会知道该怎么做。
|
||||
|
||||
你可能会注意到,在同一对文件中有 1000 个调用 `fstat()` 和 `open()` 作为循环依赖的一部分。你会知道该怎么做。
|
||||
|
||||
它可能不是那些特别的东西,但我保证,你会发现一些东西。
|
||||
|
||||
如果你只是从这一部分学到一点,那也不错;学习使用 `strace` 吧!**真的**学习它,阅读整个手册页。甚至不要跳过历史部分。`man` 每个你还不知道它做了什么的系统调用。98% 的故障排除会话以 `strace` 而终结。
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
via: http://northernmost.org/blog/troubleshooting-101/index.html
|
||||
|
||||
作者:[Erik Ljungstrom][a]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://northernmost.org
|
||||
[1]:http://nc110.sourceforge.net/
|
||||
[2]:https://linux.die.net/man/1/strace
|
@ -0,0 +1,106 @@
|
||||
Logreduce:用 Python 和机器学习去除日志噪音
|
||||
======
|
||||
|
||||
> Logreduce 可以通过从大量日志数据中挑选出异常来节省调试时间。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/sound-radio-noise-communication.png?itok=KMNn9QrZ)
|
||||
|
||||
持续集成(CI)作业会生成大量数据。当一个作业失败时,弄清楚出了什么问题可能是一个繁琐的过程,它涉及到调查日志以发现根本原因 —— 这通常只能在全部的作业输出的一小部分中找到。为了更容易地将最相关的数据与其余数据分开,可以使用先前成功运行的作业结果来训练 [Logreduce][1] 机器学习模型,以从失败的运行日志中提取异常。
|
||||
|
||||
此方法也可以应用于其他用例,例如,从 [Journald][2] 或其他系统级的常规日志文件中提取异常。
|
||||
|
||||
### 使用机器学习来降低噪音
|
||||
|
||||
典型的日志文件包含许多标称事件(“基线”)以及与开发人员相关的一些例外事件。基线可能包含随机元素,例如难以检测和删除的时间戳或唯一标识符。要删除基线事件,我们可以使用 [k-最近邻模式识别算法][3](k-NN)。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/ml-generic-workflow.png)
|
||||
|
||||
日志事件必须转换为可用于 k-NN 回归的数值。使用通用特征提取工具 [HashingVectorizer][4] 可以将该过程应用于任何类型的日志。它散列每个单词并在稀疏矩阵中对每个事件进行编码。为了进一步减少搜索空间,这个标记化过程删除了已知的随机单词,例如日期或 IP 地址。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/hashing-vectorizer.png)
|
||||
|
||||
训练模型后,k-NN 搜索可以告诉我们每个新事件与基线的距离。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/kneighbors.png)
|
||||
|
||||
这个 [Jupyter 笔记本][5] 演示了该稀疏矩阵向量的处理和图形。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/anomaly-detection-with-scikit-learn.png)
|
||||
|
||||
### Logreduce 介绍
|
||||
|
||||
Logreduce Python 软件透明地实现了这个过程。Logreduce 的最初目标是使用构建数据库来协助分析 [Zuul CI][6] 作业的失败问题,现在它已集成到 [Software Factory 开发车间][7]的作业日志处理中。
|
||||
|
||||
最简单的是,Logreduce 会比较文件或目录并删除相似的行。Logreduce 为每个源文件构建模型,并使用以下语法输出距离高于定义阈值的任何目标行:`distance | filename:line-number: line-content`。
|
||||
|
||||
```
|
||||
$ logreduce diff /var/log/audit/audit.log.1 /var/log/audit/audit.log
|
||||
INFO logreduce.Classifier - Training took 21.982s at 0.364MB/s (1.314kl/s) (8.000 MB - 28.884 kilo-lines)
|
||||
0.244 | audit.log:19963: type=USER_AUTH acct="root" exe="/usr/bin/su" hostname=managesf.sftests.com
|
||||
INFO logreduce.Classifier - Testing took 18.297s at 0.306MB/s (1.094kl/s) (5.607 MB - 20.015 kilo-lines)
|
||||
99.99% reduction (from 20015 lines to 1
|
||||
|
||||
```
|
||||
|
||||
更高级的 Logreduce 用法可以离线训练模型以便重复使用。可以使用基线的许多变体来拟合 k-NN 搜索树。
|
||||
|
||||
```
|
||||
$ logreduce dir-train audit.clf /var/log/audit/audit.log.*
|
||||
INFO logreduce.Classifier - Training took 80.883s at 0.396MB/s (1.397kl/s) (32.001 MB - 112.977 kilo-lines)
|
||||
DEBUG logreduce.Classifier - audit.clf: written
|
||||
$ logreduce dir-run audit.clf /var/log/audit/audit.log
|
||||
```
|
||||
|
||||
Logreduce 还实现了接口,以发现 Journald 时间范围(天/周/月)和 Zuul CI 作业构建历史的基线。它还可以生成 HTML 报告,该报告在一个简单的界面中将在多个文件中发现的异常进行分组。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/html-report.png)
|
||||
|
||||
### 管理基线
|
||||
|
||||
使用 k-NN 回归进行异常检测的关键是拥有一个已知良好基线的数据库,该模型使用数据库来检测偏离太远的日志行。此方法依赖于包含所有标称事件的基线,因为基线中未找到的任何内容都将报告为异常。
|
||||
|
||||
CI 作业是 k-NN 回归的重要目标,因为作业的输出通常是确定性的,之前的运行结果可以自动用作基线。 Logreduce 具有 Zuul 作业角色,可以将其用作失败的作业发布任务的一部分,以便发布简明报告(而不是完整作业的日志)。只要可以提前构建基线,该原则就可以应用于其他情况。例如,标称系统的 [SoS 报告][8] 可用于查找缺陷部署中的问题。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/baselines.png)
|
||||
|
||||
### 异常分类服务
|
||||
|
||||
下一版本的 Logreduce 引入了一种服务器模式,可以将日志处理卸载到外部服务,在外部服务中可以进一步分析该报告。它还支持导入现有报告和请求以分析 Zuul 构建。这些服务以异步方式运行分析,并具有 Web 界面以调整分数并消除误报。
|
||||
|
||||
![](https://opensource.com/sites/default/files/uploads/classification-interface.png)
|
||||
|
||||
已审核的报告可以作为独立数据集存档,其中包含目标日志文件和记录在一个普通的 JSON 文件中的异常行的分数。
|
||||
|
||||
### 项目路线图
|
||||
|
||||
Logreduce 已经能有效使用,但是有很多机会来改进该工具。未来的计划包括:
|
||||
|
||||
* 策划在日志文件中发现的许多带注释的异常,并生成一个公共域数据集以进行进一步研究。日志文件中的异常检测是一个具有挑战性的主题,并且有一个用于测试新模型的通用数据集将有助于识别新的解决方案。
|
||||
* 重复使用带注释的异常模型来优化所报告的距离。例如,当用户通过将距离设置为零来将日志行标记为误报时,模型可能会降低未来报告中这些日志行的得分。
|
||||
* 对存档异常取指纹特征以检测新报告何时包含已知的异常。因此,该服务可以通知用户该作业遇到已知问题,而不是报告异常的内容。解决问题后,该服务可以自动重新启动该作业。
|
||||
* 支持更多基准发现接口,用于 SOS 报告、Jenkins 构建、Travis CI 等目标。
|
||||
|
||||
如果你有兴趣参与此项目,请通过 #log-classify Freenode IRC 频道与我们联系。欢迎反馈!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/9/quiet-log-noise-python-and-machine-learning
|
||||
|
||||
作者:[Tristan de Cacqueray][a]
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/tristanc
|
||||
[1]: https://pypi.org/project/logreduce/
|
||||
[2]: http://man7.org/linux/man-pages/man8/systemd-journald.service.8.html
|
||||
[3]: https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
|
||||
[4]: http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html
|
||||
[5]: https://github.com/TristanCacqueray/anomaly-detection-workshop-opendev/blob/master/datasets/notebook/anomaly-detection-with-scikit-learn.ipynb
|
||||
[6]: https://zuul-ci.org
|
||||
[7]: https://www.softwarefactory-project.io
|
||||
[8]: https://sos.readthedocs.io/en/latest/
|
||||
[9]: https://www.openstack.org/summit/berlin-2018/summit-schedule/speakers/4307
|
||||
[10]: https://www.openstack.org/summit/berlin-2018/
|
235
published/20190304 How to Install MongoDB on Ubuntu.md
Normal file
235
published/20190304 How to Install MongoDB on Ubuntu.md
Normal file
@ -0,0 +1,235 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11175-1.html)
|
||||
[#]: subject: (How to Install MongoDB on Ubuntu)
|
||||
[#]: via: (https://itsfoss.com/install-mongodb-ubuntu)
|
||||
[#]: author: (Sergiu https://itsfoss.com/author/sergiu/)
|
||||
|
||||
如何在 Ubuntu 上安装 MongoDB
|
||||
======
|
||||
|
||||
> 本教程介绍了在 Ubuntu 和基于 Ubuntu 的 Linux 发行版上安装 MongoDB 的两种方法。
|
||||
|
||||
[MongoDB][1] 是一个越来越流行的自由开源的 NoSQL 数据库,它将数据存储在类似 JSON 的灵活文档集中,这与 SQL 数据库中常见的表格形式形成对比。
|
||||
|
||||
你很可能发现在现代 Web 应用中使用 MongoDB。它的文档模型使得使用各种编程语言能非常直观地访问和处理它。
|
||||
|
||||
![mongodb Ubuntu][2]
|
||||
|
||||
在本文中,我将介绍两种在 Ubuntu 上安装 MongoDB 的方法。
|
||||
|
||||
### 在基于 Ubuntu 的发行版上安装 MongoDB
|
||||
|
||||
1. 使用 Ubuntu 仓库安装 MongoDB。简单但不是最新版本的 MongoDB
|
||||
2. 使用其官方仓库安装 MongoDB。稍微复杂,但你能得到最新版本的 MongoDB。
|
||||
|
||||
第一种安装方法更容易,但如果你计划使用官方支持的最新版本,那么我建议使用第二种方法。
|
||||
|
||||
有些人可能更喜欢使用 snap 包。Ubuntu 软件中心提供了 snap,但我不建议使用它们,因为他们现在已经过期了,因此我这里不会提到。
|
||||
|
||||
### 方法 1:从 Ubuntu 仓库安装 MongoDB
|
||||
|
||||
这是在系统中安装 MongoDB 的简便方法,你只需输入一个命令即可。
|
||||
|
||||
#### 安装 MongoDB
|
||||
|
||||
首先,确保你的包是最新的。打开终端并输入:
|
||||
|
||||
```
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
|
||||
继续安装 MongoDB:
|
||||
|
||||
```
|
||||
sudo apt install mongodb
|
||||
```
|
||||
|
||||
这就完成了!MongoDB 现在安装到你的计算机上了。
|
||||
|
||||
MongoDB 服务应该在安装时自动启动,但要检查服务状态:
|
||||
|
||||
```
|
||||
sudo systemctl status mongodb
|
||||
```
|
||||
|
||||
![Check if the MongoDB service is running.][3]
|
||||
|
||||
你可以看到该服务是**活动**的。
|
||||
|
||||
#### 运行 MongoDB
|
||||
|
||||
MongoDB 目前是一个 systemd 服务,因此我们使用 `systemctl` 来检查和修改它的状态,使用以下命令:
|
||||
|
||||
```
|
||||
sudo systemctl status mongodb
|
||||
sudo systemctl stop mongodb
|
||||
sudo systemctl start mongodb
|
||||
sudo systemctl restart mongodb
|
||||
```
|
||||
|
||||
你也可以修改 MongoDB 是否自动随系统启动(默认:启用):
|
||||
|
||||
```
|
||||
sudo systemctl disable mongodb
|
||||
sudo systemctl enable mongodb
|
||||
```
|
||||
|
||||
要开始使用(创建和编辑)数据库,请输入:
|
||||
|
||||
```
|
||||
mongo
|
||||
```
|
||||
|
||||
这将启动 **mongo shell**。有关查询和选项的详细信息,请查看[手册][4]。
|
||||
|
||||
**注意:**根据你计划使用 MongoDB 的方式,你可能需要调整防火墙。不过这超出了本篇的内容,并且取决于你的配置。
|
||||
|
||||
#### 卸载 MongoDB
|
||||
|
||||
如果你从 Ubuntu 仓库安装 MongoDB 并想要卸载它(可能要使用官方支持的方式安装),请输入:
|
||||
|
||||
```
|
||||
sudo systemctl stop mongodb
|
||||
sudo apt purge mongodb
|
||||
sudo apt autoremove
|
||||
```
|
||||
|
||||
这应该会完全卸载 MongoDB。确保**备份**你可能想要保留的任何集合或文档,因为它们将被删除!
|
||||
|
||||
### 方法 2:在 Ubuntu 上安装 MongoDB 社区版
|
||||
|
||||
这是推荐的安装 MongoDB 的方法,它使用包管理器。你需要多打几条命令,对于 Linux 新手而言,这可能会感到害怕。
|
||||
|
||||
但没有什么可怕的!我们将一步步说明安装过程。
|
||||
|
||||
#### 安装 MongoDB
|
||||
|
||||
由 MongoDB Inc. 维护的包称为 `mongodb-org`,而不是 `mongodb`(这是 Ubuntu 仓库中包的名称)。在开始之前,请确保系统上未安装 `mongodb`。因为包之间会发生冲突。让我们开始吧!
|
||||
|
||||
首先,我们必须导入公钥:
|
||||
|
||||
```
|
||||
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
|
||||
```
|
||||
|
||||
现在,你需要在源列表中添加一个新的仓库,以便你可以安装 MongoDB 社区版并获得自动更新:
|
||||
|
||||
```
|
||||
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
|
||||
```
|
||||
|
||||
要安装 `mongodb-org`,我们需要更新我们的包数据库,以便系统知道可用的新包:
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
现在你可以安装**最新稳定版**的 MongoDB:
|
||||
|
||||
```
|
||||
sudo apt install -y mongodb-org
|
||||
```
|
||||
|
||||
或者某个**特定版本**(在 `=` 后面修改版本号)
|
||||
|
||||
```
|
||||
sudo apt install -y mongodb-org=4.0.6 mongodb-org-server=4.0.6 mongodb-org-shell=4.0.6 mongodb-org-mongos=4.0.6 mongodb-org-tools=4.0.6
|
||||
```
|
||||
|
||||
如果你选择安装特定版本,请确保在所有位置都修改了版本号。如果你修改了 `mongodb-org=4.0.6`,你将安装最新版本。
|
||||
|
||||
默认情况下,使用包管理器(`apt-get`)更新时,MongoDB 将更新为最新的版本。要阻止这种情况发生(并冻结为已安装的版本),请使用:
|
||||
|
||||
```
|
||||
echo "mongodb-org hold" | sudo dpkg --set-selections
|
||||
echo "mongodb-org-server hold" | sudo dpkg --set-selections
|
||||
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
|
||||
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
|
||||
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
|
||||
```
|
||||
|
||||
你现在已经成功安装了 MongoDB!
|
||||
|
||||
#### 配置 MongoDB
|
||||
|
||||
默认情况下,包管理器将创建 `/var/lib/mongodb` 和 `/var/log/mongodb`,MongoDB 将使用 `mongodb` 用户帐户运行。
|
||||
|
||||
我不会去更改这些默认设置,因为这超出了本指南的范围。有关详细信息,请查看[手册][5]。
|
||||
|
||||
`/etc/mongod.conf` 中的设置在启动/重新启动 **mongodb** 服务实例时生效。
|
||||
|
||||
##### 运行 MongoDB
|
||||
|
||||
要启动 mongodb 的守护进程 `mongod`,请输入:
|
||||
|
||||
```
|
||||
sudo service mongod start
|
||||
```
|
||||
|
||||
现在你应该验证 `mongod` 进程是否已成功启动。此信息(默认情况下)保存在 `/var/log/mongodb/mongod.log` 中。我们来看看文件的内容:
|
||||
|
||||
```
|
||||
sudo cat /var/log/mongodb/mongod.log
|
||||
```
|
||||
|
||||
![Check MongoDB logs to see if the process is running properly.][6]
|
||||
|
||||
只要你在某处看到:`[initandlisten] waiting for connections on port 27017`,就说明进程正常运行。
|
||||
|
||||
**注意**:27017 是 `mongod` 的默认端口。
|
||||
|
||||
要停止/重启 `mongod`,请输入:
|
||||
|
||||
```
|
||||
sudo service mongod stop
|
||||
sudo service mongod restart
|
||||
```
|
||||
|
||||
现在,你可以通过打开 **mongo shell** 来使用 MongoDB:
|
||||
|
||||
```
|
||||
mongo
|
||||
```
|
||||
|
||||
#### 卸载 MongoDB
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```
|
||||
sudo service mongod stop
|
||||
sudo apt purge mongodb-org*
|
||||
```
|
||||
|
||||
要删除**数据库**和**日志文件**(确保**备份**你要保留的内容!):
|
||||
|
||||
```
|
||||
sudo rm -r /var/log/mongodb
|
||||
sudo rm -r /var/lib/mongodb
|
||||
```
|
||||
|
||||
### 总结
|
||||
|
||||
MongoDB 是一个很棒的 NoSQL 数据库,它易于集成到现代项目中。我希望本教程能帮助你在 Ubuntu 上安装它!在下面的评论中告诉我们你计划如何使用 MongoDB。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-mongodb-ubuntu
|
||||
|
||||
作者:[Sergiu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/sergiu/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.mongodb.com/
|
||||
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/03/mongodb-ubuntu.jpeg?resize=800%2C450&ssl=1
|
||||
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/mongodb_check_status.jpg?fit=800%2C574&ssl=1
|
||||
[4]: https://docs.mongodb.com/manual/tutorial/getting-started/
|
||||
[5]: https://docs.mongodb.com/manual/
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/mongodb_org_check_logs.jpg?fit=800%2C467&ssl=1
|
@ -0,0 +1,92 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (LazyWolfLin)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11176-1.html)
|
||||
[#]: subject: (Continuous integration testing for the Linux kernel)
|
||||
[#]: via: (https://opensource.com/article/19/6/continuous-kernel-integration-linux)
|
||||
[#]: author: (Major Hayden https://opensource.com/users/mhayden)
|
||||
|
||||
Linux 内核的持续集成测试
|
||||
======
|
||||
|
||||
> CKI 团队是如何防止 bug 被合并到 Linux 内核中。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201908/02/112520aidijdddo9wwvbiv.jpg)
|
||||
|
||||
Linux 内核的每个发布版本包含了来自 1,700 个开发者产生的 14,000 个变更集,很显然,这使得 Linux 内核快速迭代的同时也产生了巨大的复杂性问题。内核上 Bug 有小麻烦也有大问题,有时是系统崩溃,有时是数据丢失。
|
||||
|
||||
随着越来越多的项目对于持续集成(CI)的呼声,[内核持续集成(CKI)][2]小组秉承着一个任务目标:防止 Bug 被合并到内核当中。
|
||||
|
||||
### Linux 测试问题
|
||||
|
||||
许多 Linux 发行版只在需要的时候对 Linux 内核进行测试。而这种测试往往只在版本发布时或者用户发现错误时进行。
|
||||
|
||||
有时候,出现玄学问题时,维护人员需要在包含了数万个补丁的变更中匆忙地寻找哪个补丁导致这个新的玄学 Bug。诊断 Bug 需要专业的硬件设备、一系列的触发器以及内核相关的专业知识。
|
||||
|
||||
#### CI 和 Linux
|
||||
|
||||
许多现代软件代码库都采用某种自动化 CI 测试机制,能够在提交进入代码存储库之前对其进行测试。这种自动化测试使得维护人员可以通过查看 CI 测试报告来发现软件质量问题以及大多数的错误。一些简单的项目,比如某个 Python 库,附带的大量工具使得整个检查过程更简单。
|
||||
|
||||
在任何测试之前都需要配置和编译 Linux。而这么做将耗费大量的时间和计算资源。此外,Linux 内核必需在虚拟机或者裸机上启动才能进行测试。而访问某些硬件架构需要额外的开销或者非常慢的仿真。因此,人们必须确定一组能够触发错误或者验证修复的测试集。
|
||||
|
||||
#### CKI 团队如何运作?
|
||||
|
||||
Red Hat 公司的 CKI 团队当前正追踪来自数个内部内核分支和上游的[稳定内核分支树][3]等内核分支的更改。我们关注每个代码库的两类关键事件:
|
||||
|
||||
1. 当维护人员合并 PR 或者补丁时,代码库变化后的最终结果。
|
||||
2. 当开发人员通过拼凑或者稳定补丁队列发起变更合并时。
|
||||
|
||||
当这些事件发生时,自动化工具开始执行,[GitLab CI 管道][4]开始进行测试。一旦管道开始执行 [linting][5] 脚本、合并每一个补丁,并为多种硬件架构编译内核,真正的测试便开始了。我们会在六分钟内完成四种硬件架构的内核编译工作,并且通常会在两个小时或更短的时间内将反馈提交到稳定邮件列表中。(自 2019 年 1 月起)每月执行超过 100,000 次内核测试,并完成了超过 11,000 个 GitLab 管道。
|
||||
|
||||
每个内核都会在本地硬件架构上启动,其中包含:
|
||||
|
||||
* [aarch64][6]:64 位 [ARM][7],例如 [Cavium(当前是 Marvell)ThunderX][8]。
|
||||
* [ppc64/ppc64le][9]:大端和小端的 [IBM POWER][10] 系统。
|
||||
* [s390x][11]:[IBM Zseries][12] 大型机
|
||||
* [x86_64][13]:[Intel][14] 和 [AMD][15] 工作站、笔记本和服务器。
|
||||
|
||||
这些内核上运行了包括 [Linux 测试项目(LTP)][16]在内的多个测试,其中包括使用常用测试工具的大量测试。我们 CKI 团队开源了超过 44 个测试并将继续开源更多测试。
|
||||
|
||||
### 参与其中
|
||||
|
||||
上游的内核测试工作日渐增多。包括 [Google][17]、Intel、[Linaro][18] 和 [Sony][19] 在内的许多公司为各种内核提供了测试输出。每一项工作都专注于为上游内核以及每个公司的客户群带来价值。
|
||||
|
||||
如果你或者你的公司想要参与这一工作,请参加在 9 月份在葡萄牙里斯本举办的 [Linux Plumbers Conference 2019][20]。在会议结束后的两天加入我们的 Kernel CI hackfest 活动,并推动快速内核测试的发展。
|
||||
|
||||
更多详细信息,[请见][21]我在 Texas Linux Fest 2019 上的演讲。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/continuous-kernel-integration-linux
|
||||
|
||||
作者:[Major Hayden][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[LazyWolfLin](https://github.com/LazyWolfLin)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/mhayden
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_kernel_clang_vscode.jpg?itok=fozZ4zrr "Linux kernel source code (C) in Visual Studio Code"
|
||||
[2]: https://cki-project.org/
|
||||
[3]: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
|
||||
[4]: https://docs.gitlab.com/ee/ci/pipelines.html
|
||||
[5]: https://en.wikipedia.org/wiki/Lint_(software)
|
||||
[6]: https://en.wikipedia.org/wiki/ARM_architecture
|
||||
[7]: https://www.arm.com/
|
||||
[8]: https://www.marvell.com/server-processors/thunderx-arm-processors/
|
||||
[9]: https://en.wikipedia.org/wiki/Ppc64
|
||||
[10]: https://www.ibm.com/it-infrastructure/power
|
||||
[11]: https://en.wikipedia.org/wiki/Linux_on_z_Systems
|
||||
[12]: https://www.ibm.com/it-infrastructure/z
|
||||
[13]: https://en.wikipedia.org/wiki/X86-64
|
||||
[14]: https://www.intel.com/
|
||||
[15]: https://www.amd.com/
|
||||
[16]: https://github.com/linux-test-project/ltp
|
||||
[17]: https://www.google.com/
|
||||
[18]: https://www.linaro.org/
|
||||
[19]: https://www.sony.com/
|
||||
[20]: https://www.linuxplumbersconf.org/
|
||||
[21]: https://docs.google.com/presentation/d/1T0JaRA0wtDU0aTWTyASwwy_ugtzjUcw_ZDmC5KFzw-A/edit?usp=sharing
|
@ -0,0 +1,173 @@
|
||||
在树莓派上玩怀旧游戏的 5 种方法
|
||||
======
|
||||
|
||||
> 使用这些用于树莓派的开源平台来重温游戏的黄金时代。
|
||||
|
||||
![](https://d3avoj45mekucs.cloudfront.net/rojakdaily/media/jessica-chua/lifestyle/retro%20gaming%20comeback/retro-video-game-event.jpg)
|
||||
|
||||
他们使它们不像过去那样子了,对吧?我是说,电子游戏。
|
||||
|
||||
当然,现在的设备更强大了。<ruby>赛达尔公主<rt>Princess Zelda</rt></ruby>在过去每个边只有 16 个像素,而现在的图像处理能力足够处理她头上的每根头发。今天的处理器打败 1988 年的处理器简直不费吹灰之力。
|
||||
|
||||
但是你知道缺少什么吗?乐趣。
|
||||
|
||||
你有数之不尽的游戏,按下一个按钮就可以完成教程任务。可能有故事情节,当然杀死坏蛋也可以不需要故事情节,你需要的只是跳跃和射击。因此,毫不奇怪,树莓派最持久的流行用途之一就是重温上世纪八九十年代的 8 位和 16 位游戏的黄金时代。但从哪里开始呢?
|
||||
|
||||
在树莓派上有几种方法可以玩怀旧游戏。每一种都有自己的优点和缺点,我将在这里讨论这些。
|
||||
|
||||
### RetroPie
|
||||
|
||||
[RetroPie][1] 可能是树莓派上最受欢迎的复古游戏平台。它是一个可靠的万能选手,是模拟经典桌面和控制台游戏系统的绝佳选择。
|
||||
|
||||
![](https://retropie.org.uk/wp-content/uploads/2016/04/Amiga_Gameplay_2.png)
|
||||
|
||||
#### 介绍
|
||||
|
||||
RetroPie 构建在 [Raspbian][2] 上运行。如果你愿意,它也可以安装在现有的 Raspbian 镜像上。它使用 [EmulationStation][3] 作为开源仿真器库(包括 [Libretro][4] 仿真器)的图形前端。
|
||||
|
||||
不过,你要玩游戏其实并不需要理解上面的任何一个词。
|
||||
|
||||
#### 它有什么好处
|
||||
|
||||
入门很容易。你需要做的就是将镜像刻录到 SD 卡,配置你的控制器、复制游戏,然后开始杀死坏蛋。
|
||||
|
||||
它的庞大用户群意味着有大量的支持和信息,活跃的在线社区也可以求助问题。
|
||||
|
||||
除了随 RetroPie 镜像一起安装的仿真器之外,还有一个可以从包管理器安装的庞大的仿真器库,并且它一直在增长。RetroPie 还提供了用户友好的菜单系统来管理这些,可以节省你的时间。
|
||||
|
||||
从 RetroPie 菜单中可以轻松添加 Kodi 和配备了 Chromium 浏览器的 Raspbian 桌面。这意味着你的这套复古游戏装备也适于作为家庭影院、[YouTube][5]、[SoundCloud][6] 以及所有其它“休息室电脑”产品。
|
||||
|
||||
RetroPie 还有许多其它自定义选项:你可以更改菜单中的图形,为不同的模拟器设置不同的控制手柄配置,使你的树莓派文件系统的所有内容对你的本地 Windows 网络可见等等。
|
||||
|
||||
RetroPie 建立在 Raspbian 上,这意味着你可以探索这个树莓派最受欢迎的操作系统。你所发现的大多数树莓派项目和教程都是为 Raspbian 编写的,因此可以轻松地自定义和安装新内容。我已经使用我的 RetroPie 装备作为无线桥接器,在上面安装了 MIDI 合成器,自学了一些 Python,更重要的是,所有这些都没有影响它作为游戏机的用途。
|
||||
|
||||
#### 它有什么不太好的
|
||||
|
||||
RetroPie 的安装简单和易用性在某种程度上是一把双刃剑。你可以在 RetroPie 上玩了很长时间,而甚至没有学习过哪怕像 `sudo apt-get` 这样简单的东西,但这也意味着你错过了很多树莓派的体验。
|
||||
|
||||
但不一定必须如此;当你需要时,命令行仍然存在于底层,但是也许用户与 Bash shell 有点隔离,而使它最终并没有看上去那么可怕、另外,RetroPie 的主菜单只能通过控制手柄操作,当你没有接入手柄时,这可能很烦人,因为你一直将该系统用于游戏之外的事情。
|
||||
|
||||
#### 它适用于谁?
|
||||
|
||||
任何想直接玩一些游戏的人,任何想拥有最大、最好的模拟器库的人,以及任何想在不玩游戏的时候开始探索 Linux 的人。
|
||||
|
||||
### Recalbox
|
||||
|
||||
[Recalbox][7] 是一个较新的树莓派开源模拟器套件。它还支持其它基于 ARM 的小型计算机。
|
||||
|
||||
![](https://www.recalbox.com/images/features/4playermodo_hu5438825b9b6d1014226d20d231e650c2_230970_500x0_resize_q75_box.jpeg)
|
||||
|
||||
#### 介绍
|
||||
|
||||
与 Retropie 一样, Recalbox 基于 EmulationStation 和 Libretro。它的不同之处在于它不是基于 Raspbian 构建的,而是基于它自己的 Linux 发行版:RecalboxOS。
|
||||
|
||||
#### 它有什么好处
|
||||
|
||||
Recalbox 的设置比 RetroPie 更容易。你甚至不需要做 SD 卡镜像;只需复制一些文件即可。它还为一些游戏控制器提供开箱即用的支持,可以让你更快地开始游戏。它预装了 Kodi。这是一个现成的游戏和媒体平台。
|
||||
|
||||
#### 它有什么不太好的
|
||||
|
||||
Recalbox 比 RetroPie 拥有更少的仿真器、更少的自定义选项和更小的用户社区。
|
||||
|
||||
你的 Recalbox 装备可能一直用于模拟器和 Kodi,安装成什么样就是什么样。如果你想深入了解 Linux,你可能需要为 Raspbian 提供一个新的 SD 卡。
|
||||
|
||||
#### 它适用于谁?
|
||||
|
||||
如果你想要绝对简单的复古游戏体验,并且不想玩一些比较少见的游戏平台模拟器,或者你害怕一些技术性工作(也没有兴趣去做),那么 Recalbox 非常适合你。
|
||||
|
||||
对于大多数读者来说,Recalbox 可能最适合推荐给你那些不太懂技术的朋友或亲戚。它超级简单的设置和几乎没什么选项甚至可以让你免去帮助他们解决问题。
|
||||
|
||||
### 做个你自己的
|
||||
|
||||
好,你可能已经注意到 Retropie 和 Recalbox 都是由许多相同的开源组件构建的。那么为什么不自己把它们组合在一起呢?
|
||||
|
||||
#### 介绍
|
||||
|
||||
无论你想要的是什么,开源软件的本质意味着你可以使用现有的模拟器套件作为起点,或者随意使用它们。
|
||||
|
||||
#### 它有什么好处
|
||||
|
||||
如果你想有自己的自定义界面,我想除了亲自动手别无它法。这也是安装在 RetroPie 中没有的仿真器的方法,例如 [BeebEm][8]) 或 [ArcEm][9]。
|
||||
|
||||
#### 它有什么不太好的
|
||||
|
||||
嗯,工作量有点大。
|
||||
|
||||
#### 它适用于谁?
|
||||
|
||||
喜欢鼓捣的人,有动手能力的人,开发者,经验丰富的业余爱好者等。
|
||||
|
||||
### 原生 RISC OS 游戏体验
|
||||
|
||||
现在有一匹黑马:[RISC OS][10],它是 ARM 设备的原始操作系统。
|
||||
|
||||
#### 介绍
|
||||
|
||||
在 ARM 成为世界上最受欢迎的 CPU 架构之前,它最初是作为 Acorn Archimedes 的处理器而开发的。现在看起来这像是一种被遗忘的野兽,但是那几年,它作为世界上最强大的台式计算机独领风骚了好几年,并且吸引了大量的游戏开发项目。
|
||||
|
||||
树莓派中的 ARM 处理器是 Archimedes 的曾孙辈的 CPU,所以我们仍然可以在其上安装 RISC OS,只要做一点工作,就可以让这些游戏运行起来。这与我们到上面所介绍的仿真器方式不同,我们是在玩为该操作系统和 CPU 架构开发的游戏。
|
||||
|
||||
#### 它有什么好处
|
||||
|
||||
这是 RISC OS 的完美展现,这绝对是操作系统的瑰宝,非常值得一试。
|
||||
|
||||
事实上,你使用的是和以前几乎相同的操作系统来加载和玩你的游戏,这使得你的复古游戏装备像是一个时间机器一样,这无疑为该项目增添了一些魅力和复古价值。
|
||||
|
||||
有一些精彩的游戏只在 Archimedes 上发布过。Archimedes 的巨大硬件优势也意味着它通常拥有许多多平台游戏大作的最佳图形和最流畅的游戏体验。这类游戏的版权持有者非常慷慨,可以合法地免费下载它们。
|
||||
|
||||
#### 它有什么不太好的
|
||||
|
||||
安装了 RISC OS 之后,它仍然需要一些努力才能让游戏运行起来。这是 [入门指南][11]。
|
||||
|
||||
对于休息室来说,这绝对不是一个很好的全能选手。没有什么比 [Kodi][12] 更好的了。它有一个网络浏览器 [NetSurf][13],但它在支持现代 Web 方面还需要一些努力。你不会像使用模拟器套件那样得到大量可以玩的游戏。RISC OS Open 对于爱好者来说可以免费下载和使用,而且很多源代码已经开源,尽管由于这个名字,它不是一个 100% 的开源操作系统。
|
||||
|
||||
#### 它适用于谁?
|
||||
|
||||
这是专为追求新奇的人,绝对怀旧的人,想要探索一个来自上世纪 80 年代的有趣的操作系统的人,怀旧过去的 Acorn 机器的人,以及想要一个完全不同的怀旧游戏项目的人而设计的。
|
||||
|
||||
### 终端游戏
|
||||
|
||||
你是否真的需要安装模拟器或者一个异域风情的操作系统才能重温辉煌的日子?为什么不从命令行安装一些原生 Linux 游戏呢?
|
||||
|
||||
#### 介绍
|
||||
|
||||
有一系列原生的 Linux 游戏经过测试可以在 [树莓派][14] 上运行。
|
||||
|
||||
#### 它有什么好处
|
||||
|
||||
你可以使用命令行从程序包安装其中的大部分,然后开始玩。很容易。如果你已经有了一个跑起来的 Raspbian,那么它可能是你运行游戏的最快途径。
|
||||
|
||||
#### 它有什么不太好的
|
||||
|
||||
严格来说,这并不是真正的复古游戏。Linux 诞生于 1991 年,过了一段时间才成为了一个游戏平台。这些不是经典的 8 位和 16 位时代的游戏体验;后来有一些移植的游戏或受复古影响的游戏。
|
||||
|
||||
#### 它适用于谁?
|
||||
|
||||
如果你只是想找点乐子,这没问题。但如果你想重温过去,那就不完全是这样了。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/9/retro-gaming-raspberry-pi
|
||||
|
||||
作者:[James Mawson][a]
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
译者:[canhetingsky](https://github.com/canhetingsky)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/dxmjames
|
||||
[1]: https://retropie.org.uk/
|
||||
[2]: https://www.raspbian.org/
|
||||
[3]: https://emulationstation.org/
|
||||
[4]: https://www.libretro.com/
|
||||
[5]: https://www.youtube.com/
|
||||
[6]: https://soundcloud.com/
|
||||
[7]: https://www.recalbox.com/
|
||||
[8]: http://www.mkw.me.uk/beebem/
|
||||
[9]: http://arcem.sourceforge.net/
|
||||
[10]: https://opensource.com/article/18/7/gentle-intro-risc-os
|
||||
[11]: https://blog.dxmtechsupport.com.au/playing-badass-acorn-archimedes-games-on-a-raspberry-pi/
|
||||
[12]: https://kodi.tv/
|
||||
[13]: https://www.netsurf-browser.org/
|
||||
[14]: https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=51794
|
@ -0,0 +1,295 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11147-1.html)
|
||||
[#]: subject: (ClusterShell – A Nifty Tool To Run Commands On Cluster Nodes In Parallel)
|
||||
[#]: via: (https://www.2daygeek.com/clustershell-clush-run-commands-on-cluster-nodes-remote-system-in-parallel-linux/)
|
||||
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
|
||||
|
||||
ClusterShell:一个在集群节点上并行运行命令的好工具
|
||||
======
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201907/26/053202pgcgg1y1rc5l5mgg.jpg)
|
||||
|
||||
我们过去曾写过两篇如何并行地在多个远程服务器上运行命令的文章:[并行 SSH(PSSH)][1] 和[分布式 Shell(DSH)][2]。今天,我们将讨论相同类型的主题,但它允许我们在集群节点上执行相同的操作。你可能会想,我可以编写一个小的 shell 脚本来实现这个目的,而不是安装这些第三方软件包。
|
||||
|
||||
当然,你是对的,如果要在十几个远程系统中运行一些命令,那么你不需要使用它。但是,你的脚本需要一些时间来完成此任务,因为它是按顺序运行的。想想你要是在一千多台服务器上运行一些命令会是什么样子?在这种情况下,你的脚本用处不大。此外,完成任务需要很长时间。所以,要克服这种问题和情况,我们需要可以在远程计算机上并行运行命令。
|
||||
|
||||
为此,我们需要在一个并行应用程序中使用它。我希望这个解释可以解决你对并行实用程序的疑虑。
|
||||
|
||||
### ClusterShell
|
||||
|
||||
[ClusterShell][3] 是一个事件驱动的开源 Python 库,旨在在服务器场或大型 Linux 集群上并行运行本地或远程命令。(`clush` 即 [ClusterShell][3])。
|
||||
|
||||
它将处理在 HPC 集群上遇到的常见问题,例如在节点组上操作,使用优化过的执行算法运行分布式命令,以及收集结果和合并相同的输出,或检索返回代码。
|
||||
|
||||
ClusterShell 可以利用已安装在系统上的现有远程 shell 设施,如 SSH。
|
||||
|
||||
ClusterShell 的主要目标是通过为开发人员提供轻量级、但可扩展的 Python API 来改进高性能集群的管理。它还提供了 `clush`、`clubak` 和 `cluset`/`nodeset` 等方便的命令行工具,可以让传统的 shell 脚本利用这个库的一些功能。
|
||||
|
||||
ClusterShell 是用 Python 编写的,它需要 Python(v2.6+ 或 v3.4+)才能在你的系统上运行。
|
||||
|
||||
### 如何在 Linux 上安装 ClusterShell?
|
||||
|
||||
ClusterShell 包在大多数发行版的官方包管理器中都可用。因此,使用发行版包管理器工具进行安装。
|
||||
|
||||
对于 Fedora 系统,使用 [DNF 命令][4]来安装 clustershell。
|
||||
|
||||
```
|
||||
$ sudo dnf install clustershell
|
||||
```
|
||||
|
||||
如果系统默认是 Python 2,这会安装 Python 2 模块和工具,可以运行以下命令安装 Python 3 开发包。
|
||||
|
||||
```
|
||||
$ sudo dnf install python3-clustershell
|
||||
```
|
||||
|
||||
在执行 clustershell 安装之前,请确保你已在系统上启用 [EPEL 存储库][5]。
|
||||
|
||||
对于 RHEL/CentOS 系统,使用 [YUM 命令][6] 来安装 clustershell。
|
||||
|
||||
```
|
||||
$ sudo yum install clustershell
|
||||
```
|
||||
|
||||
如果系统默认是 Python 2,这会安装 Python 2 模块和工具,可以运行以下命令安装 Python 3 开发包。
|
||||
|
||||
```
|
||||
$ sudo yum install python34-clustershell
|
||||
```
|
||||
|
||||
对于 openSUSE Leap 系统,使用 [Zypper 命令][7] 来安装 clustershell。
|
||||
|
||||
```
|
||||
$ sudo zypper install clustershell
|
||||
```
|
||||
|
||||
如果系统默认是 Python 2,这会安装 Python 2 模块和工具,可以运行以下命令安装 Python 3 开发包。
|
||||
|
||||
```
|
||||
$ sudo zypper install python3-clustershell
|
||||
```
|
||||
|
||||
对于 Debian/Ubuntu 系统,使用 [APT-GET 命令][8] 或 [APT 命令][9] 来安装 clustershell。
|
||||
|
||||
```
|
||||
$ sudo apt install clustershell
|
||||
```
|
||||
|
||||
### 如何在 Linux 使用 PIP 安装 ClusterShell?
|
||||
|
||||
可以使用 PIP 安装 ClusterShell,因为它是用 Python 编写的。
|
||||
|
||||
在执行 clustershell 安装之前,请确保你已在系统上启用了 [Python][10] 和 [PIP][11]。
|
||||
|
||||
```
|
||||
$ sudo pip install ClusterShell
|
||||
```
|
||||
|
||||
### 如何在 Linux 上使用 ClusterShell?
|
||||
|
||||
与其他实用程序(如 `pssh` 和 `dsh`)相比,它是直接了当的优秀工具。它有很多选项可以在远程并行执行。
|
||||
|
||||
在开始使用 clustershell 之前,请确保你已启用系统上的[无密码登录][12]。
|
||||
|
||||
以下配置文件定义了系统范围的默认值。你不需要修改这里的任何东西。
|
||||
|
||||
```
|
||||
$ cat /etc/clustershell/clush.conf
|
||||
```
|
||||
|
||||
如果你想要创建一个服务器组,那也可以。默认情况下有一些示例,请根据你的要求执行相同操作。
|
||||
|
||||
```
|
||||
$ cat /etc/clustershell/groups.d/local.cfg
|
||||
```
|
||||
|
||||
只需按以下列格式运行 clustershell 命令即可从给定节点获取信息:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.4,192.168.1.9 cat /proc/version
|
||||
192.168.1.9: Linux version 4.15.0-45-generic ([email protected]) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019
|
||||
192.168.1.4: Linux version 3.10.0-957.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
|
||||
```
|
||||
|
||||
选项:
|
||||
|
||||
* `-w:` 你要运行该命令的节点。
|
||||
|
||||
你可以使用正则表达式而不是使用完整主机名和 IP:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.[4,9] uname -r
|
||||
192.168.1.9: 4.15.0-45-generic
|
||||
192.168.1.4: 3.10.0-957.el7.x86_64
|
||||
```
|
||||
|
||||
或者,如果服务器位于同一 IP 系列中,则可以使用以下格式:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.[4-9] date
|
||||
192.168.1.6: Mon Mar 4 21:08:29 IST 2019
|
||||
192.168.1.7: Mon Mar 4 21:08:29 IST 2019
|
||||
192.168.1.8: Mon Mar 4 21:08:29 IST 2019
|
||||
192.168.1.5: Mon Mar 4 09:16:30 CST 2019
|
||||
192.168.1.9: Mon Mar 4 21:08:29 IST 2019
|
||||
192.168.1.4: Mon Mar 4 09:16:30 CST 2019
|
||||
```
|
||||
|
||||
clustershell 允许我们以批处理模式运行命令。使用以下格式来实现此目的:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.4,192.168.1.9 -b
|
||||
Enter 'quit' to leave this interactive mode
|
||||
Working with nodes: 192.168.1.[4,9]
|
||||
clush> hostnamectl
|
||||
---------------
|
||||
192.168.1.4
|
||||
---------------
|
||||
Static hostname: CentOS7.2daygeek.com
|
||||
Icon name: computer-vm
|
||||
Chassis: vm
|
||||
Machine ID: 002f47b82af248f5be1d67b67e03514c
|
||||
Boot ID: f9b37a073c534dec8b236885e754cb56
|
||||
Virtualization: kvm
|
||||
Operating System: CentOS Linux 7 (Core)
|
||||
CPE OS Name: cpe:/o:centos:centos:7
|
||||
Kernel: Linux 3.10.0-957.el7.x86_64
|
||||
Architecture: x86-64
|
||||
---------------
|
||||
192.168.1.9
|
||||
---------------
|
||||
Static hostname: Ubuntu18
|
||||
Icon name: computer-vm
|
||||
Chassis: vm
|
||||
Machine ID: 27f6c2febda84dc881f28fd145077187
|
||||
Boot ID: f176f2eb45524d4f906d12e2b5716649
|
||||
Virtualization: oracle
|
||||
Operating System: Ubuntu 18.04.2 LTS
|
||||
Kernel: Linux 4.15.0-45-generic
|
||||
Architecture: x86-64
|
||||
clush> free -m
|
||||
---------------
|
||||
192.168.1.4
|
||||
---------------
|
||||
total used free shared buff/cache available
|
||||
Mem: 1838 641 217 19 978 969
|
||||
Swap: 2047 0 2047
|
||||
---------------
|
||||
192.168.1.9
|
||||
---------------
|
||||
total used free shared buff/cache available
|
||||
Mem: 1993 352 1067 1 573 1473
|
||||
Swap: 1425 0 1425
|
||||
clush> w
|
||||
---------------
|
||||
192.168.1.4
|
||||
---------------
|
||||
09:21:14 up 3:21, 3 users, load average: 0.00, 0.01, 0.05
|
||||
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
|
||||
daygeek :0 :0 06:02 ?xdm? 1:28 0.30s /usr/libexec/gnome-session-binary --session gnome-classic
|
||||
daygeek pts/0 :0 06:03 3:17m 0.06s 0.06s bash
|
||||
daygeek pts/1 192.168.1.6 06:03 52:26 0.10s 0.10s -bash
|
||||
---------------
|
||||
192.168.1.9
|
||||
---------------
|
||||
21:13:12 up 3:12, 1 user, load average: 0.08, 0.03, 0.00
|
||||
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
|
||||
daygeek pts/0 192.168.1.6 20:42 29:41 0.05s 0.05s -bash
|
||||
clush> quit
|
||||
```
|
||||
|
||||
如果要在一组节点上运行该命令,请使用以下格式:
|
||||
|
||||
```
|
||||
$ clush -w @dev uptime
|
||||
or
|
||||
$ clush -g dev uptime
|
||||
or
|
||||
$ clush --group=dev uptime
|
||||
|
||||
192.168.1.9: 21:10:10 up 3:09, 1 user, load average: 0.09, 0.03, 0.01
|
||||
192.168.1.4: 09:18:12 up 3:18, 3 users, load average: 0.01, 0.02, 0.05
|
||||
```
|
||||
|
||||
如果要在多个节点组上运行该命令,请使用以下格式:
|
||||
|
||||
```
|
||||
$ clush -w @dev,@uat uptime
|
||||
or
|
||||
$ clush -g dev,uat uptime
|
||||
or
|
||||
$ clush --group=dev,uat uptime
|
||||
|
||||
192.168.1.7: 07:57:19 up 59 min, 1 user, load average: 0.08, 0.03, 0.00
|
||||
192.168.1.9: 20:27:20 up 1:00, 1 user, load average: 0.00, 0.00, 0.00
|
||||
192.168.1.5: 08:57:21 up 59 min, 1 user, load average: 0.00, 0.01, 0.05
|
||||
```
|
||||
|
||||
clustershell 允许我们将文件复制到远程计算机。将本地文件或目录复制到同一个远程节点:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.[4,9] --copy /home/daygeek/passwd-up.sh
|
||||
```
|
||||
|
||||
我们可以通过运行以下命令来验证它:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.[4,9] ls -lh /home/daygeek/passwd-up.sh
|
||||
192.168.1.4: -rwxr-xr-x. 1 daygeek daygeek 159 Mar 4 09:00 /home/daygeek/passwd-up.sh
|
||||
192.168.1.9: -rwxr-xr-x 1 daygeek daygeek 159 Mar 4 20:52 /home/daygeek/passwd-up.sh
|
||||
```
|
||||
|
||||
将本地文件或目录复制到不同位置的远程节点:
|
||||
|
||||
```
|
||||
$ clush -g uat --copy /home/daygeek/passwd-up.sh --dest /tmp
|
||||
```
|
||||
|
||||
我们可以通过运行以下命令来验证它:
|
||||
|
||||
```
|
||||
$ clush --group=uat ls -lh /tmp/passwd-up.sh
|
||||
192.168.1.7: -rwxr-xr-x. 1 daygeek daygeek 159 Mar 6 07:44 /tmp/passwd-up.sh
|
||||
```
|
||||
|
||||
将文件或目录从远程节点复制到本地系统:
|
||||
|
||||
```
|
||||
$ clush -w 192.168.1.7 --rcopy /home/daygeek/Documents/magi.txt --dest /tmp
|
||||
```
|
||||
|
||||
我们可以通过运行以下命令来验证它:
|
||||
|
||||
```
|
||||
$ ls -lh /tmp/magi.txt.192.168.1.7
|
||||
-rw-r--r-- 1 daygeek daygeek 35 Mar 6 20:24 /tmp/magi.txt.192.168.1.7
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.2daygeek.com/clustershell-clush-run-commands-on-cluster-nodes-remote-system-in-parallel-linux/
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.2daygeek.com/author/magesh/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.2daygeek.com/pssh-parallel-ssh-run-execute-commands-on-multiple-linux-servers/
|
||||
[2]: https://www.2daygeek.com/dsh-run-execute-shell-commands-on-multiple-linux-servers-at-once/
|
||||
[3]: https://cea-hpc.github.io/clustershell/
|
||||
[4]: https://www.2daygeek.com/dnf-command-examples-manage-packages-fedora-system/
|
||||
[5]: https://www.2daygeek.com/install-enable-epel-repository-on-rhel-centos-scientific-linux-oracle-linux/
|
||||
[6]: https://www.2daygeek.com/yum-command-examples-manage-packages-rhel-centos-systems/
|
||||
[7]: https://www.2daygeek.com/zypper-command-examples-manage-packages-opensuse-system/
|
||||
[8]: https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/
|
||||
[9]: https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/
|
||||
[10]: https://www.2daygeek.com/3-methods-to-install-latest-python3-package-on-centos-6-system/
|
||||
[11]: https://www.2daygeek.com/install-pip-manage-python-packages-linux/
|
||||
[12]: https://www.2daygeek.com/linux-passwordless-ssh-login-using-ssh-keygen/
|
@ -0,0 +1,129 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11160-1.html)
|
||||
[#]: subject: (Convert Markdown files to word processor docs using pandoc)
|
||||
[#]: via: (https://opensource.com/article/19/5/convert-markdown-to-word-pandoc)
|
||||
[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt/users/jason-van-gumster/users/kikofernandez)
|
||||
|
||||
使用 pandoc 将 Markdown 转换为格式化文档
|
||||
======
|
||||
|
||||
> 生活在普通文本世界么?以下是无需使用文字处理器而创建别人要的格式化文档的方法。
|
||||
|
||||
![][1]
|
||||
|
||||
如果你生活在[普通文本][2]世界里,总会有人要求你提供格式化文档。我就经常遇到这个问题,特别是在 Day JobTM。虽然我已经给与我合作的开发团队之一介绍了用于撰写和审阅发行说明的 [Docs Like Code][3] 工作流程,但是还有少数人对 GitHub 和使用 [Markdown][4] 没有兴趣,他们更喜欢为特定的专有应用格式化的文档。
|
||||
|
||||
好消息是,你不会被卡在将未格式化的文本复制粘贴到文字处理器的问题当中。使用 [pandoc][5],你可以快速地给人们他们想要的东西。让我们看看如何使用 pandoc 将文档从 Markdown 转换为 Linux 中的文字处理器格式。
|
||||
|
||||
请注意,pandoc 也可用于从两种 BSD([NetBSD][7] 和 [FreeBSD][8])到 Chrome OS、MacOS 和 Windows 等的各种操作系统。
|
||||
|
||||
### 基本转换
|
||||
|
||||
首先,在你的计算机上[安装 pandoc][9]。然后,打开控制台终端窗口,并导航到包含要转换的文件的目录。
|
||||
|
||||
输入此命令以创建 ODT 文件(可以使用 [LibreOffice Writer][10] 或 [AbiWord][11] 等字处理器打开):
|
||||
|
||||
```
|
||||
pandoc -t odt filename.md -o filename.odt
|
||||
```
|
||||
|
||||
记得用实际文件名称替换 `filename`。如果你需要为其他文字处理器(你知道我的意思)创建一个文件,替换命令行的 `odt` 为 `docx`。以下是本文转换为 ODT 文件时的内容:
|
||||
|
||||
![Basic conversion results with pandoc.][12]
|
||||
|
||||
这些转换结果虽然可用,但有点乏味。让我们看看如何为转换后的文档添加更多样式。
|
||||
|
||||
### 带样式转换
|
||||
|
||||
`pandoc` 有一个漂亮的功能,使你可以在将带标记的纯文本文件转换为字处理器格式时指定样式模板。在此文件中,你可以编辑文档中的少量样式,包括控制段落、文章标题和副标题、段落标题、说明、基本的表格和超链接的样式。
|
||||
|
||||
让我们来看看能做什么。
|
||||
|
||||
#### 创建模板
|
||||
|
||||
要设置文档样式,你不能只是使用任何一个模板就行。你需要生成 pandoc 称之为引用模板的文件,这是将文本文件转换为文字处理器文档时使用的模板。要创建此文件,请在终端窗口中键入以下内容:
|
||||
|
||||
```
|
||||
pandoc -o custom-reference.odt --print-default-data-file reference.odt
|
||||
```
|
||||
|
||||
此命令创建一个名为 `custom-reference.odt` 的文件。如果你正在使用其他文字处理程序,请将命令行中的 “odt” 更改为 “docx”。
|
||||
|
||||
在 LibreOffice Writer 中打开模板文件,然后按 `F11` 打开 LibreOffice Writer 的 “样式” 窗格。虽然 [pandoc 手册][13]建议不要对该文件进行其他更改,但我会在必要时更改页面大小并添加页眉和页脚。
|
||||
|
||||
#### 使用模板
|
||||
|
||||
那么,你要如何使用刚刚创建的模板?有两种方法可以做到这一点。
|
||||
|
||||
最简单的方法是将模板放在家目录的 `.pandoc` 文件夹中,如果该文件夹不存在,则必须先创建该文件夹。当转换文档时,`pandoc` 会使用此模板文件。如果你需要多个模板,请参阅下一节了解如何从多个模板中进行选择。
|
||||
|
||||
使用模板的另一种方法是在命令行键入以下转换选项:
|
||||
|
||||
```
|
||||
pandoc -t odt file-name.md --reference-doc=path-to-your-file/reference.odt -o file-name.odt
|
||||
```
|
||||
|
||||
如果你想知道使用自定义模板转换后的文件是什么样的,这是一个示例:
|
||||
|
||||
![A document converted using a pandoc style template.][14]
|
||||
|
||||
#### 选择模板
|
||||
|
||||
很多人只需要一个 `pandoc` 模板,但是,有些人需要不止一个。
|
||||
|
||||
例如,在我的日常工作中,我使用了几个模板:一个带有 DRAFT 水印,一个带有表示内部使用的水印,另一个用于文档的最终版本。每种类型的文档都需要不同的模板。
|
||||
|
||||
如果你有类似的需求,可以像使用单个模板一样创建文件 `custom-reference.odt`,将生成的文件重命名为例如 `custom-reference-draft.odt` 这样的名字,然后在 LibreOffice Writer 中打开它并修改样式。对你需要的每个模板重复此过程。
|
||||
|
||||
接下来,将文件复制到家目录中。如果你愿意,你甚至可以将它们放在 `.pandoc` 文件夹中。
|
||||
|
||||
要在转换时选择特定模板,你需要在终端中运行此命令:
|
||||
|
||||
```
|
||||
pandoc -t odt file-name.md --reference-doc=path-to-your-file/custom-template.odt -o file-name.odt
|
||||
```
|
||||
|
||||
改变 `custom-template.odt` 为你的模板文件名。
|
||||
|
||||
### 结语
|
||||
|
||||
为了不用记住我不经常使用的一组选项,我拼凑了一些简单的、非常蹩脚的单行脚本,这些脚本封装了每个模板的选项。例如,我运行脚本 `todraft.sh` 以使用带有 DRAFT 水印的模板创建文字处理器文档。你可能也想要这样做。
|
||||
|
||||
以下是使用包含 DRAFT 水印的模板的脚本示例:
|
||||
|
||||
```
|
||||
pandoc -t odt $1.md -o $1.odt --reference-doc=~/Documents/pandoc-templates/custom-reference-draft.odt
|
||||
```
|
||||
|
||||
使用 pandoc 是一种不必放弃命令行生活而以人们要求的格式提供文档的好方法。此工具也不仅适用于 Markdown。我在本文中讨论的内容还可以让你在各种标记语言之间创建和转换文档。有关更多详细信息,请参阅前面链接的 [pandoc 官网][5]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/5/convert-markdown-to-word-pandoc
|
||||
|
||||
作者:[Scott Nesbitt][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/scottnesbitt/users/jason-van-gumster/users/kikofernandez
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_keyboard_laptop_development_code_woman.png?itok=vbYz6jjb
|
||||
[2]: https://plaintextproject.online/
|
||||
[3]: https://www.docslikecode.com/
|
||||
[4]: https://en.wikipedia.org/wiki/Markdown
|
||||
[5]: https://pandoc.org/
|
||||
[6]: /resources/linux
|
||||
[7]: https://www.netbsd.org/
|
||||
[8]: https://www.freebsd.org/
|
||||
[9]: https://pandoc.org/installing.html
|
||||
[10]: https://www.libreoffice.org/discover/writer/
|
||||
[11]: https://www.abisource.com/
|
||||
[12]: https://opensource.com/sites/default/files/uploads/pandoc-wp-basic-conversion_600_0.png (Basic conversion results with pandoc.)
|
||||
[13]: https://pandoc.org/MANUAL.html
|
||||
[14]: https://opensource.com/sites/default/files/uploads/pandoc-wp-conversion-with-tpl_600.png (A document converted using a pandoc style template.)
|
@ -0,0 +1,109 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11171-1.html)
|
||||
[#]: subject: (Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux)
|
||||
[#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-messages-log-warning-error-critical-send-email/)
|
||||
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
|
||||
|
||||
在 Linux 上用 Bash 脚本监控 messages 日志
|
||||
======
|
||||
|
||||
目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它将发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。
|
||||
|
||||
如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单。
|
||||
|
||||
在本教程中,我们添加了一个 shell 脚本来监视 Linux 系统上的 messages 日志。
|
||||
|
||||
我们过去添加了许多有用的 shell 脚本。如果要查看这些内容,请导航至以下链接。
|
||||
|
||||
- [如何使用 shell 脚本监控系统的日常活动?][1]
|
||||
|
||||
此脚本将检查 `/var/log/messages` 文件中的 “warning“、“error” 和 “critical”,如果发现任何有关的东西,就给指定电子邮件地址发邮件。
|
||||
|
||||
如果服务器有许多匹配的字符串,我们就不能经常运行这个可能填满收件箱的脚本,我们可以在一天内运行一次。
|
||||
|
||||
为了解决这个问题,我让脚本以不同的方式触发电子邮件。
|
||||
|
||||
如果 `/var/log/messages` 文件中昨天的日志中找到任何给定字符串,则脚本将向给定的电子邮件地址发送电子邮件警报。
|
||||
|
||||
**注意:**你需要更改电子邮件地址,而不是我们的电子邮件地址。
|
||||
|
||||
```
|
||||
# vi /opt/scripts/os-log-alert.sh
|
||||
```
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
#Set the variable which equal to zero
|
||||
prev_count=0
|
||||
|
||||
count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)
|
||||
|
||||
if [ "$prev_count" -lt "$count" ] ; then
|
||||
# Send a mail to given email id when errors found in log
|
||||
SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""
|
||||
# This is a temp file, which is created to store the email message.
|
||||
MESSAGE="/tmp/logs.txt"
|
||||
TO="2daygeek@gmail.com"
|
||||
echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
|
||||
echo "Hostname: `hostname`" >> $MESSAGE
|
||||
echo -e "\n" >> $MESSAGE
|
||||
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
|
||||
echo "Error messages in the log file as below" >> $MESSAGE
|
||||
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
|
||||
grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE
|
||||
mail -s "$SUBJECT" "$TO" < $MESSAGE
|
||||
#rm $MESSAGE
|
||||
fi
|
||||
```
|
||||
|
||||
为 `os-log-alert.sh` 文件设置可执行权限。
|
||||
|
||||
```
|
||||
$ chmod +x /opt/scripts/os-log-alert.sh
|
||||
```
|
||||
|
||||
最后添加一个 cron 任务来自动执行此操作。它将每天 7 点钟运行。
|
||||
|
||||
```
|
||||
# crontab -e
|
||||
```
|
||||
|
||||
```
|
||||
0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh
|
||||
```
|
||||
|
||||
**注意:**你将在每天 7 点收到昨天日志的电子邮件提醒。
|
||||
|
||||
**输出:**你将收到类似下面的电子邮件提醒。
|
||||
|
||||
```
|
||||
ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin.
|
||||
|
||||
+-----------------------------------------------------+
|
||||
Error messages in the log file as below
|
||||
+-----------------------------------------------------+
|
||||
Jul 3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
|
||||
Jul 3 02:50:14 ns1 kernel: lmtp[8249]: segfault at 20 ip 00007f9cc05295e4 sp 00007ffc57bca1a0 error 4 in libdovecot-storage.so.0.0.0[7f9cc04df000+148000]
|
||||
Jul 3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
|
||||
Jul 3 15:45:54 ns1 pure-ftpd: (?@5.188.62.5) [WARNING] Authentication failed for user [daygeek]
|
||||
Jul 3 16:25:36 ns1 pure-ftpd: (?@104.140.148.58) [WARNING] Sorry, cleartext sessions and weak ciphers are not accepted on this server.#012Please reconnect using TLS security mechanisms.
|
||||
Jul 3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.2daygeek.com/linux-bash-script-to-monitor-messages-log-warning-error-critical-send-email/
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.2daygeek.com/author/magesh/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.2daygeek.com/category/shell-script/
|
@ -0,0 +1,95 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11163-1.html)
|
||||
[#]: subject: (How to enable DNS-over-HTTPS (DoH) in Firefox)
|
||||
[#]: via: (https://www.zdnet.com/article/how-to-enable-dns-over-https-doh-in-firefox/)
|
||||
[#]: author: (Catalin Cimpanu https://www.zdnet.com/meet-the-team/us/catalin.cimpanu/)
|
||||
|
||||
如何在 Firefox 中启用 DNS-over-HTTPS(DoH)
|
||||
======
|
||||
|
||||
DNS-over-HTTPS(DoH)协议目前是谈论的焦点,Firefox 是唯一支持它的浏览器。但是,Firefox 默认不启用此功能,用户必须经历许多步骤并修改多个设置才能启动并运行 DoH。
|
||||
|
||||
在开始如何在 Firefox 中启用 DoH 支持的分步教程之前,让我们先描述它的原理。
|
||||
|
||||
### DNS-over-HTTPS 的工作原理
|
||||
|
||||
DNS-over-HTTPS 协议通过获取用户在浏览器中输入的域名,并向 DNS 服务器发送查询,以了解托管该站点的 Web 服务器的 IP 地址。
|
||||
|
||||
这也是正常 DNS 的工作原理。但是,DoH 通过 443 端口的加密 HTTPS 连接接受 DNS 查询将其发送到兼容 DoH 的 DNS 服务器(解析器),而不是在 53 端口上发送纯文本。这样,DoH 就会在常规 HTTPS 流量中隐藏 DNS 查询,因此第三方监听者将无法嗅探流量,并了解用户的 DNS 查询,从而推断他们将要访问的网站。
|
||||
|
||||
此外,DNS-over-HTTPS 的第二个特性是该协议工作在应用层。应用可以带上内部硬编码的 DoH 兼容的 DNS 解析器列表,从而向它们发送 DoH 查询。这种操作模式绕过了系统级别的默认 DNS 设置,在大多数情况下,这些设置是由本地 Internet 服务提供商(ISP)设置的。这也意味着支持 DoH 的应用可以有效地绕过本地 ISP 流量过滤器并访问可能被本地电信公司或当地政府阻止的内容 —— 这也是 DoH 目前被誉为用户隐私和安全的福音的原因。
|
||||
|
||||
这是 DoH 在推出后不到两年的时间里获得相当大的普及的原因之一,同时也是一群[英国 ISP 因为 Mozilla 计划支持 DoH 协议而提名它为 2019 年的“互联网恶棍” (Internet Villian)][1]的原因,ISP 认为 DoH 协议会阻碍他们过滤不良流量的努力。(LCTT 译注:后来这一奖项的提名被取消。)
|
||||
|
||||
作为回应,并且由于英国政府阻止访问侵犯版权内容的复杂情况,以及 ISP 自愿阻止访问虐待儿童网站的情况,[Mozilla 已决定不为英国用户默认启用此功能][2]。
|
||||
|
||||
下面的分步指南将向英国和世界各地的 Firefox 用户展示如何立即启用该功能,而不用等到 Mozilla 将来启用它 —— 如果它会这么做的话。在 Firefox 中有两种启用 DoH 支持的方法。
|
||||
|
||||
### 方法 1:通过 Firefox 设置
|
||||
|
||||
**步骤 1:**进入 Firefox 菜单,选择**工具**,然后选择**首选项**。 可选在 URL 栏中输入 `about:preferences`,然后按下回车。这将打开 Firefox 的首选项。
|
||||
|
||||
**步骤 2:**在**常规**中,向下滚动到**网络设置**,然后按**设置**按钮。
|
||||
|
||||
![DoH section in Firefox settings][3]
|
||||
|
||||
**步骤3:**在弹出窗口中,向下滚动并选择“**Enable DNS over HTTPS**”,然后配置你需要的 DoH 解析器。你可以使用内置的 Cloudflare 解析器(该公司与 Mozilla [达成协议][4],记录更少的 Firefox 用户数据),或者你可以在[这个列表][4]中选择一个。
|
||||
|
||||
![DoH section in Firefox settings][6]
|
||||
|
||||
### 方法 2:通过 about:config
|
||||
|
||||
**步骤 1:**在 URL 栏中输入 `about:config`,然后按回车访问 Firefox 的隐藏配置面板。在这里,用户需要启用和修改三个设置。
|
||||
|
||||
**步骤 2:**第一个设置是 `network.trr.mode`。这打开了 DoH 支持。此设置支持四个值:
|
||||
|
||||
* `0` - 标准 Firefox 安装中的默认值(当前为 5,表示禁用 DoH)
|
||||
* `1` - 启用 DoH,但 Firefox 依据哪个请求更快返回选择使用 DoH 或者常规 DNS
|
||||
* `2` - 启用 DoH,常规 DNS 作为备用
|
||||
* `3` - 启用 DoH,并禁用常规 DNS
|
||||
* `5` - 禁用 DoH
|
||||
|
||||
值为 2 工作得最好
|
||||
|
||||
![DoH in Firefox][7]
|
||||
|
||||
**步骤3:**需要修改的第二个设置是 `network.trr.uri`。这是与 DoH 兼容的 DNS 服务器的 URL,Firefox 将向它发送 DoH DNS 查询。默认情况下,Firefox 使用 Cloudflare 的 DoH服务,地址是:<https://mozilla.cloudflare-dns.com/dns-query>。但是,用户可以使用自己的 DoH 服务器 URL。他们可以从[这个列表][8]中选择其中一个可用的。Mozilla 在 Firefox 中使用 Cloudflare 的原因是因为与这家公司[达成了协议][4],之后 Cloudflare 将收集来自 Firefox 用户的 DoH 查询的非常少的数据。
|
||||
|
||||
[DoH in Firefox][9]
|
||||
|
||||
**步骤4:**第三个设置是可选的,你可以跳过此设置。 但是如果设置不起作用,你可以使用此作为步骤 3 的备用。该选项名为 `network.trr.bootstrapAddress`,它是一个输入字段,用户可以输入步骤 3 中兼容 DoH 的 DNS 解析器的 IP 地址。对于 Cloudflare,它是 1.1.1.1。 对于 Google 服务,它是 8.8.8.8。 如果你使用了另一个 DoH 解析器的 URL,如果有必要的话,你需要追踪那台服务器的 IP 地址并输入。
|
||||
|
||||
![DoH in Firefox][10]
|
||||
|
||||
通常,在步骤 3 中输入的 URL 应该足够了。
|
||||
设置应该立即生效,但如果它们不起作用,请重新启动 Firefox。
|
||||
|
||||
文章信息来源:[Mozilla Wiki][11]
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.zdnet.com/article/how-to-enable-dns-over-https-doh-in-firefox/
|
||||
|
||||
作者:[Catalin Cimpanu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.zdnet.com/meet-the-team/us/catalin.cimpanu/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://linux.cn/article-11068-1.html
|
||||
[2]: https://www.zdnet.com/article/mozilla-no-plans-to-enable-dns-over-https-by-default-in-the-uk/
|
||||
[3]: https://zdnet1.cbsistatic.com/hub/i/2019/07/07/df30c7b0-3a20-4de7-8640-3dea6d249a49/121bd379b6232e1e2a97c35ea8c7764e/doh-settings-1.png
|
||||
[4]: https://developers.cloudflare.com/1.1.1.1/commitment-to-privacy/privacy-policy/firefox/
|
||||
[6]: https://zdnet3.cbsistatic.com/hub/i/2019/07/07/8608af28-2a28-4ff1-952b-9b6d2deb1ea6/b1fc322caaa2c955b1a2fb285daf0e42/doh-settings-2.png
|
||||
[7]: https://zdnet1.cbsistatic.com/hub/i/2019/07/06/0232b3a7-82c6-4a6f-90c1-faf0c090254c/6db9b36509021c460fcc7fe825bb74c5/doh-1.png
|
||||
[8]: https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers
|
||||
[9]: https://zdnet2.cbsistatic.com/hub/i/2019/07/06/4dd1d5c1-6fa7-4f5b-b7cd-b544748edfed/baa7a70ac084861d94a744a57a3147ad/doh-2.png
|
||||
[10]: https://zdnet1.cbsistatic.com/hub/i/2019/07/06/8ec20a28-673c-4a17-8195-16579398e90a/538fe8420f9b24724aeb4a6c8d4f0f0f/doh-3.png
|
||||
[11]: https://wiki.mozilla.org/Trusted_Recursive_Resolver
|
78
published/201907/20190712 MTTR is dead, long live CIRT.md
Normal file
78
published/201907/20190712 MTTR is dead, long live CIRT.md
Normal file
@ -0,0 +1,78 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11155-1.html)
|
||||
[#]: subject: (MTTR is dead, long live CIRT)
|
||||
[#]: via: (https://opensource.com/article/19/7/measure-operational-performance)
|
||||
[#]: author: (Julie Gunderson https://opensource.com/users/juliegund/users/kearnsjd/users/ophir)
|
||||
|
||||
MTTR 已死,CIRT 长存
|
||||
======
|
||||
|
||||
> 通过关注影响业务的事件,CIRT 是衡量运维绩效的更准确方法。
|
||||
|
||||
![Green graph of measurements][1]
|
||||
|
||||
IT 运维圈子的玩法正在发生变化,这意味着过去的规则越来越不合理。机构需要适当环境中的准确的、可理解的、且可操作的指标,以衡量运维绩效并推动关键业务转型。
|
||||
|
||||
越多的客户使用现代工具,他们管理的事件类型的变化越多,将所有这些不同事件粉碎到一个桶中以计算平均解决时间来表示运维绩效的意义就越少,这就是 IT 一直以来在做的事情。
|
||||
|
||||
### 历史与指标
|
||||
|
||||
历史表明,在分析信号以防止错误和误解时,背景信息是关键。例如,在 20 世纪 80 年代,瑞典建立了一个分析水听器信号的系统,以提醒他们在瑞典当地水域出现的俄罗斯潜艇。瑞典人使用了他们认为代表一类俄罗斯潜艇的声学特征 —— 但实际上是鲱鱼在遇到潜在捕食者时释放的[气泡声][2]。这种对指标的误解加剧了各国之间的紧张关系,几乎导致了战争。
|
||||
|
||||
![Funny fish cartoon][3]
|
||||
|
||||
<ruby>平均解决时间<rt>Mean Time To Resolve</rt></ruby>(MTTR)是运维经理用于获得实现目标洞察力的主要运维绩效指标。这是一项基于<ruby>系统可靠性工程<rt>systems reliability engineering</rt></ruby>的古老措施。MTTR 已被许多行业采用,包括制造、设施维护以及最近的 IT 运维,它代表了解决在特定时间段内创建的事件所需的平均时间。
|
||||
|
||||
MTTR 的计算方法是将所有事件(从事件创建时间到解决时间)所需的时间除以事件总数。
|
||||
|
||||
![MTTR formula][4]
|
||||
|
||||
正如它所说的,MTTR 是 **所有** 事件的平均值。MTTR 将高紧急事件和低紧急事件混为一谈。它还会重复计算每个单独的、未分组的事件,并得出有效的解决时间。它包括了在相同上下文中手动解决和自动解决的事件。它将在创建了几天(或几个月)甚至完全被忽略的事件混合在一起。最后,MTTR 包括每个小的瞬态突发事件(在 120 秒内自动关闭的事件),这些突发事件要么是非问题噪音,要么已由机器快速解决。
|
||||
|
||||
![Variability in incident types][5]
|
||||
|
||||
MTTR 将所有事件(无论何种类型)抛入一个桶中,将它们全部混合在一起,并计算整个集合中的“平均”解决时间。这种过于简单化的方法导致运维执行方式的的噪音、错误和误导性指示。
|
||||
|
||||
### 一种衡量绩效的新方法
|
||||
|
||||
<ruby>关键事件响应时间<rt>Critical Incident Response Time</rt></ruby>(CIRT)是评估运维绩效的一种更准确的新方法。PagerDuty 创立了 CIRT 的概念,但该方法可供所有人免费使用。
|
||||
|
||||
CIRT 通过使用以下技术剔除来自信号的噪声,其重点关注最有可能影响业务的事件:
|
||||
|
||||
1. 真正影响(或可能影响)业务的事件很少是低紧急事件,因此要排除所有低紧急事件。
|
||||
2. 真正影响业务的事件很少(如果有的话)可以无需人为干预而通过监控工具自动解决,因此要排除未由人工解决的事件。
|
||||
3. 在 120 秒内解决的短暂、爆发性和瞬态事件几乎不可能是真正影响业务的事件,因此要排除它们。
|
||||
4. 长时间未被注意、提交或忽略(未确认、未解决)的事件很少会对业务造成影响;排除它们。注意:此阈值可以是特定于客户的统计推导数字(例如,高于均值的两个标准差),以避免使用任意数字。
|
||||
5. 由单独警报产生的个别未分组事件并不代表较大的业务影响事件。因此,模拟具有非常保守的阈值(例如,两分钟)的事件分组以计算响应时间。
|
||||
|
||||
应用这些假设对响应时间有什么影响?简而言之,效果非常非常大!
|
||||
|
||||
通过在关键的、影响业务的事件中关注运维绩效,解决时间分布变窄并极大地向左偏移,因为现在它处理类似类型的事件而不是所有事件。
|
||||
|
||||
由于 MTTR 计算的响应时间长得多、人为地偏差,因此它是运维绩效较差的一个指标。另一方面,CIRT 是一项有意的措施,专注于对业务最重要的事件。
|
||||
|
||||
与 CIRT 一起使用的另一个关键措施是确认和解决事故的百分比。这很重要,因为它验证 CIRT(或 MTTA / MTTR)是否值得利用。例如,如果 MTTR 结果很低,比如 10 分钟,那听起来不错,但如果只有 42% 的事件得到解决,那么 MTTR 是可疑的。
|
||||
|
||||
总之,CIRT 和确认、解决事件的百分比形成了一组有价值的指标,可以让你更好地了解运营的执行情况。衡量绩效是提高绩效的第一步,因此这些新措施对于实现机构的可持续、可衡量的改进周期至关重要。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/7/measure-operational-performance
|
||||
|
||||
作者:[Julie Gunderson][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/juliegund/users/kearnsjd/users/ophir
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_lead-steps-measure.png?itok=DG7rFZPk (Green graph of measurements)
|
||||
[2]: http://blogfishx.blogspot.com/2014/05/herring-fart-to-communicate.html
|
||||
[3]: https://opensource.com/sites/default/files/uploads/fish.png (Funny fish cartoon)
|
||||
[4]: https://opensource.com/sites/default/files/uploads/mttr.png (MTTR formula)
|
||||
[5]: https://opensource.com/sites/default/files/uploads/incidents.png (Variability in incident types)
|
@ -1,28 +1,28 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11149-1.html)
|
||||
[#]: subject: (Bond WiFi and Ethernet for easier networking mobility)
|
||||
[#]: via: (https://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mobility/)
|
||||
[#]: author: (Ben Cotton https://fedoramagazine.org/author/bcotton/)
|
||||
|
||||
绑定 WiFi 和以太网,以便于更轻松的网络移动
|
||||
绑定 WiFi 和以太网,以使网络间移动更轻松
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
有时一个网络接口是不够的。网络绑定允许将多条网络连接与单个逻辑接口一起工作。你可能因为需要单条连接更多的带宽而需要这么做。或者你可能希望在有线和无线网络之间来回切换而不会丢失网络连接。
|
||||
有时一个网络接口是不够的。网络绑定允许将多条网络连接与单个逻辑接口一起工作。你可能因为需要给单条连接更多的带宽而这么做,或者你可能希望在有线和无线网络之间来回切换而不会丢失网络连接。
|
||||
|
||||
我是后面一种情况。在家工作的好处之一是,当天气晴朗时,在阳光明媚的阳台而不是在室内工作是很愉快的。但每当我这样做时,我都会失去网络连接。 IRC、SSH、VPN,一切都断开了,客户端重连至少需要一会。本文介绍了如何在 Fedora 30 笔记本上设置网络绑定,以便从笔记本扩展坞的有线连接无缝切换到 WiFi。
|
||||
我是后面一种情况。在家工作的好处之一是,当天气晴朗时,在阳光明媚的阳台而不是在室内工作是很愉快的。但每当我这样做时,我都会失去网络连接。IRC、SSH、VPN,一切都断开了,客户端重连至少需要一会。本文介绍了如何在 Fedora 30 笔记本上设置网络绑定,以便从笔记本扩展坞的有线连接无缝切换到 WiFi。
|
||||
|
||||
在 Linux 中,接口绑定由绑定内核模块处理。默认情况下,Fedora 没有启用此功能,但它包含在 kernel-core 软件包中。这意味着启用接口绑定只需一个命令:
|
||||
在 Linux 中,接口绑定由内核模块 `bonding` 处理。默认情况下,Fedora 没有启用此功能,但它包含在 `kernel-core` 软件包中。这意味着启用接口绑定只需一个命令:
|
||||
|
||||
```
|
||||
sudo modprobe bonding
|
||||
```
|
||||
|
||||
请注意,这只会在你重启之前生效。要永久启用接口绑定,请在 _/etc/modules-load.d_ 目录中创建一个名为 _bonding.conf_ 的文件,该文件仅包含单词 “bonding”。
|
||||
请注意,这只会在你重启之前生效。要永久启用接口绑定,请在 `/etc/modules-load.d` 目录中创建一个名为 `bonding.conf` 的文件,该文件仅包含单词 `bonding`。
|
||||
|
||||
现在你已启用绑定,现在可以创建绑定接口了。首先,你必须获取要绑定的接口的名称。要列出可用的接口,请运行:
|
||||
|
||||
@ -44,7 +44,7 @@ lo loopback unmanaged --
|
||||
virbr0-nic tun unmanaged --
|
||||
```
|
||||
|
||||
在本例中,有两个(有线)以太网接口可用。 _enp12s0u1_ 在笔记本电脑扩展坞上,你可以通过 _STATE_ 列知道它已连接。另一个是 _enp0s31f6_,是笔记本电脑中的内置端口。还有一个名为 _wlp2s0_ 的 WiFi 连接。 _enp12s0u1_ 和 _wlp2s0_ 是我们在这里感兴趣的两个接口。(请注意,本文无需了解网络设备的命名方式,但如果你感兴趣,可以查看 [systemd.net-naming-scheme 手册页][2]。)
|
||||
在本例中,有两个(有线)以太网接口可用。 `enp12s0u1` 在笔记本电脑扩展坞上,你可以通过 `STATE` 列知道它已连接。另一个是 `enp0s31f6`,是笔记本电脑中的内置端口。还有一个名为 `wlp2s0` 的 WiFi 连接。 `enp12s0u1` 和 `wlp2s0` 是我们在这里感兴趣的两个接口。(请注意,阅读本文无需了解网络设备的命名方式,但如果你感兴趣,可以查看 [systemd.net-naming-scheme 手册页][2]。)
|
||||
|
||||
第一步是创建绑定接口:
|
||||
|
||||
@ -52,7 +52,7 @@ virbr0-nic tun unmanaged --
|
||||
sudo nmcli connection add type bond ifname bond0 con-name bond0
|
||||
```
|
||||
|
||||
在此示例中,绑定接口名为 _bond0_。 “_con-name bond0_” 将连接名称设置为 _bond0_。直接这样会有一个名为 _bond-bond0_ 的连接。你还可以将连接名设置得更加人性化,例如 “Docking station bond” 或 “Ben”
|
||||
在此示例中,绑定接口名为 `bond0`。`con-name bond0` 将连接名称设置为 `bond0`。直接这样做会有一个名为 `bond-bond0` 的连接。你还可以将连接名设置得更加人性化,例如 “Docking station bond” 或 “Ben”。
|
||||
|
||||
下一步是将接口添加到绑定接口:
|
||||
|
||||
@ -61,14 +61,14 @@ sudo nmcli connection add type ethernet ifname enp12s0u1 master bond0 con-name b
|
||||
sudo nmcli connection add type wifi ifname wlp2s0 master bond0 ssid Cotton con-name bond-wifi
|
||||
```
|
||||
|
||||
如上所示,连接名称被设置为[更具描述性][3]。请务必使用系统上相应的接口名称替换 _enp12s0u1_ 和 _wlp2s0_。对于 WiFi 接口,请使用你自己的网络名称 (SSID)替换我的 “Cotton”。如果你的 WiFi 连接有密码(这当然会有!),你也需要将其添加到配置中。以下假设你使用 [WPA2-PSK][4] 身份验证
|
||||
如上所示,连接名称被设置为[更具描述性][3]。请务必使用系统上相应的接口名称替换 `enp12s0u1` 和 `wlp2s0`。对于 WiFi 接口,请使用你自己的网络名称 (SSID)替换我的 “Cotton”。如果你的 WiFi 连接有密码(这当然会有!),你也需要将其添加到配置中。以下假设你使用 [WPA2-PSK][4] 身份验证
|
||||
|
||||
```
|
||||
sudo nmcli connection modify bond-wifi wifi-sec.key-mgmt wpa-psk
|
||||
sudo nmcli connection edit bond-wif
|
||||
```
|
||||
|
||||
第二条命令将进入交互式编辑器,你可以在其中输入密码,而无需将其记录在 shell 历史记录中。输入以下内容,将 _password_ 替换为你的实际密码
|
||||
第二条命令将进入交互式编辑器,你可以在其中输入密码,而无需将其记录在 shell 历史记录中。输入以下内容,将 `password` 替换为你的实际密码。
|
||||
|
||||
```
|
||||
set wifi-sec.psk password
|
||||
@ -76,7 +76,7 @@ save
|
||||
quit
|
||||
```
|
||||
|
||||
现在,你可以启动你的绑定接口以及你创建的辅助接口
|
||||
现在,你可以启动你的绑定接口以及你创建的辅助接口。
|
||||
|
||||
```
|
||||
sudo nmcli connection up bond0
|
||||
@ -98,13 +98,13 @@ sudo nmcli connection down bond0
|
||||
|
||||
### 微调你的绑定
|
||||
|
||||
默认情况下,绑定接口使用“负载平衡(round-robin)”模式。 这会在接口上平均分配负载。 但是,如果你有有线和无线连接,你可能希望更喜欢有线连接。 “active-backup” 模式能实现此功能。 你可以在创建接口时指定模式和主接口,或者之后使用此命令(绑定接口应该关闭):
|
||||
默认情况下,绑定接口使用“<ruby>轮询<rt>round-robin</rt></ruby>”模式。这会在接口上平均分配负载。但是,如果你有有线和无线连接,你可能希望更喜欢有线连接。 `active-backup` 模式能实现此功能。你可以在创建接口时指定模式和主接口,或者之后使用此命令(绑定接口应该关闭):
|
||||
|
||||
```
|
||||
sudo nmcli connection modify bond0 +bond.options "mode=active-backup,primary=enp12s0u1"
|
||||
```
|
||||
|
||||
[kernel 文档][5]提供了有关绑定选项的更多信息。
|
||||
[内核文档][5]提供了有关绑定选项的更多信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -113,7 +113,7 @@ via: https://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mob
|
||||
作者:[Ben Cotton][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,26 +1,26 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (0x996)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11148-1.html)
|
||||
[#]: subject: (Mastering user groups on Linux)
|
||||
[#]: via: (https://www.networkworld.com/article/3409781/mastering-user-groups-on-linux.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
掌握 Linux 用户组
|
||||
======
|
||||
在 Linux 系统中管理用户组并不费力,但相关命令可能比你所知的更为灵活。
|
||||
|
||||
> 在 Linux 系统中管理用户组并不费力,但相关命令可能比你所知的更为灵活。
|
||||
|
||||
![Scott 97006 \(CC BY 2.0\)][1]
|
||||
|
||||
在 Linux 系统中用户组起着重要作用。用户组提供了一种简单方法供一组用户互相共享文件。用户组也允许系统管理员更加有效地管理用户权限,因为管理员可以将权限分配给用户组而不是逐一分配给单个用户。
|
||||
|
||||
尽管通常只要在系统中添加用户账户就会创建用户组,关于用户组如何工作以及如何运用用户组还有很多需要了解的。
|
||||
|
||||
**[ 两分钟 Linux 技巧:[ 观看这些 2 分钟视频学习如何精通一大批 Linux 命令 ][2] ]**
|
||||
### 一个用户一个用户组?
|
||||
|
||||
### 一个用户,一个用户组?
|
||||
|
||||
Linux 系统中多数用户账户被设为用户名与用户组名相同。用户 "jdoe" 会被赋予一个名为 "jdoe" 的用户组,且成为该新建用户组的唯一成员。如本例所示,该用户的登录名,用户 id 和用户组 id 在新建账户时会被添加到 **/etc/passwd** 和 **/etc/group** 文件中:
|
||||
Linux 系统中多数用户账户被设为用户名与用户组名相同。用户 `jdoe` 会被赋予一个名为 `jdoe` 的用户组,且成为该新建用户组的唯一成员。如本例所示,该用户的登录名,用户 id 和用户组 id 在新建账户时会被添加到 `/etc/passwd` 和 `/etc/group` 文件中:
|
||||
|
||||
```
|
||||
$ sudo useradd jdoe
|
||||
@ -30,15 +30,15 @@ $ grep jdoe /etc/group
|
||||
jdoe:x:1066:
|
||||
```
|
||||
|
||||
这些文件中的配置使系统得以在文本(jdoe)和数字(1066)这两种用户 id 形式之间互相转换—— jdoe 就是 1006,且 1006 就是 jdoe。
|
||||
这些文件中的配置使系统得以在文本(`jdoe`)和数字(`1066`)这两种用户 id 形式之间互相转换—— `jdoe` 就是 `1006`,且 `1006` 就是 `jdoe`。
|
||||
|
||||
分配给每个用户的 UID(用户 id)和 GID(用户组 id)通常是一样的并且顺序递增。若上例中 Jane Doe 是最近添加的用户,分配给下一个新用户的用户 id 和用户组 id 很可能都是 1067。
|
||||
分配给每个用户的 UID(用户 id)和 GID(用户组 id)通常是一样的,并且顺序递增。若上例中 Jane Doe 是最近添加的用户,分配给下一个新用户的用户 id 和用户组 id 很可能都是 1067。
|
||||
|
||||
### GID = UID?
|
||||
|
||||
UID 和 GID 可能不一致。例如,如果你用 **groupadd** 命令添加一个用户组而不指定用户组 id,系统会分配下一个可用的用户组 id(在本例中为 1067)。下一个添加到系统中的用户其 UID 会是 1067 而 GID 则为 1068。
|
||||
UID 和 GID 可能不一致。例如,如果你用 `groupadd` 命令添加一个用户组而不指定用户组 id,系统会分配下一个可用的用户组 id(在本例中为 1067)。下一个添加到系统中的用户其 UID 会是 1067 而 GID 则为 1068。
|
||||
|
||||
你可以避免这个问题,方法是添加用户组的时候指定一个较小的用户组 id 而不是接受默认值。在下面的命令中我们添加一个用户组并提供一个 GID,这个 GID 小于应用于用户账户的 GID 取值范围。
|
||||
你可以避免这个问题,方法是添加用户组的时候指定一个较小的用户组 id 而不是接受默认值。在下面的命令中我们添加一个用户组并提供一个 GID,这个 GID 小于用于用户账户的 GID 取值范围。
|
||||
|
||||
```
|
||||
$ sudo groupadd -g 500 devops
|
||||
@ -52,11 +52,11 @@ $ grep bennyg /etc/passwd
|
||||
bennyg:x:1064:50::/home/bennyg:/bin/sh
|
||||
```
|
||||
|
||||
### <ruby>主要用户组<rt>primary group</rt></ruby>和<ruby>次要用户组<rt>secondary group</rt></ruby>
|
||||
### 主要用户组和次要用户组
|
||||
|
||||
用户组实际上有两种——主要用户组和次要用户组
|
||||
用户组实际上有两种:<ruby>主要用户组<rt>primary group</rt></ruby>和<ruby>次要用户组<rt>secondary group</rt></ruby>。
|
||||
|
||||
**主要用户组**是保存在 /etc/passwd 文件中的用户组,该用户组在账户创建时配置。当用户创建一个文件,用户的主要用户组与此文件关联。
|
||||
主要用户组是保存在 `/etc/passwd` 文件中的用户组,该用户组在账户创建时配置。当用户创建一个文件时,用户的主要用户组与此文件关联。
|
||||
|
||||
```
|
||||
$ whoami
|
||||
@ -74,7 +74,7 @@ $ ls -l newfile
|
||||
+-------- 主要用户组
|
||||
```
|
||||
|
||||
用户一旦拥有账户之后被加入的那些用户组是**次要用户组**。次要用户组成员关系在 /etc/group 文件中显示。
|
||||
用户一旦拥有账户之后被加入的那些用户组是次要用户组。次要用户组成员关系在 `/etc/group` 文件中显示。
|
||||
|
||||
```
|
||||
$ grep devops /etc/group
|
||||
@ -84,15 +84,15 @@ devops:x:500:shs,jadep
|
||||
+-------- shs 和 jadep 的次要用户组
|
||||
```
|
||||
|
||||
**/etc/group** 文件给用户组分配组名称(例如 500 = devops)并记录次要用户组成员。
|
||||
`/etc/group` 文件给用户组分配组名称(例如 `500` = `devops`)并记录次要用户组成员。
|
||||
|
||||
### 首选的准则
|
||||
|
||||
每个用户是他自己的主要用户组成员并可以成为任意多个次要用户组成员这样一种准则允许用户更加容易地将个人文件和需要与同事分享的文件分开。当用户创建一个文件时,用户所属的不同用户组的成员不一定有访问权限。用户必须用 **chgrp** 命令将文件和次要用户组关联起来。
|
||||
每个用户是他自己的主要用户组成员,并可以成为任意多个次要用户组成员,这样的一种准则允许用户更加容易地将个人文件和需要与同事分享的文件分开。当用户创建一个文件时,用户所属的不同用户组的成员不一定有访问权限。用户必须用 `chgrp` 命令将文件和次要用户组关联起来。
|
||||
|
||||
### 哪里也不如自己的<ruby>家目录<rt>/home</rt></ruby>
|
||||
### 哪里也不如自己的家目录
|
||||
|
||||
添加新账户时一个重要的细节是 **useradd** 命令并不一定为新用户添加一个家目录。若你只有某些时候想为用户添加家目录,你可以在 useradd 命令中加入 **-m**选项(可以把它想象成“安家”选项)
|
||||
添加新账户时一个重要的细节是 `useradd` 命令并不一定为新用户添加一个<ruby>家目录<rt>/home</rt></ruby>家目录。若你只有某些时候想为用户添加家目录,你可以在 `useradd` 命令中加入 `-m` 选项(可以把它想象成“安家”选项)。
|
||||
|
||||
```
|
||||
$ sudo useradd -m -g devops -c "John Doe" jdoe2
|
||||
@ -100,30 +100,28 @@ $ sudo useradd -m -g devops -c "John Doe" jdoe2
|
||||
|
||||
此命令中的选项如下:
|
||||
|
||||
* **-m** 创建家目录并在其中生成初始文件
|
||||
* **-g** 指定用户归属的用户组
|
||||
* **-c** 添加账户描述信息(通常是用户的姓名)
|
||||
* `-m` 创建家目录并在其中生成初始文件
|
||||
* `-g` 指定用户归属的用户组
|
||||
* `-c` 添加账户描述信息(通常是用户的姓名)
|
||||
|
||||
|
||||
|
||||
若你希望总是创建家目录,你可以编辑 **/etc/login.defs** 文件来更改默认工作方式。更改或添加 CREATE_HOME 变量并将其设置为 "yes":
|
||||
若你希望总是创建家目录,你可以编辑 `/etc/login.defs` 文件来更改默认工作方式。更改或添加 `CREATE_HOME` 变量并将其设置为 `yes`:
|
||||
|
||||
```
|
||||
$ grep CREATE_HOME /etc/login.defs
|
||||
CREATE_HOME yes
|
||||
```
|
||||
|
||||
另一种方法是用自己的账户设置别名从而让 **useradd** 一直带有 -m 选项。
|
||||
另一种方法是用自己的账户设置别名从而让 `useradd` 一直带有 `-m` 选项。
|
||||
|
||||
```
|
||||
$ alias useradd=’useradd -m’
|
||||
```
|
||||
|
||||
确保将该别名添加到你的 ~/.bashrc 文件或类似的启动文件中以使其永久生效。
|
||||
确保将该别名添加到你的 `~/.bashrc` 文件或类似的启动文件中以使其永久生效。
|
||||
|
||||
### 深入了解 /etc/login.defs
|
||||
|
||||
下面这个命令可列出 /etc/login.defs 文件中的全部设置。**grep**命令会隐藏所有注释和空行。
|
||||
下面这个命令可列出 `/etc/login.defs` 文件中的全部设置。下面的 `grep` 命令会隐藏所有注释和空行。
|
||||
|
||||
```
|
||||
$ cat /etc/login.defs | grep -v "^#" | grep -v "^$"
|
||||
@ -163,14 +161,14 @@ ENCRYPT_METHOD SHA512
|
||||
|
||||
### 如何显示用户所属的用户组
|
||||
|
||||
出于各种原因用户可能是多个用户组的成员。用户组成员身份给与用户对用户组拥有的文件和目录的访问权限,有时候这种工作方式是至关重要的。要生成某个用户所属用户组的清单,用 **groups** 命令即可。
|
||||
出于各种原因用户可能是多个用户组的成员。用户组成员身份给与用户对用户组拥有的文件和目录的访问权限,有时候这种工作方式是至关重要的。要生成某个用户所属用户组的清单,用 `groups` 命令即可。
|
||||
|
||||
```
|
||||
$ groups jdoe
|
||||
jdoe : jdoe adm admin cdrom sudo dip plugdev lpadmin staff sambashare
|
||||
```
|
||||
|
||||
你可以键入不带任何参数的“groups”来列出你自己的用户组。
|
||||
你可以键入不带任何参数的 `groups` 命令来列出你自己的用户组。
|
||||
|
||||
### 如何添加用户至用户组
|
||||
|
||||
@ -186,9 +184,9 @@ $ sudo usermod -a -G devops jdoe
|
||||
$ sudo usermod -a -G devops,mgrs jdoe
|
||||
```
|
||||
|
||||
参数 **-a** 意思是“添加”,**-G** 指定用户组列表
|
||||
参数 `-a` 意思是“添加”,`-G` 指定用户组列表。
|
||||
|
||||
你可以编辑 **/etc/group** 文件将用户名从用户组成员名单中删除,从而将用户从用户组中移除。usermod 命令或许也有个选项用于从用户组中删除某个成员。
|
||||
你可以编辑 `/etc/group` 文件将用户名从用户组成员名单中删除,从而将用户从用户组中移除。`usermod` 命令或许也有个选项用于从用户组中删除某个成员。
|
||||
|
||||
```
|
||||
fish:x:16:nemo,dory,shark
|
||||
@ -201,18 +199,14 @@ fish:x:16:nemo,dory
|
||||
|
||||
添加和管理用户组并非特别困难,但长远来看配置账户时的一致性可使这项工作更容易些。
|
||||
|
||||
**[ 延伸阅读:[必会的 Linux 命令][3] ]**
|
||||
|
||||
加入 Network World 的 [Facebook][4] 和 [LinkedIn][5] 社区,对最重要的话题发表你的评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3409781/mastering-user-groups-on-linux.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/0x996)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[0x996](https://github.com/0x996)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,145 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11151-1.html)
|
||||
[#]: subject: (How to run virtual machines with virt-manager)
|
||||
[#]: via: (https://fedoramagazine.org/full-virtualization-system-on-fedora-workstation-30/)
|
||||
[#]: author: (Marco Sarti https://fedoramagazine.org/author/msarti/)
|
||||
|
||||
如何使用 virt-manager 运行虚拟机
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
在早些年,在同一台笔记本中运行多个操作系统只能双启动。当时,这些操作系统很难同时运行或彼此交互。许多年过去了,在普通的 PC 上,可以通过虚拟化在一个系统中运行另一个系统。
|
||||
|
||||
最近的 PC 或笔记本(包括价格适中的笔记本电脑)都有硬件虚拟化,可以运行性能接近物理主机的虚拟机。
|
||||
|
||||
虚拟化因此变得常见,它可以用来测试操作系统、学习新技术、创建自己的家庭云、创建自己的测试环境等等。本文将指导你使用 Fedora 上的 Virt Manager 来设置虚拟机。
|
||||
|
||||
### 介绍 QEMU/KVM 和 Libvirt
|
||||
|
||||
与所有其他 Linux 系统一样,Fedora 附带了虚拟化扩展支持。它由作为内核模块之一的 KVM(基于内核的虚拟机)提供支持。
|
||||
|
||||
QEMU 是一个完整的系统仿真器,它可与 KVM 协同工作,允许你使用硬件和外部设备创建虚拟机。
|
||||
|
||||
最后,[libvirt][2] 能让你管理基础设施的 API 层,即创建和运行虚拟机。
|
||||
|
||||
这三个技术都是开源的,我们将在 Fedora Workstation 上安装它们。
|
||||
|
||||
### 安装
|
||||
|
||||
#### 步骤 1:安装软件包
|
||||
|
||||
安装是一个相当简单的操作。 Fedora 仓库提供了 “virtualization” 软件包组,其中包含了你需要的所有包。
|
||||
|
||||
```
|
||||
sudo dnf install @virtualization
|
||||
```
|
||||
|
||||
#### 步骤 2:编辑 libvirtd 配置
|
||||
|
||||
默认情况下,系统管理仅限于 root 用户,如果要启用常规用户,那么必须按以下步骤操作。
|
||||
|
||||
打开 `/etc/libvirt/libvirtd.conf` 进行编辑:
|
||||
|
||||
```
|
||||
sudo vi /etc/libvirt/libvirtd.conf
|
||||
```
|
||||
|
||||
将 UNIX 域套接字组所有者设置为 libvirt:
|
||||
|
||||
```
|
||||
unix_sock_group = "libvirt"
|
||||
```
|
||||
|
||||
调整 UNIX 域套接字的读写权限:
|
||||
|
||||
```
|
||||
unix_sock_rw_perms = "0770"
|
||||
```
|
||||
|
||||
#### 步骤 3:启动并启用 libvirtd 服务
|
||||
|
||||
```
|
||||
sudo systemctl start libvirtd
|
||||
sudo systemctl enable libvirtd
|
||||
```
|
||||
|
||||
#### 步骤 4:将用户添加到组
|
||||
|
||||
为了管理 libvirt 与普通用户,你必须将用户添加到 `libvirt` 组,否则每次启动 `virt-manager` 时,都会要求你输入 sudo 密码。
|
||||
|
||||
```
|
||||
sudo usermod -a -G libvirt $(whoami)
|
||||
```
|
||||
|
||||
这会将当前用户添加到组中。你必须注销并重新登录才能应用更改。
|
||||
|
||||
### 开始使用 virt-manager
|
||||
|
||||
可以通过命令行 (`virsh`) 或通过 `virt-manager` 图形界面管理 libvirt 系统。如果你想做虚拟机自动化配置,那么命令行非常有用,例如使用 [Ansible][3],但在本文中我们将专注于用户友好的图形界面。
|
||||
|
||||
`virt-manager` 界面很简单。主窗口显示连接列表,其中包括本地系统连接。
|
||||
|
||||
连接设置包括虚拟网络和存储定义。你可以定义多个虚拟网络,这些网络可用于在客户端系统之间以及客户端系统和主机之间进行通信。
|
||||
|
||||
### 创建你的第一个虚拟机
|
||||
|
||||
要开始创建新虚拟机,请按下主窗口左上角的按钮:
|
||||
|
||||
![][4]
|
||||
|
||||
向导的第一步需要选择安装模式。你可以选择本地安装介质、网络引导/安装或导入现有虚拟磁盘:
|
||||
|
||||
![][5]
|
||||
|
||||
选择本地安装介质,下一步将需要选择 ISO 镜像路径:
|
||||
|
||||
![ ][6]
|
||||
|
||||
随后的两个步骤能让你调整新虚拟机的 CPU、内存和磁盘大小。最后一步将要求你选择网络选项:如果你希望虚拟机通过 NAT 与外部隔离,请选择默认网络。如果你希望从外部访问虚拟机,那么选择桥接。请注意,如果选择桥接,那么虚拟机则无法与主机通信。
|
||||
|
||||
如果要在启动设置之前查看或更改配置,请选中“安装前自定义配置”:
|
||||
|
||||
![][7]
|
||||
|
||||
虚拟机配置窗口能让你查看和修改硬件配置。你可以添加磁盘、网络接口、更改引导选项等。满意后按“开始安装”:
|
||||
|
||||
![][8]
|
||||
|
||||
此时,你将被重定向到控制台来继续安装操作系统。操作完成后,你可以从控制台访问虚拟机:
|
||||
|
||||
![][9]
|
||||
|
||||
刚刚创建的虚拟机将出现在主窗口的列表中,你还能看到 CPU 和内存占用率的图表:
|
||||
|
||||
![][10]
|
||||
|
||||
libvirt 和 `virt-manager` 是功能强大的工具,它们可以以企业级管理为你的虚拟机提供出色的自定义。如果你需要更简单的东西,请注意 Fedora Workstation [预安装的 GNOME Boxes 已经能够满足基础的虚拟化要求][11]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/full-virtualization-system-on-fedora-workstation-30/
|
||||
|
||||
作者:[Marco Sarti][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/msarti/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2019/07/virt-manager-816x346.jpg
|
||||
[2]: https://libvirt.org/
|
||||
[3]: https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/
|
||||
[4]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-09-41-45.png
|
||||
[5]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-09-30-53.png
|
||||
[6]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-10-42-39.png
|
||||
[7]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-10-43-21.png
|
||||
[8]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-10-44-58.png
|
||||
[9]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-10-55-35.png
|
||||
[10]: https://fedoramagazine.org/wp-content/uploads/2019/07/Screenshot-from-2019-07-14-11-09-22.png
|
||||
[11]: https://fedoramagazine.org/getting-started-with-virtualization-in-gnome-boxes/
|
@ -1,45 +1,45 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: translator: (MjSeven)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11158-1.html)
|
||||
[#]: subject: (Getting help for Linux shell built-ins)
|
||||
[#]: via: (https://www.networkworld.com/article/3410350/getting-help-for-linux-shell-built-ins.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
Getting help for Linux shell built-ins
|
||||
获取有关 Linux shell 内置命令的帮助
|
||||
======
|
||||
Linux built-ins are commands that are part of a user’s shell. Here's an explanation on how to recognize them and get help on their use.
|
||||
![Sandra Henry-Stocker][1]
|
||||
|
||||
Linux built-ins are commands that are built into the shell, much like shelves that are built into a wall. You won’t find them as stand-alone files the way standard Linux commands are stored in /usr/bin and you probably use quite a few of them without ever questioning how they’re different from commands such as **ls** and **pwd**.
|
||||
> Linux 内置命令属于用户 shell 的一部分,本文将告诉你如何识别它们并获取使用它们的帮助。
|
||||
|
||||
Built-ins are used just like other Linux commands. They are likely to run a bit faster than similar commands that are not part of your shell. Bash built-ins include commands such as **alias**, **export** and **bg**.
|
||||
![](https://img.linux.net.cn/data/attachment/album/201907/28/204915bj1wmhxeargx14lt.jpg)
|
||||
|
||||
**[ Two-Minute Linux Tips: [Learn how to master a host of Linux commands in these 2-minute video tutorials][2] ]**
|
||||
Linux 内置命令是内置于 shell 中的命令,很像内置于墙中的书架。与标准 Linux 命令存储在 `/usr/bin` 中的方式不同,你不会找到它们的独立文件,你可能使用过相当多的内置命令,但你不会感觉到它们与 `ls` 和 `pwd` 等命令有何不同。
|
||||
|
||||
As you might suspect, because built-ins are shell-specific, they won't be supplied with man pages. Ask **man** to help with **bg** and you'll see something like this:
|
||||
内置命令与其他 Linux 命令一样使用,它们可能要比不属于 shell 的类似命令运行得快一些。Bash 内置命令包括 `alias`、`export` 和 `bg` 等。
|
||||
|
||||
正如你担心的那样,因为内置命令是特定于 shell 的,所以它们不会提供手册页。使用 `man` 来查看 `bg`,你会看到这样的东西:
|
||||
|
||||
```
|
||||
$ man bg
|
||||
No manual entry for bg
|
||||
```
|
||||
|
||||
Another tip-off that a command is a built-in is when you use the **which** command to identify the source of the command. Bash's non-response will remind you that there is no file associated with the built-in:
|
||||
判断内置命令的另一个提示是当你使用 `which` 命令来识别命令的来源时,Bash 不会响应,表示没有与内置命令关联的文件:
|
||||
|
||||
```
|
||||
$ which bg
|
||||
$
|
||||
```
|
||||
|
||||
If your shell is **/bin/zsh**, on the other hand, you might get a slightly more illuminating response:
|
||||
另一方面,如果你的 shell 是 `/bin/zsh`,你可能会得到一个更有启发性的响应:
|
||||
|
||||
```
|
||||
% which bg
|
||||
bg: shell built-in command
|
||||
```
|
||||
|
||||
Additional help is available with bash, but it comes through the use of the **help** command:
|
||||
bash 提供了额外的帮助信息,但它是通过使用 `help` 命令实现的:
|
||||
|
||||
```
|
||||
$ help bg
|
||||
@ -54,7 +54,7 @@ bg: bg [job_spec ...]
|
||||
Returns success unless job control is not enabled or an error occurs.
|
||||
```
|
||||
|
||||
If you want to see a list of all of the built-ins that bash provides, use the **compgen -b** command. Pipe the output to column for a nicely formatted listing.
|
||||
如果你想要查看 bash 提供的所有内置命令的列表,使用 `compgen -b` 命令。通过管道将命令输出到列中,以获得较好格式的清单。
|
||||
|
||||
```
|
||||
$ compgen -b | column
|
||||
@ -71,7 +71,7 @@ cd eval jobs readarray true
|
||||
command exec kill readonly type
|
||||
```
|
||||
|
||||
If you use the **help** command, you’ll see a list of built-ins along with short descriptions. This list is, however, truncated (ending with the **help** command):
|
||||
如果你使用 `help` 命令,你将看到一个内置命令列表以及简短描述。但是,这个列表被截断了(以 `help` 命令结尾):
|
||||
|
||||
```
|
||||
$ help
|
||||
@ -123,9 +123,9 @@ A star (*) next to a name means that the command is disabled.
|
||||
help [-dms] [pattern ...] { COMMANDS ; }
|
||||
```
|
||||
|
||||
As you can see from the listings above, the **help** command is itself a built-in.
|
||||
从上面的清单中可以看出,`help` 命令本身就是内置的。
|
||||
|
||||
You can get more information on any of these built-ins by providing the **help** command with the name of the built-in you're curious about — as in **help dirs**.
|
||||
你可以通过向 `help` 命令提供你感兴趣的内置命令名称来获取关于它们的更多信息,例如 `help dirs`:
|
||||
|
||||
```
|
||||
$ help dirs
|
||||
@ -157,7 +157,7 @@ dirs: dirs [-clpv] [+N] [-N]
|
||||
Returns success unless an invalid option is supplied or an error occurs.
|
||||
```
|
||||
|
||||
Built-ins provide much of the functionality of each shell. Any shell you use will have some built-ins, though how to get information on these built-ins may differ from shell to shell. For **zsh**, for example, you can get a description of built-in commands by using the **man zshbuiltins** command.
|
||||
内置命令提供了每个 shell 的大部分功能。你使用的任何 shell 都有一些内置命令,但是如何获取这些内置命令的信息可能因 shell 而异。例如,对于 `zsh`,你可以使用 `man zshbuiltins` 命令获得其内置命令的描述。
|
||||
|
||||
```
|
||||
$ man zshbuiltins
|
||||
@ -177,7 +177,7 @@ SHELL BUILTIN COMMANDS
|
||||
…
|
||||
```
|
||||
|
||||
Within this lengthy man page, you will find a list of built-ins with useful descriptions as in this excerpt.
|
||||
在这个冗长的手册页中,你将找到一个内置命令列表,其中包含有用的描述,如下摘录中所示:
|
||||
|
||||
```
|
||||
bg [ job ... ]
|
||||
@ -194,13 +194,9 @@ break [ n ]
|
||||
instead of just one.
|
||||
```
|
||||
|
||||
### Wrap-up
|
||||
### 最后
|
||||
|
||||
Linux built-ins are essential to each shell and operate like shell-specific commands. If you use a different shell from time to time and notice that some command you often use doesn’t seem to exist or doesn’t work as you were expecting, it just might be that it's one of your normal shell's built-ins.
|
||||
|
||||
**[ Also see: [Invaluable tips and tricks for troubleshooting Linux][3] ]**
|
||||
|
||||
Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind.
|
||||
Linux 内置命令对于每个 shell 都很重要,它的操作类似特定于 shell 的命令一样。如果你经常使用不同的 shell,并注意到你经常使用的某些命令似乎不存在或者不能按预期工作,那么它可能是你使用的其他 shell 之一中的内置命令。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -208,8 +204,8 @@ via: https://www.networkworld.com/article/3410350/getting-help-for-linux-shell-b
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,112 @@
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "hello-wn"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-11156-1.html"
|
||||
[#]: subject: "How to Create a User Account Without useradd Command in Linux?"
|
||||
[#]: via: "https://www.2daygeek.com/linux-user-account-creation-in-manual-method/"
|
||||
[#]: author: "Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/"
|
||||
|
||||
在 Linux 中不使用 useradd 命令如何创建用户账号
|
||||
========
|
||||
|
||||
Linux 中有三个命令可以用来创建用户账号。你尝试过在 Linux 中手动创建用户吗?我的意思是不使用上面说的三个命令。
|
||||
|
||||
如果你不知道怎么做,本文可以手把手教你,并向你展示细节部分。
|
||||
|
||||
你可能想,这怎么可能?别担心,正如我们多次提到的那样,在 Linux 上任何事都可以搞定。这只是其中一例。
|
||||
|
||||
是的,我们可以做到的。想了解更多吗?
|
||||
|
||||
- [在 Linux 中创建用户的三种方法][1]
|
||||
- [在 Linux 中批量创建用户的两种方法][2]
|
||||
|
||||
话不多说,让我们开始吧。
|
||||
|
||||
首先,我们要找出最后创建的 UID 和 GID 信息。 掌握了这些信息之后,就可以继续下一步。
|
||||
|
||||
```
|
||||
# cat /etc/passwd | tail -1
|
||||
tuser1:x:1153:1154:Test User:/home/tuser1:/bin/bash
|
||||
```
|
||||
|
||||
根据以上输出,最后创建的用户 UID 是 1153,GID 是 1154。为了试验,我们将在系统中添加 `tuser2` 用户。
|
||||
|
||||
现在,在`/etc/passwd` 文件中添加一条用户信息。 总共七个字段,你需要添加一些必要信息。
|
||||
|
||||
```
|
||||
+-----------------------------------------------------------------------+
|
||||
|username:password:UID:GID:Comments:User Home Directory:User Login Shell|
|
||||
+-----------------------------------------------------------------------+
|
||||
| | | | | | |
|
||||
1 2 3 4 5 6 7
|
||||
```
|
||||
|
||||
1. 用户名:这个字段表示用户名称。字符长度必须在 1 到 32 之间。
|
||||
2. 密码(`x`):表示存储在 `/etc/shadow` 文件中的加密密码。
|
||||
3. 用户 ID:表示用户的 ID(UID),每个用户都有独一无二的 UID。UID 0 保留给 root 用户,UID 1-99 保留给系统用户,UID 100-999 保留给系统账号/组。
|
||||
4. 组 ID:表示用户组的 ID(GID),每个用户组都有独一无二的 GID,存储在 `/etc/group` 文件中。
|
||||
5. 注释/用户 ID 信息:这个字段表示备注,用于描述用户信息。
|
||||
6. 主目录(`/home/$USER`):表示用户的主目录。
|
||||
7. shell(`/bin/bash`):表示用户使用的 shell。
|
||||
|
||||
在文件最后添加用户信息。
|
||||
|
||||
```
|
||||
# vi /etc/passwd
|
||||
|
||||
tuser2:x:1154:1155:Test User2:/home/tuser2:/bin/bash
|
||||
```
|
||||
|
||||
你需要创建相同名字的用户组。同样地,在 `/etc/group` 文件中添加用户组信息。
|
||||
|
||||
```
|
||||
# vi /etc/group
|
||||
|
||||
tuser2:x:1155:
|
||||
```
|
||||
|
||||
做完以上两步之后,给用户设置一个密码。
|
||||
|
||||
```
|
||||
# passwd tuser2
|
||||
|
||||
Changing password for user tuser2.
|
||||
New password:
|
||||
Retype new password:
|
||||
passwd: all authentication tokens updated successfully.
|
||||
```
|
||||
|
||||
最后,试着登录新创建的用户。
|
||||
|
||||
```
|
||||
# ssh [email protected]
|
||||
|
||||
[email protected]'s password:
|
||||
Creating directory '/home/tuser2'.
|
||||
|
||||
$ls -la
|
||||
|
||||
total 16
|
||||
drwx------. 2 tuser2 tuser2 59 Jun 17 09:46 .
|
||||
drwxr-xr-x. 15 root root 4096 Jun 17 09:46 ..
|
||||
-rw-------. 1 tuser2 tuser2 18 Jun 17 09:46 .bash_logout
|
||||
-rw-------. 1 tuser2 tuser2 193 Jun 17 09:46 .bash_profile
|
||||
-rw-------. 1 tuser2 tuser2 231 Jun 17 09:46 .bashrc
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
via: https://www.2daygeek.com/linux-user-account-creation-in-manual-method/
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hello-wn](https://github.com/hello-wn)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.2daygeek.com/author/magesh/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.2daygeek.com/linux-user-account-creation-useradd-adduser-newusers/
|
||||
[2]: https://www.2daygeek.com/linux-bulk-users-creation-useradd-newusers/
|
328
published/201907/20190724 Master the Linux -ls- command.md
Normal file
328
published/201907/20190724 Master the Linux -ls- command.md
Normal file
@ -0,0 +1,328 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11159-1.html)
|
||||
[#]: subject: (Master the Linux 'ls' command)
|
||||
[#]: via: (https://opensource.com/article/19/7/master-ls-command)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
精通 Linux 的 ls 命令
|
||||
======
|
||||
|
||||
> Linux 的 ls 命令拥有数量惊人的选项,可以提供有关文件的重要信息。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201907/29/105754ii3874q2ww7lo882.jpg)
|
||||
|
||||
`ls` 命令可以列出一个 [POSIX][2] 系统上的文件。这是一个简单的命令,但它经常被低估,不是它能做什么(因为它确实只做了一件事),而是你该如何优化对它的使用。
|
||||
|
||||
要知道在最重要的 10 个终端命令中,这个简单的 `ls` 命令可以排进前三,因为 `ls` 不会*只是*列出文件,它还会告诉你有关它们的重要信息。它会告诉你诸如拥有文件或目录的人、每个文件修改的时间、甚至是什么类型的文件。它的附带功能能让你了解你在哪里、附近有些什么,以及你可以用它们做什么。
|
||||
|
||||
如果你对 `ls` 的体验仅限于你的发行版在 `.bashrc` 中的别名,那么你可能错失了它。
|
||||
|
||||
### GNU 还是 BSD?
|
||||
|
||||
在了解 `ls` 的隐藏能力之前,你必须确定你正在运行哪个 `ls` 命令。有两个最流行的版本:包含在 GNU coreutils 包中的 GNU 版本,以及 BSD 版本。如果你正在运行 Linux,那么你很可能已经安装了 GNU 版本的 `ls`(LCTT 译注:几乎可以完全确定)。如果你正在运行 BSD 或 MacOS,那么你有的是 BSD 版本。本文会介绍它们的不同之处。
|
||||
|
||||
你可以使用 `--version` 选项找出你计算机上的版本:
|
||||
|
||||
```
|
||||
$ ls --version
|
||||
```
|
||||
|
||||
如果它返回有关 GNU coreutils 的信息,那么你拥有的是 GNU 版本。如果它返回一个错误,你可能正在运行的是 BSD 版本(运行 `man ls | head` 以确定)。
|
||||
|
||||
你还应该调查你的发行版可能具有哪些预设选项。终端命令的自定义通常放在 `$HOME/.bashrc` 或 `$HOME/.bash_aliases` 或 `$HOME/.profile` 中,它们是通过将 `ls` 别名化为更复杂的 `ls` 命令来完成的。例如:
|
||||
|
||||
```
|
||||
alias ls='ls --color'
|
||||
```
|
||||
|
||||
发行版提供的预设非常有用,但它们确实很难分辨出哪些是 `ls` 本身的特性,哪些是它的附加选项提供的。你要是想要运行 `ls` 命令本身而不是它的别名,你可以用反斜杠“转义”命令:
|
||||
|
||||
```
|
||||
$ \ls
|
||||
```
|
||||
|
||||
### 分类
|
||||
|
||||
单独运行 `ls` 会以适合你终端的列数列出文件:
|
||||
|
||||
```
|
||||
$ ls ~/example
|
||||
bunko jdk-10.0.2
|
||||
chapterize otf2ttf.ff
|
||||
despacer overtar.sh
|
||||
estimate.sh pandoc-2.7.1
|
||||
fop-2.3 safe_yaml
|
||||
games tt
|
||||
```
|
||||
|
||||
这是有用的信息,但所有这些文件看起来基本相同,没有方便的图标来快速表示出哪个是目录、文本文件或图像等等。
|
||||
|
||||
使用 `-F`(或 GNU 上的长选项 `--classify`)以在每个条目之后显示标识文件类型的指示符:
|
||||
|
||||
```
|
||||
$ ls ~/example
|
||||
bunko jdk-10.0.2/
|
||||
chapterize* otf2ttf.ff*
|
||||
despacer* overtar.sh*
|
||||
estimate.sh pandoc@
|
||||
fop-2.3/ pandoc-2.7.1/
|
||||
games/ tt*
|
||||
```
|
||||
|
||||
使用此选项,终端中列出的项目使用简写符号来按文件类型分类:
|
||||
|
||||
* 斜杠(`/`)表示目录(或“文件夹”)。
|
||||
* 星号(`*`)表示可执行文件。这包括二进制文件(编译代码)以及脚本(具有[可执行权限][3]的文本文件)。
|
||||
* 符号(`@`)表示符号链接(或“别名”)。
|
||||
* 等号(`=`)表示套接字。
|
||||
* 在 BSD 上,百分号(`%`)表示<ruby>涂改<rt>whiteout</rt></ruby>(某些文件系统上的文件删除方法)。
|
||||
* 在 GNU 上,尖括号(`>`)表示<ruby>门<rt>door</rt></ruby>([Illumos][4] 和 Solaris上的进程间通信)。
|
||||
* 竖线(`|`)表示 [FIFO][5] 管道。
|
||||
|
||||
这个选项的一个更简单的版本是 `-p`,它只区分文件和目录。
|
||||
|
||||
(LCTT 译注:在支持彩色的终端上,使用 `--color` 选项可以以不同的颜色来区分文件类型,但要注意如果将输出导入到管道中,则颜色消失。)
|
||||
|
||||
### 长列表
|
||||
|
||||
从 `ls` 获取“长列表”的做法是如此常见,以至于许多发行版将 `ll` 别名为 `ls -l`。长列表提供了许多重要的文件属性,例如权限、拥有每个文件的用户、文件所属的组、文件大小(以字节为单位)以及文件上次更改的日期:
|
||||
|
||||
```
|
||||
$ ls -l
|
||||
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
|
||||
-rwxrwxr-x. 1 seth users 662 Apr 29 22:27 factorial
|
||||
-rwxrwx---. 1 seth users 20697793 Jun 29 2018 fop-2.3-bin.tar.gz
|
||||
-rwxrwxr-x. 1 seth users 6210 May 22 10:22 geteltorito
|
||||
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
|
||||
[...]
|
||||
```
|
||||
|
||||
如果你不想以字节为单位,请添加 `-h` 标志(或 GNU 中的 `--human`)以将文件大小转换为更加人性化的表示方法:
|
||||
|
||||
```
|
||||
$ ls --human
|
||||
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
|
||||
-rwxrwxr-x. 1 seth seth 662 Apr 29 22:27 factorial
|
||||
-rwxrwx---. 1 seth users 20M Jun 29 2018 fop-2.3-bin.tar.gz
|
||||
-rwxrwxr-x. 1 seth seth 6.1K May 22 10:22 geteltorito
|
||||
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
|
||||
```
|
||||
|
||||
要看到更少的信息,你可以带有 `-o` 选项只显示所有者的列,或带有 `-g` 选项只显示所属组的列:
|
||||
|
||||
```
|
||||
$ ls -o
|
||||
-rwxrwx---. 1 seth 455 Mar 2 2017 estimate.sh
|
||||
-rwxrwxr-x. 1 seth 662 Apr 29 22:27 factorial
|
||||
-rwxrwx---. 1 seth 20M Jun 29 2018 fop-2.3-bin.tar.gz
|
||||
-rwxrwxr-x. 1 seth 6.1K May 22 10:22 geteltorito
|
||||
-rwxrwx---. 1 seth 177 Nov 12 2018 html4mutt.sh
|
||||
```
|
||||
|
||||
也可以将两个选项组合使用以显示两者。
|
||||
|
||||
### 时间和日期格式
|
||||
|
||||
`ls` 的长列表格式通常如下所示:
|
||||
|
||||
```
|
||||
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
|
||||
-rwxrwxr-x. 1 seth users 662 Apr 29 22:27 factorial
|
||||
-rwxrwx---. 1 seth users 20697793 Jun 29 2018 fop-2.3-bin.tar.gz
|
||||
-rwxrwxr-x. 1 seth users 6210 May 22 10:22 geteltorito
|
||||
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
|
||||
```
|
||||
|
||||
月份的名字不便于排序,无论是通过计算还是识别(取决于你的大脑是否倾向于喜欢字符串或整数)。你可以使用 `--time-style` 选项和格式名称更改时间戳的格式。可用格式为:
|
||||
|
||||
* `full-iso`:ISO 完整格式(1970-01-01 21:12:00)
|
||||
* `long-iso`:ISO 长格式(1970-01-01 21:12)
|
||||
* `iso`:iso 格式(01-01 21:12)
|
||||
* `locale`:本地化格式(使用你的区域设置)
|
||||
* `posix-STYLE`:POSIX 风格(用区域设置定义替换 `STYLE`)
|
||||
|
||||
你还可以使用 `date` 命令的正式表示法创建自定义样式。
|
||||
|
||||
### 按时间排序
|
||||
|
||||
通常,`ls` 命令按字母顺序排序。你可以使用 `-t` 选项根据文件的最近更改的时间(最新的文件最先列出)进行排序。
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
$ touch foo bar baz
|
||||
$ ls
|
||||
bar baz foo
|
||||
$ touch foo
|
||||
$ ls -t
|
||||
foo bar baz
|
||||
```
|
||||
|
||||
### 列出方式
|
||||
|
||||
`ls` 的标准输出平衡了可读性和空间效率,但有时你需要按照特定方式排列的文件列表。
|
||||
|
||||
要以逗号分隔文件列表,请使用 `-m`:
|
||||
|
||||
```
|
||||
ls -m ~/example
|
||||
bar, baz, foo
|
||||
```
|
||||
|
||||
要强制每行一个文件,请使用 `-1` 选项(这是数字 1,而不是小写的 L):
|
||||
|
||||
```
|
||||
$ ls -1 ~/bin/
|
||||
bar
|
||||
baz
|
||||
foo
|
||||
```
|
||||
|
||||
要按文件扩展名而不是文件名对条目进行排序,请使用 `-X`(这是大写 X):
|
||||
|
||||
```
|
||||
$ ls
|
||||
bar.xfc baz.txt foo.asc
|
||||
$ ls -X
|
||||
foo.asc baz.txt bar.xfc
|
||||
```
|
||||
|
||||
### 隐藏杂项
|
||||
|
||||
在某些 `ls` 列表中有一些你可能不关心的条目。例如,元字符 `.` 和 `..` 分别代表“本目录”和“父目录”。如果你熟悉在终端中如何切换目录,你可能已经知道每个目录都将自己称为 `.`,并将其父目录称为 `..`,因此当你使用 `-a` 选项显示隐藏文件时并不需要它经常提醒你。
|
||||
|
||||
要显示几乎所有隐藏文件(`.` 和 `..` 除外),请使用 `-A` 选项:
|
||||
|
||||
```
|
||||
$ ls -a
|
||||
.
|
||||
..
|
||||
.android
|
||||
.atom
|
||||
.bash_aliases
|
||||
[...]
|
||||
$ ls -A
|
||||
.android
|
||||
.atom
|
||||
.bash_aliases
|
||||
[...]
|
||||
```
|
||||
|
||||
有许多优秀的 Unix 工具有保存备份文件的传统,它们会在保存文件的名称后附加一些特殊字符作为备份文件。例如,在 Vim 中,备份会以在文件名后附加 `~` 字符的文件名保存。
|
||||
|
||||
这些类型的备份文件已经多次使我免于愚蠢的错误,但是经过多年享受它们提供的安全感后,我觉得不需要用视觉证据来证明它们存在。我相信 Linux 应用程序可以生成备份文件(如果它们声称这样做的话),我很乐意相信它们存在 —— 而不用必须看到它们。
|
||||
|
||||
要隐藏备份文件,请使用 `-B` 或 `--ignore-backups` 隐藏常用备份格式(此选项在 BSD 的 `ls` 中不可用):
|
||||
|
||||
```
|
||||
$ ls
|
||||
bar.xfc baz.txt foo.asc~ foo.asc
|
||||
$ ls -B
|
||||
bar.xfc baz.txt foo.asc
|
||||
```
|
||||
|
||||
当然,备份文件仍然存在;它只是过滤掉了,你不必看到它。
|
||||
|
||||
除非另有配置,GNU Emacs 在文件名的开头和结尾添加哈希字符(`#`)来保存备份文件(`#file#`)。其他应用程序可能使用不同的样式。使用什么模式并不重要,因为你可以使用 `--hide` 选项创建自己的排除项:
|
||||
|
||||
```
|
||||
$ ls
|
||||
bar.xfc baz.txt #foo.asc# foo.asc
|
||||
$ ls --hide="#*#"
|
||||
bar.xfc baz.txt foo.asc
|
||||
```
|
||||
|
||||
### 递归地列出目录
|
||||
|
||||
除非你在指定目录上运行 `ls`,否则子目录的内容不会与 `ls` 命令一起列出:
|
||||
|
||||
```
|
||||
$ ls -F
|
||||
example/ quux* xyz.txt
|
||||
$ ls -R
|
||||
quux xyz.txt
|
||||
|
||||
./example:
|
||||
bar.xfc baz.txt #foo.asc# foo.asc
|
||||
```
|
||||
|
||||
### 使用别名使其永久化
|
||||
|
||||
`ls` 命令可能是 shell 会话期间最常使用的命令。这是你的眼睛和耳朵,为你提供上下文信息和确认命令的结果。虽然有很多选项很有用,但 `ls` 之美的一部分就是简洁:两个字符和回车键,你就知道你到底在哪里以及附近有什么。如果你不得不停下思考(更不用说输入)几个不同的选项,它会变得不那么方便,所以通常情况下,即使最有用的选项也不会用了。
|
||||
|
||||
解决方案是为你的 `ls` 命令添加别名,以便在使用它时,你可以获得最关心的信息。
|
||||
|
||||
要在 Bash shell 中为命令创建别名,请在主目录中创建名为 `.bash_aliases` 的文件(必须在开头包含 `.`)。 在此文件中,列出要创建的别名,然后是要为其创建别名的命令。例如:
|
||||
|
||||
```
|
||||
alias ls='ls -A -F -B --human --color'
|
||||
```
|
||||
|
||||
这一行导致你的 Bash shell 将 `ls` 命令解释为 `ls -A -F -B --human --color`。
|
||||
|
||||
你不必仅限于重新定义现有命令,还可以创建自己的别名:
|
||||
|
||||
```
|
||||
alias ll='ls -l'
|
||||
alias la='ls -A'
|
||||
alias lh='ls -h'
|
||||
```
|
||||
|
||||
要使别名起作用,shell 必须知道 `.bash_aliases` 配置文件存在。在编辑器中打开 `.bashrc` 文件(如果它不存在则创建它),并包含以下代码块:
|
||||
|
||||
```
|
||||
if [ -e $HOME/.bash_aliases ]; then
|
||||
source $HOME/.bash_aliases
|
||||
fi
|
||||
```
|
||||
|
||||
每次加载 `.bashrc`(这是一个新的 Bash shell 启动的时候),Bash 会将 `.bash_aliases` 加载到你的环境中。你可以关闭并重新启动 Bash 会话,或者直接强制它执行此操作:
|
||||
|
||||
```
|
||||
$ source ~/.bashrc
|
||||
```
|
||||
|
||||
如果你忘了你是否有别名命令,`which` 命令可以告诉你:
|
||||
|
||||
```
|
||||
$ which ls
|
||||
alias ls='ls -A -F -B --human --color'
|
||||
/usr/bin/ls
|
||||
```
|
||||
|
||||
如果你将 `ls` 命令别名为带有选项的 `ls` 命令,则可以通过将反斜杠前缀到 `ls` 前来覆盖你的别名。例如,在示例别名中,使用 `-B` 选项隐藏备份文件,这意味着无法使用 `ls` 命令显示备份文件。 可以覆盖该别名以查看备份文件:
|
||||
|
||||
```
|
||||
$ ls
|
||||
bar baz foo
|
||||
$ \ls
|
||||
bar baz baz~ foo
|
||||
```
|
||||
|
||||
### 做一件事,把它做好
|
||||
|
||||
`ls` 命令有很多选项,其中许多是特定用途的或高度依赖于你所使用的终端。在 GNU 系统上查看 `info ls`,或在 GNU 或 BSD 系统上查看 `man ls` 以了解更多选项。
|
||||
|
||||
你可能会觉得奇怪的是,一个以每个工具“做一件事,把它做好”的前提而闻名的系统会让其最常见的命令背负 50 个选项。但是 `ls` 只做一件事:它列出文件,而这 50 个选项允许你控制接收列表的方式,`ls` 的这项工作做得非常、*非常*好。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/7/master-ls-command
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/sethhttps://opensource.com/users/sambocettahttps://opensource.com/users/scottnesbitthttps://opensource.com/users/sethhttps://opensource.com/users/marcobravohttps://opensource.com/users/sethhttps://opensource.com/users/don-watkinshttps://opensource.com/users/sethhttps://opensource.com/users/jamesfhttps://opensource.com/users/seth
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer)
|
||||
[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
|
||||
[3]: https://opensource.com/article/19/6/understanding-linux-permissions
|
||||
[4]: https://www.illumos.org/
|
||||
[5]: https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)
|
@ -0,0 +1,105 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11170-1.html)
|
||||
[#]: subject: (WPS Office on Linux is a Free Alternative to Microsoft Office)
|
||||
[#]: via: (https://itsfoss.com/wps-office-linux/)
|
||||
[#]: author: (Sergiu https://itsfoss.com/author/sergiu/)
|
||||
|
||||
WPS Office:Linux 上的 Microsoft Office 的免费替代品
|
||||
======
|
||||
|
||||
> 如果你在寻找 Linux 上 Microsoft Office 免费替代品,那么 WPS Office 是最佳选择之一。它可以免费使用,并兼容 MS Office 文档格式。
|
||||
|
||||
[WPS Office][1] 是一个跨平台的办公生产力套件。它轻巧,并且与 Microsoft Office、Google Docs/Sheets/Slide 和 Adobe PDF 完全兼容。
|
||||
|
||||
对于许多用户而言,WPS Office 足够直观,并且能够满足他们的需求。由于它在外观和兼容性方面与 Microsoft Office 非常相似,因此广受欢迎。
|
||||
|
||||
![WPS Office 2019 All In One Mode][2]
|
||||
|
||||
WPS office 由中国的金山公司创建。对于 Windows 用户而言,WPS Office 有免费版和高级版。对于 Linux 用户,WPS Office 可通过其[社区项目][3]免费获得。
|
||||
|
||||
> **非 FOSS 警告!**
|
||||
|
||||
> WPS Office 不是一个开源软件。因为它对于 Linux 用户免费使用,我们已经在这介绍过它,有时我们也会介绍即使不是开源的 Linux 软件。
|
||||
|
||||
### Linux 上的 WPS Office
|
||||
|
||||
![WPS Office in Linux | Image Credit: Ubuntu Handbook][4]
|
||||
|
||||
WPS Office 有四个主要组件:
|
||||
|
||||
* WPS 文字
|
||||
* WPS 演示
|
||||
* WPS 表格
|
||||
* WPS PDF
|
||||
|
||||
WPS Office 与 MS Office 完全兼容,支持 .doc、.docx、.dotx、.ppt、.pptx、.xls、.xlsx、.docm、.dotm、.xml、.txt、.html、.rtf (等其他),以及它自己的格式(.wps、.wpt)。它还默认包含 Microsoft 字体(以确保兼容性),它可以导出 PDF 并提供超过 10 种语言的拼写检查功能。
|
||||
|
||||
但是,它在 ODT、ODP 和其他开放文档格式方面表现不佳。
|
||||
|
||||
三个主要的 WPS Office 应用都有与 Microsoft Office 非常相似的界面,都有相同的 Ribbon UI。尽管存在细微差别,但使用习惯仍然相对一致。你可以使用 WPS Office 轻松克隆任何 Microsoft Office/LibreOffice 文档。
|
||||
|
||||
![WPS Office Writer][5]
|
||||
|
||||
你可能唯一不喜欢的是一些默认的样式设置(一些标题下面有很多空间等),但这些可以很容易地调整。
|
||||
|
||||
默认情况下,WPS 以 .docx、.pptx 和 .xlsx 文件类型保存文件。你还可以将文档保存到 **[WPS 云][7]**中并与他人协作。另一个不错的功能是能从[这里][8]下载大量模板。
|
||||
|
||||
### 在 Linux 上安装 WPS Office
|
||||
|
||||
WPS 为 Linux 发行版提供 DEB 和 RPM 安装程序。如果你使用的是 Debian/Ubuntu 或基于 Fedora 的发行版,那么安装 WPS Office 就简单了。
|
||||
|
||||
你可以在下载区那下载 Linux 中的 WPS:
|
||||
|
||||
- [下载 WPS Office for Linux][9]
|
||||
|
||||
向下滚动,你将看到最新版本包的链接:
|
||||
|
||||
![WPS Office Download][10]
|
||||
|
||||
下载适合你发行版的文件。只需双击 DEB 或者 RPM 就能[安装它们][11]。这会打开软件中心,你将看到安装选项:
|
||||
|
||||
![WPS Office Install Package][12]
|
||||
|
||||
几秒钟后,应用应该成功安装到你的系统上了!
|
||||
|
||||
你现在可以在“应用程序”菜单中搜索 **WPS**,查找 WPS Office 套件中所有的应用:
|
||||
|
||||
![WPS Applications Menu][13]
|
||||
|
||||
### 你是否使用 WPS Office 或其他软件?
|
||||
|
||||
还有其他 [Microsoft Office 的开源替代方案][14],但它们与 MS Office 的兼容性很差。
|
||||
|
||||
就个人而言,我更喜欢 LibreOffice,但如果你必须要用到 Microsoft Office,你可以尝试在 Linux 上使用 WPS Office。它看起来和 MS Office 类似,并且与 MS 文档格式具有良好的兼容性。它在 Linux 上是免费的,因此你也不必担心 Office 365 订阅。
|
||||
|
||||
你在系统上使用什么办公套件?你曾经在 Linux 上使用过 WPS Office 吗?你的体验如何?
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/wps-office-linux/
|
||||
|
||||
作者:[Sergiu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/sergiu/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.wps.com/
|
||||
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps2019-all-in-one-mode.png?resize=800%2C526&ssl=1
|
||||
[3]: http://wps-community.org/
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps-2019-Linux.jpg?resize=800%2C450&ssl=1
|
||||
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps-office-writer.png?resize=800%2C454&ssl=1
|
||||
[7]: https://account.wps.com/?cb=https%3A%2F%2Fdrive.wps.com%2F
|
||||
[8]: https://template.wps.com/
|
||||
[9]: http://wps-community.org/downloads
|
||||
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps_office_download.jpg?fit=800%2C413&ssl=1
|
||||
[11]: https://itsfoss.com/install-deb-files-ubuntu/
|
||||
[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps_office_install_package.png?fit=800%2C719&ssl=1
|
||||
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/wps_applications_menu.jpg?fit=800%2C355&ssl=1
|
||||
[14]: https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/
|
@ -0,0 +1,141 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11152-1.html)
|
||||
[#]: subject: (How to Enable Canonical Kernel Livepatch Service on Ubuntu LTS System?)
|
||||
[#]: via: (https://www.2daygeek.com/enable-canonical-kernel-livepatch-service-on-ubuntu-lts-system/)
|
||||
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
|
||||
|
||||
如何在 Ubuntu LTS 系统上启用 Canonical 的内核实时补丁服务
|
||||
======
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201907/27/072251d3dij23lndtuutzr.jpg)
|
||||
|
||||
Canonical 在 Ubuntu 14.04 LTS 系统中引入了<ruby>内核实时补丁服务<rt>Kernel Livepatch Service</rt></ruby>。实时补丁服务允许你安装和应用关键的 Linux 内核安全更新,而无需重新启动系统。这意味着,在应用内核补丁程序后,你无需重新启动系统。而通常情况下,我们需要在安装内核补丁后重启 Linux 服务器才能供系统使用。
|
||||
|
||||
实时修补非常快。大多数内核修复程序只需要几秒钟。Canonical 的实时补丁服务对于不超过 3 个系统的用户无需任何费用。你可以通过命令行在桌面和服务器中启用 Canonical 实时补丁服务。
|
||||
|
||||
这个实时补丁系统旨在解决高级和关键的 Linux 内核安全漏洞。
|
||||
|
||||
有关[支持的系统][1]和其他详细信息,请参阅下表。
|
||||
|
||||
Ubuntu 版本 | 架构 | 内核版本 | 内核变体
|
||||
---|---|---|---
|
||||
Ubuntu 18.04 LTS | 64-bit x86 | 4.15 | 仅 GA 通用和低电压内核
|
||||
Ubuntu 16.04 LTS | 64-bit x86 | 4.4 | 仅 GA 通用和低电压内核
|
||||
Ubuntu 14.04 LTS | 64-bit x86 | 4.4 | 仅 Hardware Enablement 内核
|
||||
|
||||
**注意**:Ubuntu 14.04 中的 Canonical 实时补丁服务 LTS 要求用户在 Trusty 中运行 Ubuntu v4.4 内核。如果你当前没有运行使用该服务,请重新启动到此内核。
|
||||
|
||||
为此,请按照以下步骤操作。
|
||||
|
||||
### 如何获取实时补丁令牌?
|
||||
|
||||
导航到 [Canonical 实时补丁服务页面][2],如果要使用免费服务,请选择“Ubuntu 用户”。它适用于不超过 3 个系统的用户。如果你是 “UA 客户” 或多于 3 个系统,请选择 “Ubuntu customer”。最后,单击 “Get your Livepatch token” 按钮。
|
||||
|
||||
![][4]
|
||||
|
||||
确保你已经在 “Ubuntu One” 中拥有帐号。否则,可以创建一个新的。
|
||||
|
||||
登录后,你将获得你的帐户密钥。
|
||||
|
||||
![][5]
|
||||
|
||||
### 在系统中安装 Snap 守护程序
|
||||
|
||||
实时补丁系统通过快照包安装。因此,请确保在 Ubuntu 系统上安装了 snapd 守护程序。
|
||||
|
||||
```
|
||||
$ sudo apt update
|
||||
$ sudo apt install snapd
|
||||
```
|
||||
|
||||
### 如何系统中安装和配置实时补丁服务?
|
||||
|
||||
通过运行以下命令安装 `canonical-livepatch` 守护程序。
|
||||
|
||||
```
|
||||
$ sudo snap install canonical-livepatch
|
||||
canonical-livepatch 9.4.1 from Canonical* installed
|
||||
```
|
||||
|
||||
运行以下命令以在 Ubuntu 计算机上启用实时内核补丁程序。
|
||||
|
||||
```
|
||||
$ sudo canonical-livepatch enable xxxxc4xxxx67xxxxbxxxxbxxxxfbxx4e
|
||||
|
||||
Successfully enabled device. Using machine-token: xxxxc4xxxx67xxxxbxxxxbxxxxfbxx4e
|
||||
```
|
||||
|
||||
运行以下命令查看实时补丁机器的状态。
|
||||
|
||||
```
|
||||
$ sudo canonical-livepatch status
|
||||
|
||||
client-version: 9.4.1
|
||||
architecture: x86_64
|
||||
cpu-model: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
|
||||
last-check: 2019-07-24T12:30:04+05:30
|
||||
boot-time: 2019-07-24T12:11:06+05:30
|
||||
uptime: 19m11s
|
||||
status:
|
||||
- kernel: 4.15.0-55.60-generic
|
||||
running: true
|
||||
livepatch:
|
||||
checkState: checked
|
||||
patchState: nothing-to-apply
|
||||
version: ""
|
||||
fixes: ""
|
||||
```
|
||||
|
||||
使用 `--verbose` 开关运行上述相同的命令,以获取有关实时修补机器的更多信息。
|
||||
|
||||
```
|
||||
$ sudo canonical-livepatch status --verbose
|
||||
```
|
||||
|
||||
如果要手动运行补丁程序,请执行以下命令。
|
||||
|
||||
```
|
||||
$ sudo canonical-livepatch refresh
|
||||
|
||||
Before refresh:
|
||||
|
||||
kernel: 4.15.0-55.60-generic
|
||||
fully-patched: true
|
||||
version: ""
|
||||
|
||||
After refresh:
|
||||
|
||||
kernel: 4.15.0-55.60-generic
|
||||
fully-patched: true
|
||||
version: ""
|
||||
```
|
||||
|
||||
`patchState` 会有以下状态之一:
|
||||
|
||||
* `applied`:未发现任何漏洞
|
||||
* `nothing-to-apply`:成功找到并修补了漏洞
|
||||
* `kernel-upgrade-required`:实时补丁服务无法安装补丁来修复漏洞
|
||||
|
||||
请注意,安装内核补丁与在系统上升级/安装新内核不同。如果安装了新内核,则必须重新引导系统以激活新内核。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.2daygeek.com/enable-canonical-kernel-livepatch-service-on-ubuntu-lts-system/
|
||||
|
||||
作者:[Magesh Maruthamuthu][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.2daygeek.com/author/magesh/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://wiki.ubuntu.com/Kernel/Livepatch
|
||||
[2]: https://auth.livepatch.canonical.com/
|
||||
[3]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[4]: https://www.2daygeek.com/wp-content/uploads/2019/07/enable-canonical-livepatch-service-on-ubuntu-lts-system-1.jpg
|
||||
[5]: https://www.2daygeek.com/wp-content/uploads/2019/07/enable-canonical-livepatch-service-on-ubuntu-lts-system-2.jpg
|
@ -0,0 +1,70 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11167-1.html)
|
||||
[#]: subject: (Is This the End of Floppy Disk in Linux? Linus Torvalds Marks Floppy Disks ‘Orphaned’)
|
||||
[#]: via: (https://itsfoss.com/end-of-floppy-disk-in-linux/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
Linux 中的软盘走向终结了吗?Torvalds 将软盘的驱动标记为“孤儿”
|
||||
======
|
||||
|
||||
> 在 Linux 内核最近的提交当中,Linus Torvalds 将软盘的驱动程序标记为孤儿。这标志着软盘在 Linux 中步入结束了吗?
|
||||
|
||||
有可能你很多年没见过真正的软盘了。如果你正在寻找带软盘驱动器的计算机,可能需要去博物馆里看看。
|
||||
|
||||
在二十多年前,软盘是用于存储数据和运行操作系统的流行介质。[早期的 Linux 发行版][1]使用软盘进行“分发”。软盘也广泛用于保存和传输数据。
|
||||
|
||||
你有没有想过为什么许多应用程序中的保存图标看起来像软盘?因为它就是软盘啊!软盘常用于保存数据,因此许多应用程序将其用作保存图标,并且这个传统一直延续至今。
|
||||
|
||||
![][2]
|
||||
|
||||
今天我为什么要说起软盘?因为 Linus Torvalds 在一个 Linux 内核代码的提交里标记软盘的驱动程序为“孤儿”。
|
||||
|
||||
### 在 Linux 内核中被标记为“孤儿”的软盘驱动程序
|
||||
|
||||
正如你可以在 [GitHub 镜像上的提交][3]中看到的那样,开发人员 Jiri 不再使用带有软驱的工作计算机了。而如果没有正确的硬件,Jiri 将无法继续开发。这就是 Torvalds 将其标记为孤儿的原因。
|
||||
|
||||
> 越来越难以找到可以实际工作的软盘的物理硬件,虽然 Willy 能够对此进行测试,但我认为从实际的硬件角度来看,这个驱动程序几乎已经死了。目前仍然销售的硬件似乎主要是基于 USB 的,根本不使用这种传统的驱动器。
|
||||
|
||||
![][4]
|
||||
|
||||
### “孤儿”在 Linux 内核中意味着什么?
|
||||
|
||||
“孤儿”意味着没有开发人员能够或愿意支持这部分代码。如果没有其他人出现继续维护和开发它,孤儿模块可能会被弃用并最终删除。
|
||||
|
||||
### 它没有被立即删除
|
||||
|
||||
Torvalds 指出,各种虚拟环境模拟器仍在使用软盘驱动器。所以软盘的驱动程序不会被立即丢弃。
|
||||
|
||||
> 各种 VM 环境中仍然在仿真旧的软盘控制器,因此该驱动程序不会消失,但让我们看看是否有人有兴趣进一步维护它。
|
||||
|
||||
为什么不永远保持内核中的软盘驱动器支持呢?因为这将构成安全威胁。即使没有真正的计算机使用软盘驱动程序,虚拟机仍然拥有它,这将使虚拟机容易受到攻击。
|
||||
|
||||
### 一个时代的终结?
|
||||
|
||||
这将是一个时代的结束还是会有其他人出现并承担起在 Linux 中继续维护软盘驱动程序的责任?只有时间会给出答案。
|
||||
|
||||
在 Linux 内核中,软盘驱动器成为孤儿我不觉得有什么可惜的。
|
||||
|
||||
在过去的十五年里我没有使用过软盘,我怀疑很多人也是如此。那么你呢?你有没有用过软盘?如果是的话,你最后一次使用它的时间是什么时候?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/end-of-floppy-disk-in-linux/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/earliest-linux-distros/
|
||||
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/floppy-disk-icon-of-saving.png?resize=800%2C300&ssl=1
|
||||
[3]: https://github.com/torvalds/linux/commit/47d6a7607443ea43dbc4d0f371bf773540a8f8f4
|
||||
[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/End-of-Floppy-in-Linux.png?resize=800%2C450&ssl=1
|
||||
[5]: https://itsfoss.com/valve-annouces-linux-based-gaming-operating-system-steamos/
|
@ -0,0 +1,98 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11182-1.html)
|
||||
[#]: subject: (Enable ‘Tap to click’ on Ubuntu Login Screen [Quick Tip])
|
||||
[#]: via: (https://itsfoss.com/enable-tap-to-click-on-ubuntu-login-screen/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
如何在 Ubuntu 登录屏幕上启用轻击
|
||||
======
|
||||
|
||||
> <ruby>轻击<rt>tap to click</rt></ruby>选项在 Ubuntu 18.04 GNOME 桌面的登录屏幕上不起作用。在本教程中,你将学习如何在 Ubuntu 登录屏幕上启用“轻击”。
|
||||
|
||||
安装 Ubuntu 后我做的第一件事就是确保启用了轻击功能。作为笔记本电脑用户,我更喜欢轻击触摸板进行左键单击。这比使用触摸板上的左键单击按钮更方便。
|
||||
|
||||
我登录并使用操作系统时可以轻击。但是,如果你在登录屏幕上,轻击不起作用,这是一个烦恼。
|
||||
|
||||
在 Ubuntu(或使用 GNOME 桌面的其他发行版)的 [GDM 登录屏幕][1]上,你必须单击用户名才能显示密码字段。现在,如果你习惯了轻击,即使你已启用了它并在登录系统后可以使用,它也无法在登录屏幕上运行。
|
||||
|
||||
这是一个轻微的烦恼,但仍然是一个烦恼。好消息是你可以解决这个烦恼。让我告诉你如何在这个快速提示中做到这一点。
|
||||
|
||||
### 在 Ubuntu 登录屏幕上启用轻击
|
||||
|
||||
![][2]
|
||||
|
||||
你必须在这里使用终端和一些命令。我希望你能够适应。
|
||||
|
||||
[在 Ubuntu 中使用 Ctrl + Alt + T 快捷键打开终端][3]。由于 Ubuntu 18.04 仍在使用 X 显示服务器,因此需要启用它才能连接到 [X 服务器][4]。为此,你可以将 `gdm` 添加到访问控制列表中。
|
||||
|
||||
首先切换到 `root` 用户。这是必需的,因为你必须稍后切换为 `gdm` 用户,而不能以非 `root` 用户身份执行此操作。
|
||||
|
||||
```
|
||||
sudo -i
|
||||
```
|
||||
|
||||
[在 Ubuntu 中没有为 root 用户设置密码][5]。你可以使用管理员用户帐户访问它。因此,当要求输入密码时,请使用你自己的密码。输入密码时,屏幕上不会显示任何输入内容。
|
||||
|
||||
```
|
||||
xhost +SI:localuser:gdm
|
||||
```
|
||||
|
||||
这是我的输出:
|
||||
|
||||
```
|
||||
xhost +SI:localuser:gdm
|
||||
localuser:gdm being added to access control list
|
||||
```
|
||||
|
||||
现在运行此命令,以便 `gdm` 用户具有正确的轻击设置。
|
||||
|
||||
```
|
||||
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
|
||||
```
|
||||
|
||||
如果你看到这样的警告:`(process:6339): dconf-WARNING **: 19:52:21.217: Unable to open /root/.local/share/flatpak/exports/share/dconf/profile/user: Permission denied`。别担心。忽略它就行。
|
||||
|
||||
[][6]
|
||||
|
||||
这将使你能够轻击登录屏幕。为什么在系统设置中进行更改之前无法使用轻击?这是因为在登录屏幕上,你还没有选择用户名。只有在屏幕上选择用户时才能使用你的帐户。这就是你必须使用用户 `gdm` 并使用它添加正确设置的原因。
|
||||
|
||||
重新启动 Ubuntu,你会看到现在可以使用轻击来选择你的用户帐户。
|
||||
|
||||
#### 还原改变
|
||||
|
||||
如果你因为某些原因不喜欢在 Ubuntu 登录界面轻击,可以还原更改。
|
||||
|
||||
你必须执行上一节中的所有步骤:切换到 `root`,将 `gdm` 与 X 服务器连接,切换到 `gdm` 用户。但是,你需要运行此命令,而不是上一个命令:
|
||||
|
||||
```
|
||||
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click false
|
||||
```
|
||||
|
||||
就是这样。
|
||||
|
||||
正如我所说,这是一件小事。我的意思是你可以轻松地点击左键而不是轻击。这只是一次单击的问题。但是,当你在几次轻击后被迫使用左键单击时,它会打破操作“连续性”。
|
||||
|
||||
我希望你喜欢这个快速的小调整。如果你知道其他一些很酷的调整,请与我们分享。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/enable-tap-to-click-on-ubuntu-login-screen/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://wiki.archlinux.org/index.php/GDM
|
||||
[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/tap-to-click-on-ubuntu-login.jpg?ssl=1
|
||||
[3]: https://itsfoss.com/ubuntu-shortcuts/
|
||||
[4]: https://en.wikipedia.org/wiki/X.Org_Server
|
||||
[5]: https://itsfoss.com/change-password-ubuntu/
|
||||
[6]: https://itsfoss.com/change-hostname-ubuntu/
|
@ -0,0 +1,306 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11173-1.html)
|
||||
[#]: subject: (Install NetData Performance Monitoring Tool On Linux)
|
||||
[#]: via: (https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/)
|
||||
[#]: author: (sk https://www.ostechnix.com/author/sk/)
|
||||
|
||||
在 Linux 上安装 NetData 性能监控工具
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
**NetData** 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互动的 Web 仪表板中查看结果。使用 Netdata,你可以清楚地了解现在发生的事情,以及之前系统和应用中发生的事情。你无需成为专家即可在 Linux 系统中部署此工具。NetData 开箱即用,零配置、零依赖。只需安装它然后坐等,之后 NetData 将负责其余部分。
|
||||
|
||||
它有自己的内置 Web 服务器,以图形形式显示结果。NetData 非常快速高效,安装后可立即开始分析系统性能。它是用 C 编程语言编写的,所以它非常轻量。它占用的单核 CPU 使用率不到 3%,内存占用 10-15MB。我们可以轻松地在任何现有网页上嵌入图表,并且它还有一个插件 API,以便你可以监控任何应用。
|
||||
|
||||
以下是 Linux 系统中 NetData 的监控列表。
|
||||
|
||||
* CPU 使用率
|
||||
* RAM 使用率
|
||||
* 交换内存使用率
|
||||
* 内核内存使用率
|
||||
* 硬盘及其使用率
|
||||
* 网络接口
|
||||
* IPtables
|
||||
* Netfilter
|
||||
* DDoS 保护
|
||||
* 进程
|
||||
* 应用
|
||||
* NFS 服务器
|
||||
* Web 服务器 (Apache 和 Nginx)
|
||||
* 数据库服务器 (MySQL),
|
||||
* DHCP 服务器
|
||||
* DNS 服务器
|
||||
* 电子邮件服务
|
||||
* 代理服务器
|
||||
* Tomcat
|
||||
* PHP
|
||||
* SNP 设备
|
||||
* 等等
|
||||
|
||||
NetData 是自由开源工具,它支持 Linux、FreeBSD 和 Mac OS。
|
||||
|
||||
### 在 Linux 上安装 NetData
|
||||
|
||||
Netdata 可以安装在任何安装了 Bash 的 Linux 发行版上。
|
||||
|
||||
最简单的安装 Netdata 的方法是从终端运行以下命令:
|
||||
|
||||
```
|
||||
$ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
|
||||
```
|
||||
|
||||
这将下载并安装启动和运行 Netdata 所需的一切。
|
||||
|
||||
有些用户可能不想在没有研究的情况下将某些东西直接注入到 Bash。如果你不喜欢此方法,可以按照以下步骤在系统上安装它。
|
||||
|
||||
#### 在 Arch Linux 上
|
||||
|
||||
Arch Linux 默认仓库中提供了最新版本。所以,我们可以使用以下 [pacman][2] 命令安装它:
|
||||
|
||||
```
|
||||
$ sudo pacman -S netdata
|
||||
```
|
||||
|
||||
#### 在基于 DEB 和基于 RPM 的系统上
|
||||
|
||||
在基于 DEB (Ubuntu / Debian)或基于 RPM(RHEL / CentOS / Fedora) 系统的默认仓库没有 NetData。我们需要从它的 Git 仓库手动安装 NetData。
|
||||
|
||||
首先安装所需的依赖项:
|
||||
|
||||
```
|
||||
# Debian / Ubuntu
|
||||
$ sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libjudy-dev libssl-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl
|
||||
|
||||
# Fedora
|
||||
$ sudo dnf install zlib-devel libuuid-devel libuv-devel lz4-devel Judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils
|
||||
|
||||
# CentOS / Red Hat Enterprise Linux
|
||||
$ sudo yum install epel-release
|
||||
$ sudo yum install autoconf automake curl gcc git libmnl-devel libuuid-devel openssl-devel libuv-devel lz4-devel Judy-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel
|
||||
|
||||
# openSUSE
|
||||
$ sudo zypper install zlib-devel libuuid-devel libuv-devel liblz4-devel judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils
|
||||
```
|
||||
|
||||
安装依赖项后,在基于 DEB 或基于 RPM 的系统上安装 NetData,如下所示。
|
||||
|
||||
Git 克隆 NetData 仓库:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/netdata/netdata.git --depth=100
|
||||
```
|
||||
|
||||
上面的命令将在当前工作目录中创建一个名为 `netdata` 的目录。
|
||||
|
||||
切换到 `netdata` 目录:
|
||||
|
||||
```
|
||||
$ cd netdata/
|
||||
```
|
||||
|
||||
最后,使用命令安装并启动 NetData:
|
||||
|
||||
```
|
||||
$ sudo ./netdata-installer.sh
|
||||
```
|
||||
|
||||
**示例输出:**
|
||||
|
||||
```
|
||||
Welcome to netdata!
|
||||
Nice to see you are giving it a try!
|
||||
|
||||
You are about to build and install netdata to your system.
|
||||
|
||||
It will be installed at these locations:
|
||||
|
||||
- the daemon at /usr/sbin/netdata
|
||||
- config files at /etc/netdata
|
||||
- web files at /usr/share/netdata
|
||||
- plugins at /usr/libexec/netdata
|
||||
- cache files at /var/cache/netdata
|
||||
- db files at /var/lib/netdata
|
||||
- log files at /var/log/netdata
|
||||
- pid file at /var/run
|
||||
|
||||
This installer allows you to change the installation path.
|
||||
Press Control-C and run the same command with --help for help.
|
||||
|
||||
Press ENTER to build and install netdata to your system > ## Press ENTER key
|
||||
```
|
||||
|
||||
安装完成后,你将在最后看到以下输出:
|
||||
|
||||
```
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
OK. NetData is installed and it is running (listening to *:19999).
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
INFO: Command line options changed. -pidfile, -nd and -ch are deprecated.
|
||||
If you use custom startup scripts, please run netdata -h to see the
|
||||
corresponding options and update your scripts.
|
||||
|
||||
Hit http://localhost:19999/ from your browser.
|
||||
|
||||
To stop netdata, just kill it, with:
|
||||
|
||||
killall netdata
|
||||
|
||||
To start it, just run it:
|
||||
|
||||
/usr/sbin/netdata
|
||||
|
||||
|
||||
Enjoy!
|
||||
|
||||
Uninstall script generated: ./netdata-uninstaller.sh
|
||||
```
|
||||
|
||||
![][3]
|
||||
|
||||
*安装 NetData*
|
||||
|
||||
NetData 已安装并启动。
|
||||
|
||||
要在其他 Linux 发行版上安装 Netdata,请参阅[官方安装说明页面][4]。
|
||||
|
||||
### 在防火墙或者路由器上允许 NetData 的默认端口
|
||||
|
||||
如果你的系统在防火墙或者路由器后面,那么必须允许默认端口 `19999` 以便从任何远程系统访问 NetData 的 web 界面。
|
||||
|
||||
#### 在 Ubuntu/Debian 中
|
||||
|
||||
```
|
||||
$ sudo ufw allow 19999
|
||||
```
|
||||
|
||||
#### 在 CentOS/RHEL/Fedora 中
|
||||
|
||||
```
|
||||
$ sudo firewall-cmd --permanent --add-port=19999/tcp
|
||||
|
||||
$ sudo firewall-cmd --reload
|
||||
```
|
||||
|
||||
### 启动/停止 NetData
|
||||
|
||||
要在使用 Systemd 的系统上启用和启动 Netdata 服务,请运行:
|
||||
|
||||
```
|
||||
$ sudo systemctl enable netdata
|
||||
$ sudo systemctl start netdata
|
||||
```
|
||||
|
||||
要停止:
|
||||
|
||||
```
|
||||
$ sudo systemctl stop netdata
|
||||
```
|
||||
|
||||
要在使用 Init 的系统上启用和启动 Netdata 服务,请运行:
|
||||
|
||||
```
|
||||
$ sudo service netdata start
|
||||
$ sudo chkconfig netdata on
|
||||
```
|
||||
|
||||
要停止:
|
||||
|
||||
```
|
||||
$ sudo service netdata stop
|
||||
```
|
||||
|
||||
### 通过 Web 浏览器访问 NetData
|
||||
|
||||
打开 Web 浏览器,然后打开 `http://127.0.0.1:19999` 或者 `http://localhost:19999/` 或者 `http://ip-address:19999`。你应该看到如下页面。
|
||||
|
||||
![][5]
|
||||
|
||||
*Netdata 仪表板*
|
||||
|
||||
在仪表板中,你可以找到 Linux 系统的完整统计信息。向下滚动以查看每个部分。
|
||||
|
||||
你可以随时打开 `http://localhost:19999/netdata.conf` 来下载和/或查看 NetData 默认配置文件。
|
||||
|
||||
![][6]
|
||||
|
||||
*Netdata 配置文件*
|
||||
|
||||
### 更新 NetData
|
||||
|
||||
在 Arch Linux 中,只需运行以下命令即可更新 NetData。如果仓库中提供了更新版本,那么就会自动安装该版本。
|
||||
|
||||
```
|
||||
$ sudo pacman -Syyu
|
||||
```
|
||||
|
||||
在基于 DEB 或 RPM 的系统中,只需进入已克隆它的目录(此例中是 `netdata`)。
|
||||
|
||||
```
|
||||
$ cd netdata
|
||||
```
|
||||
|
||||
拉取最新更新:
|
||||
|
||||
```
|
||||
$ git pull
|
||||
```
|
||||
|
||||
然后,使用命令重新构建并更新它:
|
||||
|
||||
```
|
||||
$ sudo ./netdata-installer.sh
|
||||
```
|
||||
|
||||
### 卸载 NetData
|
||||
|
||||
进入克隆 NetData 的文件夹。
|
||||
|
||||
```
|
||||
$ cd netdata
|
||||
```
|
||||
|
||||
然后,使用命令卸载它:
|
||||
|
||||
```
|
||||
$ sudo ./netdata-uninstaller.sh --force
|
||||
```
|
||||
|
||||
在 Arch Linux 中,使用以下命令卸载它。
|
||||
|
||||
```
|
||||
$ sudo pacman -Rns netdata
|
||||
```
|
||||
|
||||
### 资源
|
||||
|
||||
* [NetData 网站][7]
|
||||
* [NetData 的 GitHub 页面][8]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/
|
||||
|
||||
作者:[sk][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.ostechnix.com/wp-content/uploads/2016/06/Install-netdata-720x340.png
|
||||
[2]: https://www.ostechnix.com/getting-started-pacman/
|
||||
[3]: https://www.ostechnix.com/wp-content/uploads/2016/06/Deepin-Terminal_002-6.png
|
||||
[4]: https://docs.netdata.cloud/packaging/installer/
|
||||
[5]: https://www.ostechnix.com/wp-content/uploads/2016/06/Netdata-dashboard.png
|
||||
[6]: https://www.ostechnix.com/wp-content/uploads/2016/06/Netdata-config-file.png
|
||||
[7]: http://netdata.firehol.org/
|
||||
[8]: https://github.com/firehol/netdata
|
@ -0,0 +1,161 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11172-1.html)
|
||||
[#]: subject: (How to Upgrade Debian 9 (Stretch) to Debian 10 (Buster) via Command Line)
|
||||
[#]: via: (https://www.linuxtechi.com/upgrade-debian-9-to-debian-10-command-line/)
|
||||
[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/)
|
||||
|
||||
如何通过命令行升级 Debian 9 为 Debian 10
|
||||
======
|
||||
|
||||
我们已经在先前的文章中看到如何安装 [Debian 10(Buster)][1]。今天,我们将学习如何从 Debian 9 升级为 Debian 10,虽然我们已将看到 Debian 10 和它的特色,所以这里我们不会深入介绍。但是可能读者没有机会读到那篇文章,让我们快速了解一下 Debian 10 和它的新功能。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/Upgrade-Debian-9-to-Debian-10.jpg)
|
||||
|
||||
在差不多两年的开发后,Debian 团队最终发布一个稳定版本,Debian 10 的代码名称是 Buster。Buster 是一个 LTS (长期支持支持)版本,因此未来将由 Debian 支持 5 年。
|
||||
|
||||
### Debian 10(Buster)新的特色
|
||||
|
||||
Debian 10(Buster)回报给大多数 Debian 爱好者大量的新特色。一些特色包括:
|
||||
|
||||
* GNOME 桌面 3.30
|
||||
* 默认启用 AppArmor
|
||||
* 支持 Linux 内核 4.19.0-4
|
||||
* 支持 OpenJDk 11.0
|
||||
* 从 Nodejs 4 ~ 8 升级到 Nodejs 10.15.2
|
||||
* Iptables 替换为 NFTables
|
||||
|
||||
等等。
|
||||
|
||||
### 从 Debian 9 到 Debian 10 的逐步升级指南
|
||||
|
||||
在我们开始升级 Debian 10 前,让我们看看升级需要的必备条件:
|
||||
|
||||
#### 步骤 1) Debian 升级必备条件
|
||||
|
||||
* 一个良好的网络连接
|
||||
* root 用户权限
|
||||
* 数据备份
|
||||
|
||||
备份你所有的应用程序代码库、数据文件、用户账号详细信息、配置文件是极其重要的,以便在升级出错时,你可以总是可以还原到先前的版本。
|
||||
|
||||
#### 步骤 2) 升级 Debian 9 现有的软件包
|
||||
|
||||
接下来的步骤是升级你所有现有的软件包,因为一些软件包被标志为保留不能升级,从 Debian 9 升级为 Debian 10 有失败或引发一些问题的可能性。所以,我们不冒任何风险,更好地升级软件包。使用下面的代码来升级软件包:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
|
||||
#### 步骤 3) 修改软件包存储库文件 /etc/sources.list
|
||||
|
||||
接下来的步骤是修改软件包存储库文件 `/etc/sources.list`,你需要用文本 `Buster` 替换 `Stretch`。
|
||||
|
||||
但是,在你更改任何东西前,确保如下创建一个 `sources.list` 文件的备份:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||
```
|
||||
|
||||
现在使用下面的 `sed` 命令来在软件包存储库文件中使用 `buster` 替换 `stretch`,示例如下显示:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
|
||||
root@linuxtechi:~$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/*.list
|
||||
```
|
||||
|
||||
更新后,你需要如下更新软件包存储库索引:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update
|
||||
```
|
||||
|
||||
在开始升级你现有的 Debian 操作系统前,让我们使用下面的命令验证当前版本,
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ cat /etc/*-release
|
||||
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="9"
|
||||
VERSION="9 (stretch)"
|
||||
ID=debian
|
||||
HOME_URL="https://www.debian.org/"
|
||||
SUPPORT_URL="https://www.debian.org/support"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
#### 步骤 4) 从 Debian 9 升级到 Debian 10
|
||||
|
||||
你做完所有的更改后,是时候从 Debian 9 升级到 Debian 10 了。但是在这之前,再次如下确保更新你的软件包:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
|
||||
在软件包升级期间,你将被提示启动服务,所以选择你较喜欢的选项。
|
||||
|
||||
一旦你系统的所有软件包升级完成,就升级你的发行版的软件包。使用下面的代码来升级发行版:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt dist-upgrade -y
|
||||
```
|
||||
|
||||
升级过程可能花费一些时间,取决于你的网络速度。记住在升级过程中,你将被询问一些问题,在软件包升级后是否需要重启服务、你是否需要保留现存的配置文件等。如果你不想进行一些自定义更改,简单地键入 “Y” ,来让升级过程继续。
|
||||
|
||||
#### 步骤 5) 验证升级
|
||||
|
||||
一旦升级过程完成,重启你的机器,并使用下面的方法检测版本:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ lsb_release -a
|
||||
```
|
||||
|
||||
如果你获得如下输出:
|
||||
|
||||
```
|
||||
Distributor ID: Debian
|
||||
Description: Debian GNU/Linux 10 (buster)
|
||||
Release: 10
|
||||
Codename: buster
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
是的,你已经成功地从 Debian 9 升级到 Debian 10。
|
||||
|
||||
验证升级的备用方法:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ cat /etc/*-release
|
||||
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="10"
|
||||
VERSION="10 (buster)"
|
||||
VERSION_CODENAME=buster
|
||||
ID=debian
|
||||
HOME_URL="https://www.debian.org/"
|
||||
SUPPORT_URL="https://www.debian.org/support"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
### 结束
|
||||
|
||||
希望上面的逐步指南为你提供了从 Debian 9(Stretch)简单地升级为 Debian 10(Buster)的所有信息。在评论部分,请给予你使用 Debian 10 的反馈、建议、体验。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxtechi.com/upgrade-debian-9-to-debian-10-command-line/
|
||||
|
||||
作者:[Pradeep Kumar][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.linuxtechi.com/author/pradeep/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://linux.cn/article-11083-1.html
|
@ -0,0 +1,78 @@
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "hello-wn"
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-11183-1.html"
|
||||
[#]: subject: "3 types of metric dashboards for DevOps teams"
|
||||
[#]: via: "https://opensource.com/article/19/7/dashboards-devops-teams"
|
||||
[#]: author: "Daniel Oh https://opensource.com/users/daniel-oh"
|
||||
|
||||
DevOps 团队必备的 3 种指标仪表板
|
||||
=========
|
||||
|
||||
> 仪表板可以帮助 DevOps 团队观测和监控系统,以提高性能。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201908/04/083434ixlm9lgv8ev8dlyd.jpg)
|
||||
|
||||
指标仪表板帮助 [DevOps][2] 团队监控整个 DevOps 平台,以便实时响应<ruby>议题<rt>issue</rt></ruby>。在处理生产环境宕机或者应用服务中断等情况时,指标仪表板显得尤为重要。
|
||||
|
||||
DevOps 仪表板聚合了多个监测工具的指标,为开发和运维团队生成监控报告。它还允许团队跟踪多项指标,例如服务部署时间、程序 bug、报错信息、工作项、待办事项等等。
|
||||
|
||||
下面三种指标仪表板可以帮助 DevOps 团队监测系统,改善服务性能。
|
||||
|
||||
### 敏捷项目管理仪表板
|
||||
|
||||
这种类型的仪表板为 DevOps 团队的工作项提供可视化视图,优化敏捷项目的工作流。有利于提高团队协作效率,对工作进行可视化并提供灵活的视图 —— 就像我们过去在白板上使用便利贴来共享项目进度、<ruby>议题<rt>issue</rt></ruby>和待办事项一样。
|
||||
|
||||
- [Kanban boards][3] 允许 DevOps 团队创建卡片、标签、任务和栏目,便于持续交付敏捷项目。
|
||||
- [Burndown charts][4] 对指定时间段内未完成的工作或待办事项提供可视化视图,并记录团队当前的效率和轨迹,这些指标通常用于敏捷项目和 DevOps 项目管理。
|
||||
- [Jira boards][5] 帮助 DevOps 团队创建议题、计划迭代并生成团队总结。这些灵活的仪表板还能帮助团队综合考虑并确定个人和团队任务的优先级;实时查看、汇报和跟踪正在进行的工作;并提高团队绩效。
|
||||
- [GitHub project boards][6] 帮助确定团队任务的优先级。它们还支持拉取请求,因此团队成员可以方便地提交 DevOps 项目相关的信息。
|
||||
|
||||
### 应用程序监控仪表板
|
||||
|
||||
开发者负责优化应用和服务的性能,并开发新功能。应用程序监控面板则帮助开发者在<ruby>持续集成/持续开发<rt>CI / CD</rt></ruby>流程下,加快修复 bug、增强程序健壮性、发布安全修丁的进度。另外,这些可视化仪表板有利于查看请求模式、请求耗时、报错和网络拓扑信息。
|
||||
|
||||
- [Jaeger][7] 帮助开发人员跟踪请求数量、请求响应时间等。对于分布式网络系统上的云原生应用程序,它还使用 [Istio 服务网格][8]加强了监控和跟踪。
|
||||
- [OpenCensus][9] 帮助团队查看运行应用程序的主机上的数据,它还提供了一个可插拔的导出系统,用于将数据导出到数据中心。
|
||||
|
||||
### DevOps 平台监控面板
|
||||
|
||||
你可能使用多种技术和工具在云上或本地构建 DevOps 平台,但 Linux 容器管理工具(如 Kubernetes 和 OpenShift )更利于搭建出一个成功的 DevOps 平台。因为 Linux 容器的不可变性和可移植性使得应用程序从开发环境到生产环境的编译、测试和部署变得更快更容易。
|
||||
|
||||
DevOps 平台监控仪表板帮助运营团队从机器/节点故障和服务报错中收集各种按时序排列的数据,用于编排应用程序容器和基于软件的基础架构,如网络(SDN)和存储(SDS)。这些仪表板还能可视化多维数据格式,方便地查询数据模式。
|
||||
|
||||
- [Prometheus dashboards][12] 从平台节点或者运行中的容器化应用中收集指标。帮助 DevOps 团队构建基于指标的监控系统和仪表板,监控微服务的客户端/服务器工作负载,及时识别出异常节点故障。
|
||||
- [Grafana boards][13] 帮助收集事件驱动的各项指标,包括服务响应持续时间、请求量、<ruby>客户端/服务器<rt>client/server</rt></ruby>工作负载、网络流量等,并提供了可视化面板。DevOps 团队可以通过多种方式分享指标面板,也可以生成编码的当前监控数据快照分享给其他团队。
|
||||
|
||||
### 总结
|
||||
|
||||
这些仪表板提供了可视化的工作流程,能够发现团队协作、应用程序交付和平台状态中的各种问题。它们帮助开发团队增强其在快速应用交付、安全运行和自动化 CI/CD 等领域的能力。
|
||||
|
||||
------
|
||||
|
||||
via: https://opensource.com/article/19/7/dashboards-devops-teams
|
||||
|
||||
作者:[Daniel Oh][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[hello-wn](https://github.com/hello-wn)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/daniel-ohhttps://opensource.com/users/daniel-ohhttps://opensource.com/users/heronthecli
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_data_dashboard_system_computer_analytics.png
|
||||
[2]: https://opensource.com/resources/devops
|
||||
[3]: https://opensource.com/article/19/1/productivity-tool-taskboard
|
||||
[4]: https://openpracticelibrary.com/practice/burndown/
|
||||
[5]: https://www.atlassian.com/software/jira
|
||||
[6]: https://opensource.com/life/15/11/short-introduction-github
|
||||
[7]: https://www.jaegertracing.io/
|
||||
[8]: https://opensource.com/article/19/3/getting-started-jaeger
|
||||
[9]: https://opencensus.io/
|
||||
[10]: https://opensource.com/article/18/11/intro-software-defined-networking
|
||||
[11]: https://opensource.com/business/14/10/sage-weil-interview-openstack-ceph
|
||||
[12]: https://opensource.com/article/18/12/introduction-prometheus
|
||||
[13]: https://opensource.com/article/17/8/linux-grafana
|
||||
|
@ -0,0 +1,126 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11181-1.html)
|
||||
[#]: subject: (Manage your passwords with Bitwarden and Podman)
|
||||
[#]: via: (https://fedoramagazine.org/manage-your-passwords-with-bitwarden-and-podman/)
|
||||
[#]: author: (Eric Gustavsson https://fedoramagazine.org/author/egustavs/)
|
||||
|
||||
使用 Bitwarden 和 Podman 管理你的密码
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
在过去的一年中,你可能会遇到一些试图向你推销密码管理器的广告。比如 [LastPass][2]、[1Password][3] 或 [Dashlane][4]。密码管理器消除了记住所有网站密码的负担。你不再需要使用重复或容易记住的密码。相反,你只需要记住一个可以解锁所有其他密码的密码。
|
||||
|
||||
通过使用一个强密码而不是许多弱密码,这可以使你更安全。如果你有基于云的密码管理器(例如 LastPass、1Password 或 Dashlane),你还可以跨设备同步密码。不幸的是,这些产品都不是开源的。幸运的是,还有其他开源替代品。
|
||||
|
||||
### 开源密码管理器
|
||||
|
||||
替代方案包括 Bitwarden、[LessPass][5] 或 [KeePass][6]。Bitwarden 是一款[开源密码管理器][7],它会将所有密码加密存储在服务器上,它的工作方式与 LastPass、1Password 或 Dashlane 相同。LessPass 有点不同,因为它专注于成为无状态密码管理器。这意味着它根据主密码、网站和用户名生成密码,而不是保存加密的密码。另一方面,KeePass 是一个基于文件的密码管理器,它的插件和应用具有很大的灵活性。
|
||||
|
||||
这三个应用中的每一个都有其自身的缺点。Bitwarden 将所有东西保存在一个地方,并通过其 API 和网站接口暴露给网络。LessPass 无法保存自定义密码,因为它是无状态的,因此你需要使用它生成的密码。KeePass 是一个基于文件的密码管理器,因此无法在设备之间轻松同步。你可以使用云存储和 [WebDAV][8] 来解决此问题,但是有许多客户端不支持它,如果设备无法正确同步,你可能会遇到文件冲突。
|
||||
|
||||
本文重点介绍 Bitwarden。
|
||||
|
||||
### 运行非官方的 Bitwarden 实现
|
||||
|
||||
有一个名为 [bitwarden_rs][9] 的服务器及其 API 的社区实现。这个实现是完全开源的,因为它可以使用 SQLite 或 MariaDB/MySQL,而不是官方服务器使用的专有 Microsoft SQL Server。
|
||||
|
||||
有一点重要的是要认识到官方和非官方版本之间存在一些差异。例如,[官方服务器已经由第三方审核][10],而非官方服务器还没有。在实现方面,非官方版本缺少[电子邮件确认和采用 Duo 或邮件码的双因素身份验证][11]。
|
||||
|
||||
让我们在 SELinux 中运行服务器。根据 bitwarden_rs 的文档,你可以如下构建一个 Podman 命令:
|
||||
|
||||
```
|
||||
$ podman run -d \
|
||||
--userns=keep-id \
|
||||
--name bitwarden \
|
||||
-e SIGNUPS_ALLOWED=false \
|
||||
-e ROCKET_PORT=8080 \
|
||||
-v /home/egustavs/Bitwarden/bw-data/:/data/:Z \
|
||||
-p 8080:8080 \
|
||||
bitwardenrs/server:latest
|
||||
```
|
||||
|
||||
这将下载 bitwarden_rs 镜像并在用户命名空间下的用户容器中运行它。它使用 1024 以上的端口,以便非 root 用户可以绑定它。它还使用 `:Z` 更改卷的 SELinux 上下文,以防止在 `/data` 中的读写权限问题。
|
||||
|
||||
如果你在某个域下托管它,建议将此服务器放在 Apache 或 Nginx 的反向代理下。这样,你可以使用 80 和 443 端口指向容器的 8080 端口,而无需以 root 身份运行容器。
|
||||
|
||||
### 在 systemd 下运行
|
||||
|
||||
Bitwarden 现在运行了,你可能希望保持这种状态。接下来,创建一个使容器保持运行的单元文件,如果它没有响应则自动重新启动,并在系统重启后开始运行。创建文件 `/etc/systemd/system/bitwarden.service`:
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Bitwarden Podman container
|
||||
Wants=syslog.service
|
||||
|
||||
[Service]
|
||||
User=egustavs
|
||||
Group=egustavs
|
||||
TimeoutStartSec=0
|
||||
ExecStart=/usr/bin/podman run 'bitwarden'
|
||||
ExecStop=-/usr/bin/podman stop -t 10 'bitwarden'
|
||||
Restart=always
|
||||
RestartSec=30s
|
||||
KillMode=none
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
现在使用 [sudo][12] 启用并启动该服务:
|
||||
|
||||
```
|
||||
$ sudo systemctl enable bitwarden.service && sudo systemctl start bitwarden.service
|
||||
$ systemctl status bitwarden.service
|
||||
bitwarden.service - Bitwarden Podman container
|
||||
Loaded: loaded (/etc/systemd/system/bitwarden.service; enabled; vendor preset: disabled)
|
||||
Active: active (running) since Tue 2019-07-09 20:23:16 UTC; 1 day 14h ago
|
||||
Main PID: 14861 (podman)
|
||||
Tasks: 44 (limit: 4696)
|
||||
Memory: 463.4M
|
||||
```
|
||||
|
||||
成功了!Bitwarden 现在运行了并将继续运行。
|
||||
|
||||
### 添加 LetsEncrypt
|
||||
|
||||
如果你有域名,强烈建议你使用类似 LetsEncrypt 的加密证书运行你的 Bitwarden 实例。Certbot 是一个为我们创建 LetsEncrypt 证书的机器人,这里有个[在 Fedora 中操作的指南][13]。
|
||||
|
||||
生成证书后,你可以按照 [bitwarden_rs 指南中关于 HTTPS 的部分来][14]。只要记得将 `:Z` 附加到 LetsEncrypt 来处理权限,而不用更改端口。
|
||||
|
||||
* * *
|
||||
|
||||
照片由 [CMDR Shane][15] 拍摄,发表在 [Unsplash][16] 上。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/manage-your-passwords-with-bitwarden-and-podman/
|
||||
|
||||
作者:[Eric Gustavsson][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/egustavs/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2019/07/bitwarden-816x345.jpg
|
||||
[2]: https://www.lastpass.com
|
||||
[3]: https://1password.com/
|
||||
[4]: https://www.dashlane.com/
|
||||
[5]: https://lesspass.com/
|
||||
[6]: https://keepass.info/
|
||||
[7]: https://bitwarden.com/
|
||||
[8]: https://en.wikipedia.org/wiki/WebDAV
|
||||
[9]: https://github.com/dani-garcia/bitwarden_rs/
|
||||
[10]: https://blog.bitwarden.com/bitwarden-completes-third-party-security-audit-c1cc81b6d33
|
||||
[11]: https://github.com/dani-garcia/bitwarden_rs/wiki#missing-features
|
||||
[12]: https://fedoramagazine.org/howto-use-sudo/
|
||||
[13]: https://certbot.eff.org/instructions
|
||||
[14]: https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-HTTPS
|
||||
[15]: https://unsplash.com/@cmdrshane?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
||||
[16]: https://unsplash.com/search/photos/password?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
@ -0,0 +1,94 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11185-1.html)
|
||||
[#]: subject: (Command line quick tips: More about permissions)
|
||||
[#]: via: (https://fedoramagazine.org/command-line-quick-tips-more-about-permissions/)
|
||||
[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/)
|
||||
|
||||
命令行快速提示:权限进阶
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
前一篇文章[介绍了 Fedora 系统上有关文件权限的一些基础知识][2]。本部分介绍使用权限管理文件访问和共享的其他方法。它建立在前一篇文章中的知识和示例的基础上,所以如果你还没有阅读过那篇文章,请[查看][2]它。
|
||||
|
||||
### 符号与八进制
|
||||
|
||||
在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(`ls -l`)中这些权限使用符号模式显示在屏幕上。
|
||||
|
||||
每个集合都有 `r`、`w` 和 `x` 条目,表示特定用户(所有者、组成员或其他)是否可以读取、写入或执行该文件。但是还有另一种表达这些权限的方法:八进制模式。
|
||||
|
||||
你已经习惯了[十进制][3]编号系统,它有十个不同的值(`0` 到 `9`)。另一方面,八进制系统有八个不同的值(`0` 到 `7`)。在表示权限时,八进制用作速记来显示 `r`、`w` 和 `x` 字段的值。将每个字段视为具有如下值:
|
||||
|
||||
* `r` = 4
|
||||
* `w` = 2
|
||||
* `x` = 1
|
||||
|
||||
现在,你可以使用单个八进制值表达任何组合。例如,读取和写入权限(但没有执行权限)的值为 `6`。读取和执行权限的值仅为 `5`。文件的 `rwxr-xr-x` 符号权限的八进制值为 `755`。
|
||||
|
||||
与符号值类似,你可以使用八进制值使用 `chmod` 命令设置文件权限。以下两个命令对文件设置相同的权限:
|
||||
|
||||
```
|
||||
chmod u=rw,g=r,o=r myfile1
|
||||
chmod 644 myfile1
|
||||
```
|
||||
|
||||
### 特殊权限位
|
||||
|
||||
文件上还有几个特殊权限位。这些被称为 `setuid`(或 `suid`)、`setgid`(或 `sgid`),以及<ruby>粘滞位<rt>sticky bit</rt></ruby>(或<ruby>阻止删除位<rt>delete inhibit</rt></ruby>)。 将此视为另一组八进制值:
|
||||
|
||||
* `setuid` = 4
|
||||
* `setgid` = 2
|
||||
* `sticky` = 1
|
||||
|
||||
**除非**该文件是可执行的,否则 `setuid` 位是被忽略的。如果是可执行的这种情况,则该文件(可能是应用程序或脚本)的运行就像拥有该文件的用户启动的一样。`setuid` 的一个很好的例子是 `/bin/passwd` 实用程序,它允许用户设置或更改密码。此实用程序必须能够写入到不允许普通用户更改的文件中(LCTT 译注:此处是指 `/etc/passwd` 和 `/etc/shadow`)。因此它需要精心编写,由 `root` 用户拥有,并具有 `setuid` 位,以便它可以更改密码相关文件。
|
||||
|
||||
`setgid` 位对于可执行文件的工作方式类似。该文件将使用拥有它的组的权限运行。但是,`setgid` 对于目录还有一个额外的用途。如果在具有 `setgid` 权限的目录中创建文件,则该文件的组所有者将设置为该目录的组所有者。
|
||||
|
||||
最后,虽然文件粘滞位没有意义会被忽略,但它对目录很有用。在目录上设置的粘滞位将阻止用户删除其他用户拥有的该目录中的文件。
|
||||
|
||||
在八进制模式下使用 `chmod` 设置这些位的方法是添加一个值前缀,例如 `4755`,可以将 `setuid` 添加到可执行文件中。在符号模式下,`u` 和 `g` 也可用于设置或删除 `setuid` 和 `setgid`,例如 `u+s,g+s`。粘滞位使用 `o+t` 设置。(其他的组合,如 `o+s` 或 `u+t`,是没有意义的,会被忽略。)
|
||||
|
||||
### 共享与特殊权限
|
||||
|
||||
回想一下前一篇文章中关于需要共享文件的财务团队的示例。可以想象,特殊权限位有助于更有效地解决问题。原来的解决方案只是创建了一个整个组可以写入的目录:
|
||||
|
||||
```
|
||||
drwxrwx---. 2 root finance 4096 Jul 6 15:35 finance
|
||||
```
|
||||
|
||||
此目录的一个问题是,`finance` 组成员的用户 `dwayne` 和 `jill` 可以删除彼此的文件。这对于共享空间来说不是最佳选择。它在某些情况下可能有用,但在处理财务记录时可能不会!
|
||||
|
||||
另一个问题是此目录中的文件可能无法真正共享,因为它们将由 `dwayne` 和 `jill` 的默认组拥有 - 很可能用户私有组也命名为 `dwayne` 和 `jill`,而不是 `finance`。
|
||||
|
||||
解决此问题的更好方法是在文件夹上设置 `setgid` 和粘滞位。这将做两件事:使文件夹中创建的文件自动归 `finance` 组所有,并防止 `dwayne` 和 `jill` 删除彼此的文件。下面这些命令中的任何一个都可以工作:
|
||||
|
||||
```
|
||||
sudo chmod 3770 finance
|
||||
sudo chmod u+rwx,g+rwxs,o+t finance
|
||||
```
|
||||
|
||||
该文件的长列表现在显示了所应用的新特殊权限。粘滞位显示为 `T` 而不是 `t`,因为 `finance` 组之外的用户无法搜索该文件夹。
|
||||
|
||||
```
|
||||
drwxrws--T. 2 root finance 4096 Jul 6 15:35 finance
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/command-line-quick-tips-more-about-permissions/
|
||||
|
||||
作者:[Paul W. Frields][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/pfrields/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2018/10/commandlinequicktips-816x345.jpg
|
||||
[2]: https://linux.cn/article-11123-1.html
|
||||
[3]: https://en.wikipedia.org/wiki/Decimal
|
@ -0,0 +1,288 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11178-1.html)
|
||||
[#]: subject: (Top 8 Things to do after Installing Debian 10 (Buster))
|
||||
[#]: via: (https://www.linuxtechi.com/things-to-do-after-installing-debian-10/)
|
||||
[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/)
|
||||
|
||||
Debian 10(Buster)安装后要做的前 8 件事
|
||||
======
|
||||
|
||||
Debian 10 的代号是 Buster,它是来自 Debian 家族的最新 LTS 发布版本,并包含大量的特色功能。因此,如果你已经在你的电脑上安装了 Debian 10,并在思考接下来该做什么,那么,请继续阅读这篇文章直到结尾,因为我们为你提供在安装 Debian 10 后要做的前 8 件事。对于还没有安装 Debian 10 的人们,请阅读这篇指南 [图解 Debian 10 (Buster) 安装步骤][1]。 让我们继续这篇文章。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/Things-to-do-after-installing-debian10.jpg)
|
||||
|
||||
### 1) 安装和配置 sudo
|
||||
|
||||
在设置完成 Debian 10 后,你需要做的第一件事是安装 sudo 软件包,因为它能够使你获得管理员权限来安装你需要的软件包。为安装和配置 sudo,请使用下面的命令:
|
||||
|
||||
变成 root 用户,然后使用下面的命令安装 sudo 软件包,
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ su -
|
||||
Password:
|
||||
root@linuxtechi:~# apt install sudo -y
|
||||
```
|
||||
|
||||
添加你的本地用户到 sudo 组,使用下面的 [usermod][2] 命令,
|
||||
|
||||
```
|
||||
root@linuxtechi:~# usermod -aG sudo pkumar
|
||||
root@linuxtechi:~#
|
||||
```
|
||||
|
||||
现在验证是否本地用户获得 sudo 权限:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ id
|
||||
uid=1000(pkumar) gid=1000(pkumar) groups=1000(pkumar),27(sudo)
|
||||
root@linuxtechi:~$ sudo vi /etc/hosts
|
||||
[sudo] password for pkumar:
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
### 2) 校正日期和时间
|
||||
|
||||
在你成功配置 sudo 软件包后,接下来,你需要根据你的位置来校正日期和时间。为了校正日期和时间,
|
||||
|
||||
转到系统 **设置** –> **详细说明** –> **日期和时间** ,然后更改为适合你的位置的时区。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/Adjust-date-time-Debian10.jpg)
|
||||
|
||||
一旦时区被更改,你可以看到时钟中的时间自动更改。
|
||||
|
||||
### 3) 应用所有更新
|
||||
|
||||
在 Debian 10 安装后,建议安装所有 Debian 10 软件包存储库中可用的更新,执行下面的 `apt` 命令:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update
|
||||
root@linuxtechi:~$ sudo apt upgrade -y
|
||||
```
|
||||
|
||||
**注意:** 如果你是 vi 编辑器的忠实粉丝,那么使用下面的 `apt` 命令安装 `vim`:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install vim -y
|
||||
```
|
||||
|
||||
### 4) 安装 Flash 播放器插件
|
||||
|
||||
默认情况下,Debian 10(Buster)存储库不包含 Flash 插件,因此,用户需要遵循下面的介绍来在他们的系统中查找和安装 flash 播放器。
|
||||
|
||||
为 Flash 播放器配置存储库:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list
|
||||
deb http://ftp.de.debian.org/debian buster main contrib
|
||||
root@linuxtechi:~
|
||||
```
|
||||
|
||||
现在使用下面的命令更新软件包索引:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update
|
||||
```
|
||||
|
||||
使用下面的 `apt` 命令安装 Flash 插件:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install pepperflashplugin-nonfree -y
|
||||
```
|
||||
|
||||
一旦软件包被成功安装,接下来,尝试播放 YouTube 中的视频:
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/Flash-Player-plugin-Debian10.jpg)
|
||||
|
||||
### 5) 安装软件,如 VLC、Skype、FileZilla 和截图工具
|
||||
|
||||
如此,现在我们已经启用 Flash 播放器,是时候在我们的 Debian 10 系统中安装所有其它的软件,如 VLC、Skype,Filezilla 和截图工具(flameshot)。
|
||||
|
||||
#### 安装 VLC 多媒体播放器
|
||||
|
||||
为在你的系统中安装 VLC 播放器,使用下面的 `apt` 命令:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install vlc -y
|
||||
```
|
||||
|
||||
在成功安装 VLC 播放器后,尝试播放你喜欢的视频。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/Debian10-VLC.jpg)
|
||||
|
||||
#### 安装 Skype
|
||||
|
||||
首先,下载最新的 Skype 软件包:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ wget https://go.skype.com/skypeforlinux-64.deb
|
||||
```
|
||||
|
||||
接下来,使用 `apt` 命令安装软件包:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install ./skypeforlinux-64.deb
|
||||
```
|
||||
|
||||
在成功安装 Skype 后,尝试访问它,并输入你的用户名和密码。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/skype-Debian10.jpg)
|
||||
|
||||
#### 安装 Filezilla
|
||||
|
||||
为在你的系统中安装 Filezilla,使用下面的 `apt` 命令,
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install filezilla -y
|
||||
```
|
||||
|
||||
一旦 FileZilla 软件包被成功安装,尝试访问它。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/FileZilla-Debian10.jpg)
|
||||
|
||||
#### 安装截图工具(flameshot)
|
||||
|
||||
使用下面的命令来安装截图工具:flameshot,
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install flameshot -y
|
||||
```
|
||||
|
||||
**注意:** Shutter 工具在 Debian 10 中已被移除。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/flameshoot-debian10.jpg)
|
||||
|
||||
### 6) 启用和启动防火墙
|
||||
|
||||
总是建议启动防火墙来使你的网络安全。如果你希望在 Debian 10 中启用防火墙, **UFW**(简单的防火墙)是最好的控制防火墙的工具。UFW 在 Debian 存储库中可用,它非常容易安装,如下:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt install ufw
|
||||
```
|
||||
|
||||
在你安装 UFW 后,接下来的步骤是设置防火墙。因此,设置防火墙,通过拒绝端口来禁用所有的传入流量,并且只允许需要的端口传出,像 ssh、http 和 https。
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo ufw default deny incoming
|
||||
Default incoming policy changed to 'deny'
|
||||
(be sure to update your rules accordingly)
|
||||
root@linuxtechi:~$ sudo ufw default allow outgoing
|
||||
Default outgoing policy changed to 'allow'
|
||||
(be sure to update your rules accordingly)
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
允许 SSH 端口:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo ufw allow ssh
|
||||
Rules updated
|
||||
Rules updated (v6)
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
假使你在系统中已经安装 Web 服务器,那么使用下面的 `ufw` 命令来在防火墙中允许它们的端口:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo ufw allow 80
|
||||
Rules updated
|
||||
Rules updated (v6)
|
||||
root@linuxtechi:~$ sudo ufw allow 443
|
||||
Rules updated
|
||||
Rules updated (v6)
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
最后,你可以使用下面的命令启用 UFW:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo ufw enable
|
||||
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
|
||||
Firewall is active and enabled on system startup
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
假使你想检查你的防火墙的状态,你可以使用下面的命令检查它:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo ufw status
|
||||
```
|
||||
|
||||
### 7) 安装虚拟化软件(VirtualBox)
|
||||
|
||||
安装 Virtualbox 的第一步是将 Oracle VirtualBox 存储库的公钥导入到你的 Debian 10 系统:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
|
||||
OK
|
||||
root@linuxtechi:~$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
|
||||
OK
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
如果导入成功,你将看到一个 “OK” 显示信息。
|
||||
|
||||
接下来,你需要添加存储库到仓库列表:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo add-apt-repository "deb http://download.virtualbox.org/virtualbox/debian buster contrib"
|
||||
root@linuxtechi:~$
|
||||
```
|
||||
|
||||
最后,是时候在你的系统中安装 VirtualBox 6.0:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update
|
||||
root@linuxtechi:~$ sudo apt install virtualbox-6.0 -y
|
||||
```
|
||||
|
||||
一旦 VirtualBox 软件包被成功安装,尝试访问它,并开始创建虚拟机。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2019/07/VirtualBox6-Debian10-Workstation.jpg)
|
||||
|
||||
### 8) 安装最新的 AMD 驱动程序
|
||||
|
||||
最后,你也可以安装需要的附加 AMD 显卡驱动程序(如 ATI 专有驱动)和 Nvidia 图形驱动程序。为安装最新的 AMD 驱动程序,首先,我们需要修改 `/etc/apt/sources.list` 文件,在包含 **main** 和 **contrib** 的行中添加 **non-free** 单词,示例如下显示:
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo vi /etc/apt/sources.list
|
||||
```
|
||||
|
||||
```
|
||||
...
|
||||
deb http://deb.debian.org/debian/ buster main non-free contrib
|
||||
deb-src http://deb.debian.org/debian/ buster main non-free contrib
|
||||
|
||||
deb http://security.debian.org/debian-security buster/updates main contrib non-free
|
||||
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
|
||||
|
||||
deb http://ftp.us.debian.org/debian/ buster-updates main contrib non-free
|
||||
...
|
||||
```
|
||||
|
||||
现在,使用下面的 `apt` 命令来在 Debian 10 系统中安装最新的 AMD 驱动程序。
|
||||
|
||||
```
|
||||
root@linuxtechi:~$ sudo apt update
|
||||
root@linuxtechi:~$ sudo apt install firmware-linux firmware-linux-nonfree libdrm-amdgpu1 xserver-xorg-video-amdgpu -y
|
||||
```
|
||||
|
||||
这就是这篇文章的全部内容,我希望你了解在安装 Debian 10 后应该做什么。请在下面的评论区,分享你的反馈和评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxtechi.com/things-to-do-after-installing-debian-10/
|
||||
|
||||
作者:[Pradeep Kumar][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.linuxtechi.com/author/pradeep/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://linux.cn/article-11083-1.html
|
||||
[2]: https://www.linuxtechi.com/linux-commands-to-manage-local-accounts/
|
@ -0,0 +1,77 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11193-1.html)
|
||||
[#]: subject: (OpenHMD: Open Source Project for VR Development)
|
||||
[#]: via: (https://itsfoss.com/openhmd/)
|
||||
[#]: author: (John Paul https://itsfoss.com/author/john/)
|
||||
|
||||
OpenHMD:用于 VR 开发的开源项目
|
||||
======
|
||||
|
||||
> 在这个时代,有一些开源替代品可满足你的所有计算需求。甚至还有一个 VR 眼镜之类的开源平台。让我们快速看一下 OpenHMD 这个项目。
|
||||
|
||||
![][5]
|
||||
|
||||
### 什么是 OpenHMD?
|
||||
|
||||
![][1]
|
||||
|
||||
[OpenHMD][2] 是一个为沉浸式技术创建开源 API 及驱动的项目。这类技术包括带内置头部跟踪的头戴式显示器。
|
||||
|
||||
它目前支持很多系统,包括 Android、FreeBSD、Linux、OpenBSD、mac OS 和 Windows。它支持的[设备][3]包括 Oculus Rift、HTC Vive、DreamWorld DreamGlass、Playstation Move 等。它还支持各种语言,包括 Go、Java、.NET、Perl、Python 和 Rust。
|
||||
|
||||
OpenHMD 项目是在 [Boost 许可证][4]下发布的。
|
||||
|
||||
### 新版本中的更多功能和改进功能
|
||||
|
||||
最近,OpenHMD 项目[发布版本 0.3.0][6],代号为 Djungelvral([Djungelvral][7] 是来自瑞典的盐渍甘草)。它带来了不少变化。
|
||||
|
||||
这次更新添加了对以下设备的支持:
|
||||
|
||||
* 3Glasses D3
|
||||
* Oculus Rift CV1
|
||||
* HTC Vive 和 HTC Vive Pro
|
||||
* NOLO VR
|
||||
* Windows Mixed Reality HMD 支持
|
||||
* Deepoon E2
|
||||
* GearVR Gen1
|
||||
|
||||
OpenHMD 增加了一个通用扭曲着色器。这一新增功能“可以方便地在驱动程序中设置一些变量,为着色器提供有关镜头尺寸、色差、位置和 Quirks 的信息。”
|
||||
|
||||
他们还宣布计划改变构建系统。OpenHMD 增加了对 Meson 的支持,并将在下一个 (0.4) 版本中将删除对 Autotools 的支持。
|
||||
|
||||
OpenHMD 背后的团队还不得不删除一些功能,因为他们希望他们的系统适合所有人。由于 Windows 和 mac OS 对 HID 头的兼容问题,因此禁用了对 PlayStation VR 的支持。NOLO 有一堆固件版本,很多都会有小改动。OpenHMD 无法测试所有固件版本,因此某些版本可能无法正常工作。他们建议升级到最新的固件版本。最后,几个设备仅提供有限的支持,因此不包含在此版本中。
|
||||
|
||||
他们预计将加快 OpenHMD 发布周期,以便更快地获得更新的功能并为用户提供更多设备支持。他们优先要做的是“让当前在主干分支中禁用的设备在下次发布补丁时能够试用,同时让支持的头戴式显示器支持位置跟踪。”
|
||||
|
||||
### 最后总结
|
||||
|
||||
我没有 VR 设备而且从未使用过。我相信它们有很大的潜力,甚至能超越游戏。我很兴奋(但并不惊讶)有一个开源实现会去支持许多设备。我很高兴他们专注于各种各样的设备,而不是专注于一些非品牌的 VR 的努力。
|
||||
|
||||
我希望 OpenHMD 团队做得不错,并希望他们创建一个平台,让它们成为 VR项目。
|
||||
|
||||
你曾经使用或看到过 OpenHMD 吗?你有没有使用 VR 进行游戏和其他用途?如果是,你是否用过任何开源硬件或软件?请在下面的评论中告诉我们。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/openhmd/
|
||||
|
||||
作者:[John Paul][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/john/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/openhmd-logo.png?resize=300%2C195&ssl=1
|
||||
[2]: http://www.openhmd.net/
|
||||
[3]: http://www.openhmd.net/index.php/devices/
|
||||
[4]: https://github.com/OpenHMD/OpenHMD/blob/master/LICENSE
|
||||
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/virtual-reality-development.jpg?ssl=1
|
||||
[6]: http://www.openhmd.net/index.php/2019/07/12/openhmd-0-3-0-djungelvral-released/
|
||||
[7]: https://www.youtube.com/watch?v=byP5i6LdDXs
|
||||
[9]: http://reddit.com/r/linuxusersgroup
|
421
published/20190731 Bash aliases you can-t live without.md
Normal file
421
published/20190731 Bash aliases you can-t live without.md
Normal file
@ -0,0 +1,421 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11179-1.html)
|
||||
[#]: subject: (Bash aliases you can’t live without)
|
||||
[#]: via: (https://opensource.com/article/19/7/bash-aliases)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
不可或缺的 Bash 别名
|
||||
======
|
||||
|
||||
> 厌倦了一遍又一遍地输入相同的长命令?你觉得在命令行上工作效率低吗?Bash 别名可以为你创造一个与众不同的世界。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201908/03/095855ip0h0jpi5u9t3r00.jpg)
|
||||
|
||||
Bash 别名是一种用新的命令补充或覆盖 Bash 命令的方法。Bash 别名使用户可以轻松地在 [POSIX][2] 终端中自定义其体验。它们通常定义在 `$HOME/.bashrc` 或 `$HOME/bash_aliases` 中(它是由 `$HOME/.bashrc` 加载的)。
|
||||
|
||||
大多数发行版在新用户帐户的默认 `.bashrc` 文件中至少添加了一些流行的别名。这些可以用来简单演示 Bash 别名的语法:
|
||||
|
||||
```
|
||||
alias ls='ls -F'
|
||||
alias ll='ls -lh'
|
||||
```
|
||||
|
||||
但并非所有发行版都附带预先添加好的别名。如果你想手动添加别名,则必须将它们加载到当前的 Bash 会话中:
|
||||
|
||||
```
|
||||
$ source ~/.bashrc
|
||||
```
|
||||
|
||||
否则,你可以关闭终端并重新打开它,以便重新加载其配置文件。
|
||||
|
||||
通过 Bash 初始化脚本中定义的那些别名,你可以键入 `ll` 而得到 `ls -l` 的结果,当你键入 `ls` 时,得到也不是原来的 [ls][3] 的普通输出。
|
||||
|
||||
那些别名很棒,但它们只是浅尝辄止。以下是十大 Bash 别名,一旦你试过它们,你会发现再也不能离开它们。
|
||||
|
||||
### 首先设置
|
||||
|
||||
在开始之前,创建一个名为 `~/.bash_aliases` 的文件:
|
||||
|
||||
```
|
||||
$ touch ~/.bash_aliases
|
||||
```
|
||||
|
||||
然后,确认这些代码出现在你的 `~/.bashrc` 文件当中:
|
||||
|
||||
```
|
||||
if [ -e $HOME/.bash_aliases ]; then
|
||||
source $HOME/.bash_aliases
|
||||
fi
|
||||
```
|
||||
|
||||
如果你想亲自尝试本文中的任何别名,请将它们输入到 `.bash_aliases` 文件当中,然后使用 `source ~/.bashrc` 命令将它们加载到当前 Bash 会话中。
|
||||
|
||||
### 按文件大小排序
|
||||
|
||||
如果你一开始使用过 GNOME 中的 Nautilus、MacOS 中的 Finder 或 Windows 中的资源管理器等 GUI 文件管理器,那么你很可能习惯了按文件大小排序文件列表。你也可以在终端上做到这一点,但这条命令不是很简洁。
|
||||
|
||||
将此别名添加到 GNU 系统上的配置中:
|
||||
|
||||
```
|
||||
alias lt='ls --human-readable --size -1 -S --classify'
|
||||
```
|
||||
|
||||
此别名将 `lt` 替换为 `ls` 命令,该命令在单个列中显示每个项目的大小,然后按大小对其进行排序,并使用符号表示文件类型。加载新别名,然后试一下:
|
||||
|
||||
```
|
||||
$ source ~/.bashrc
|
||||
$ lt
|
||||
total 344K
|
||||
140K configure*
|
||||
44K aclocal.m4
|
||||
36K LICENSE
|
||||
32K config.status*
|
||||
24K Makefile
|
||||
24K Makefile.in
|
||||
12K config.log
|
||||
8.0K README.md
|
||||
4.0K info.slackermedia.Git-portal.json
|
||||
4.0K git-portal.spec
|
||||
4.0K flatpak.path.patch
|
||||
4.0K Makefile.am*
|
||||
4.0K dot-gitlab.ci.yml
|
||||
4.0K configure.ac*
|
||||
0 autom4te.cache/
|
||||
0 share/
|
||||
0 bin/
|
||||
0 install-sh@
|
||||
0 compile@
|
||||
0 missing@
|
||||
0 COPYING@
|
||||
```
|
||||
|
||||
在 MacOS 或 BSD 上,`ls` 命令没有相同的选项,因此这个别名可以改为:
|
||||
|
||||
```
|
||||
alias lt='du -sh * | sort -h'
|
||||
```
|
||||
|
||||
这个版本的结果稍有不同:
|
||||
|
||||
```
|
||||
$ du -sh * | sort -h
|
||||
0 compile
|
||||
0 COPYING
|
||||
0 install-sh
|
||||
0 missing
|
||||
4.0K configure.ac
|
||||
4.0K dot-gitlab.ci.yml
|
||||
4.0K flatpak.path.patch
|
||||
4.0K git-portal.spec
|
||||
4.0K info.slackermedia.Git-portal.json
|
||||
4.0K Makefile.am
|
||||
8.0K README.md
|
||||
12K config.log
|
||||
16K bin
|
||||
24K Makefile
|
||||
24K Makefile.in
|
||||
32K config.status
|
||||
36K LICENSE
|
||||
44K aclocal.m4
|
||||
60K share
|
||||
140K configure
|
||||
476K autom4te.cache
|
||||
```
|
||||
|
||||
实际上,即使在 Linux上,上面这个命令也很有用,因为使用 `ls` 列出的目录和符号链接的大小为 0,这可能不是你真正想要的信息。使用哪个看你自己的喜好。
|
||||
|
||||
*感谢 Brad Alexander 提供的这个别名的思路。*
|
||||
|
||||
### 只查看挂载的驱动器
|
||||
|
||||
`mount` 命令过去很简单。只需一个命令,你就可以获得计算机上所有已挂载的文件系统的列表,它经常用于概览连接到工作站有哪些驱动器。在过去看到超过三、四个条目就会令人印象深刻,因为大多数计算机没有那么多的 USB 端口,因此这个结果还是比较好查看的。
|
||||
|
||||
现在计算机有点复杂,有 LVM、物理驱动器、网络存储和虚拟文件系统,`mount` 的结果就很难一目了然:
|
||||
|
||||
```
|
||||
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
|
||||
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
|
||||
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=8131024k,nr_inodes=2032756,mode=755)
|
||||
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
|
||||
[...]
|
||||
/dev/nvme0n1p2 on /boot type ext4 (rw,relatime,seclabel)
|
||||
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
|
||||
[...]
|
||||
gvfsd-fuse on /run/user/100977/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=100977,group_id=100977)
|
||||
/dev/sda1 on /run/media/seth/pocket type ext4 (rw,nosuid,nodev,relatime,seclabel,uhelper=udisks2)
|
||||
/dev/sdc1 on /run/media/seth/trip type ext4 (rw,nosuid,nodev,relatime,seclabel,uhelper=udisks2)
|
||||
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
|
||||
```
|
||||
|
||||
要解决这个问题,试试这个别名:
|
||||
|
||||
```
|
||||
alias mnt='mount | awk -F' ' '{ printf "%s\t%s\n",$1,$3; }' | column -t | egrep ^/dev/ | sort'
|
||||
```
|
||||
|
||||
此别名使用 `awk` 按列解析 `mount` 的输出,将输出减少到你可能想要查找的内容(挂载了哪些硬盘驱动器,而不是文件系统):
|
||||
|
||||
```
|
||||
$ mnt
|
||||
/dev/mapper/fedora-root /
|
||||
/dev/nvme0n1p1 /boot/efi
|
||||
/dev/nvme0n1p2 /boot
|
||||
/dev/sda1 /run/media/seth/pocket
|
||||
/dev/sdc1 /run/media/seth/trip
|
||||
```
|
||||
|
||||
在 MacOS 上,`mount` 命令不提供非常详细的输出,因此这个别名可能过度精简了。但是,如果你更喜欢简洁的报告,请尝试以下方法:
|
||||
|
||||
```
|
||||
alias mnt='mount | grep -E ^/dev | column -t'
|
||||
```
|
||||
|
||||
结果:
|
||||
|
||||
```
|
||||
$ mnt
|
||||
/dev/disk1s1 on / (apfs, local, journaled)
|
||||
/dev/disk1s4 on /private/var/vm (apfs, local, noexec, journaled, noatime, nobrowse)
|
||||
```
|
||||
|
||||
### 在你的 grep 历史中查找命令
|
||||
|
||||
有时你好不容易弄清楚了如何在终端完成某件事,并觉得自己永远不会忘记你刚学到的东西。然后,一个小时过去之后你就完全忘记了你做了什么。
|
||||
|
||||
搜索 Bash 历史记录是每个人不时要做的事情。如果你确切地知道要搜索的内容,可以使用 `Ctrl + R` 对历史记录进行反向搜索,但有时你无法记住要查找的确切命令。
|
||||
|
||||
这是使该任务更容易的别名:
|
||||
|
||||
```
|
||||
alias gh='history|grep'
|
||||
```
|
||||
|
||||
这是如何使用的例子:
|
||||
|
||||
```
|
||||
$ gh bash
|
||||
482 cat ~/.bashrc | grep _alias
|
||||
498 emacs ~/.bashrc
|
||||
530 emacs ~/.bash_aliases
|
||||
531 source ~/.bashrc
|
||||
```
|
||||
|
||||
### 按修改时间排序
|
||||
|
||||
每个星期一都会这样:你坐在你的电脑前开始工作,你打开一个终端,你发现你已经忘记了上周五你在做什么。你需要的是列出最近修改的文件的别名。
|
||||
|
||||
你可以使用 `ls` 命令创建别名,以帮助你找到上次离开的位置:
|
||||
|
||||
```
|
||||
alias left='ls -t -1'
|
||||
```
|
||||
|
||||
输出很简单,但如果你愿意,可以使用 `--long` 选项扩展它。这个别名列出的显示如下:
|
||||
|
||||
```
|
||||
$ left
|
||||
demo.jpeg
|
||||
demo.xcf
|
||||
design-proposal.md
|
||||
rejects.txt
|
||||
brainstorm.txt
|
||||
query-letter.xml
|
||||
```
|
||||
|
||||
### 文件计数
|
||||
|
||||
如果你需要知道目录中有多少文件,那么该解决方案是 UNIX 命令构造的最典型示例之一:使用 `ls` 命令列出文件,用`-1` 选项将其输出控制为只有一列,然后输出到 `wc`(单词计数)命令的管道,以计算有多少行。
|
||||
|
||||
这是 UNIX 理念如何允许用户使用小型的系统组件构建自己的解决方案的精彩演示。如果你碰巧每天都要做几次,这个命令组合也要输入很多字母,如果没有使用 `-R` 选项,它就不能用于目录,这会为输出引入新行并导致无用的结果。
|
||||
|
||||
而这个别名使这个过程变得简单:
|
||||
|
||||
```
|
||||
alias count='find . -type f | wc -l'
|
||||
```
|
||||
|
||||
这个别名会计算文件,忽略目录,但**不会**忽略目录的内容。如果你有一个包含两个目录的项目文件夹,每个目录包含两个文件,则该别名将返回 4,因为整个项目中有 4 个文件。
|
||||
|
||||
```
|
||||
$ ls
|
||||
foo bar
|
||||
$ count
|
||||
4
|
||||
```
|
||||
|
||||
### 创建 Python 虚拟环境
|
||||
|
||||
你用 Python 编程吗?
|
||||
|
||||
你用 Python 编写了很多程序吗?
|
||||
|
||||
如果是这样,那么你就知道创建 Python 虚拟环境至少需要 53 次击键。
|
||||
|
||||
这个数字里有 49 次是多余的,它很容易被两个名为 `ve` 和 `va` 的新别名所解决:
|
||||
|
||||
```
|
||||
alias ve='python3 -m venv ./venv'
|
||||
alias va='source ./venv/bin/activate'
|
||||
```
|
||||
|
||||
运行 `ve` 会创建一个名为 `venv` 的新目录,其中包含 Python 3 的常用虚拟环境文件系统。`va` 别名在当前 shell 中的激活该环境:
|
||||
|
||||
```
|
||||
$ cd my-project
|
||||
$ ve
|
||||
$ va
|
||||
(venv) $
|
||||
```
|
||||
|
||||
### 增加一个复制进度条
|
||||
|
||||
每个人都会吐槽进度条,因为它们似乎总是不合时宜。然而,在内心深处,我们似乎都想要它们。UNIX 的 `cp` 命令没有进度条,但它有一个 `-v` 选项用于显示详细信息,它回显了复制的每个文件名到终端。这是一个相当不错的技巧,但是当你复制一个大文件并且想要了解还有多少文件尚未传输时,它的作用就没那么大了。
|
||||
|
||||
`pv` 命令可以在复制期间提供进度条,但它并不常用。另一方面,`rsync` 命令包含在几乎所有的 POSIX 系统的默认安装中,并且它被普遍认为是远程和本地复制文件的最智能方法之一。
|
||||
|
||||
更好的是,它有一个内置的进度条。
|
||||
|
||||
```
|
||||
alias cpv='rsync -ah --info=progress2'
|
||||
```
|
||||
|
||||
像使用 `cp` 命令一样使用此别名:
|
||||
|
||||
```
|
||||
$ cpv bigfile.flac /run/media/seth/audio/
|
||||
3.83M 6% 213.15MB/s 0:00:00 (xfr#4, to-chk=0/4)
|
||||
```
|
||||
|
||||
使用此命令的一个有趣的副作用是 `rsync` 无需 `-r` 标志就可以复制文件和目录,而 `cp` 则需要。
|
||||
|
||||
### 避免意外删除
|
||||
|
||||
你不应该使用 `rm` 命令。`rm` 手册甚至这样说:
|
||||
|
||||
> **警告:**如果使用 `rm` 删除文件,通常可以恢复该文件的内容。如果你想要更加确保内容真正无法恢复,请考虑使用 `shred`。
|
||||
|
||||
如果要删除文件,则应将文件移动到“废纸篓”,就像使用桌面时一样。
|
||||
|
||||
POSIX 使这很简单,因为垃圾桶是文件系统中可访问的一个实际位置。该位置可能会发生变化,具体取决于你的平台:在 [FreeDesktop][4] 上,“垃圾桶”位于 `~/.local/share/Trash`,而在 MacOS 上则是 `~/.Trash`,但无论如何,它只是一个目录,你可以将文件藏在那个看不见的地方,直到你准备永久删除它们为止。
|
||||
|
||||
这个简单的别名提供了一种从终端将文件扔进垃圾桶的方法:
|
||||
|
||||
```
|
||||
alias tcn='mv --force -t ~/.local/share/Trash '
|
||||
```
|
||||
|
||||
该别名使用一个鲜为人知的 `mv` 标志(`-t`),使你能够提供作为最终移动目标的参数,而忽略了首先列出要移动的文件的通常要求。现在,你可以使用新命令将文件和文件夹移动到系统垃圾桶:
|
||||
|
||||
```
|
||||
$ ls
|
||||
foo bar
|
||||
$ tcn foo
|
||||
$ ls
|
||||
bar
|
||||
```
|
||||
|
||||
现在文件已“消失”,只有在你一头冷汗的时候才意识到你还需要它。此时,你可以从系统垃圾桶中抢救该文件;这肯定可以给 Bash 和 `mv` 开发人员提供一些帮助。
|
||||
|
||||
**注意:**如果你需要一个具有更好的 FreeDesktop 兼容性的更强大的垃圾桶命令,请参阅 [Trashy][5]。
|
||||
|
||||
### 简化 Git 工作流
|
||||
|
||||
每个人都有自己独特的工作流程,但无论如何,通常都会有重复的任务。如果你经常使用 Git,那么你可能会发现自己经常重复的一些操作序列。也许你会发现自己回到主分支并整天一遍又一遍地拉取最新的变化,或者你可能发现自己创建了标签然后将它们推到远端,抑或可能完全是其它的什么东西。
|
||||
|
||||
无论让你厌倦一遍遍输入的 Git 魔咒是什么,你都可以通过 Bash 别名减轻一些痛苦。很大程度上,由于它能够将参数传递给钩子,Git 拥有着丰富的内省命令,可以让你不必在 Bash 中执行那些丑陋冗长的命令。
|
||||
|
||||
例如,虽然你可能很难在 Bash 中找到项目的顶级目录(就 Bash 而言,它是一个完全随意的名称,因为计算机的绝对顶级是根目录),但 Git 可以通过简单的查询找到项目的顶级目录。如果你研究过 Git 钩子,你会发现自己能够找到 Bash 一无所知的各种信息,而你可以利用 Bash 别名来利用这些信息。
|
||||
|
||||
这是一个来查找 Git 项目的顶级目录的别名,无论你当前在哪个项目中工作,都可以将目录改变为顶级目录,切换到主分支,并执行 Git 拉取:
|
||||
|
||||
```
|
||||
alias startgit='cd `git rev-parse --show-toplevel` && git checkout master && git pull'
|
||||
```
|
||||
|
||||
这种别名绝不是一个普遍有用的别名,但它演示了一个相对简单的别名如何能够消除大量繁琐的导航、命令和等待提示。
|
||||
|
||||
一个更简单,可能更通用的别名将使你返回到 Git 项目的顶级目录。这个别名非常有用,因为当你在一个项目上工作时,该项目或多或少会成为你的“临时家目录”。它应该像回家一样简单,就像回你真正的家一样,这里有一个别名:
|
||||
|
||||
```
|
||||
alias cg='cd `git rev-parse --show-toplevel`'
|
||||
```
|
||||
|
||||
现在,命令 `cg` 将你带到 Git 项目的顶部,无论你下潜的目录结构有多深。
|
||||
|
||||
### 切换目录并同时查看目录内容
|
||||
|
||||
(据称)曾经一位著名科学家提出过,我们可以通过收集极客输入 `cd` 后跟 `ls` 消耗的能量来解决地球上的许多能量问题。
|
||||
|
||||
这是一种常见的用法,因为通常当你更改目录时,你都会有查看周围的内容的冲动或需要。
|
||||
|
||||
但是在你的计算机的目录树中移动并不一定是一个走走停停的过程。
|
||||
|
||||
这是一个作弊,因为它根本不是别名,但它是探索 Bash 功能的一个很好的借口。虽然别名非常适合快速替换一个命令,但 Bash 也允许你在 `.bashrc` 文件中添加本地函数(或者你加载到 `.bashrc` 中的单独函数文件,就像你的别名文件一样)。
|
||||
|
||||
为了保持模块化,创建一个名为 `~/.bash_functions` 的新文件,然后让你的 `.bashrc` 加载它:
|
||||
|
||||
```
|
||||
if [ -e $HOME/.bash_functions ]; then
|
||||
source $HOME/.bash_functions
|
||||
fi
|
||||
```
|
||||
|
||||
在该函数文件中,添加这些代码:
|
||||
|
||||
```
|
||||
function cl() {
|
||||
DIR="$*";
|
||||
# if no DIR given, go home
|
||||
if [ $# -lt 1 ]; then
|
||||
DIR=$HOME;
|
||||
fi;
|
||||
builtin cd "${DIR}" && \
|
||||
# use your preferred ls command
|
||||
ls -F --color=auto
|
||||
}
|
||||
```
|
||||
|
||||
将函数加载到 Bash 会话中,然后尝试:
|
||||
|
||||
```
|
||||
$ source ~/.bash_functions
|
||||
$ cl Documents
|
||||
foo bar baz
|
||||
$ pwd
|
||||
/home/seth/Documents
|
||||
$ cl ..
|
||||
Desktop Documents Downloads
|
||||
[...]
|
||||
$ pwd
|
||||
/home/seth
|
||||
```
|
||||
|
||||
函数比别名更灵活,但有了这种灵活性,你就有责任确保代码有意义并达到你的期望。别名是简单的,所以要保持简单而有用。要正式修改 Bash 的行为,请使用保存到 `PATH` 环境变量中某个位置的函数或自定义的 shell 脚本。
|
||||
|
||||
附注,有一些巧妙的奇技淫巧来实现 `cd` 和 `ls` 序列作为别名,所以如果你足够耐心,那么即使是一个简单的别名也永无止限。
|
||||
|
||||
### 开始别名化和函数化吧
|
||||
|
||||
可以定制你的环境使得 Linux 变得如此有趣,提高效率使得 Linux 可以改变生活。开始使用简单的别名,进而使用函数,并在评论中发布你必须拥有的别名!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/7/bash-aliases
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/seth
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background)
|
||||
[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
|
||||
[3]: https://opensource.com/article/19/7/master-ls-command
|
||||
[4]: https://www.freedesktop.org/wiki/
|
||||
[5]: https://gitlab.com/trashy/trashy
|
@ -0,0 +1,80 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11187-1.html)
|
||||
[#]: subject: (The fastest open source CPU ever, Facebook shares AI algorithms fighting harmful content, and more news)
|
||||
[#]: via: (https://opensource.com/article/19/8/news-august-3)
|
||||
[#]: author: (Lauren Maffeo https://opensource.com/users/lmaffeo)
|
||||
|
||||
开源新闻综述:有史以来最快的开源 CPU、Facebook 分享对抗有害内容的 AI 算法
|
||||
======
|
||||
|
||||
> 不要错过最近两周最大的开源新闻。
|
||||
|
||||
![Weekly news roundup with TV][1]
|
||||
|
||||
在本期开源新闻综述中,我们分享了 Facebook 开源了两种算法来查找有害内容,Apple 在数据传输项目中的新角色以及你应该知道的更多新闻。
|
||||
|
||||
### Facebook 开源算法用于查找有害内容
|
||||
|
||||
Facebook 宣布它[开源两种算法][2]用于在该平台上发现儿童剥削、恐怖主义威胁和写实暴力。在 8 月 1 日的博客文章中,Facebook 分享了 PDQ 和 TMK + PDQF 这两种将文件存储为数字哈希的技术,然后将它们与已知的有害内容示例进行比较 - [现在已放在 GitHub 上][3]。
|
||||
|
||||
该代码是在 Facebook 要尽快将有害内容从平台上移除的压力之下发布的。三月份在新西兰的大规模谋杀案被曝光在 Facebook Live 上,澳大利亚政府[威胁][4]如果视频没有及时删除 Facebook 高管将被处以罚款和入狱。通过发布这些算法的源代码,Facebook 表示希望非营利组织、科技公司和独立开发人员都能帮助他们更快地找到并删除有害内容。
|
||||
|
||||
### 阿里巴巴发布了最快的开源 CPU
|
||||
|
||||
上个月,阿里巴巴的子公司平头哥半导体公司[发布了其玄铁 91 处理器][5]。它可以用于人工智能、物联网、5G 和自动驾驶汽车等基础设施。它拥有 7.1 Coremark/MHz 的基准,使其成为市场上最快的开源 CPU。
|
||||
|
||||
平头哥宣布计划在今年 9 月在 GitHub 上提供其优质代码。分析师认为此次发布旨在帮助中国实现其目标,即到 2021 年使用本地供应商满足 40% 的处理器需求。近期美国的关税调整威胁要破坏这一目标,从而造成了对开源计算机组件的需求。
|
||||
|
||||
### Mattermost 为开源协作应用提供了理由
|
||||
|
||||
所有开源社区都受益于可以从一个或多个地方彼此进行通信。团队聊天应用程序的世界似乎由 Slack 和 Microsoft Teams 等极少数的强大工具主导。大多数选择都是基于云的和专有产品的;而 Mattermost 采用了不同的方法,销售开源协作应用程序的价值。
|
||||
|
||||
“人们想要一个开源替代品,因为他们需要信任、灵活性和只有开源才能提供的创新,”Mattermost 的联合创始人兼首席执行官 Ian Tien 说。
|
||||
|
||||
随着从优步到国防部的客户,Mattermost 走上了一个关键市场:需要开源软件的团队,他们可以信任这些软件并安装在他们自己的服务器上。对于需要协作应用程序在其内部基础架构上运行的企业,Mattermost 填补了 [Atlassian 离开后][6] 的空白。在 Computerworld 的一篇文章中,Matthew Finnegan [探讨][7]了为什么在本地部署的开源聊天工具尚未死亡。
|
||||
|
||||
### Apple 加入了开源数据传输项目
|
||||
|
||||
Google、Facebook、Twitter 和微软去年联合创建了<ruby>数据传输项目<rt>Data Transfer Project</rt></ruby>(DTP)。DTP 被誉为通过自己的数据提升数据安全性和用户代理的一种方式,是一种罕见的技术上的团结展示。本周,Apple 宣布他们也将[加入][8]。
|
||||
|
||||
DTP 的目标是帮助用户通过开源平台将数据从一个在线服务转移到另一个在线服务。DTP 旨在通过使用 API 和授权工具来取消中间人,以便用户将数据从一个服务转移到另一个服务。这将消除用户下载数据然后将其上传到另一个服务的需要。Apple 加入 DTP 的选择将允许用户将数据传入和传出 iCloud,这可能是隐私权拥护者的一大胜利。
|
||||
|
||||
#### 其它新闻
|
||||
|
||||
* [FlexiWAN 的开源 SD-WAN 可在公共测试版中下载] [9]
|
||||
* [开源的 Windows 计算器应用程序获得了永远置顶模式] [10]
|
||||
* [通过 Zowe,开源和 DevOps 正在使大型计算机民主化] [11]
|
||||
* [Mozilla 首次推出 WebThings Gateway 开源路由器固件的实现] [12]
|
||||
* [更新:向 Mozilla 代码库做成贡献][13]
|
||||
|
||||
*谢谢 Opensource.com 的工作人员和主持人本周的帮助。*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/8/news-august-3
|
||||
|
||||
作者:[Lauren Maffeo][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/lmaffeo
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/weekly_news_roundup_tv.png?itok=B6PM4S1i (Weekly news roundup with TV)
|
||||
[2]: https://www.theverge.com/2019/8/1/20750752/facebook-child-exploitation-terrorism-open-source-algorithm-pdq-tmk
|
||||
[3]: https://github.com/facebook/ThreatExchange/tree/master/hashing/tmk
|
||||
[4]: https://www.buzzfeed.com/hannahryan/social-media-facebook-livestreaming-laws-christchurch
|
||||
[5]: https://hexus.net/tech/news/cpu/133229-alibabas-16-core-risc-v-fastest-open-source-cpu-yet/
|
||||
[6]: https://lab.getapp.com/atlassian-slack-on-premise-software/
|
||||
[7]: https://www.computerworld.com/article/3428679/mattermost-makes-case-for-open-source-as-team-messaging-market-booms.html
|
||||
[8]: https://www.techspot.com/news/81221-apple-joins-data-transfer-project-open-source-project.html
|
||||
[9]: https://www.fiercetelecom.com/telecom/flexiwan-s-open-source-sd-wan-available-for-download-public-beta-release
|
||||
[10]: https://mspoweruser.com/open-source-windows-calculator-app-to-get-always-on-top-mode/
|
||||
[11]: https://siliconangle.com/2019/07/29/zowe-open-source-devops-democratizing-mainframe-computer/
|
||||
[12]: https://venturebeat.com/2019/07/25/mozilla-debuts-webthings-gateway-open-source-router-firmware-for-turris-omnia/
|
||||
[13]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Introduction
|
@ -0,0 +1,341 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11194-1.html)
|
||||
[#]: subject: (How To Find Hardware Specifications On Linux)
|
||||
[#]: via: (https://www.ostechnix.com/getting-hardwaresoftware-specifications-in-linux-mint-ubuntu/)
|
||||
[#]: author: (sk https://www.ostechnix.com/author/sk/)
|
||||
|
||||
如何在 Linux 上查找硬件规格
|
||||
======
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/201908/06/111717t1f77n7v3egxhf18.jpg)
|
||||
|
||||
在 Linux 系统上有许多工具可用于查找硬件规格。在这里,我列出了四种最常用的工具,可以获取 Linux 系统的几乎所有硬件(和软件)细节。好在是这些工具在某些 Linux 发行版上默认预装。我在 Ubuntu 18.04 LTS 桌面上测试了这些工具,但是它们也适用于其他 Linux 发行版。
|
||||
|
||||
### 1、LSHW
|
||||
|
||||
lshw(硬件列表)是一个简单但功能齐全的实用程序,它提供了 Linux 系统上的硬件规格的详细信息。它可以报告确切的内存规格、固件版本、主板规格、CPU 版本和速度、缓存规格、总线速度等。信息可以以纯文本、XML 或 HTML 格式输出。
|
||||
|
||||
它目前支持 DMI(仅限 x86 和 EFI)、Open Firmware 设备树(仅限 PowerPC)、PCI/AGP、ISA PnP(x86)、CPUID(x86)、IDE/ATA/ATAPI、PCMCIA(仅在 x86 上测试过)、USB 和 SCSI。
|
||||
|
||||
就像我已经说过的那样,Ubuntu 默认预装了 lshw。如果它未安装在你的 Ubuntu 系统中,请使用以下命令安装它:
|
||||
|
||||
```
|
||||
$ sudo apt install lshw lshw-gtk
|
||||
```
|
||||
|
||||
在其他 Linux 发行版上,例如 Arch Linux,运行:
|
||||
|
||||
```
|
||||
$ sudo pacman -S lshw lshw-gtk
|
||||
```
|
||||
|
||||
安装后,运行 `lshw` 以查找系统硬件详细信息:
|
||||
|
||||
```
|
||||
$ sudo lshw
|
||||
```
|
||||
|
||||
你将看到输出详细的系统硬件。
|
||||
|
||||
示例输出:
|
||||
|
||||
![][2]
|
||||
|
||||
*使用 lshw 在 Linux 上查找硬件规格*
|
||||
|
||||
请注意,如果你没有以 `sudo` 权限运行 `lshw` 命令,则输出可能不完整或不准确。
|
||||
|
||||
`lshw` 可以将输出显示为 HTML 页面。为此,请使用:
|
||||
|
||||
```
|
||||
$ sudo lshw -html
|
||||
```
|
||||
|
||||
同样,我们可以将设备树输出为 XML 和 json 格式,如下所示:
|
||||
|
||||
```
|
||||
$ sudo lshw -xml
|
||||
$ sudo lshw -json
|
||||
```
|
||||
|
||||
要输出显示硬件路径的设备树,请使用 `-short` 选项:
|
||||
|
||||
```
|
||||
$ sudo lshw -short
|
||||
```
|
||||
|
||||
![][3]
|
||||
|
||||
*使用 lshw 显示具有硬件路径的设备树*
|
||||
|
||||
要列出设备的总线信息、详细的 SCSI、USB、IDE 和 PCI 地址,请运行:
|
||||
|
||||
```
|
||||
$ sudo lshw -businfo
|
||||
```
|
||||
|
||||
默认情况下,`lshw` 显示所有硬件详细信息。你还可以使用类选项查看特定硬件详细信息的硬件信息,例如处理器、内存、显示器等。可以使用 `lshw -short` 或 `lshw -businfo` 找到类选项。
|
||||
|
||||
要显示特定硬件详细信息,例如处理器,请执行以下操作:
|
||||
|
||||
```
|
||||
$ sudo lshw -class processor
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```
|
||||
*-cpu
|
||||
description: CPU
|
||||
product: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
|
||||
vendor: Intel Corp.
|
||||
physical id: 4
|
||||
bus info: [email protected]
|
||||
version: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
|
||||
serial: To Be Filled By O.E.M.
|
||||
slot: CPU 1
|
||||
size: 913MHz
|
||||
capacity: 2300MHz
|
||||
width: 64 bits
|
||||
clock: 100MHz
|
||||
capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts md_clear flush_l1d cpufreq
|
||||
configuration: cores=2 enabledcores=1 threads=2
|
||||
```
|
||||
|
||||
类似的,你可以得到系统细节:
|
||||
|
||||
```
|
||||
$ sudo lshw -class system
|
||||
```
|
||||
|
||||
硬盘细节:
|
||||
|
||||
```
|
||||
$ sudo lshw -class disk
|
||||
```
|
||||
|
||||
网络细节:
|
||||
|
||||
```
|
||||
$ sudo lshw -class network
|
||||
```
|
||||
|
||||
内存细节:
|
||||
|
||||
```
|
||||
$ sudo lshw -class memory
|
||||
```
|
||||
|
||||
你也可以像下面这样列出多个设备的细节:
|
||||
|
||||
```
|
||||
$ sudo lshw -class storage -class power -class volume
|
||||
```
|
||||
|
||||
如果你想要查看带有硬件路径的细节信息,加上 `-short` 选项即可:
|
||||
|
||||
```
|
||||
$ sudo lshw -short -class processor
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```
|
||||
H/W path Device Class Description
|
||||
=======================================================
|
||||
/0/4 processor Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
|
||||
```
|
||||
|
||||
有时,你可能希望将某些硬件详细信息共享给别人,例如客户支持人员。如果是这样,你可以从输出中删除潜在的敏感信息,如 IP 地址、序列号等,如下所示。
|
||||
|
||||
```
|
||||
$ lshw -sanitize
|
||||
```
|
||||
|
||||
#### lshw-gtk GUI 工具
|
||||
|
||||
如果你对 CLI 不熟悉,可以使用 `lshw-gtk`,这是 `lshw` 命令行工具的图形界面。
|
||||
|
||||
它可以从终端或 Dash 中打开。
|
||||
|
||||
要从终端启动它,只需执行以下操作:
|
||||
|
||||
```
|
||||
$ sudo lshw-gtk
|
||||
```
|
||||
|
||||
这是 `lshw` 工具的默认 GUI 界面。
|
||||
|
||||
![][4]
|
||||
|
||||
*使用 lshw-gtk 在 Linux 上查找硬件*
|
||||
|
||||
只需双击“Portable Computer”即可进一步展开细节。
|
||||
|
||||
![][5]
|
||||
|
||||
*使用 lshw-gtk GUI 在 Linux 上查找硬件*
|
||||
|
||||
你可以双击后续的硬件选项卡以获取详细视图。
|
||||
|
||||
有关更多详细信息,请参阅手册页。
|
||||
|
||||
```
|
||||
$ man lshw
|
||||
```
|
||||
|
||||
### 2、Inxi
|
||||
|
||||
Inxi 是我查找 Linux 系统上几乎所有内容的另一个最喜欢的工具。它是一个自由开源的、功能齐全的命令行系统信息工具。它显示了系统硬件、CPU、驱动程序、Xorg、桌面、内核、GCC 版本、进程、RAM 使用情况以及各种其他有用信息。无论是硬盘还是 CPU、主板还是整个系统的完整细节,inxi 都能在几秒钟内更准确地显示它。由于它是 CLI 工具,你可以在桌面或服务器版本中使用它。有关更多详细信息,请参阅以下指南。
|
||||
|
||||
* [如何使用 inxi 发现系统细节][6]
|
||||
|
||||
### 3、Hardinfo
|
||||
|
||||
Hardinfo 将为你提供 `lshw` 中没有的系统硬件和软件详细信息。
|
||||
|
||||
HardInfo 可以收集有关系统硬件和操作系统的信息,执行基准测试,并以 HTML 或纯文本格式生成可打印的报告。
|
||||
|
||||
如果 Ubuntu 中未安装 Hardinfo,请使用以下命令安装:
|
||||
|
||||
```
|
||||
$ sudo apt install hardinfo
|
||||
```
|
||||
|
||||
安装后,Hardinfo 工具可以从终端或菜单中进行。
|
||||
|
||||
以下是 Hardinfo 默认界面的外观。
|
||||
|
||||
![][7]
|
||||
|
||||
*使用 Hardinfo 在 Linux 上查找硬件*
|
||||
|
||||
正如你在上面的屏幕截图中看到的,Hardinfo 的 GUI 简单直观。
|
||||
|
||||
所有硬件信息分为四个主要组:计算机、设备、网络和基准。每个组都显示特定的硬件详细信息。
|
||||
|
||||
例如,要查看处理器详细信息,请单击“设备”组下的“处理器”选项。
|
||||
|
||||
![][8]
|
||||
|
||||
*使用 hardinfo 显示处理器详细信息*
|
||||
|
||||
与 `lshw` 不同,Hardinfo 可帮助你查找基本软件规范,如操作系统详细信息、内核模块、区域设置信息、文件系统使用情况、用户/组和开发工具等。
|
||||
|
||||
![][9]
|
||||
|
||||
*使用 hardinfo 显示操作系统详细信息*
|
||||
|
||||
Hardinfo 的另一个显着特点是它允许我们做简单的基准测试来测试 CPU 和 FPU 功能以及一些图形用户界面功能。
|
||||
|
||||
![][10]
|
||||
|
||||
*使用 hardinfo 执行基准测试*
|
||||
|
||||
建议阅读:
|
||||
|
||||
* [Phoronix 测试套件 - 开源测试和基准测试工具][11]
|
||||
* [UnixBench - 类 Unix 系统的基准套件][12]
|
||||
* [如何从命令行对 Linux 命令和程序进行基准测试][13]
|
||||
|
||||
我们可以生成整个系统以及各个设备的报告。要生成报告,只需单击菜单栏上的“生成报告”按钮,然后选择要包含在报告中的信息。
|
||||
|
||||
![][14]
|
||||
|
||||
*使用 hardinfo 生成系统报告*
|
||||
|
||||
Hardinfo 也有几个命令行选项。
|
||||
|
||||
例如,要生成报告并在终端中显示它,请运行:
|
||||
|
||||
```
|
||||
$ hardinfo -r
|
||||
```
|
||||
|
||||
列出模块:
|
||||
|
||||
```
|
||||
$ hardinfo -l
|
||||
```
|
||||
|
||||
更多信息请参考手册:
|
||||
|
||||
```
|
||||
$ man hardinfo
|
||||
```
|
||||
|
||||
### 4、Sysinfo
|
||||
|
||||
Sysinfo 是 HardInfo 和 lshw-gtk 实用程序的另一个替代品,可用于获取下面列出的硬件和软件信息。
|
||||
|
||||
* 系统详细信息,如发行版版本、GNOME 版本、内核、gcc 和 Xorg 以及主机名。
|
||||
* CPU 详细信息,如供应商标识、型号名称、频率、L2 缓存、型号和标志。
|
||||
* 内存详细信息,如系统全部内存、可用内存、交换空间总量和空闲、缓存、活动/非活动的内存。
|
||||
* 存储控制器,如 IDE 接口、所有 IDE 设备、SCSI 设备。
|
||||
* 硬件详细信息,如主板、图形卡、声卡和网络设备。
|
||||
|
||||
让我们使用以下命令安装 sysinfo:
|
||||
|
||||
```
|
||||
$ sudo apt install sysinfo
|
||||
```
|
||||
|
||||
Sysinfo 可以从终端或 Dash 启动。
|
||||
|
||||
要从终端启动它,请运行:
|
||||
|
||||
```
|
||||
$ sysinfo
|
||||
```
|
||||
|
||||
这是 Sysinfo 实用程序的默认界面。
|
||||
|
||||
![][15]
|
||||
|
||||
*sysinfo 界面*
|
||||
|
||||
如你所见,所有硬件(和软件)详细信息都分为五类,即系统、CPU、内存、存储和硬件。单击导航栏上的类别以获取相应的详细信息。
|
||||
|
||||
![][16]
|
||||
|
||||
*使用 Sysinfo 在 Linux 上查找硬件*
|
||||
|
||||
更多细节可以在手册页上找到。
|
||||
|
||||
```
|
||||
$ man sysinfo
|
||||
```
|
||||
|
||||
就这样。就像我已经提到的那样,可以有很多工具可用于显示硬件/软件规范。但是,这四个工具足以找到你的 Linux 发行版的所有软硬件规格信息。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/getting-hardwaresoftware-specifications-in-linux-mint-ubuntu/
|
||||
|
||||
作者:[sk][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lujun9972
|
||||
[2]: https://www.ostechnix.com/wp-content/uploads/2013/01/Find-Hardware-Specifications-On-Linux-using-lshw-1.png
|
||||
[3]: https://www.ostechnix.com/wp-content/uploads/2013/01/Show-device-tree-with-hardware-path-using-lshw.png
|
||||
[4]: https://www.ostechnix.com/wp-content/uploads/2013/01/Find-Hardware-Specifications-On-Linux-using-lshw-gtk-1.png
|
||||
[5]: https://www.ostechnix.com/wp-content/uploads/2013/01/Find-Hardware-Specifications-On-Linux-using-lshw-gtk-2.png
|
||||
[6]: https://www.ostechnix.com/how-to-find-your-system-details-using-inxi/
|
||||
[7]: https://www.ostechnix.com/wp-content/uploads/2013/01/Find-Hardware-Specifications-On-Linux-Using-Hardinfo.png
|
||||
[8]: https://www.ostechnix.com/wp-content/uploads/2013/01/Show-processor-details-using-hardinfo.png
|
||||
[9]: https://www.ostechnix.com/wp-content/uploads/2013/01/Show-operating-system-details-using-hardinfo.png
|
||||
[10]: https://www.ostechnix.com/wp-content/uploads/2013/01/Perform-benchmarks-using-hardinfo.png
|
||||
[11]: https://www.ostechnix.com/phoronix-test-suite-open-source-testing-benchmarking-tool/
|
||||
[12]: https://www.ostechnix.com/unixbench-benchmark-suite-unix-like-systems/
|
||||
[13]: https://www.ostechnix.com/how-to-benchmark-linux-commands-and-programs-from-commandline/
|
||||
[14]: https://www.ostechnix.com/wp-content/uploads/2013/01/Generate-system-reports-using-hardinfo.png
|
||||
[15]: https://www.ostechnix.com/wp-content/uploads/2013/01/sysinfo-interface.png
|
||||
[16]: https://www.ostechnix.com/wp-content/uploads/2013/01/Find-Hardware-Specifications-On-Linux-Using-Sysinfo.png
|
@ -1,42 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Codethink open sources part of onboarding process)
|
||||
[#]: via: (https://opensource.com/article/19/6/codethink-onboarding-process)
|
||||
[#]: author: (Laurence Urhegyi https://opensource.com/users/laurence-urhegyi)
|
||||
|
||||
Codethink open sources part of onboarding process
|
||||
======
|
||||
In other words, how to Git going in FOSS.
|
||||
![Teacher or learner?][1]
|
||||
|
||||
Here at [Codethink][2], we’ve recently focused our energy into enhancing the onboarding process we use for all new starters at the company. As we grow steadily in size, it’s important that we have a well-defined approach to both welcoming new employees into the company, and introducing them to the organization’s culture.
|
||||
|
||||
As part of this overall onboarding effort, we’ve created [_How to Git going in FOSS_][3]: an introductory guide to the world of free and open source software (FOSS), and some of the common technologies, practices, and principles associated with free and open source software.
|
||||
|
||||
This guide was initially aimed at work experience students and summer interns. However, the document is in fact equally applicable to anyone who is new to free and open source software, no matter their prior experience in software or IT in general. _How to Git going in FOSS_ is hosted on GitLab and consists of several repositories, each designed to be a self-guided walk through.
|
||||
|
||||
Our guide begins with a general introduction to FOSS, including explanations of the history of GNU/Linux, how to use [Git][4] (as well as Git hosting services such as GitLab), and how to use a text editor. The document then moves on to exercises that show the reader how to implement some of the things they’ve just learned.
|
||||
|
||||
_How to Git going in FOSS_ is fully public and available for anyone to try. If you’re new to FOSS or know someone who is, then please have a read-through, and see what you think. If you have any feedback, feel free to raise an issue on GitLab. And, of course, we also welcome contributions. We’re keen to keep improving the guide however possible. One future improvement we plan to make is an additional exercise that is more complex than the existing two, such as potentially introducing the reader to [Continuous Integration][5].
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/codethink-onboarding-process
|
||||
|
||||
作者:[Laurence Urhegyi][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/laurence-urhegyi
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-lead-teacher-learner.png?itok=rMJqBN5G (Teacher or learner?)
|
||||
[2]: https://www.codethink.co.uk/about.html
|
||||
[3]: https://gitlab.com/ct-starter-guide
|
||||
[4]: https://git-scm.com
|
||||
[5]: https://en.wikipedia.org/wiki/Continuous_integration
|
@ -1,84 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Cloudflare's random number generator, robotics data visualization, npm token scanning, and more news)
|
||||
[#]: via: (https://opensource.com/article/19/6/news-june-22)
|
||||
[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt)
|
||||
|
||||
Cloudflare's random number generator, robotics data visualization, npm token scanning, and more news
|
||||
======
|
||||
Catch up on the biggest open source headlines from the past two weeks.
|
||||
![Weekly news roundup with TV][1]
|
||||
|
||||
In this edition of our open source news roundup, we take a look Cloudflare's open source random number generator, more open source robotics data, new npm functionality, and more!
|
||||
|
||||
### Cloudflare announces open source random number generator project
|
||||
|
||||
Is there such a thing as a truly random number? Internet security and services provider Cloudflare things so. To prove it, the company has formed [The League of Entropy][2], an open source project to create a generator for random numbers.
|
||||
|
||||
The League consists of Cloudflare and "five other organisations — predominantly universities and security companies." They share random numbers, using an open source tool called [Drand][3] (short for Distributed Randomness Beacon Daemon). The numbers are then "composited into one random number" on the basis that "several random numbers are more random than one random number." While the League's random number generator isn't intended "for any kind of password or cryptographic seed generation," Cloudflare's CEO Matthew Prince points out that if "you need a way of having a known random source, this is a really valuable tool."
|
||||
|
||||
### Cruise open sources robotics data analysis tool
|
||||
|
||||
Projects involved in creating self-driving vehicles generate petabytes of data. And with amounts of data that large comes the challenge of quickly and effectively analyzing it. To make the task easier, General Motors subsidiary Cruise has made its Webviz data visualization tool "[freely available to developers][4] in need of a modular robotics analysis solution."
|
||||
|
||||
Webviz "takes as input any bag file (the message format used by the popular Robot Operating System) and outputs charts and graphs." It "contains a collection of general panels (which visualize data) applicable to most robotics developers," said Esther Weon, a software engineer at Cruise. The company also plans to "release a public API that’ll allow developers to build custom panels themselves."
|
||||
|
||||
The code for Webviz is [available on GitHub][5], where you can download or contribute to the project.
|
||||
|
||||
### npm provides more security
|
||||
|
||||
The team behind npm, the site providing JavaScript package hosting, has a new collaboration with GitHub to automatically scan for exposed tokens that could give hackers access that doesn't belong to them. The project includes a handy automatic revoke of leaked credentials them if are still valid. This could drastically reduce vulnerabilities in the JavaScript community. For instructions on how to participate, see the [original article][6].
|
||||
|
||||
Note that this news was found via the [Changelog news][7].
|
||||
|
||||
### Better end of life tracking via open source
|
||||
|
||||
A new project, [endoflife.date][8], aims to overcome the complexity of end of life (EOL) announcements for software. It's part tracker, part public announcement on what good documentation looks like for software. As the README states: "The reason this site exists is because this information is very often hidden away. If you're releasing something on a regular basis:
|
||||
|
||||
1. List only supported releases.
|
||||
2. Give EoL dates/policy if possible.
|
||||
3. Hide unsupported releases behind a few extra clicks.
|
||||
4. Mention security/active release difference if needed."
|
||||
|
||||
|
||||
|
||||
Check out the [source code][9] for more information.
|
||||
|
||||
### In other news
|
||||
|
||||
* [Medicine needs to embrace open source][10]
|
||||
* [Using geospatial data to create safer roads][11]
|
||||
* [Embracing open source could be a big competitive advantage for businesses][12]
|
||||
|
||||
|
||||
|
||||
_Thanks, as always, to Opensource.com staff members and moderators for their help this week._
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/news-june-22
|
||||
|
||||
作者:[Scott Nesbitt][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/scottnesbitt
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/weekly_news_roundup_tv.png?itok=B6PM4S1i (Weekly news roundup with TV)
|
||||
[2]: https://thenextweb.com/dd/2019/06/17/cloudflares-new-open-source-project-helps-anyone-obtain-truly-random-numbers/
|
||||
[3]: https://github.com/dedis/drand
|
||||
[4]: https://venturebeat.com/2019/06/18/cruise-open-sources-webview-a-tool-for-robotics-data-analysis/
|
||||
[5]: https://github.com/cruise-automation/webviz
|
||||
[6]: https://blog.npmjs.org/post/185680936500/protecting-package-publishers-npm-token-security
|
||||
[7]: https://changelog.com/news/npm-token-scanning-extending-to-github-NAoe
|
||||
[8]: https://endoflife.date/
|
||||
[9]: https://github.com/captn3m0/endoflife.date
|
||||
[10]: https://www.zdnet.com/article/medicine-needs-to-embrace-open-source/
|
||||
[11]: https://itbrief.co.nz/story/using-geospatial-data-to-create-safer-roads
|
||||
[12]: https://www.fastcompany.com/90364152/embracing-open-source-could-be-a-big-competitive-advantage-for-businesses
|
@ -0,0 +1,91 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Linux Smartphone Librem 5 is Available for Preorder)
|
||||
[#]: via: (https://itsfoss.com/librem-5-available/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Linux Smartphone Librem 5 is Available for Preorder
|
||||
======
|
||||
|
||||
Purism recently [announced][1] the final specs for its [Librem 5 smartphone][2]. This is not based on Android or iOS – but built on [PureOS][3], which is an [open-source alternative to Android][4].
|
||||
|
||||
Along with the announcement, the Librem 5 is also available for [pre-orders for $649][5] (as an early bird offer till 31st July) and it will go up by $50 following the date. It will start shipping from Q3 of 2019.
|
||||
|
||||
![][6]
|
||||
|
||||
Here’s what Purism mentioned about Librem 5 in its blog post:
|
||||
|
||||
_**We believe phones should not track you nor exploit your digital life.**_
|
||||
|
||||
_The Librem 5 represents the opportunity for you to take back control and protect your private information, your digital life through free and open source software, open governance, and transparency. The Librem 5 is_ **_a phone built on_ [_PureOS_][3]**_, a fully free, ethical and open-source operating system that is_ _**not based on Android or iOS**_ _(learn more about [why this is important][7])._
|
||||
|
||||
_We have successfully crossed our crowdfunding goals and will be delivering on our promise. The Librem 5’s hardware and software development is advancing [at a steady pace][8], and is scheduled for an initial release in Q3 2019. You can preorder the phone at $649 until shipping begins and regular pricing comes into effect. Kits with an external monitor, keyboard and mouse, are also available for preorder._
|
||||
|
||||
### Librem 5 Specifications
|
||||
|
||||
From what it looks like, Librem 5 definitely aims to provide better privacy and security. In addition to this, it tries to avoid using anything from Google or Apple.
|
||||
|
||||
While the idea is good enough – how does it hold up as a commercial smartphone under $700?
|
||||
|
||||
![Librem 5 Smartphone][9]
|
||||
|
||||
Let us take a look at the tech specs:
|
||||
|
||||
![Librem 5][10]
|
||||
|
||||
On paper the tech specs seems to be good enough. Not too great – not too bad. But, what about the performance? The user experience?
|
||||
|
||||
Well, we can’t be too sure about it – unless we use it. So, if you are pre-ordering it – take that into consideration.
|
||||
|
||||
[][11]
|
||||
|
||||
Suggested read Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve's New Compiler
|
||||
|
||||
### Lifetime software updates for Librem 5
|
||||
|
||||
Of course, the specs aren’t very pretty when compared to the smartphones available at this price range.
|
||||
|
||||
However, with the promise of lifetime software updates – it does look like a decent offering for open source enthusiasts.
|
||||
|
||||
### Other Key Features
|
||||
|
||||
Purism also highlights the fact that Librem 5 will be the first-ever [Matrix][12]-powered smartphone. This means that it will support end-to-end decentralized encrypted communications for messaging and calling.
|
||||
|
||||
In addition to all these, the presence of headphone jack and a user-replaceable battery makes it a pretty solid deal.
|
||||
|
||||
### Wrapping Up
|
||||
|
||||
Even though it is tough to compete with the likes of Android/iOS smartphones, having an alternative is always good. Librem 5 may not prove to be an ideal smartphone for every user – but if you are an open-source enthusiast and looking for a simple smartphone that respects privacy and security without utilizing Google/Apple services, this is for you.
|
||||
|
||||
Also the fact that it will receive lifetime software updates – makes it an interesting smartphone.
|
||||
|
||||
What do you think about Librem 5? Are you thinking to pre-order it? Let us know your thoughts in the comments below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/librem-5-available/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://puri.sm/posts/librem-5-smartphone-final-specs-announced/
|
||||
[2]: https://itsfoss.com/librem-linux-phone/
|
||||
[3]: https://pureos.net/
|
||||
[4]: https://itsfoss.com/open-source-alternatives-android/
|
||||
[5]: https://shop.puri.sm/shop/librem-5/
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/08/librem-5-linux-smartphone.jpg?resize=800%2C450&ssl=1
|
||||
[7]: https://puri.sm/products/librem-5/pureos-mobile/
|
||||
[8]: https://puri.sm/posts/tag/phones
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/librem-5-smartphone.jpg?ssl=1
|
||||
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/librem-5-specs.png?ssl=1
|
||||
[11]: https://itsfoss.com/linux-games-performance-boost-amd-gpu/
|
||||
[12]: http://matrix.org
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (anonymone )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -1,4 +1,3 @@
|
||||
XYenChi is translating
|
||||
10 principles of resilience for women in tech
|
||||
======
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user