CentOS 与 Ubuntu：哪个更适合做服务器？

Summary: 已经决定买一台虚拟服务器，但还不能决定使用哪个 Linux 发行版？我们都经历过这种困扰。对于 Linux 发行版来说，要在这么多的发行版和种种支派flavors中选择一个，那简直能让人崩溃。

国内基本上都用centos吧

选服务器……把Ubuntu拉出来是做反面教材吗

CentOS(RHEL)是Oracle数据的认证平台，基本都是CentOS吧。

Ubuntu似乎不太适合做服务器

云服务器上的ubuntu server还不错的啊

中小企业和机构，选CentOS、Debian或者openSUSE就可以了。另，Linux.cn的回复各种高亮的绿色、黄色背景条能不能去掉？太刺眼了。

Centos和其他linux发行版的补丁数量完全是两个次元的。ubuntu那边虽然也不少，但是仍然不是一个级别

如果是服务器，我肯定不会选ubuntu。

和没写一样

没专门用过服务器，没有发言权，哈哈

或许黄绿色太影响主体内容的查看了——本意是区分游客发言和注册用户发言的。我再考虑考虑、调整下。

建議可以採用同樣的色系，不同深淺就好，否則畫面一整個很花，當然也不要刺眼的顏色，太影響閱讀。

有道理！

也不能这样说， Ubuntu 做服务器，在国外还是有相当数量的。

你知道Ubuntu有Ubuntu桌面版<br />
还有专业的Ubuntu Server版吗？

https://w3techs.com/technologies/details/os-linux/all/all

Ubuntu is used by 35.2% of all the websites who use Linux.（26 January 2017）

不懂别乱说，小心全球的Ubuntu用户和粉丝骂你

（如果楼上这位看不懂英文没事，你只要看那个图表的比例就可以，我相信这个你应该能看懂。）

离线服务器如何解？

没有特别明显的差异，选那个看自己的对那个操作经验比较丰富咯。

如果要装一些特殊的硬件和软件用于比较重要的应用，比如装在ibm、hp等大厂的服务器上，安装oracle之类的服务，用于生产环境，那么我会选择centos，我「估计」驱动、补丁、文档等方面的支持会比较好点。如果你只是建一个简单的ftp、web、samba服务器，你选tinycorelinux都可以（11M到100多M：http://mirrors.163.com/tinycorelinux/downloads.html）<br />
刚装了两个centos7 Minimal 版，然后开始尝试搭建freeradius双服务器，如果测试完成 ，今后就会正式用于生产环境，这是我的思路。

如果是服务器，我肯定不会选ubuntu server。这样说你该懂了吧

作为一个数据分析远程用户来说超级烦国内大量服务器都是cent/suse一流的，服务器对我来说就是一个提供强劲运算能力的平台，cent/suse上的软件老的要命，特别是给很多最新代码提供依赖的库，实在是太老了，你不提供最新版本就算了，好歹提供次新版本吧……最后实际上还是要我通过conda，brew等平台单独安装使用新版本，并不能保证所谓的旧版本经过测试更安全，因为我不会用它们……有些仍然无法成功替换，无形中给其他专业的使用者造成很大麻烦，也降低了效率……大概这也是为啥国外很多ubuntu服务器的原因吧，国内cent多应该是历史惰性。

如果是Docker集群我会选择Ubuntu，毕竟支持效果相对与CentOS要好很多

来自223.104.64.175的 Chrome Mobile 62.0|Android 8.0 用户

要注意：国内和国外情况不一样，国内CentOS在服务器端的市场确实比Ubuntu多，虽然我找不出具体的【权威数据】，但是情况貌似确实如此！

非常同意你。

![](/data/attachment/album/201701/23/171740pnvolznzx0g00si0.jpg)

已经决定买一台虚拟服务器，但还不能决定使用哪个 Linux 发行版？我们都经历过这种困扰。对于 Linux 发行版来说，要在这么多的发行版和种种<ruby> 支派 <rp>  （ </rp> <rt>  flavors </rt> <rp>  ） </rp></ruby>中选择一个，那简直能让人崩溃。不过，对于服务器而言，有两个主流的 Linux 发行版，那就是 CentOS 和 Ubuntu。但如何从这两个之中选择，这是摆在管理员、初学者和专业人士面前的主要问题。在对这两个（和更多）发行版有了一定的经验之后，我们决定对这两个发行版用于服务器时做个比较。

**利益相关：本文译自 thishosting.rocks，根据国内情况替换了相应推荐的云服务商的链接，有需求者可点击。**

### 概览

|  CentOS |  Ubuntu |
| --- | --- |
| 基于 Red Hat Linux Enterprise | 基于 Debian |
| 更新频度较少 | 经常更新 |
| 更稳定和更安全一些，因为不经常更新。 | 更新的软件包可能不稳定，不安全？不会，因为他们在发布到正式版本前进行了大量测试。 |
| 没有足够的教程和用户群较少（LCTT 译注：可能是由于国内外情况不同，在国内，相对 Ubuntu 来说，人们更喜欢用 CentOS 做服务器） | 丰富的文档，活跃的社区和大量的在线教程 |
| 对初学者困难，因为基于 Red Hat 桌面发行版不流行 | 更容易为已经熟悉桌面版 Ubuntu 的初学者使用 |
| 支持 cPanel | 不支持 cPanel |
| .rpm 软件包和 “yum” 软件包管理器 | .deb 软件包和 “apt-get” 软件包管理器 |
| 在[阿里云](http://click.aliyun.com/m/9419/)和 [Ucloud](https://ucloud.cn/site/free.html) 免费试用 CentOS 服务器 | 在[阿里云](http://click.aliyun.com/m/9419/)和 [Ucloud](https://ucloud.cn/site/free.html) 免费试用 Ubuntu 服务器 |

### 哪个更适合新手？

Ubuntu。

一如往常那样，它主要取决于你的需求和以前的经验，但一般来说，Ubuntu 对于初学者来说是更好的选择。主要是因为这两个原因：

* Ubuntu 有一个庞大的社区，随时可以免费提供帮助。我指的是真正的大。数以千计的用户分布在数百个不同的在线论坛和兴趣组内。甚至有现实生活中的大会。你也可以为 CentOS 找到很多教程和帮助，特别是对于简单的 LAMP 栈和流行的应用程序而言。
* Ubuntu 服务器对于以前使用过 Ubuntu 桌面的人来说会容易得多。同样的情况也存在于 CentOS 和 Fedora 之间，但是 Ubuntu 桌面版比任何其他基于 Linux 的家用桌面更受欢迎。

所以，如果你是一个初学者，而且没有任何特殊要求，那就去使用 Ubuntu 服务器。 更好的是，你可以从一个[便宜的托管服务提供商](https://ucloud.cn/site/free.html)那购买服务，这样你就可以在你的服务器上进行实验，还有一个[专业的 24/7 支持团队](https://ucloud.cn/site/free.html)准备好帮助你。

### 哪个更适合商用？

CentOS。

同样，你仍然可以使用 Ubuntu 作为商用网站或公司内部服务器，但 CentOS 有它的优势：

* CentOS（可以说）更稳定以及更安全。由于 CentOS 的更新频率较低，这意味着软件测试的时间更长，并且只有真正稳定的版本才会得到发布。如果你使用 CentOS，你不会因新的有 bug 的应用程序版本而遇到任何稳定性问题，因为你不会得到那个新的有 bug 的版本。
* 大多数控制面板（包括最受欢迎的控制面板 - cPanel）仅支持 CentOS。所以这意味着如果你是一个网站托管公司，或者如果你是一个有很多客户的网站服务代理商，并且需要一个控制面板 - CentOS 是一个更好的选择。

### 尝试一下它们并选择一个

如果你还是不能决定，你可以免费试试它们。你可以在本地安装或使用 live 镜像。你还可以从[阿里云](http://click.aliyun.com/m/7604/)和 [Ucloud](https://ucloud.cn/site/free.html) 这样的地方买到便宜的虚拟专用服务器。你可以在几秒钟内启动 CentOS/Ubuntu 服务器。

### 哪个更快？

它们在速度方面是相同的。它们和运行在你自己的硬件上一样快。它们将如你配置的一样快。不管怎样，你都应该正确配置并且保护所有的服务器、配置和应用程序。

你会使用哪个发行版？想告诉我们你是哪个发行版的拥趸么？请随时留下评论。

---

**文末评论**

W. Anderson：

>
> 我的大多数 Linux 服务器部署都是针对企业客户的，所以我对文章作者以 GUI 客户端版本来反映任何服务器的管理功能感到困惑。通常，许多服务提供商也会在 CentOS、Ubuntu，或经常部署的 OpenSuse Leap 和 FreeBSD 10+ 服务器操作系统上提供 WebMin、VirtualAdmin 或类似工具作为控制面板，即使是在虚拟专用服务器（VPS）环境中。
>
>
> CentOS 在许多商业应用以及高级网络/虚拟化和云计算环境方面具有明显优于 Ubuntu 的优势，并且 CentOS 充分利用 SELinux 框架用于加强的安全层，而目前在 Ubuntu 中则不可用（或不容易）。
>
>
> 这种类型的比较通常是多余的，因为几乎总是有特定的和细微的要求，和需要服务器实现的需求，这将决定哪个发行版具有更多的优势或用途 - 基于技术专家/托管公司的专业知识和广泛的经验。
>
>
>

VAN DER BEKEN：

>
> 正确的比较应该是对 Debian 和 CentOS 进行比较。
>
>
> 以我的经验，我使用 CentOS 和 Debian 作为服务器，稍微偏爱 Debian 一点点，因为它的社区。
>
>
>

---

via: <https://thishosting.rocks/centos-vs-ubuntu-server/>

作者：[thishosting.rocks](https://thishosting.rocks/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


aria2 与 wget ：选择你的下载管理器

任何没有下载管理器的 Linux 操作系统是不完整的。多年来，基于 Linux 的发行版使用 wget 作为默认下载管理器。它是一个很棒的小程序，可以在命令行下工作，如果你需要安装东西、下载东西、运行 shell 脚本等，某种程度上都可以在 wget 中完成任务。在过去的很多年里，我们发现 wget 缺乏一些高级的功能，而它的替代品 **aria2** ，由于满足了高级 Linux 用户的渴望而受到了许多用户的关注。我们将在本文中回顾 **aria2** 的安装过程以及 wget 和 aria2 之间的区别，因此你可以决定哪个下载管理器最符合你的需要。

![](/data/attachment/album/201701/24/095254m12431e41fyn0kyo.png)

### 安装 aria2

**在 Ubuntu/Debian 中安装 aria2：**

只要在 Ubuntu 中运行下面的命令安装：

```
sudo apt-get install aria2

```

![aria2](/data/attachment/album/201701/24/095304qd3papfanbvaa133.png)

**在 Fedora/RHEL/Centos 中安装 aria2：**

运行下面的命令在 Fedora/RHEL 和基于 Centos 的系统中安装：

```
sudo yum install aria2

```

**在 Arch Linux 中安装 aria2：**

运行下面的命令在基于 Arch Linux 的系统中安装。

```
sudo pacman -Sy aria2

```

### aria2 的重要功能

让我们来讨论 aria2 中使它如此受欢迎的重要功能：

* 通过使用多个连接下载文件，最大限度地利用可用带宽。
* 同时下载多个文件和同时下载的能力。
* torrent 客户端提供的所有功能都可以在这个小程序中找到。
* 它提供 meta 链接下载。
* 支持使用 JSON-RPC 和 XML-RPC 协议的远程过程调用。
* 无需等待当前下载完成，轻松批量下载文件。

### aria2 的一些副作用:

aria2 的多线程机制可能会使目标服务器过载。相比下来 wget 就轻量级多了，wget 比 aria2 消耗资源少 20％。aria2 尚未经受 wget 那样巨大的使用规模的测试，因此可能完全准备好成为默认下载管理器。

### wget 的重要特性

* 当然它是最广泛使用和测试的下载管理器。
* 它是一个简单的程序，具有较少的功能，但稳定工作了几十年。
* 默认所有 Linux 发行版上都有，不需要繁重的安装。
* 与 aria2 相比更轻量级。

### 总结

虽然 wget 没有丰富的功能，但仍然工作得相当不错，然而，高级用户肯定会喜欢 aria2，因为它满足更快和并发下载的需要。aria2 可能需要很长时间来取代 wget 成为默认下载管理器，而目前 wget 用在几乎所有 linux 发行版的安装程序脚本中。

---

via: <http://linuxpitstop.com/aria-2-vs-wget/>

作者：[Aun](http://linuxpitstop.com/author/aun/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Vim 初学者入门指南

我每次都是输入命令：vi       >_<

中文版Vim快捷键速查表:ctolib.com/cheatsheets-Vim-command.html

![](/data/attachment/album/201701/24/103743kcyhc3sp93sp44ih.jpg)

这篇文章是 VIM 用户指南 系列文章中的一篇：

* Vim 初学者入门指南
* [Vim 快捷键速查表](/article-8144-1.html)
* [5 个针对有经验用户的 Vim 技巧](/article-8148-1.html)
* [3 个针对高级用户的 Vim 编辑器有用技巧](/article-8149-1.html)

对一个程序员来说，选择一个文本编辑器是一件非常重要的事。因为不同编辑器之间有着不少的差异：图形界面或者非图形界面、不同的快捷键、不同的编程语言支持、不同的插件以及自定义设置等等。我建议不是去搜索最棒的编辑器，而是去选择最适合你的习惯且最适应你的任务的那一个。假如你打算在一个团体中工作，那么最好和你的共事者选择一样的编辑器。这样的话，一旦你在使用中遇到问题，你就可以去向他们寻求帮助。

这正是我在几年之前开始使用 Vim 的原因。通常来说，Vim 会被置于传说中的 Emacs 的对立面。我承认我对 Emacs 知之甚少，但是对于它俩，你需要知道的是它们都可以被深度定制，并且在初学时也都非常令人困惑。这个教程并不会介绍有关 Vim 的所有内容，而是将介绍一些基础以使你在最初就能正确使用它，随后还会展示一些小技巧，借此（希望能）让你有能力自己去探索学习。

Vim 一词来源于 “Vi IMproved”。Vi 是一个被广泛安装于 Unix 系统的非图形界面文本编辑器，并且它也被默认安装在了 Linux 系统中。Vim 是这个原始编辑器的增强版，但是不同于 Vi，并不是每个发行版都默认安装了它。

### 安装

在 Ubuntu 中可以使用如下命令来安装 Vim：

```
sudo apt-get install vim

```

如果你已经对某些插件有了兴趣，使用以下命令：

```
sudo apt-cache search vim

```

这命令将给你输出一个很长的和 Vim 有关的包列表。在这之中，有针对不同编程语言的工具，有插件管理器，等等。

在这系列教程中，我将会在 Ubuntu 上使用最新版的 Vim（7.3.154，LCTT 译注：现在最新版为 8.0）。当然你也可以使用其它任何版本。

### 热身

在终端输入 `vim` 命令，你将会看到一个非常棒的欢迎界面。

![](/data/attachment/album/201701/24/103801qdkn636ann35dd3z.jpg)

（LCTT 译注：看到了欢迎界面中那行“Help poor children in Uganda!” 了吗？）

如果你之前从未使用过 Vi 或者 Vim，那么你很可能甚至不知道该怎么退出它... 是的，这是事实。**任何你常用的快捷键在 Vim 中都将失去原有的效果**。（LCTT 译注：网上有个流传的笑话——“如何制造乱码”，“让新手退出 vi”）

首先，要使用任何命令式的功能，像<ruby> 保存 <rp>  （ </rp> <rt>  save </rt> <rp>  ） </rp></ruby>或者<ruby> 退出 <rp>  （ </rp> <rt>  exit </rt> <rp>  ） </rp></ruby>，你都先得输入一个冒号（`:`）。保存是 `:w` 而退出是 `:q`。如果你想不保存文件就退出，那么就要使用强制退出命令 `:q!`。Vim 中非常棒的一点是你不需要分开输入各个命令，换言之，如果你想保存然后退出，你就可以直接使用 `:wq`。

现在，我们退出 Vim 再打开一个文本文件。为此，你只需把想要编辑的文件名加在命令后面即可：

```
vim [文本文件名]

```

![](/data/attachment/album/201701/24/103820a7jk3y39mwzxmedd.jpg)

一般而言，当你打开一个文本文件，你将会处在查看模式。这使得 Vim 与众不同并且最初会让人感到困惑。Vim 主要由两种模式构成：查看模式和编辑模式。查看模式用于查看内容并且使用一些命令。想要进入编辑模式，只需按 `i` 键进行<ruby> 插入 <rp>  （ </rp> <rt>  insert </rt> <rp>  ） </rp></ruby>或者 `a` 键进行<ruby> 添加 <rp>  （ </rp> <rt>  add </rt> <rp>  ） </rp></ruby>。想要返回到查看模式或者进行命令式功能的操作，按 `Escape` 键即可。<ruby> 插入 <rp>  （ </rp> <rt>  insert </rt> <rp>  ） </rp></ruby>和<ruby> 添加 <rp>  （ </rp> <rt>  add </rt> <rp>  ） </rp></ruby>的差异仅仅在于你是想在光标位置之前还是在光标之后进入编辑模式并进行文字输入。要想彻底地明白，你应该亲自去尝试一下。我的建议是：仅在行尾使用<ruby> 添加 <rp>  （ </rp> <rt>  add </rt> <rp>  ） </rp></ruby>，而在其它时候使用<ruby> 插入 <rp>  （ </rp> <rt>  insert </rt> <rp>  ） </rp></ruby>。

（LCTT 译注：此段落中“查看模式”原文是 “visual mode”，疑为“view mode”，在此模式下可以查看文本，但是不能进行编辑；而“visual mode” 是编辑模式的一种，可以按 `v` 键进入，然后就可以用方向键从当前光标位置开始进行选择，并以反白的视觉效果显示，通常选择后可以按 `y` 进行复制、按 `d` 进行剪切等操作。此外， 本文作者的用语并不标准，按照 Vim 自己的用语来说，此处所谓的“查看模式”，应该称之为“普通模式”，“编辑模式”应该称之为“插入模式”，不过意思是一致的。）

要想在文本之中移动光标，你通常可以使用键盘上的方向键，它们无论是在查看模式还是在编辑模式都可以生效。不过，一个真正的纯粹主义者将会告诉你使用按键 `h` 向左，`j` 向下，`k` 向上，`l` 向右来（在查看模式）进行移动。

现在你已经明白了如何和简单地控制 Vim，我们再来更加深入一些。

### 一些简单命令

现在你已经熟悉了在正常模式和插入模式之间进行切换，下面是一些可以在正常模式中使用的命令：

* `x`：删除一个字符
* `u`：撤销一个操作（相当与 `Ctrl+z`）
* `dd`：删除一行内容
* `dw`：删除一个单词
* `yy`：复制一行内容
* `yw`：复制一个单词
* `p`：粘贴一个之前删除或复制的行或者单词
* `e`：跳到下个单词（LCTT 译注：词尾）（比单纯用方向键更快）
* `r`：替换一个字母（按 `r`，松开，然后再按新字母）

当然不止这些，不过这些对现在来说已经足够了。如果你掌握了上面的全部，你将能你很顺溜地使用 Vim 了。

对于那些还想知道更多的人，我再多提一下。你可以在任何这些命令之前加上一个数值，那么这个命令将被重复执行相应的次数。例如，`5x` 将在当前行连续删除 5 个字母，而 `3p` 将会粘贴 3 次。

### 高级命令

最后，作为对你自己继续探索的鼓励和示例，这里给出几个高级且常用的命令：

* `/所搜索的内容`：在文中搜索特定内容
* `:sp 文本文件名`：将屏幕水平分割成上下两半，新文件展示在另一半。想要在两侧切换焦点，可以使用 `Ctrl+w` 快捷键。
![](/data/attachment/album/201701/24/103838wv1g11zqnk04z7ar.jpg)
* `:vsp 文本文件名`：同上，但是是垂直分割屏幕
* `Ctrl+Shift+C` 和 `Ctrl+Shift+V`：在终端中复制和粘贴文本
* `:! 命令名`：在 Vim 中运行 Vim 外的终端命令，直接发送给 shell。例如，`:! ls` 将在不退出编辑器的同时，显示你当前目录内的文件。
![](/data/attachment/album/201701/24/103856y9jh935xpp33zhhw.jpg)

### 结论

我觉得你现在应该已经有了足够的准备来开始使用 Vim。你还可以通过安装各种插件，编辑 `~.vimrc` 文件，或者在 shell 中输入 `vimtutor` 命令来使用交互式教程以学到更多。

如果你有任何你想分享的关于 Vim 的其它命令，请在评论中告知我们。

---

via: <https://www.maketecheasier.com/start-with-vim-linux/>

作者：[Himanshu Arora](https://www.maketecheasier.com/author/himanshu/) 译者：[Yinr](https://github.com/Yinr) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Vim 快捷键速查表

这个也是必须收藏的好东西啊

可以，很实用。

真的很实用。关闭了广告拦截，不过似乎很干净，没广告

真的很实用。关闭了广告拦截，不过似乎很干净，没广告

真的很实用。关闭了广告拦截，不过似乎很干净，没广告

真的很实用。关闭了广告拦截，不过似乎很干净，没广告

真的很实用。关闭了广告拦截，不过似乎很干净，没广告

其实我们现在也不放广告了~~

短短的几个评论却体现了人类的本质

学习了，谢谢

好人一生平安

很实用

很有用！

![](/data/attachment/album/201701/25/082413qcekbeffh2m4x2fe.jpg)

本文是 Vim 用户指南 系列的其中一篇：

* [Vim 初学者入门指南](/article-8143-1.html)
* Vim 快捷键速查表
* [5 个针对有经验用户的 Vim 技巧](/article-8148-1.html)
* [3 个针对高级用户的 Vim 编辑器实用技巧](/article-8149-1.html)

Vim 编辑器是一个基于命令行的工具，是传奇编辑器 vi 的增强版。尽管图形界面的富文本编辑有很多，但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员，还是刚上手树莓派的新手用户。

这个轻量级的编辑器是个非常强大的工具。在有经验的使用者手中，它能完成不可思议的任务。除了常规的文本编辑功能以外，它还支持一些进阶特性。例如，基于正则表达式的搜索和替换、编码转换，以及语法高亮、代码折叠等的编程特性。

使用 Vim 时有一个非常重要的一点需要注意，那就是按键的功能取决于编辑器当前的“模式”。例如，在“普通模式”输入字母`j`时，光标会向下移动一行。而当你在“插入模式”下输入字符，则只是正常的文字录入。

下面就是速查表，以便于你充分利用 Vim。

### 基本操作

| 快捷键 | 功能 |
| --- | --- |
| `Esc` | 从当前模式转换到“普通模式”。所有的键对应到命令。 |
| `i` | “插入模式”用于插入文字。回归按键的本职工作。 |
| `:` | “命令行模式” Vim 希望你输入类似于保存该文档命令的地方。 |

### 方向键

| 快捷键 | 功能 |
| --- | --- |
| `h` | 光标向左移动一个字符 |
| `j` 或 `Ctrl + J` | 光标向下移动一行 |
| `k` 或 `Ctrl + P` | 光标向上移动一行 |
| `l` | 光标向右移动一个字符 |
| `0` | （数字 0）移动光标至本行开头 |
| `$` | 移动光标至本行末尾 |
| `^` | 移动光标至本行第一个非空字符处 |
| `w` | 向前移动一个词 （上一个字母和数字组成的词之后） |
| `W` | 向前移动一个词 （以空格分隔的词） |
| `5w` | 向前移动五个词 |
| `b` | 向后移动一个词 （下一个字母和数字组成的词之前） |
| `B` | 向后移动一个词 （以空格分隔的词） |
| `5b` | 向后移动五个词 |
| `G` | 移动至文件末尾 |
| `gg` | 移动至文件开头 |

### 浏览文档

| 快捷键 | 功能 |
| --- | --- |
| `(` | 跳转到上一句 |
| `)` | 跳转到下一句 |
| `{` | 跳转到上一段 |
| `}` | 跳转到下一段 |
| `[[` | 跳转到上一部分 |
| `]]` | 跳转到下一部分 |
| `[]` | 跳转到上一部分的末尾 |
| `][` | 跳转到上一部分的开头 |

### 插入文本

| 快捷键 | 功能 |
| --- | --- |
| `a` | 在光标后插入文本 |
| `A` | 在行末插入文本 |
| `i` | 在光标前插入文本 |
| `o` | （小写字母 o）在光标下方新开一行 |
| `O` | （大写字母 O）在光标上方新开一行 |

### 特殊插入

| 快捷键 | 功能 |
| --- | --- |
| `:r [filename]` | 在光标下方插入文件 [filename] 的内容 |
| `:r ![command]` | 执行命令 [command] ，并将输出插入至光标下方 |

### 删除文本

| 快捷键 | 功能 |
| --- | --- |
| `x` | 删除光标处字符 |
| `dw` | 删除一个词 |
| `d0` | 删至行首 |
| `d$` | 删至行末 |
| `d)` | 删至句末 |
| `dgg` | 删至文件开头 |
| `dG` | 删至文件末尾 |
| `dd` | 删除该行 |
| `3dd` | 删除三行 |

### 简单替换文本

| 快捷键 | 功能 |
| --- | --- |
| `r{text}` | 将光标处的字符替换成 {text} |
| `R` | 进入覆写模式，输入的字符将替换原有的字符 |

### 复制/粘贴文本

| 快捷键 | 功能 |
| --- | --- |
| `yy` | 复制当前行至存储缓冲区 |
| `["x]yy` | 复制当前行至寄存器 x |
| `p` | 在当前行之后粘贴存储缓冲区中的内容 |
| `P` | 在当前行之前粘贴存储缓冲区中的内容 |
| `["x]p` | 在当前行之后粘贴寄存器 x 中的内容 |
| `["x]P` | 在当前行之前粘贴寄存器 x 中的内容 |

### 撤销/重做操作

| 快捷键 | 功能 |
| --- | --- |
| `u` | 撤销最后的操作 |
| `Ctrl+r` | 重做最后撤销的操作 |

### 搜索和替换

| 快捷键 | 功能 |
| --- | --- |
| `/search_text` | 检索文档，在文档后面的部分搜索 search\_text |
| `?search_text` | 检索文档，在文档前面的部分搜索 search\_text |
| `n` | 移动到后一个检索结果 |
| `N` | 移动到前一个检索结果 |
| `:%s/original/replacement` | 检索第一个 “original” 字符串并将其替换成 “replacement” |
| `:%s/original/replacement/g` | 检索并将所有的 “original” 替换为 “replacement” |
| `:%s/original/replacement/gc` | 检索出所有的 “original” 字符串，但在替换成 “replacement” 前，先询问是否替换 |

### 书签

| 快捷键 | 功能 |
| --- | --- |
| `m {a-zA-Z}` | 在当前光标位置设置书签，书签名可用一个大小写字母（{a-zA-Z}） |
| `:marks` | 列出所有书签 |
| `{a-zA-Z}` | 跳转到书签 {a-zA-Z} |

### 选择文本

| 快捷键 | 功能 |
| --- | --- |
| `v` | 进入逐字可视模式 |
| `V` | 进入逐行可视模式 |
| `Esc` | 退出可视模式 |

### 改动选中文本

| 快捷键 | 功能 |
| --- | --- |
| `~` | 切换大小写 |
| `d` | 删除一个词 |
| `c` | 变更 |
| `y` | 复制 |
| `>` | 右移 |
| `<` | 左移 |
| `!` | 通过外部命令进行过滤 |

### 保存并退出

| 快捷键 | 功能 |
| --- | --- |
| `:q` | 退出 Vim，如果文件已被修改，将退出失败 |
| `:w` | 保存文件 |
| `:w new_name` | 用 new\_name 作为文件名保存文件 |
| `:wq` | 保存文件并退出 Vim |
| `:q!` | 退出 Vim，不保存文件改动 |
| `ZZ` | 退出 Vim，如果文件被改动过，保存改动内容 |
| `ZQ` | 与 :q! 相同，退出 Vim，不保存文件改动 |

### 下载 Vim 快捷键速查表

仅仅是这样是否还不足以满足你？别担心，我们已经为你整理好了一份下载版的速查表，以备不时之需。

[点此下载（英文）](http://www.maketecheasier.com/cheatsheet/vim-keyboard-shortcuts-cheatsheet/)

---

via: <https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/>

作者：[Himanshu Arora](https://www.maketecheasier.com/author/himanshu/) 译者：[martin2011qi](https://github.com/martin2011qi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 中设置 sudo 的十条 sudoers 实用配置

Summary: root 用户，可以通过 sudo 命令 和一些配置选项来给普通用户进行授权，从而让该普通用户可以运行某些命令已经上述的那些相当重要的系统级操作。

好文章，收藏！

谢谢博主

在 Linux 和其他的类 Unix 操作系统中，只有 root 用户可以运行所有的命令，才能在系统中执行那些需要鉴权的操作，比如安装、升级和移除软件包、[创建用户和用户组](http://www.tecmint.com/add-users-in-linux/)、修改系统重要的配置文件等等。

然而，系统管理员，比如说 root 用户，可以通过 [sudo 命令](http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/) 和一些配置选项来给普通用户进行授权，从而让该普通用户可以运行某些命令已经上述的那些相当重要的系统级操作。

另外，系统管理员还可以分享 root 用户密码 (这个做法是不值得提倡的)，这样普通用户就可以通过 `su` 命令来转化为 root 用户角色。.

![](/data/attachment/album/201701/25/004814af323p3tptvttpyk.jpg)

`sudo` 允许已授权用户按照指定的安全策略、以 root 用户 (或者是其他的用户角色) 权限来执行某个命令。

1. `sudo` 会读取和解析 `/etc/sudoers` 文件，查找调用命令的用户及其权限。
2. 然后提示调用该命令的用户输入密码 (通常是用户密码，但也可能是目标用户的密码，或者也可以通过 `NOPASSWD` 标志来跳过密码验证)。
3. 这之后， `sudo` 会创建一个子进程，调用 setuid() 来切换到目标用户。
4. 接着，它会在上述子进程中执行参数给定的 shell 或命令。

以下列出十个 `/etc/sudoers` 文件配置，使用 `Defaults` 项修改 sudo 命令的行为。

```
$ sudo cat /etc/sudoers

```

`/etc/sudoers` 文件：

```
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    logfile="/var/log/sudo.log"
Defaults    lecture="always"
Defaults    badpass_message="Password is wrong, please try again"
Defaults    passwd_tries=5
Defaults    insults
Defaults    log_input,log_output

```

#### Defaults 项的类型

```
Defaults                parameter,   parameter_list     ### 对任意主机登录的所有用户起作用
Defaults@Host_List      parameter,   parameter_list     ### 对指定主机登录的所有用户起作用
Defaults:User_List      parameter,   parameter_list     ### 对指定用户起作用
Defaults!Cmnd_List      parameter,   parameter_list     ### 对指定命令起作用
Defaults>Runas_List     parameter,   parameter_list     ### 对以指定目标用户运行命令起作用

```

在本文讨论范围内，我们下面的将以第一个 `Defaults` 作为基准来参考。parameter 参数可以是标记 (flags)、整数值或者是列表 (list)。

值得注意的是，标记 (flag) 是指布尔类型值，可以使用 `!` 操作符来进行取反，列表 (list) 有两个赋值运算符：`+=` (添加到列表) 和 `-=` (从列表中移除)。

```
Defaults     parameter
或
Defaults     parameter=值
或
Defaults     parameter -=值
Defaults     parameter +=值
或
Defaults     !parameter

```

### 1、 安置一个安全的 PATH 环境变量

该 `PATH` 环境变量应用于每个通过 `sudo` 执行的命令，需要注意两点：

1. 当系统管理员不信任 `sudo` 用户，便可以设置一个安全的 `PATH` 环境变量。
2. 该设置将 root 的 PATH 和用户的 PATH 分开，只有在 `exempt_group` 组的用户不受该设置的影响。

可以添加以下内容来设置：

```
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

```

### 2、 允许 tty 用户会话使用 sudo

该设置允许在一个真实的 tty 中进行调用 `sudo`，但不允许通过 cron 或者 cgi-bin 脚本等方法来调用。添加以下内容来设置：

```
Defaults  requiretty

```

### 3、 使用 pty 运行 sudo 命令

少数情况下，攻击者可以通过 sudo 来运行一个恶意程序 (比如病毒或者恶意代码)，这种恶意程序可能会分叉出一个后台运行的进程，即使主程序完成执行，它仍能够运行在用户的终端设备上。

为了防止出现这样的情况，你可以通过 `use_pty` 参数来设置 `sudo` 使用伪终端来运行其他命令，而不必管 I/O 日志的开启状态。如下：

```
Defaults  use_pty

```

### 4、 创建 sudo 日志文件

默认下，`sudo` 通过 syslog(3) 来记录到日志。但是我们可以通过 `logfile` 参数来指定一个自定义的日志文件。如下：

```
Defaults  logfile="/var/log/sudo.log"

```

使用 `log_host` 和 `log_year` 参数可以对应记录日志主机名和 4 位数年份到自定义日志文件。如下：

```
Defaults  log_host, log_year, logfile="/var/log/sudo.log"

```

下面是自定义 sudo 日志文件的例示：

![Create Custom Sudo Log File](/data/attachment/album/201701/25/004823tlt9cs9pi1ciizcp.png)

*创建 sudo 日志文件*

### 5、 记录 sudo 命令的输入/输出

`log_input` 和 `log_output` 参数可以让 `sudo` 命令运行在伪终端，并可以对应地记录所有的用户输入和输出到屏幕上。

默认的 I/O 日志目录为 `/var/log/sudo-io`，如果存在会话序列号，它将被存储到该目录。你可以通过 `iolog_dir` 参数来指定一个目录。

```
Defaults   log_input, log_output

```

这其中支持转义字符，像 `%{seq}` —— 以 36 为基数的单调递增序列，比如 000001，这里每两个数字都分别用来形成一个新目录。请看下边例示 00/00/01：

```
$ cd /var/log/sudo-io/
$ ls
$ cd  00/00/01
$ ls
$ cat log

```

![Log sudo Input Output](/data/attachment/album/201701/25/004824whgfg5z0jzyf5g06.png)

*记录 sudo 命令的输入/输出*

[cat 命令](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/) 来查看该目录的其余部分。

### 6、 为 sudo 用户提示命令用法

如下，使用 `lecture` 参数可以在系统中为 `sudo` 用户提示命令的用法：

参数属性值有三个选择：

1. `always` – 一直提示
2. `once` – 用户首次运行 sudo 时提示 (未指定参数属性值时的默认值)
3. `never` – 从不提示

```
Defaults  lecture="always"

```

此外，你还可以使用 `lecture_file` 参数类自定义提示内容，在指定的文件中输入适当的提示内容即可：

```
Defaults  lecture_file="/path/to/file"

```

![Lecture Sudo Users](/data/attachment/album/201701/25/004825m86q0hara1yik6oi.png)

*为 sudo 用户提示命令用法*

### 7、 输入错误的 sudo 密码是显示自定义信息

当某个用户输错密码时，会有一个对应的信息显示在屏幕上。默认是“抱歉，请重新尝试。(sorry, try again)”，你可以通过 `badpass_message` 参数来修改该信息：

```
Defaults  badpass_message="Password is wrong, please try again"

```

### 8、 增加 sudo 密码尝试限制次数

`passwd_tries` 参数用于指定用户尝试输入密码的次数。

默认为 3。

```
Defaults   passwd_tries=5

```

![Increase Sudo Password Attempts](/data/attachment/album/201701/25/004826qyswtesstse1zdae.png)

*增加 sudo 密码尝试限制次数*

使用 `passwd_timeout` 参数设置密码超时 (默认为 5 分钟)，如下：

```
Defaults   passwd_timeout=2

```

### 9、 在输错密码时让 sudo 羞辱用户

使用了 `insults` 参数之后，一旦你输出了密码，sudo 便会在命令窗口中显示羞辱你的信息。这个参数会自动关闭 `badpass_message` 参数。

```
Defaults  insults

```

![Let's Sudo Insult You When Enter Wrong Password](/data/attachment/album/201701/25/004826j6ez7v8v8kzdkzga.png)

*在输错密码时让 sudo 羞辱用户*

### 10、 更多关于 sudo 的配置

此外，欲了解更多 sudo 命令的配置，请自行阅读：[su 与 sudo 的差异以及如何配置 sudo](http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/)。

文毕。你也可以在评论区分享其他有用的 sudo 配置或者 [Linux 技巧](http://www.tecmint.com/tag/linux-tricks/)。

---

作者简介：Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、高级 Linux 系统管理员、Web 开发者，目前在 TecMint 是一名活跃的博主，热衷于计算机并有着强烈的只是分享意愿。

译者简介：[GHLandy](http://GHLandy.com) —— <ruby> 欲得之，则为之奋斗。 <rt>  If you want it, work for it. </rt></ruby>

---

via: <http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[GHLandy](https://github.com/GHLandy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


容器监管：保持 Linux 容器的安全和稳定

Summary: 你如何知道什么东西运行在你的容器内？为了帮助你应对这些的安全挑战，一个名为 Anchore的初创公司正在开发一个同名的开源项目，它用来帮助展示 Linux 容器中的内容。

![](/data/attachment/album/201701/25/124735zc661syy3eeweqa6.jpg)

Linux 容器正在改变 IT 从业者的工作方式。相比于庞大、沉重的虚拟机，一些组织发现把他们的应用部署在容器中更有效，可以提供更快的速度，更加密集，提升他们操作的敏捷性。

从安全的角度看，容器带来了一些优势，但是也面临着它们自己的一些安全挑战。和传统的基础设施一样，为了避免安全缺陷，确保运行在一个容器内的组件和系统库的定期更新是至关重要的。但是你如何知道什么东西运行在你的容器内？为了帮助你应对这些的安全挑战，一个名为 [Anchore](https://anchore.com)的初创公司正在开发一个[同名的开源项目](https://github.com/anchore/anchore)，它用来帮助展示 Linux 容器中的内容。

为了了解更多关于 Anchore，我找到了 Anchore 的市场和产品的发言人 Andrew Cathrow，来了解更多关于这个开源项目背后的公司。

### 简而言之 Anchore 是什么? 它如何工作?

Anchore 的目标是提供一套工具，允许开发人员、运营团队、安全团队在容器的整个开发周期中保持对“监管链（Chain of Custody）”的全程可见，并提供生产部署所需的可见性、可预测性和控制性。Anchore 的引擎通过插件可以进行分析（通过提取镜像数据和元数据）、查询（允许对容器进行分析）、以及策略评估（这里的策略指可以被指定的管理的图像）。

虽然市场上有很多扫描工具，但是大部分不开源。我们认为安全合规的产品应该是开源的，否则你怎么才能信任他们。

Anchore 除了开源以外，还有两大优势，使它可以区别于市场中的商业产品。

首先，我们看的不止是操作系统的镜像。如今的扫描工具专注于操作系统的软件包，比如“你的 RPM 或 DEB 包中有CVE（安全漏洞）么？”这虽然是很重要的，你不希望你的镜像中有不安全的包，但是操作系统包只是镜像的基础。其他的层次都需要进行验证，包括配置文件、语言模块、中间件等等。你可以用的全是最新的软件包，但是可能一个配置文件配置出现错误，不安全就出现在里面。第二个不同就是允许用户添加自己的数据、查询或策略来扩展这个引擎。

### 什么推动了容器的校验和分析工具的需求出现？这个工具可以解决运营面临的什么问题呢？

企业使用 Docker 首要关注的就是安全，特别是他们正在部署的容器的分配和合规性。在生产环境中，从公共镜像库拉取一个镜像，运行它，并在几秒钟部署，是非常简单的，甚至不知道下面可能发生什么。终端用户在部署应用时，必须信任他们所部署的是安全、高效和易于维护的。

容器是不透明的，它们是一个包含应用程序的可部署的“黑盒”。虽然非常容易把这些镜像看作“打包的应用程序”，但是它们包括了系统的镜像和多达数百个包和成千上万个文件。如同所有在物理服务器、虚拟机或者云上的操作系统一样，镜像也需要维护。镜像或许包含了未补丁的安全缺陷、带有 bug 和错误配置的过期软件。

要对您的容器部署有信心，你需要知道底层是什么，并基于容器镜像的内容来做出决定。

### 如今容器的创新基本上都是开源的，你认为是为什么呢？是什么促使了它们开源呢？

在过去的 20 年中，各个组织已经经历了开源带来的优势，节省成本，减少锁定，提高了安全性和更快的创新。容器，特别是 Docker，都是非常好的例子。Docker 公司的团队不能在专有系统上创建一个新的软件部署模式，他们不能要求在修改专有系统的代码，而是与行业领导者比如谷歌、IBM、英特尔、红帽合作，朝着一个共同的目标。开源和 Linux 总是开启创新和激励产业困境。在过去，实现一个大的想法需要一个大的团队和很多资源。在开源世界，一个有着很大的创意的小公司可以工作在一个更大的社区中，通过知识共享的力量来协作，提供真正的企业创新。

为了深入的说明开源的使用，Anchroe 团队最近刚从多伦多的 LinuxCon 回来，在哪里，令人难以相信的是，微软作为钻石级的赞助商，展示了他们用在 Linux 上的产品投入的增长。Linus Toravlds 曾说过，“如果微软为 Linux 开发应用就意味着我赢了”。我要把这句话改为“开源赢了”。

### 容器领域的通用标准的创建还需要时间，在容器的几乎所有部分，仍有许多挑战。在这个领域，创业公司有哪些挑战？

这里有个很重要的点，就是没有开放的标准和开源，我们不可能看到快速推动容器的采用和改变行业格局的创新。开放容器倡议（OCI）由 Linux 和容器行业的行业领导者组成，正在为运行环境和镜像格式创造标准，这将使我们能够看到更多的创新。Anchore 很自豪能成为 OCI 的新成员，我们期待帮助形成标准。

### 你将如何围绕 Anchor 项目建立一个开源社区？

Anchore 团队来自 Ansible、Eucalyptus Systems 和 Red Hat 的领导团队，在开源社区中拥有丰富的工作经验。从一开始，Anchore 就准备创建一个强大的开源社区，我们正在应用我们在开源世界中学到的经验和教训。第一课，当然，发布要尽早尽快。我们在 6 月开源我们的检测和分析引擎，远远早于我们的商用产品，以便了确保开源项目能够独立运行，使更多的直接用户能够使用它，而无需购买 Anchore 的商用产品。通过支持、服务和增强型的数据源，有很多机会给商用产品创造更多价值，但是如果开源引擎本身没有用，我们将看不到活跃的社区。

我们将 Anchore 模块化，允许添加分析、报告和策略插件，而不需要更改核心的引擎。我们希望保证任何人都可以创建插件，所以我们选择了 Python 作为项目的基本语言，因为 Python 被开发者和系统管理员广泛应用。但是，即使你不熟悉 Python，你仍然可以使用任何你喜欢的语言或者脚本环境创建插件。如果你可以创建一个 Bash 脚本，那么你也可以创建一个 Anchore 插件。我们的目标是最大化的吸引社区的参与。虽然我们鼓励用户将贡献回馈给社区，但是我们也为这个项目构建并进行了授权，来确保可以独立创建和维护私有的插件和模块。

### 容器的用途不止是在服务器上更大密度的部署应用程序或者技术层面更快的速度，而且还有不同工具的组合，这些工具提供了一种不同的方式来拉近开发者和操作者共同工作。作为在这个领域工作的公司，你们希望提供一个什么样的消息来让开发者和运营产生共鸣？

随着越来越多的运行环境、编排、监控和集成产品，容器的生态系统正在快速发展。所以，我们的架构中的第一个考虑因素不是限定 Anchore 的部署和使用。我们需要确保我们可以适应任何 CI/CD 工作流，无论是私有部署还是云端部署。一个经常问到我们的问题是，Anchore 是否将提供一个包含了镜像扫描和分析的容器仓库。虽然这将大大简化我们的工作，但是这会迫使用户进入特定的部署架构，并限制了用户部署他们自己最好的组件的能力。我们已经确保 Anchore 可以和所有领先的仓库、运行环境平台、 CI/CD 平台和编排工具配合使用。

一些开发者掌握了运营技能，并转换为 DevOps 角色，我们看到系统管理员/运营团队也在更多的了解开发，转换成 DevOps 角色。我们也看到了具有混合能力的团队。我们设计了可供开发运营和安全团队使用的 Anchore ，以便他们共同定义规则和策略来评估开发周期中的任何一个环节。另外一个例子是插件/模块的架构，使任何人都可以在他们喜欢的环境中轻松创建一个模块 —— 无论是以 Python、Go、Perl、C 甚至是一个 Bash 脚本。

---

via: <https://opensource.com/business/16/10/interview-andy-cathrow-anchore>

作者：[Jason Baker](https://opensource.com/users/jason-baker) 译者：[Bestony](https://github.co/Bestony) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


剪切板是一个安全问题 - 在 Linux 中你可以用 xclip 和 cron 修复它

Summary: 我的解决方案是在后台进行处理，每分钟自动清除剪贴板的内容。

还不如将焦点定位到一个无关紧要的界面, 然后按 PrintScreen 键。

或者在终端执行

echo | clip

其中 clip 是 xsel -bi 的别名，源自 Windows 的 CLI 程序 clip.exe。

无论你写的是代码还是剧本

                              ^

脚本吧

好吧，原文“comedy”确实不是脚本

原文是“喜剧”，我换成了更容易理解的剧本。

有时写英文技术文档的人，他们的native language并不是英语，那个人可能是印度人，可能是马来西亚人，可能是日本人……<br />
有时他们的英语就是有问题的。

我的解决方案是在后台进行处理，每分钟自动清除剪贴板的内容。

![](/data/attachment/album/201701/26/130300crouoxbhxoob99xw.png)

**更新：我原文推荐的是 xsel，但几个用户报告说它禁用了他们的声音。这对我来说不是问题，但我发现了另一种方式（使用 [xclip](https://github.com/astrand/xclip) ）来实现同样的目标，这样应该就能回避这个问题。文章已更新，切换到了 xclip。**

在你的操作系统上复制/粘贴的能力是必不可少的。无论你写的是代码还是剧本，这两个功能是在计算机上处理文本的核心。当你复制文本时，它会进入内存驻留的剪贴板。除非安装了可以容纳多个条目的剪贴板管理器，否则剪贴板默认情况下只会处理一个*复制*事件，当你*复制*其他东西的时候，它之前的条目才会消失。在标准 Linux 设置中，剪贴板内容存储在控制它的程序的内存中（通常是 Xorg）。

剪贴板应该有所限制，因为任何程序都可以读取其内容，如果放任它，它保存的东西就会一直呆在那里。此外，现代浏览器允许恶意网站以多种方式从剪贴板读取（和写入）。

虽然不是默认设置，但浏览器可以设置为禁止访问剪贴板。虽然也有用于浏览器和操作系统管理剪贴板的附加组件，但是，在此链条的源头解决问题更容易、更可靠，并使系统范围内的剪贴板安全。有很多理由使用一个剪贴板，但没有足够的理由让内容在那里保留一两分钟以上。

密码管理器最近变得很受欢迎，如果你使用过的话，你已经了解了它们如何将密码复制到剪贴板，以便你可以将其粘贴到浏览器中，并登录到你的帐户。接下来会发生什么？你的密码会保留在剪贴板上，直到另一个复制事件或重新启动。

即使你使用单独的浏览器来处理银行等事务，复制密码时，通过剪贴板会将其带回其他浏览器，并将其暴露在基于 web 的剪贴板收集技术中。

我的解决方案是在后台进行处理，每分钟自动清除剪贴板的内容。它使用 xclip 这个命令行工具、一个小脚本和 [cron](https://en.wikipedia.org/wiki/Cron)。cron 的一分钟间隔给你足够的时间来复制密码，然后它会清空剪贴板。此动作会每分钟执行一次，保证复制无忧。

我们需要使用 [xclip](https://github.com/astrand/xclip) 工具清除终端中的剪贴板。在基于 apt 的发行版中，输入：

```
sudo apt-get install xclip

```

我们在终端中测试一下程序。首先从某处复制一些文字，复制到其他地方，并输入这两条命令：

```
touch blank
xclip -selection clipboard blank

```

接着再次尝试复制文本 - 它应该就会消失了。现在把这个命令放在脚本中。创建一个脚本（用你的文本编辑器代替 leafpad）：

```
leafpad nukeclipboard.sh

```

并在新文件中输入下面的内容：

```
#!/bin/sh
touch blank && xclip -selection clipboard blank

```

保存并关闭文件，接着加上可执行权限：

```
chmod +x nukeclipboard.sh

```

现在让 cron 任务每分钟运行一次。首先要小心，不同的发行版有不同的 cron 选项。以下设置适用于 Ubuntu（基于）的发行版，并且在你的发行版中过程可能不同，因此[请阅读手册](https://en.wikipedia.org/wiki/Cron)。

要设置 cron 任务，请在终端输入：

```
crontab -e

```

在最后被注释掉的行后，输入下面的行（将 `/home/user/` 替换为你的脚本位置）：

```
* * * * * export DISPLAY=:0 && /home/user/nukeclipboard.sh

```

现在按下 `ctrl-o` 保存（使用你的 cron 任务编辑器的保存快捷键），然后点击回车保存你的 crontab。最后，按下 `ctrl-x` 退出程序。从现在起，你的剪贴板的使用寿命为一分钟。

关于上面的 cron 条目的解释： cron 有环境变量的限制，当它失败时，你可能要花一整天试着一百种方法来解决它。在我找到了一个建议设置 DISPLAY 的[快速修复](https://stackoverflow.com/questions/14296911/when-linux-system-calls-scripts-some-commands-dont-work-cron-if-up-d/24070707#24070707) 后，就解决了。感谢 [Mike Q](https://stackoverflow.com/users/1618630/mike-q) 的贡献。

现在，可能会发生当你要粘贴复制的东西时，正好剪贴板被清空，从而无法粘贴，但它只是安全的一个小的代价。 如果这是一个问题，您可以配置 cron 以任何适合您的间隔运行任务（比如 2 分钟）。 Ubuntu 的说明在[此页](https://help.ubuntu.com/community/CronHowto)。

我希望这个教程能帮助你把剪贴板锁定下来 - 如果你有可以工作的脚本或者更好的方法，欢迎来做评论。

---

via: <https://www.darrentoback.com/your-computer-s-clipboard-is-a-security-problem-fix-it-in-linux-with-xsel-and-cron>

作者：[dmt](https://www.darrentoback.com/about-me) 译者：[geekpi](https://github.com/geekpi) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


5 个针对有经验用户的 Vim 实用技巧

快速 格式化 代码   普通模式中按  ggvG= ，效果很赞，在也不用纠结与 到底说是tab缩进还是4个空格了。

![](/data/attachment/album/201701/26/141924vb1ma1ly86ffyfma.jpg)

这篇文章是 Vim 用户指南系列文章中的一篇：

* [Vim 初学者入门指南](/article-8143-1.html)
* [Vim 快捷键速查表](/article-8144-1.html)
* 5 个针对有经验用户的 Vim 实用技巧
* [3 个针对高级用户的 Vim 编辑器实用技巧](/article-8149-1.html)

Vim 编辑器提供了很多的特性，要想全部掌握它们很困难。然而，花费更多的时间在命令行编辑器上总是有帮助的。毫无疑问，和 Vim 用户们进行交流能够让你更快地学习新颖有创造性的东西。

**注：** 本文中用到的例子，使用的 Vim 版本是 7.4.52 。

### 1、 同时编辑多个文件

如果你是一名软件开发者或者把 Vim 作为主要的编辑器，那么可能很多时候你需要同时编辑多个文件。“<ruby> 紧跟 <rp>  （ </rp> <rt>  following </rt> <rp>  ） </rp></ruby>”是在同时编辑多个文件时可用的实用技巧。

不需要在多个 shell 界面中打开多个文件，你可以通过把多个文件的文件名作为 Vim 命令的参数从而在一个 shell 界面中打开多个文件。比如：

```
vim 文件1 文件2 文件3

```

第一个文件（例子中的文件1）将成为当前文件并被读入缓冲区。

在编辑器中，使用 `:next` 或 `:n` 命令来移动到下一个文件，使用 `:prev` 或 `:N` 命令返回上一个文件。如果想直接切换到第一个文件或最后一个文件，使用 `:bf` 和 `:bl` 命令。特别地，如果想打开另外的文件并编辑，使用 `:e` 命令并把文件名作为参数（如果该文件不在当前目录中则需要完整路径做为参数）。

任何时候如果需要列出当前打开的所有文件，使用 `:ls` 命令。看下面展示的屏幕截图。

![](/data/attachment/album/201701/26/141942p7hm7eeieh1j7p1l.png)

注意 ”%a” 表示文件在当前活动窗口，而 “#” 表示上一个活动窗口的文件。

### 2、 通过自动补全节约时间

想节约时间并提高效率吗？使用缩写吧。使用它们能够快速写出文件中多次出现、复杂冗长的词。在 Vim 中缩写命令写就是 `ab` 。

比如，当你运行下面的命令以后：

```
:ab asap as soon as possible

```

文件中出现的每一个 `asap` 都会被自动替换为 `as soon as possible` ，就像你自己输入的一样。

类似地，你可以使用缩写来更正常见的输入错误。比如，下面的命令

```
:ab recieve receive

```

将会自动更正拼写错误，就像你自己输入的一样。如果在一次特殊情况下你想阻止缩写展开或更正发生，那么你只需要在输入一个单词的最后一个字母以后按 `Ctrl + V` ，然后按空格键。

如果你想把刚才使用的缩写保存下来，从而当你下次使用 Vim 编辑器的时候可以再次使用，那么只需将完整的 `ab` 命令(没有起始的冒号)添加到　`/etc/vim/vimrc` 文件中。如果想删除某个缩写，你可以使用 `una` 命令。比如： `una asap` 。

### 3、 切分窗口便于复制/粘贴

有时，你需要从一个文件将一段代码或文本的一部分复制到另一个。当使用 GUI（图形界面）编辑器的时候，这很容易实现，但是当使用一个命令行编辑器的时候，这就变得比较困难并且很费时间。幸运的是， Vim 提供了一种高效、节约时间的方式来完成这件事。

打开两个文件中的一个然后切分 Vim 窗口来打开另一个文件。可以通过使用 `split` 命令并以文件名作为参数来完成这件事。比如：

```
:split test.c

```

上面的命令将分离窗口并打开文件 “test.c”

![](/data/attachment/album/201701/26/142000pal6qgf6b5gfffz9.png)

注意到 `split` 命令水平分离 Vim 窗口。如果你想垂直分离窗口，那么你可以使用 `vsplit` 命令。当同时打开了两个文件并从一个文件中复制好内容以后，按 `Ctrl + W` 切换到另一个文件，然后粘贴。

### 4、 保存一个没有权限的已编辑文件

有时候当你对一个文件做了大量更改以后才会意识到你对该文件仅有 `只读` 权限。

![](/data/attachment/album/201701/26/142018ytpotpoxntini2oo.png)

虽然把文件关闭，获取权限以后再重新打开是一种解决方法。但是如果你已经做了大量更改，这样做会很浪费时间，因为在这个过程中所有的更改都会丢失。 Vim 提供了一种方式来处理这种情况：你可以在编辑器中在保存文件前更改文件权限。命令是：

```
:w !sudo tee %

```

这个命令将会向你询问密码，就像在命令行中使用 `sudo` 一样，然后就能保存更改。

**一个相关的技巧**：在 Vim 中编辑一个文件的时候，如果想快速进入命令行提示符，可以在编辑器中运行 `:sh` 命令，从而你将进入一个交互的 shell 中。完成以后，运行 `exit` 命令可以快速回到 Vim 模式中。

### 5、 在复制/粘贴过程中保持缩进

大多数有经验的程序员在 Vim 上工作时都会启用自动缩进。虽然这是一个节约时间的做法，但是在粘贴一段已经缩进了的代码的时候会产生新的问题。比如，下图是我把一段已缩进代码粘贴到一个在自动缩进的 Vim 编辑器中打开的文件中时遇到的问题：

![](/data/attachment/album/201701/26/142034q67v77brs7d7ts7s.png)

这个问题的解决方法是 `pastetoggle` 选项。在 `/etc/vim/vimrc` 文件中加入下面这行内容：

```
set pastetoggle=<F2>

```

然后当你在 `插入` 模式中准备粘贴代码前先按 `F2` 键，就不会再出现上图中的问题，这样会保留原始的缩进。注意，你可以用其他的任何键来代替 `F2`，如果它已经映射到了别的功能上。

### 结论

更进一步的提高你的 Vim 编辑器技巧的唯一方法是，在你日复一日的工作中使用命令行编辑器。留意那些耗时多的操作，然后尝试去寻找是否有编辑器命令可以很快地完成这个操作。

---

via: <https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/>

作者：[Himanshu Arora](https://www.maketecheasier.com/author/himanshu/) 译者：[ucasFL](https://github.com/ucasFL) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


3 个针对高级用户的 Vim 编辑器实用技巧

把#写成Shift+*是几个意思。。。

你试试 SHIFT + *

![](/data/attachment/album/201701/26/211518m1p92dr45zkk47qp.jpg)

这篇文章是 Vim 用户指南系列文章中的一篇：

* [Vim 初学者入门指南](/article-8143-1.html)
* [Vim 快捷键速查表](/article-8144-1.html)
* [5 个针对有经验用户的 Vim 技巧](/article-8148-1.html)
* 3 个针对高级用户的 Vim 编辑器实用技巧

毫无疑问， Vim 是一个很强大的文本编辑器。它提供了大量的特性，这意味着学习并记住 Vim 的所有功能实际上是不可能的。但是我们至少可以不断学习简单的方法来完成事情，从而随着时间的增长，我们使用编辑器的经验将会变得更好。

请记住，在这篇文章中我们将讨论的一些 Vim 编辑器技巧是针对高级用户的。

**注**：如果你是第一次接触 Vim，你可以首先阅读我们的[入门指南](/article-8143-1.html)。对于已经使用过 Vim 编辑器的用户，我确信 [Vim 快捷键速查表](/article-8144-1.html)将会对你很有帮助。如果你已经是一名有经验的用户，你可能对[一些针对有经验用户的技巧](/article-8148-1.html)比较感兴趣。

请注意文中提到的所有技巧绝大多数都是在简单、易于理解的代码环境中进行阐述的，因为它们在软件开发中确实很实用。但这并不意味着普通用户（非程序员、没有把 Vim 作为一般的文本编辑器）在他们的工作中用不到。

### 1、为文件设置特定的变量

有时候，在一个特定文件中，你可能想把输入的制表符用空格代替，或者想要把源代码文件使用两个空格缩进，即便编辑器的默认缩进是四个空格。

基本上我们在这儿讨论对针对文件的的更改。 Vim 提供的这个特性允许你对一个指定的文件更改特定的设置。这个特性叫做 “<ruby> 模式行 <rp>  （ </rp> <rt>  Modeline </rt> <rp>  ） </rp></ruby>” 。

比如，如果你想把输入的每一个制表符（Tab）用空格代替，那么你只需要在文件的前几行或最后几行加入下面的模式行：

```
# vim: set expandtab:

```

如果想把默认缩进从 4 个空格变成 2 个空格，可以在源文件中添加下面的模式行：

```
// vim: noai:ts=2:sw=2

```

在使用模式行时，请记住下面这几个重要的点：

* 模式行只能添加在文件中的前五行或者最后五行。
* 为了使用模式行这个特性，必须在 `.vimrc` 文件中添加 `:set modeline` 。
* 在以 root 用户身份对文件进行编辑的时候该特性失效。

了解更多的信息，请阅读该特性的[官方文档](http://vim.wikia.com/wiki/Modeline_magic)。

### 2、 关键字补全

当你开始写的复杂代码越来越多或者开始在一个大的源文件上编辑时，你会遇到一些变量名字。有时，要记住所有的变量名字不太容易，所以当需要输入变量名字的时候，你通常从已经使用过的地方复制过来。

幸运的是，使用 Vim 你只需要输入变量的几个起始字母即可。在’插入模式’中，按 `Ctrl + n` 或者 `Ctrl + p` 可以得到一个匹配的关键词列表。 `Ctrl + n` 用来插入下一个匹配词； `Ctrl + p` 给出一个之前匹配的关键词列表。

下图是该特性的一个展示：

![](/data/attachment/album/201701/26/211721bfccf82z26hffz7c.jpg)

正如上面的屏幕截图清晰展示的那样，列表中也会出现其他源文件中包含的词。关于该特性的更多信息，请访问[这儿](http://vim.wikia.com/wiki/Any_word_completion)。

### 3、 搜索

假设你正在调试代码，其中一个需要做的工作是快速查看一个变量在一个文件中所有出现的地方。一个常用的方法是退出‘插入模式’，输入 `/[变量名字]` 命令，按回车 ，然后返回‘插入模式’，使用 `n` 和 `p` 在关键字之间导航。

上面讲到的这种方法没毛病，但是还有一种更简单、更快捷的方法可以来完成这样的搜索。使用这种方法，首先你需要退出‘插入模式’，然后把光标移动到你想要搜索的词/变量下面，这并不费时。接下来，你只需要按 `Shift + *` 即可。

重复这样做，然后编辑器将会带你找到在文件中所有使用了这个词/变量的地方。

### 结论

尽管是针对高级用户，但文章中讨论的这些技巧并不难理解，也比较容易使用。如果你具有一定的基础，那么你能够从中获益很多。不必多说，无论是任何新特性或观念，你需要勤于练习这些技巧才能够把它们变成一种习惯。

---

via: <https://www.maketecheasier.com/vim-tips-tricks-advanced-users/>

作者：[Himanshu Arora](https://www.maketecheasier.com/author/himanshu/) 译者：[ucasFL](https://github.com/ucasFL) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


你现在可以下载包含所有风味的 Ubuntu 16.10 的单独 ISO 镜像了

Summary: Linux AIO 团队以开发这种完全免费的多发行版 ISO 镜像而闻名

Linux AIO 团队以开发这种完全免费的多发行版 ISO 镜像而闻名

Linux AIO 开发商 Željko Popivoda 通知说可以下载 Linux AIO（All-in-One）Ubuntu 16.10 Live DVD 了，该 DVD 包含所有主要的 Ubuntu 16.10 <ruby> 风味 <rp>  （ </rp> <rt>  flavor </rt> <rp>  ） </rp></ruby>版本。

![](/data/attachment/album/201701/26/214614c8gowqtqcdymwhbc.jpg)

如果你梦想有一个可以写在 USB 或 DVD 光盘上的单独 ISO 镜像，然后在需要时启动某个 Ubuntu Linux 操作系统（如 Ubuntu、Kubuntu、Xubuntu、Lubuntu 或者 Ubuntu MATE），现在你就可以用 Linux AIO Ubuntu 16.10 做到了。

[Linux AIO](http://linuxaio.net/) 团队以开发这种完全免费的多发行版 ISO 镜像而闻名，而 Linux AIO Ubuntu 16.10 有两个版本，分别用于 64 位和 32 位平台，里面有 Ubuntu 16.10、Kubuntu 16.10、Xubuntu 16.10、Lubuntu 16.10、Ubuntu MATE 16.10 和 Ubuntu GNOME 16.10。

这些都是未修改的官方发行版。Linux AIO 团队把它们都放在一个易于使用的单一容器中，例如，当你在客户那，你需要向他/她展示各种基于 Linux 的操作系统来选择，你就不必带来六个不同的 U 盘或 DVD 光盘。

### 包含了硬件和内存测试工具

两种 Linux AIO Ubuntu 16.10 都附带两个重要的实用程序，即 HDT（硬件检测工具），用于查看目标计算机上是否与各个同 Ubuntu 16.10 流派完全兼容，还有 Memtest86+，这是一个非常流行的命令行工具，用于测试系统内存错误并验证其完整性。

[Linux AIO Ubuntu 16.10 现在可以下载了](http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-AIO-DVD-103429.shtml)，但请记住，由于托管文件的 SourceForge 服务器的存储限制，镜像被分为两个 .7z 存档，你需要下载并解压缩以获取可用的 ISO。

我们曾经被许多读者问过 Linux AIO Live DVD 是否支持 UEFI ，答案仍然是没有，但是团队正在努力实现未来对 UEFI 的支持。还请查看最近发布的 Linux AIO Ubuntu Mixture 2017.01。

---

via: <http://news.softpedia.com/news/you-can-now-have-a-single-iso-image-with-all-essential-ubuntu-16-10-flavors-exclusive-511788.shtml>

作者：[Marius Nestor](http://news.softpedia.com/editors/browse/marius-nestor) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 中让 sudo 密码会话的超时更长些

Summary: 在第一次执行 sudo 命令后，默认情况下密码将保持 15 分钟，因此你不需要为每个 sudo 命令键入密码。如果，你因为某种原因觉得 15 分钟太长或太短，你可以在 sudoers 文件中做一个简单的调整。

该教程真好，让我学习不知疲倦

在最近的文章中，我们向你展示了 [在 Linux 中设置 sudo 的十条 sudoers 实用配置](/article-8145-1.html)以及[让 sudo 在你输入错误的密码时“嘲讽”你](/article-8128-1.html)，在本文中，我们发现了另一个 sudo 贴士，在 Ubuntu Linux 中使 sudo 密码会话（超时）更长或更短。

在 Ubuntu 及其衍生版如 Linux Mint 或任何其他基于 Ubuntu 的发行版中，当你执行 [sudo 命令](http://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/) 时，它将提示你输入管理密码。

![](/data/attachment/album/201701/26/233116cgb81idnvtd8rd8h.png)

在第一次执行 sudo 命令后，默认情况下密码将保持 15 分钟，因此你不需要为每个 sudo 命令键入密码。

如果，你因为某种原因觉得 15 分钟太长或太短，你可以在 `sudoers` 文件中做一个简单的调整。

要设置 sudo 密码超时值，请使用 `passwd_timeout` 参数。首先使用 `sudo` 和 `visudo` 命令以超级用户权限打开 `/etc/sudoers` 文件，如下所示：

```
$ sudo visudo

```

接着添加下面的默认值，这意味着 sudo 密码提示将会在用户使用 sudo 20 分钟后过期。

```
Defaults        env_reset,timestamp_timeout=20

```

注意：你可以以分钟设置为你所需的任何时间，它会在超时之前一直等待。 如果要为每个执行的 sudo 命令弹出密码提示，你也可以将时间设置为 `0`，或者通过设置值 `-1` 永久禁用密码提示。

下面的截图显示了我在 `/etc/sudoers` 文件中设置的默认参数。

![Change sudo Password Timeout](/data/attachment/album/201701/26/233131q5m775a3xw7t3onz.png)

*改变 sudo 密码超时*

按 `Ctrl + O` 保存文件，然后使用 `Ctrl + X` 退出。 然后，使用 `sudo` 运行命令并等待 2 分钟以检查密码提示是否超时以测试设置是否正常。

在本篇中，我们解释了如何设置 `sudo` 密码提示超时之前的分钟数，记得在评论栏分享你对这篇文章的想法或者其他[对系统管理员配置有用的 sudo 配置](http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/)。

---

作者简介：

Aaron Kili 是 Linux 和 F.O.S.S 爱好者，将来的 Linux SysAdmin 以及 web 开发人员，目前是 TecMint 的内容创建者，他喜欢用电脑工作，并坚信分享知识。

---

via: <http://www.tecmint.com/set-sudo-password-timeout-session-longer-linux/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/)  译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Linux 系统的成长之路：试用 1993-2003 年之间的 Linux 老版本系统

话说。咋没有提到 冲浪平台 和 蓝点 这2款中文支持不错的呢

>
> 让我们一起来回顾 Linux 早期版本的美好时光
>
>
>

![How Linux got to be Linux: Test driving 1993-2003 distros](/data/attachment/album/201701/27/183838rwk2anro1a1vv4wk.png "How Linux got to be Linux: Test driving 1993-2003 distros")

开源软件最具独特性的一点就是它永远不会真正的走到 EOL（生命的终点）。它们的磁盘镜像文件大都可以一直在网上找到，并且它们的许可证也不会过期，因此，我们可以返回去找到那些老版本的 Linux 系统，并在虚拟机中安装它们，这都是很容易做到的。通过回顾那些珍贵的系统画面，让我们来回顾 Linux 系统这么多年来所发生的翻天覆地的变化。

我们从 Slackware 1.01 版本来开始这段旅程，在二十多年前它就发布在 **comp.os.linux.announce** 新闻组上了。

### Slackware 1.01 版本系统 （1993 年）

![slackware 1.0 screenshot](/data/attachment/album/201701/27/183838e4n498kquk8vq98q.png "slackware 1.0 screenshot")

*Slackware 1.01*

体验 Slackware 1.01 系统最爽的是在 Qemu 模拟器软件 [2014 免费镜像系列](http://www.qemu-advent-calendar.org/2014)中有一个预先制作好的镜像文件，因此你可以不用手动去执行安装任务（真不习惯这种“奢华”待遇）。其引导启动命令如下：

```
$ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \
 -netdev user,id=slirp -device ne2k_isa,netdev=slirp \
 -serial stdio -redir tcp:22122::22

```

在 1993 年那个版本的 Linux 系统中，很多东西都跟我们所想像的一样。所有常用的基本命令，比如 `ls` 和 `cd` 命令的使用方式，以及所有的基本工具（`gawk` 、`cut` 、 `diff` 、 `perl`，当然还有 [Volkerding](http://www.slackware.com/%7Evolkerdi/) 最喜欢的 `elvis` 工具）现在都在使用，而且也包含在如今的 Linux 系统中，但是仍然有一小部分东西让我感到惊讶。当你尝试使用 tab 补全命令方式来列出上百个文件时， BASH 会非常友好地提示用户确认，并且那些查看压缩文件的工具（比如 `zless` 和 `zmore` 以及 `zcat`）都已经出现了。很多方面都超乎我的预计，总之，该系统给人的感觉就是超级现代化。

不过，该系统没有软件包管理的相关概念。所有软件的安装和卸载都得手动完成，也不能查询出已安装的软件包。

总的来说，Slackware 1.01 系统感觉更像是一个非常现代化的 UNIX 系统，或者更恰当的说，它给人的感觉就是一个 Linux 用户在操作一个现代化的 UNIX 系统。很多东西都非常熟悉，但是也不尽相同。这个在 1993 年发布的操作系统中，并不是所有东西都跟你想像中的一样。

### Debian 0.91 版本系统（1994 年）

为了尝试 Debian 0.91 版本系统，我使用的是 [Ibiblio 数字档案](https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist) 网站下载的软盘镜像文件，该系统最初发布在 1994 年。启动命令如下：

```
$ gunzip bootdsk.gz basedsk1.gz basedsk2.gz
$ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \
   -drive file=bootdisk,if=floppy,format=raw \
   -drive file=debian.raw,if=ide,format=raw \
   -device ne2k_isa,netdev=slirp \
   -serial msmouse -vga std \
   -redir tcp:22122::22 \
   -netdev user,id=slirp

```

从 Debian 0.91 的启动磁盘启动后进入到一个简洁的 shell 界面，有很清晰的提示信息告诉你下一步将要执行的操作。

安装过程进行得非常顺利。从磁盘分区，写入 ext2 文件系统到分区，到显示图形菜单操作界面要经过七个步骤，之后开始复制 `basedsk` 镜像文件。这里使用的是以最小化方式来安装 Debian 系统，跟大家在安装自己的 Linux 系统过程中的很多步骤都非常相似。

Debian 系统因其自身的包管理器而出名，但是在早期的版本中只是有一些提示功能而已。有 `dpkg` 命令，但它是一个基于交互式菜单的系统——一种古老的 `aptitude`，有多个层级的可选菜单，并且自然地附带了几个可用软件包。

尽管如此，你也可以感受到其简便的设计理念。你只需下载三个软盘镜像文件，最后合成一个可启动的系统，然后就可以使用一个简单的文本菜单来安装更多的东西。我由衷的明白了为什么 Debian 系统如此受欢迎的原因。

### Jurix/S.u.S.E. 系统（1996 年）

![Jurix install screen](/data/attachment/album/201701/27/183839sx4ujmm8gxgmm625.png "Jurix install screen")

*安装 Jurix 系统*

Jurix 系统是 SUSE 系统的前身， Jurix 带有的二进制的 `.tgz` 软件包会被组织到类似 Slackware 安装包结构的目录中，其安装包本身也跟 Slackware 的安装包很相似。

```
 $ qemu-system-i386 -M pc -m 1024 \
   -boot order=ac,menu=on \
   -drive \
    file=jurix/install,if=floppy,format=raw \
   -drive file=jurix.img,if=ide \
   -drive file=pkg.raw,if=ide,format=raw \
   -device ne2k_isa,netdev=slirp \
   -serial msmouse -vga std \
   -redir tcp:22122::22 \
   -netdev user,id=slirp

```

因为我不是刻意去寻找最早期的版本， Jurix 系统是找到的第一个真正‘感觉’像是打算给用户使用的有图形界面的 Linux 发行版。 [XFree86](http://www.xfree86.org/) 图形桌面环境已默认安装了，如果你不打算使用该工具，选择退出该环境即可。

比如 `/usr/lib/X11/XF86Config` （该文件后来变成了 `Xorg.conf` ）这个配置文件已经存在了，这让我完成了使用 GUI 前的 90% 的工作，但是我花费了一整个周末的时间来调试 `vsync` 、`hsync`和 `ramdac` 颜色表重写，最后我完全放弃了。

在 Jurix 系统上安装软件包也非常简单；找到源路径下的 `.tgz` 文件，然后运行一个常用的 `tar` 命令：  `$ su -c 'tar xzvf foo.tgz -C /'` 该软件包就会被解压到根分区，并准备好使用了。我刚开始的时候安装了几个之前未安装过的软件包，发现操作也很简单、快速且非常可靠。

### SUSE 5.1 版本系统（1998 年）

![suse install](/data/attachment/album/201701/27/183839jtzhhnqtnuhuhuqc.png "suse install")

*在 SuSE 5.1 系统上运行 FVWM 窗口管理器*

我是使用 1998 年在马里兰州的一家软件商店里买的 InfoMagic 光盘来安装 SUSE 5.1 系统的。其引导启动命令如下：

```
 $ qemu-system-i386 -M pc-0.10 -m 64 \
   -boot order=ad,menu=on \
   -drive file=floppy.raw,if=floppy,format=raw \
   -cdrom /dev/sr0 \
   -drive file=suse5.raw,if=ide,format=raw \
   -vga cirrus -serial msmouse

```

安装过程相对于前面几次来说要复杂得多。 YasT 工具在软盘和可引导光盘之间搞乱了配置文件和设置，还需要重启好多次，在重启了好几次后我才反应过来是我操作顺序不当导致的问题。在安装过程中，我就犯了两次同样的错，我只是习惯了 YasT 工具的安装方式，到第三次才顺利的安装成功，这对于一个 Linux 用户将来的成长来说是一个很大的教训及经验。

我使用 SUSE 5.1 的主要目的就是体验其 GUI 桌面环境。配置的过程已经很熟悉了，使用几个漂亮的图形界面工具（包括一个很好用的 `XF86Setup` 前端界面配置工具）来测试和调试鼠标及显示器问题。我用了一个小时不到的时间就调试好 GUI 界面，并正常运行起来，其中大部分时间是耽搁在研究 Qemu 的虚拟显卡可以提供哪种分辨率和颜色方案。

可选用的桌面环境包括 fvwm、fvwm2 和 ctwm。我使用的是 fvwm，并且运行得也正常。我发现 tkDesk 这个 dock 式的文件管理器跟 Ubuntu 系统的 Unity 的启动栏非常的相似。

使用该系统总的来说还是非常令人愉快的，一旦成功安装了桌面环境并正常运行起来，SUSE 5.1 可以说是取得了令人瞩目的成功。

### Red Hat 6.0 版本系统（1999 年）

![Red Hat 1999](/data/attachment/album/201701/27/183840atp1yuuzfz0uyjn0.png "Red Hat 1999")

*在 Red Hat 6 系统上运行 GIMP 1.x 图像处理程序*

下一个系统 Red Hat 6.0 安装盘我刚好家里有。不是 RHEL 6.0 —— 而是 Red Hat 6.0，这是一个在 RHEL 或 Fedora 系统出现之前商店里就有卖的桌面版系统。这个安装盘是我在 1999 年 6 月份买的。

其引导启动命令如下：

```
 $ qemu-system-i386 -M pc-0.10 -m 512 \
   -boot order=ad,menu=on \
   -drive file=redhat6.raw,if=ide,format=raw \
   -serial msmouse -netdev user,id=slirp \
   -vga cirrus -cdrom /dev/sr0

```

整个安装过程由完全由安装向导指引的，并且速度非常快。无论是选择要安装什么包（按**工作站**， **服务器**， 及**自定义**进行分组 ），对磁盘分区，或者是启动安装，你都不会出现进行不下去的问题。

Red Hat 6 包括一个 `xf86config` 应用程序来一步步指导你完成 X 配置工作，尽管它有一些之后的 X 系统不认的奇怪的鼠标模拟选项。它比手动修改 Xf86Config 配置文件要容易得多，但是要正确无误的配置好 X 环境显然不是一个简单的工作。

Red Hat 6 绑定的桌面环境是 GNOME ，没错就是它，但是窗口管理器是早期的 [Enlightenment](http://enlightenment.org/) ，它同样也提供了主声卡服务进程。xdm 和 gdm 都作为登录管理器包含在其中，以便普通用户也可以登录到系统中，即便没有权限启动或者关闭 X 进程，这在多用户系统中是非常重要的。

它缺少一些主要的应用程序；还没有 gedit 工具，没有重要的统一办公应用程序，更没有软件包管理器。有 GnoRPM 工具，这是一个图形界面的 RPM 包管理工具，用于查看及删除软件包，这个工具跟 yum 或 PackageKit 工具非常类似，还有基于图形界面的文件编辑器 gnotepad+ （尽管没有 Emacs 工具）。

总的来说，桌面环境在使用上也是非常直观的。跟后期实现的 GNOME 桌面环境不同，这个早期版本在屏幕底部有个面板，其中有一个应用程序菜单和启动器图标，在中间位置有个虚拟桌面控制器。我无法想象其它操作系统的用户在使用这个桌面环境时会有多么的不习惯。

Red Hat 6 对于 Linux 系统来说是一个巨大的进步，很明显 Linux 系统正向着成为一个适用的桌面系统方向发展。

### Mandrake 8.0 版本系统（2001 年）

![Mandrake 8.0 installer](/data/attachment/album/201701/27/183840d9xw3s53pokp3w87.png "Mandrake 8.0 installer")

*Mandrake: Linux 系统的一个转折点*

Mandrake 8.0 于 2001 年发布，这已经可以跟 Apple OS 9.2 和 Windows ME 系统相提并论了。

我反而觉得老版本的系统才更安全一些。

其引导启动命令如下：

```
 $ qemu-system-i386 \
   -M pc-0.10 -m 2048 \
   -boot order=ad,menu=on \
   -drive file=mandrake8.qcow2 \
   -usb -net nic,model=rtl8139 \
   -netdev user,id=slirp \
   -vga cirrus \
   -cdrom mandrake-8.0-i386.iso

```

我一直觉得 Red Hat 系统的安装过程非常棒了，但是 Mandrake 的安装过程更是让人喜出望外。它非常友好，并且在继续下一步之前还给用户一个测试配置文件的机会，易用高效，使用起来像魔法一样。我也不用导入自己的 `XF86Config` 配置文件，因为 Mandrake 的安装程序会自动完成该任务。

![Mandrake install](/data/attachment/album/201701/27/183841zd9lkgsosrzdd29r.png "Mandrake install")

*Mandrake 8.0 系统的安装程序*

实际上，使用 Mandrake 系统跟使用其它的桌面环境系统的感受基本相同。让我很惊奇的是它们在操作体验上如此的相似。我相信，即使这个时候我在使用 Mandrake 系统的过程中遇到一些问题，以我自己的技术能力甚至是一个技术水平一般的年轻人也很容易解决。它的界面非常直观，帮助文档也很有用，并且软件包管理起来也很容易，只是那个时候人们还不习惯直接到网上下载他们需要的任何软件包来安装。

### Fedora 1 版本系统（2003 年）

![Fedora Core install](/data/attachment/album/201701/27/183842k7d1808dvcy7908u.png "Fedora Core install")

*基于 Red Hat 的 Fedora 系统*

2003 年，新的 Fedora Core 系统发布了。 Fedora Core 基于 Red Hat 系统，它的主要目的是在 Red Hat 企业版（RHEL）成为该公司旗舰产品之前继续扛起 Linux 桌面版系统发展的大旗。

启动老版本的 Fedora Core 1 系统也没啥特别的地方：

```
 $ qemu-system-i386 -M pc \
   -m 2048 -boot order=ac,menu=on \
   -drive file=fedora1.qcow2 -usb \
   -net nic,model='rtl8139' -netdev user \
   -vga cirrus -cdrom fedora-1-i386-cd1.iso

```

安装 Fedora Core 同样简单容易； Fedora 和 Red Hat 系统在之后的 9 年中使用同样的安装器，其图形界面易用而易于理解。

![Fedora Anaconda](/data/attachment/album/201701/27/183843x62zjocv7enhcepc.png "Fedora Anaconda")

*Anaconda GUI 界面*

使用 Fedora Core 系统的体验跟 Red Hat 6 或 7 版本没多少区别。 GNOME 图形界面很漂亮，有各种独立的配置程序助手，并且界面展示都非常的整洁和专业。

桌面上的 “Start Here” 图标指导用户前往三个位置：应用程序目录，首选项面板和系统设置。 一个红帽的图标表示应用程序菜单，而下边的 GNOME 面板里包括所有最新的 Linux 应用程序的启动器，包括 OpenOffice 办公套件和 mozilla 浏览器。

### 展望未来

在 2000 年左右， Linux 系统已经发展得很好并取得了巨大的进步。桌面环境前所未有的更加精致美观，有各种可用的应用程序，安装过程比其它操作操作更简易更高效。事实上，从 2000 年以来，用户和系统之间的关系更加紧密，即使到现在也没发生根本上的改变。当然还有一些更新和改善，以及数量惊人的创新方面的变化。

让我们来了解一下各个 Linux 系统项目上的演变:

* Mandrake 系统后来更名为 Mandriva，如今为 [Mageia](http://mageia.org/) ；
* Fedora Core 随后改为 [Fedora](http://fedoraproject.org/) ；
* [Ubuntu](http://ubuntu.com/) 脱胎于 [Debian](http://debian.org/) ，并且它让 “Linux” 成为一个家喻户晓的词汇；
* Valve 公司开发的 [SteamOS](http://store.steampowered.com/steamos) 成为其官方游戏平台；
* [Slackware](http://slackware.com/) 现如今仍在平稳发展。

无论你是一个 Linux 新手，还是一个技术精湛的 Linux 老用户，上面的大多数截图都构成了让 Linux 系统被记入历史的一本传记。很高兴今天我们能够回顾成为世界上最大的开源项目之一的 Linux 系统是如何发展壮大起来的。更重要的是，每一次想到自己也是 Linux 开源世界中的一员我们就无比激动，把握现在，展望未来。

---

作者简介：

Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家，开源文化倡导者， Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一，官网：<http://slackermedia.ml> 。

题图来源：互联网档案馆[书籍](https://www.flickr.com/photos/internetarchivebookimages/14746482994/in/photolist-ot6zCN-odgbDq-orm48o-otifuv-otdyWa-ouDjnZ-otGT2L-odYVqY-otmff7-otGamG-otnmSg-rxnhoq-orTmKf-otUn6k-otBg1e-Gm6FEf-x4Fh64-otUcGR-wcXsxg-tLTN9R-otrWYV-otnyUE-iaaBKz-ovcPPi-ovokCg-ov4pwM-x8Tdf1-hT5mYr-otb75b-8Zk6XR-vtefQ7-vtehjQ-xhhN9r-vdXhWm-xFBgtQ-vdXdJU-vvTH6R-uyG5rH-vuZChC-xhhGii-vvU5Uv-vvTNpB-vvxqsV-xyN2Ai-vdXcFw-vdXuNC-wBMhes-xxYmxu-vdXxwS-vvU8Zt)[图片](https://www.flickr.com/photos/internetarchivebookimages/14774719031/in/photolist-ovAie2-otPK99-xtDX7p-tmxqWf-ow3i43-odd68o-xUPaxW-yHCtWi-wZVsrD-DExW5g-BrzB7b-CmMpC9-oy4hyF-x3UDWA-ow1m4A-x1ij7w-tBdz9a-tQMoRm-wn3tdw-oegTJz-owgrs2-rtpeX1-vNN6g9-owemNT-x3o3pX-wiJyEs-CGCC4W-owg22q-oeT71w-w6PRMn-Ds8gyR-x2Aodm-owoJQm-owtGp9-qVxppC-xM3Gw7-owgV5J-ou9WEs-wihHtF-CRmosE-uk9vB3-wiKdW6-oeGKq3-oeFS4f-x5AZtd-w6PNuv-xgkofr-wZx1gJ-EaYPED-oxCbFP)。 Opensource.com. CC BY-SA 4.0 编辑引用。

---

via: <https://opensource.com/article/16/12/yearbook-linux-test-driving-distros>

作者：[Seth Kenlon](https://opensource.com/users/seth) 译者：[rusking](https://github.com/rusking) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


是时候抛弃 Skype 和 TeamSpeak 了， Discord 为 Linux 用户发布了应用

Summary: 它是一款给玩家开发的流行、免费的、安全一体化的语音和文字聊天程序。

中国好像只需要QQ~

QQ好像不支持LINUX~

你明白吗？

QQ Browser,thats funny

它是一款给玩家开发的流行、免费的、安全一体化的语音和文字聊天程序。

### 程序已经在 Ubuntu Linux 和其他发行版上可用了

在 2016 年 1 月 11 日发布的一则非常简短的声明中，[Discord](https://discordapp.com/) 公司发布了首个 Linux 平台的稳定版本，它是一款给玩家开发的流行、免费的、安全一体化的语音和文字聊天程序。

![](/data/attachment/album/201701/27/223811a9ll2x39tt4xoa9t.jpg)

Linux 是他们补足全平台（桌面设备和移动设备）服务支持的缺失的一块。Discord 目前可用于 Android、iOS、Mac和 Windows，但你也可以使用兼容的网络浏览器直接在网络上使用它。

该应用程序似乎是微软 Skype VoIP 客户端，以及著名的 TeamSpeak 语音通信平台的直接竞争对手。它提供了广泛的功能，包括 IP 和 DDoS 保护，游戏内叠加，智能推送通知，单独音量控制，支持多个通道和现代化的文字聊天。

Discord 其他值得注意的功能包括支持编解码器、权限和自定义键盘快捷键、直接消息系统和朋友列表。它还承诺尽可能减少 CPU 使用率，为音频和自动故障转移功能提供低延迟支持。

### 在 Ubuntu 上安装 Discord

官方 Discord 的第一个 Linux 稳定版本（版本 0.0.1）目前以二进制软件包[提供](https://discordapp.com/download)，支持 Debian 和基于 Ubuntu 的发行版（例如 Ubuntu、Debian、Linux Mint 等）。但是要安装它，你需要一个 64位系统。

如果你没有运行一个基于 Debian 或 Ubuntu 的操作系统，还有一个源码 tarball 可供下载，但你必须自行编译它。目前 Discord 0.0.1 已经进入 Arch Linux AUR 仓库了，并且很快也会到 Solus 中。其他发行版可能在未来几周内向其仓库添加 Discord。

---

via: <http://news.softpedia.com/news/it-s-time-to-ditch-skype-and-teamspeak-discord-launches-its-app-for-linux-users-511753.shtml>

作者：[Marius Nestor](http://news.softpedia.com/editors/browse/marius-nestor) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


LFCS 命令行基础

Summary: 本文中包含了很多命令行基础。我们将讨论 TeleTYpe（TTY）和几个带有操作符的命令。

<q>如图 2，你可以看到新条目显示了远程伪 TTY（PTS/3）。</q><br />
这里有错吧,图中是TTY（PTS/4）

是的，确实错了，我改过来。谢谢！

![](/data/attachment/album/201701/27/231929evjai75ixudbv95s.png)

本文中包含了很多命令行基础。我们将讨论 TeleTYpe（TTY）和几个命令及其选项。确保做完所有练习，并要知道，除非另有说明，对 CentOS 和 Ubuntu 都是相同的。

### TTY

当没有图形用户界面（GUI）或当用户在 GUI 之外，Linux 就会使用 TTY。当打开终端窗口时也使用 TTY，但这些是不同类型的 TTY。

有三种类型的 TTY：

1. 物理终端
2. 本地伪终端
3. 远程伪终端

基本上，每个 Linux 系统有大约六个或七个物理 TTY。 通过按住 `CTRL + ALT` 键，然后在 CentOS 按住 `F1` 到 `F6` ，而在 Ubuntu 中是 `F1` 到 `F7`。

**注意：** 一些发行版可能有不同数量的 TTY 和不同的 GUI 默认位置。有点发行版可能有在物理 TTY 之间切换的不同组合键，如 `CTRL + F#` 或 `ALT + F#` （ LCTT 译注：`F#` 代表 F1、F2 等）。当使用 VirtualBox 时，除非您更改了主机键映射，请使用右 CTRL 键。

在 CentOS 中，GUI 在 TTY1（`CTRL + ALT + F1`）上，其他物理 TTY 都是基于文本的。 在 Ubuntu 上，GUI 在 TTY7（`CTRL + ALT + F7`）上，其他物理 TTY 都是基于文本的。

**注意：** 尝试在另一个 TTY 下加载 GUI 是不明智的，因为这可能耗用大量资源，但你可以这样做。

当 Linux 启动时，不管是 CentOS 还是 Ubuntu，都会打开默认 TTY。如果安装了 GUI，对于 CentOS 是打开 TTY1，对于 Ubuntu 是打开 TTY7。如果你打开一个终端窗口（伪 TTY）并使用命令 `who`，你可以看到正在使用的 TTY 的列表。 如图 1 所示。

![Figure 01.jpg](/data/attachment/album/201701/27/231950lpu1yor11cp0v1px.jpg)

*图 1*

在图 1 中，你可以看到我当前登录到 TTY1（非 GUI）。第二行连接显示我已登录到 GUI（TTY7）以及两个伪 TTY（pts/1 和 pts/2）。如图 2，你可以看到新条目显示了远程伪 TTY（pts/4）。 远程伪连接来自 IP 地址为 192.168.0.11 的系统。

![Figure 02.jpg](/data/attachment/album/201701/27/231952nbfigdsiqdxpf7kg.jpg)

*图 2*

可以使用诸如 PuTTY 或任何 SSH 的客户端（如果远程 Linux 系统上启用了 SSH）之类的应用程序进行远程 TTY 连接。

如果终端窗口字体比较小，你可以使用 `CTRL + SHIFT` 键和 `+` 键来放大字体。多次按下可以更大。要缩小大小，请使用 `CTRL + SHIFT + -` 不断缩小。要使终端字体恢复为原始大小，请按下 `CTRL + SHIFT + 0`。

**注意：** 请注意，如果字体已经足够大或足够小了，组合键就不再工作了。

希望你现在已经了解各种类型的 TTY。让我们看看一些可以在 TTY 中使用的命令。

### 命令

其中一个命令前面已经讨论过了。命令 `who` 用于显示谁登录到了系统。

另一个命令是 `pwd`。命令 `pwd` 代表“<ruby> 打印工作目录 <rp>  （ </rp> <rt>  Print Working Directory </rt> <rp>  ） </rp></ruby>”。该命令返回你所在的当前目录。例如，如果终端提示符是 `[jbuse@localhost〜]$`，则用户名为 `jbuse`，当前目录为 `〜`。波浪号（`〜`）代表用户的主文件夹。主文件夹应该是 `/home/USERNAME`。用户名是用于登录系统的名称。

要列出当前文件夹的内容，请使用命令 `ls`。`ls` 命令代表 List。如果未指定任何选项，则列出当前文件夹。如果给出文件夹名称，则会列出该文件夹的内容。例如，要查看 `media` 文件夹的内容，你可以使用命令 `ls /media`。

在 `ls` 命令后面我们可以添加一些选项以显示更多详细信息或特定详细信息。如果你想看到所有的文件夹和文件，即使是隐藏的，请使用选项 `-a`。要查看当前目录中的所有文件和文件夹，请使用命令 `ls -a`。隐藏的文件和文件夹将在名称前面显示一个句点（`.`）。

要在每个文件夹名称后看到正斜杠（`/`），请使用 `-F` 选项。当前文件夹列表将是 `ls -F`。`-F` 用于按文件类型对文件进行分类。符号链接在文件夹名称后用 `@` 表示。

你可以把这两个选项连在一起形成 `ls -aF`。

**注意：** 一些选项可能有不同的大小写。选项区分大小写。

另一个选项是显示长列表的 `-l`。示例输出如图 3 所示。文件夹和文件名称列在右侧。文件为白色，文件夹为深蓝色，符号链接为浅蓝色。如图 3 所示，符号链接 `vtrgb` 链接自 `/etc/alternatives/vtrgb` 。

![Figure 03.jpg](/data/attachment/album/201701/27/231954t3nzctsttvppnpnt.jpg)

*图 3*

左侧的第一列是文件或文件夹的权限。第一个字母是 `d` 的为目录，是 `-` 的为文件。接下来的三个字母显示所有者的权限（`r` - 读、`w` - 写、`x` - 执行），后面是组权限以及“其他人”的权限。下一列数字显示指向文件或文件夹的链接数。再下一列是所有者名称，后面是所有组名称。再下一列是文件或文件夹在存储设备上占用的字节数。接下来的三列是文件上次修改的月份、日期和年份。最后一列是路径名。

目前为止，你可以看到列表是按字母顺序排序。要颠倒从 “z” 到 “a” 而不是 “a” 到 “z” 的顺序，请使用 `-r` 选项。逆转选项 `-r` 使 ls 命令反转输出顺序。

要按修改的时间戳列出文件，请使用 `-t` 选项。顺序是从最近修改到最早的修改日期。当然，在命令 `ls -tr` 中，同时使用 `-t` 和 `-r` 颠倒了顺序。

如果你不喜欢看文件的长长的字节数，使用选项 `-h`。输出将会更易读，如显示 `4.0K` 而不是 `4096`。

要获取单个文件夹的特定信息，请使用选项 `-d`，但必须指定该文件夹。例如，要查看文件夹 `/media` 的详细信息，请使用命令 `ls -ld /media`。

另一个要熟悉的命令是命令 `cat`。命令 `cat` 用于将标准输入（文件）复制到标准输出（屏幕）。使用 `cat` 可以轻松地查看文件的内容。例如，要查看名为 `text` 的文件的内容，如果你与文件 `text` 在同一个文件夹中请使用命令 `cat text`。如果你不在同一个文件夹中，那么你必须指定位置。例如，如果文件 `text` 在文件夹 `/home/jarret/test/` 中，那么命令将是 `cat /home/jarret/test/text`。

另一个非常有用的命令是 `man`。`man` 命令用于查看特定命令的文档。例如，要查看命令 `ls` 的帮助页面，请使用命令 `man ls`。

**注意：** 记住，在 LFCS 考试中，你可以使用 `man` 命令。

查看这些命令并测试它们以熟悉它们。使用 `man` 命令，查看本文中的命令以查看其他可用的选项。

---

via: <https://www.linuxforum.com/threads/lfcs-command-line-basics.3334/>

作者：[Jarret](https://www.linuxforum.com/members/jarret.268/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


MapD：由 GPU 驱动的数据库分析平台可在几毫秒内查询数十亿条数据

![database analytics platform MapD](/data/attachment/album/201701/28/104210t3dy4xxxwxzydt83.jpg)

麻省理工学院计算机科学与人工智能实验室（CSAIL）的前研究员开发了一款名为 MapD 的数据库分析平台。该平台使用 GPU 而不是 CPU ，可在几毫秒内查询和映射数十亿条数据。

人们通常将 GPU 与图像处理和游戏相关联。然而，现代 GPU 中高效的核心和处理单元也可以用于通用计算应用。以前在 CSAIL 工作的 Todd Mostak 开发了 MapD，它能在毫秒内处理数十亿条数据。

Mostak [声称](http://news.mit.edu/2017/startup-mapd-fast-big-data-mapping-0111) 他的 MapD 比由 CPU 驱动的传统数据库管理系统的快 100 倍。该平台可以在短时间内处理并可视化大量数据，并且被处理的数据的参数可以很容易地修改。

MapD 将所有数据缓存在多个 GPU 上，而不是存储在某些 CPU 上。每个 GPU 被给予不同的缓冲池以节省时间。通过此过程，系统可以提供比 CPU 驱动的数据库系统快两到三倍的性能。

许多公司客户已经开始使用 Mostak 的 MapD。像 Verizon 这样的电信公司据说也在为其内部研发尝试该数据库分析平台。这家电信公司使用 MapD 分析了 8500 万用户的 SIM 卡更新数据库。

除了 Verizon，MapD 还有如社交媒体公司，金融和广告公司的客户。

由 Mostak 领导的创业公司最近从美国中央情报局的投资部门 In-Q-Tel 筹集了一笔资金。你可以期望在不久的将来在不同的领域中使用 MapD 的各种情况。

---

via: <http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/>

作者：[RAJAT KABADE](%5B1%5D:https://twitter.com/home?status=This%20GPU-powered%20database%20analytics%20platform%20can%20query%20billions%20of%20data%20points%20in%20milliseconds+http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


vmstat：一个标准的报告虚拟内存统计工具

### 什么是 RAM？

在智能手机世界，我们每一个人都知道 RAM。因此，我不想深入介绍，这样我就简要概括下。RAM 代表“<ruby> 随机访问内存 <rp>  （ </rp> <rt>  Random Access Memory </rt> <rp>  ） </rp></ruby>”，是一种计算机数据存储，它会存储经常使用的程序来提升系统性能。

### 什么是虚拟内存？

虚拟内存是一种内存管理方式，计算机通过临时将最近未使用的程序数据从 RAM 转移到硬盘，以平衡或管理内存的短缺。

### 什么是 vmstat？

vmstat 是一个标准的工具，它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱（中断）和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。

![](/data/attachment/album/201701/29/093928b4z5ogg05fkgkko2.jpg)

### 在 Linux 中安装 Sysstat

Linux 中没有独立的 `vmstat` 包。它与 `sysstat` 绑定在一起，并在大多数发行版的默认仓库上都有。如果还没有安装，只要基于你的发行版输入下面的命令。

```
[在 CentOS/RHEL 中安装 vmstat]
$ sudo yum install sysstat

[在 Fedora 中安装 vmstat]
$ sudo dnf install sysstat

[在 Debian/Ubuntu 中安装 vmstat]
$ sudo apt-get install sysstat

[在 Arch Linux 中安装 vmstat]
$ sudo pacman -S sysstat

[在 Mageia 中安装 vmstat]
$ sudo urpmi sysstat

[在 openSUSE 中安装 vmstat]
$ sudo zypper install sysstat

```

### 不带参数运行 vmstat

假设你已经成功安装 vmstat，在终端中不带参数运行 `vmstat`，它会向你展示 vmstat 的默认结果。

```
# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0  79496 1614120 139240 787928   0    0    23    10    0    0 11  1 88  0

```

当你看到上面的输出，你可能已经大致了解了它是什么以及它的目的。不要担心，我们将深入解释每个参数，以便你可以了解 vmstat 的用途和目的。

`procs`：procs 中有 `r` 和 `b` 列，它报告进程统计信息。在上面的输出中，在运行队列（`r`）中有两个进程在等待 CPU 并有零个休眠进程（`b`）。通常，它不应该超过处理器（或核心）的数量，如果你发现异常，最好使用 [top 命令](http://www.2daygeek.com/top-command-examples-to-monitor-server-)进一步地排除故障。

* `r`：等待运行的进程数。
* `b`：休眠状态下的进程数。

`memory`： memory 下有报告内存统计的 `swpd`、`free`、`buff` 和 `cache` 列。你可以用 `free -m` 命令看到同样的信息。在上面的内存统计中，统计数据以千字节表示，这有点难以理解，最好添加 `M` 参数来看到以兆字节为单位的统计数据。

* `swpd`：使用的虚拟内存量。
* `free`：空闲内存量。
* `buff`：用作缓冲区的内存量。
* `cache`：用作高速缓存的内存量。
* `inact`：非活动内存的数量。
* `active`：活动内存量。

`swap`：swap 有 `si` 和 `so` 列，用于报告交换内存统计信息。你可以用 `free -m` 命令看到相同的信息。

* `si`：从磁盘交换的内存量（换入，从 swap 移到实际内存的内存）。
* `so`：交换到磁盘的内存量（换出，从实际内存移动到 swap 的内存）。

`I/O`：I/O 有 `bi` 和 `bo` 列，它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息。如果你发现有巨大的 I/O 读写，最好使用 [iotop](http://www.2daygeek.com/monitor-disk-io-activity-using-iotop-) 和 [iostat](http://www.2daygeek.com/monitor-disk-io-activity-using-iotop-) 命令来查看。

* `bi`：从块设备接收的块数。
* `bo`：发送到块设备的块数。

`system`：system 有 `in` 和 `cs` 列，它报告每秒的系统操作。

* `in`：每秒的系统中断数，包括时钟中断。
* `cs`：系统为了处理所以任务而上下文切换的数量。

`CPU`：CPU 有 `us`、`sy`、`id` 和 `wa` 列，报告（所用的） CPU 资源占总 CPU 时间的百分比。如果你发现异常，最好使用 `top` 和 `free` 命令。

* `us`：处理器在非内核程序消耗的时间。
* `sy`：处理器在内核相关任务上消耗的时间。
* `id`：处理器的空闲时间。
* `wa`：处理器在等待IO操作完成以继续处理任务上的时间。

### 以 MB 方式输出

默认情况下，vmstat 以千字节为单位显示内存统计，这是非常难以理解的，最好添加 `-S m` 参数以获取以兆字节为单位的统计。

```
# vmstat -S m
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0    103    371    406   2116    0    0    40    15    0    0 11  1 87  0

```

### 以延迟方式运行 vmstat 获取更好的统计信息

默认情况下，vmstat 的单次统计信息不足以进一步进行故障排除，因此，添加更新延迟（延迟是更新之间的延迟，以秒为单位）以定期捕获活动。如果你想以 2 秒延迟运行 vmstat ，只需使用下面的命令（如果你想要更长的延迟，你可以根据你的愿望改变）。

以下命令将每 2 秒运行一次，直到退出。

```
# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0 105500 325776 416016 2166912   0    0    40    15    0    0 11  1 87  0
 0  0 105500 325644 416016 2166920   0    0     0    13 1083 1174 11  1 87  0
 0  0 105500 308648 416024 2166928   0    0     1    16 1559 1453 16  2 82  0
 0  0 105500 285948 416032 2166932   0    0     0    12  934 1003  9  1 90  0
 0  0 105500 326620 416040 2166940   0    0     1    27  922 1068  9  1 90  0
 0  0 105500 366704 416048 2166944   0    0     0    17  835  955  9  1 90  0
 0  0 105500 366456 416056 2166948   0    0     1    22  859  918  9  1 90  0
 0  0 105500 366456 416056 2166948   0    0     0    15 1539 1504 17  2 81  0
 0  0 105500 365224 416060 2166996   0    0     1    19  984 1097 11  1 88  0

```

### 带延迟和计数运行 vmstat

或者，你可以带延迟和特定计数运行 vmstat，一旦达到给定的计数，然后自动退出。

以下命令将每 2 秒运行一次，10 次后自动退出。

```
# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0  79496 1581916 157380 810412   0    0    23    10    0    1 11  1 88  0
 2  0  79496 1559464 157380 810416   0    0     1     1 1821 1749 21  2 77  0
 0  0  79496 1583768 157384 810416   0    0     1    46  681  799  9  1 90  0
 2  0  79496 1556364 157384 810428   0    0     1     1 1392 1545 15  2 83  0
 0  0  79496 1583272 157384 810428   0    0     1     0 1307 1448 14  2 84  0
 2  0  79496 1582032 157384 810428   0    0     1    41  424  605  4  1 96  0
 1  0  79496 1575848 157384 810428   0    0     1     0 1912 2407 26  2 71  0
 0  0  79496 1582884 157384 810436   0    0     1    69  678  825  9  1 90  0
 2  0  79496 1569368 157392 810432   0    0    11    26  920  969  9  1 90  0
 1  0  79496 1583612 157400 810444   0    0     7    39 2001 2530 20  2 77  0

```

### 显示活动和非活动内存

默认情况下，vmstat 会显示除活动和非活动内存之外的内存统计信息。如果要查看活动和非活动内存统计信息，请在 vmstat 后添加 `-a` 参数。

```
# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa
 1  0 105500 2387592 415148 584112   0    0    40    15    0    1 11  1 87  0

```

### 打印磁盘统计

在 vmstat 后面添加 `-d` 参数会以每个磁盘一行的方式显示统计（包含读、写和 IO）。

```
# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
fd0        0      0       0       0      0      0       0       0      0      0
sda   16604050 904497 2594882190 57455732 30037054 28093770 2160032056 118189160      0  40915
sdb   257357577 479985 3124712204 577235320 8502519 1283237 36645890 11250948      0 182336

```

### 总结磁盘统计

在 vmstat 后面添加 `-D` 会显示全局统计（包括全部的磁盘、分区、全部读、合并的读、读取的扇区、写、合并的写、写入的扇区和 IO）。

```
# vmstat -D
           27 disks
            3 partitions
    275754028 total reads
      1388030 merged reads
   5751195976 read sectors
    638710116 milli reading
     38795040 writes
     29520659 merged writes
   2209820333 written sectors
    130210652 milli writing
            0 inprogress IO
       224704 milli spent IO

```

### 打印指定分区统计

vmstat 添加 `-p` 参数后面跟上设备名会显示指定分区统计（包括读、读取的扇区、写以及请求的写）。

```
# vmstat -p /dev/sdb1
sdb1          reads   read sectors  writes    requested writes
                3115      27890     839453  206728016

```

### vmstat 统计信息带上时间戳

当你想在特定时间区间内找到内存尖峰时，用 vmstat 命令添加 `-t` 参数，后跟延迟和计数。

注意：此组合不适用于基于 Debian 的系统。

```
# vmstat -t 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 6981416 181324 24588604    0    0     0     1    0    0  0  0 100  0  0    2017-01-11 15:42:15 MST
 2  0      0 6981276 181324 24588604    0    0     0     0   91   40  0  0 100  0  0    2017-01-11 15:42:16 MST
 0  0      0 6982016 181324 24588604    0    0     0     0   75  116  0  0 100  0  0    2017-01-11 15:42:17 MST
 0  0      0 6982016 181324 24588604    0    0     0     0   43   39  0  0 100  0  0    2017-01-11 15:42:18 MST
 0  0      0 6982280 181324 24588604    0    0     0     0  113  185  0  0 100  0  0    2017-01-11 15:42:19 MST

```

### 打印更多统计

vmstat 后面跟上 `-s` 参数会显示不同统计的总结。

```
# vmstat -s
     32849392  total memory
     25864128  used memory
     16468180  active memory
      8320888  inactive memory
      6985264  free memory
       181324  buffer memory
     24588612  swap cache
     20970492  total swap
            0  used swap
     20970492  free swap
       891075 non-nice user cpu ticks
         6532 nice user cpu ticks
      1507099 system cpu ticks
  18925265601 idle cpu ticks
       113043 IO-wait cpu ticks
          108 IRQ cpu ticks
         4185 softirq cpu ticks
            0 stolen cpu ticks
      4071862 pages paged in
    216759718 pages paged out
            0 pages swapped in
            0 pages swapped out
    369611221 interrupts
    477861261 CPU context switches
   1478258826 boot time
      2196121 forks

```

### 打印 slab 统计

vmstat 后面跟上 `-m` 参数会显示 slab 信息。

```
# vmstat -m
Cache                       Num  Total   Size  Pages
nf_conntrack_expect           0      0    240     16
nf_conntrack_ffffffff81b2a920     18     60    312     12
fib6_nodes                   24     59     64     59
ip6_dst_cache                16     30    384     10
ndisc_cache                   7     30    256     15
ip6_mrt_cache                 0      0    128     30
RAWv6                        35     35   1088      7
UDPLITEv6                     0      0   1024      4
UDPv6                         4     12   1024      4
tw_sock_TCPv6                 0      0    320     12
request_sock_TCPv6            0      0    192     20
TCPv6                         4      6   1920      2
fat_inode_cache               5      6    672      6
fat_cache                     0      0     32    112
ioat2                      4096   4140    128     30
ext4_inode_cache          34322  34364   1000      4
ext4_xattr                    0      0     88     44
.
.
.

```

### 阅读更多关于 vmstat

如果你想了解关于 vmstat 的更多选项，请阅读手册。

```
# vmstat --help
或者
# man vmstat

```

---

作者简介：

Magesh Maruthamuthu，热爱玩所有的 Linux 发行版

---

via: <http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/>

作者：[Magesh Maruthamuthu](http://www.2daygeek.com/author/magesh/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何知道目录及子目录下文件的数量

Summary: 我们将使用 find 命令，它用于搜索目录层次结构中的文件，以及 wc 命令，它会打印每个文件或来自标准输入的换行符、单词和字节计数。

在本指南中，我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量。

我们将使用 [find 命令](https://linux.cn/tag-find.html)，它用于搜索目录层次结构中的文件，以及 [wc 命令](https://linux.cn/tag-wc.html)，它会打印每个文件或来自标准输入的换行符、单词和字节计数。

![](/data/attachment/album/201701/30/113751lvvznvvveevpm0uj.png)

以下是我们在 [find 命令](https://linux.cn/tag-find.html)中使用的选项，如下所示：

1. `-type` - 指定要搜索的文件类型，在上面的情况下，`f` 表示查找所有常规文件。
2. `-print` - 打印文件绝对路径。

以下是我们 [wc 命令](https://linux.cn/tag-wc.html)中使用的选项，如下所示：

1. `-l` - 此选项打印换行符的总数，也即由 [find 命令](https://linux.cn/tag-find.html)输出的绝对文件路径总数。

`find` 命令的一般语法。

```
# find . -type f -print | wc -l
$ sudo find . -type f -print | wc -l

```

重要：使用 [sudo 命令](http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/)来读取指定目录中的所有文件，包括具有超级用户权限的子目录中的文件，以避免 “Permission denied” 错误，如下截图所示：

![Find Number of Files in Linux](/data/attachment/album/201701/30/113802if6nimiu16mym01m.png)

*Linux 中的文件数量*

你可以看到，在上面的第一个命令中，`find` 命令没有读取当前工作目录中的所有文件。

下面是更多的示例，分别显示 `/var/log` 和 `/etc` 目录中的常规文件总数：

```
$ sudo find /var/log/ -type f -print | wc -l
$ sudo find /etc/ -type f -print | wc -l

```

有关 Linux 中 `find` 和 `wc` 命令的更多示例，请查看以下系列文章以了解其他使用选项，提示和相关命令：

1. [35 个 Linux 中的 “find” 命令示例](http://www.tecmint.com/35-practical-examples-of-linux-find-command/)
2. [如何在 Linux 中查找最近或今天的修改的文件](http://www.tecmint.com/find-recent-modified-files-in-linux/)
3. [在 Linux 中查找十个占用最大的目录和文件](http://www.tecmint.com/find-top-large-directories-and-files-sizes-in-linux/)
4. [6 个有用的 “wc” 命令示例来计算行数、单词和字符](http://www.tecmint.com/wc-command-examples/)

就是这样了！如果你知道其他任何方法来显示目录及其子目录中的文件总数，请在评论中与我们分享。

---

作者简介：

Aaron Kili 是 Linux 和 F.O.S.S 爱好者，将来的 Linux SysAdmin、web 开发人员，目前是 TecMint 的内容创建者，他喜欢用电脑工作，并坚信分享知识。

---

via: <http://www.tecmint.com/find-number-of-files-in-directory-subdirectories-linux/>

作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


RISC-V，微处理器中的 Linux ：它会开启一个开源硬件的文艺复兴么？

Summary: 我与许多人分享过一个愿景，我们很快就能使用由开源硬件（OSH）和开源软件所驱动的现代而强大的设备。

开源也不能这么直接啊

![](/data/attachment/album/201701/30/121603ydfhlhodpr4uhpkh.jpg)

我与许多人分享过一个愿景，我们很快就能使用由开源硬件（[OSH](https://en.wikipedia.org/wiki/Open-source_hardware)）和开源软件所驱动的现代而强大的设备。

开放硬件是那种有完整的文档，并且可以根据你的需求自由使用、研究、修改和复制的设备。它从原理图到 PCB 布局的所有内容全都是公开的，包括驱动硬件的软件。近年来有所进步，有更多的硬件被开放了，但是我们的 PC 和其它设备中的微处理器却被限制在了桌面端的以 x86 为主导的、封闭的指令集架构（[ISA](https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures)），或者智能手机/平板设备上的 ARM 变体。这两个指令集架构都是闭源的，并且不能用于开放设备。此外，许多广泛使用的 ARM 实现，比如 A9 或 Snapdragon 在这些已经专有的指令集架构上添加了进一步的专有层。

[RISC-V](https://en.wikipedia.org/wiki/RISC-V) 是不同的。在加州大学伯克利分校的研究人员于 2010 年推出的 RISC-V（发音 risk-five）是根据同样的初始 [RISC](https://en.wikipedia.org/wiki/Reduced_instruction_set_computing)（<ruby> 精简指令集计算 <rp>  （ </rp> <rt>  Reduced Instruction Set Computing </rt> <rp>  ） </rp></ruby>） CPU 设计构建的，其基础是其它熟悉的指令集架构，如 ARM、MIPS、PowerPC 和 SPARC，但目的是开放且不受专利保护（注意：目前，RISC-V 规范仅供私人或教育用途使用，计划在将来完全开放）。RISC 设计策略与 x86 系列的复杂指令集计算（CISC）设计相反。

虽然 RISC-V 不是现有唯一的开放指令集架构，但它是唯一一个极速推进的。指导指令集架构的开发和采用的 RISC-V 基金会有一些相当大的捐赠者，如 Oracle、Western Digital、HP、Google、IBM 和 Nvidia。我可以看到名单上缺少的几个著名的芯片制造商。似乎大的玩家们已经意识到，与软件一样，硬件会在开放下发展得更快更好。而且，任何人使用它你都不必付费。因为开发中的困难和成本，像这样的项目并没有被更快取得成功。现在，一个公开的结果是大的公司正在跟进，开发资金正在源源而来。

RISC-V 在学术界也有很多支持。从在伯克利的孵化到在世界范围内超过 35 个大学项目协助其发展，在那里不缺乏聪明的头脑为这个项目工作。

在其背后也有进展。在软件方面，人们正在将程序移植到 RISC-V 上，让它启动起来。Fedora 已经移植了成千上万的程序 - 下面是 [Fedora/RISC-V](https://fedoraproject.org/wiki/Architectures/RISC-V) 在 QEMU 中启动：

![](/data/attachment/album/201701/30/121107no2orqnwxxurnuz5.gif)

*向 Richard WM Jones 做出这么棒的动画致敬*

在硬件方面，人们正在制造开发板。HiFive1 是一个成功众筹的项目，它是来自 SiFive 的一块 Arduino 板，由他们的 FE310 SoC 驱动，这是一块 32 位的 RISC-V 芯片，运行频率为 320+ MHz。 它会在 2 月发货，你可以[在这里](https://www.crowdsupply.com/sifive/hifive1/)预订一个，价格为 $59。

![](/data/attachment/album/201701/30/121109iexxexq66yhq6her.jpg)

这一切听起来很棒 - 我希望他们能够交付，因为我们都将从中受益非浅。如果可以，请支持这个项目。告诉人们这个东西。购买一块 HiFive1，看看它上面运行了什么。我在你的未来看到了这些芯片。

---

via: <https://www.darrentoback.com/can-risc-v-linux-of-microprocessors-start-an-open-hardware-renaissance>

作者：[dmt](https://www.darrentoback.com/about-me) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Wine 2.0 发布！在 Linux 中运行 Microsoft Office 2013 吧

你确定没翻译错?

哪里错了？

来自安徽合肥的 Internet Explorer 11.0|Windows 7 用户

最后的2.0 应该是最新的2.0

这位兄弟拥有一双犀利的眼睛

Fetched 1843 kB in 4s (435 kB/s)

Reading package lists... Done

sudo: unable to resolve host ubuntu

Reading package lists... Done

Building dependency tree

Reading state information... Done

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:

The following packa

winehq-devel : Depends: wine-devel (= 2.0.0~ubuntu16.04.1) but it is not going to be installed<br />
E: Unable to correct problems, you have held broken packages.

The following packages have unmet dependencies:

 winehq-devel : Depends: wine-devel (= 2.0.0~ubuntu16.10.1) but it is not going  to be installed

E: Unable to correct problems, you have held broken packages.

建议不要无脑转帖 自己要测试下啊

哈，这肯定是我晚上翻译时候脑抽了。

官方 WIKI 就是这样的： https://wiki.winehq.org/Ubuntu ，你遇到的错误或也可以从该 URL 中得到帮助。

久负盛名的、可以让你在 Linux 上运行 Windows 应用的 Wine ，经过了一年多的开发，终于发布了一个新的里程碑意义的版本： 2.0。

![](/data/attachment/album/201701/30/124542xzg7himko200jg7d.jpg)

Wine 2.0 带来了许多变化，包括 Unicode 9.0 支持、更好的 HiDPI 缩放、改进了剪贴板处理、更新了 Gecko 引擎、游戏杆按钮映射及力反馈效果调整等等。

对于游戏玩家来说，Wine 2.0 修改和改善了大量的 Direct3D 10/11 的功能，包括更多的着色指令、 sRGB 读写支持、矩阵纹理等等，此外还调整了 DirectX 支持。在音频方面，有 GStreamer 1.0 支持、DirectSound 下混为立体声等。

其它亮点还有，支持微软 Office 2013，以及在 macOS 上运行 64 位应用的能力。

具体可以参考其[发布公告](https://www.winehq.org/announce/2.0)。

### 在 Ubuntu 上安装 Wine 2.0

现在可以从 [WineHQ 官网](https://www.winehq.org/download)下载 Wine 2.0 的源代码了，你可以通过手工编译来安装。

如果你不喜欢编译的乐趣的话，你还可以[下载](https://launchpad.net/~wine/+archive/ubuntu/wine-builds)用于 Ubuntu 的官方 PPA。

首先你需要添加 PPA 仓库:

```
sudo add-apt-repository ppa:wine/wine-builds
```

将仓库增加到你的软件源之后，你就可以安装（或升级）到最新的 2.0 版本了（参见[此处](https://wiki.winehq.org/Ubuntu)）：

```
sudo apt-get update && sudo apt-get install winehq-devel
```


使用 Ganglia 对 Linux 网格和集群服务器进行实时监控

从系统管理员接手服务器和主机管理以来，像应用监控这样的工具就成了他们的好帮手。其中比较有名的有 [Nagios](/article-5741-1.html)、 [Zabbix](http://www.tecmint.com/install-and-configure-zabbix-monitoring-on-debian-centos-rhel/)、 [Icinga](http://www.tecmint.com/install-icinga-in-centos-7/) 和 Centreon。以上这些是重量级的监控工具，让一个新手管理员来设置，并使用其中的高级特性是有些困难的。

本文将向你介绍 Ganglia，它是一个易于扩展的监控系统。使用它可以实时查看 Linux 服务器和集群（图形化展示）中的各项性能指标。

![](/data/attachment/album/201701/30/221223k0qc7e5k5p8q8ccr.jpg)

**Ganglia** 能够让你以**集群**（按服务器组）和**网格**（按地理位置）的方式更好地组织服务器。

这样，我们可以创建一个包含所有远程主机的网格，然后将那些机器按照其它标准分组成小的集合。

此外， Ganglia 的 web 页面对移动设备进行过优化，也允许你导出 `csv` 和 `.json` 格式的数据。

我们的测试环境包括一个安装 Ganglia 的主节点服务器 CentOS 7 （IP 地址 192.168.0.29），和一个作为被监控端的 Ubuntu 14.04 主机（192.168.0.32）。我们将通过 Ganglia 的 Web 页面来监控这台 Ubuntu 主机。

下面的例子可以给大家提供参考，CentOS7 作为主节点，Ubuntu 作为被监控对象。

### 安装和配置 Ganglia

请遵循以下步骤，在主节点服务器安装监控工具。

1、 启用 [EPEL 仓库](/article-2324-1.html) ，然后安装 Ganglia 和相关工具：

```
# yum update && yum install epel-release
# yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web

```

在上面这步随 Ganglia 将安装一些应用，它们的功能如下：

* `rrdtool`，Round-Robin 数据库，它是一个储存并图形化显示随着时间变化的数据的工具；
* `ganglia-gmetad` 一个守护进程，用来收集被监控主机的数据。被监控主机与主节点主机都要安装 Ganglia-gmond（监控守护进程本身）；
* `ganglia-web` 提供 Web 前端，用于显示监控系统的历史数据和图形。 2、 使用 Apache 提供的基本认证功能，为 Ganglia Web 界面（`/usr/share/ganglia`）配置身份认证。

如果你想了解更多高级安全机制，请参阅 Apache 文档的 [授权与认证](http://httpd.apache.org/docs/current/howto/auth.html)部分。

为完成这个目标，我们需要创建一个用户名并设定一个密码，以访问被 Apache 保护的资源。在本例中，我们先来创建一个叫 `adminganglia` 的用户名，然后给它分配一个密码，它将被储存在 `/etc/httpd/auth.basic`（可以随意选择另一个目录 和/或 文件名， 只要 Apache 对此有读取权限就可以。）

```
# htpasswd -c /etc/httpd/auth.basic adminganglia

```

给 adminganglia 输入两次密码完成密码设置。

3、 修改配置文件 `/etc/httpd/conf.d/ganglia.conf`：

```
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
AuthType basic
AuthName "Ganglia web UI"
AuthBasicProvider file
AuthUserFile "/etc/httpd/auth.basic"
Require user adminganglia
</Location>

```

4、 编辑 `/etc/ganglia/gmetad.conf`：

首先，使用 `gridname` 指令来为网格设置一个描述性名称。

```
gridname "Home office"

```

然后，使用 `data_source` 指令，后面跟集群名（服务器组）、轮询时间间隔（秒）、主节点主机和被监控节点的 IP 地址：

```
data_source "Labs" 60 192.168.0.29:8649 # 主节点
data_source "Labs" 60 192.168.0.32 # 被监控节点

```

5、 编辑 `/etc/ganglia/gmond.conf`。

a) 确保集群的配置类似下面。

```
cluster {
name = "Labs" # gmetad.conf 中的  data_source 指令的名字
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

```

b) 在 `udp_send_chanel` 中，注释掉 `mcast_join`：

```
udp_send_channel   {
# mcast_join = 239.2.11.71
host = localhost
port = 8649
ttl = 1
}

```

c) 在 `udp_recv_channel` 中，注释掉 `mcast_join` 和 `bind` 部分：

```
udp_recv_channel {
# mcast_join = 239.2.11.71 ## comment out
port = 8649
# bind = 239.2.11.71 ## comment out
}

```

保存并退出。

6、打开 8649/udp 端口，使用 SELinux 确保 php 脚本（通过 Apache 运行）能够连接到网络：

```
# firewall-cmd --add-port=8649/udp
# firewall-cmd --add-port=8649/udp --permanent
# setsebool -P httpd_can_network_connect 1

```

7、重启 Apache、gmetad、gmond，并确保它们启用了“开机启动”。

```
# systemctl restart httpd gmetad gmond
# systemctl enable httpd gmetad httpd

```

至此，我们现在能够打开 Ganglia 的 Web 页面 `http://192.168.0.29/ganglia` 并用步骤 2 中设置的凭证登录。

[![Gangila Web Interface](/data/attachment/album/201701/30/221336o9lqkr3cl49prq3w.png)][5]

*Gangila Web 页面*

8、 在 **Ubuntu** 主机上，只需安装 Ganglia-monitor，等同于 CentOS 上的 ganglia-gmond：

```
$ sudo aptitude update && aptitude install ganglia-monitor
```

9、 编辑被监控主机的 `/etc/ganglia/gmond.conf` 文件。与主节点主机上是相同的文件，除了被注释掉的 `cluster`, `udp_send_channel` ， `udp_recv_channel` 这里不应被注释：

```
cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel   {
mcast_join = 239.2.11.71
host = localhost
port = 8649
ttl = 1
}
udp_recv_channel {
mcast_join = 239.2.11.71 ## comment out
port = 8649
bind = 239.2.11.71 ## comment out
}

```

之后重启服务。

```
$ sudo service ganglia-monitor restart

```

10、 刷新页面，你将在 Home office grid / Labs cluster 中看到两台主机的各种统计及图形化的展示（用下拉菜单选择集群，本例中为 Labs）：

![Ganglia Home Office Grid Report](/data/attachment/album/201701/30/221337ca5dp7aay7n1rgts.png)

*Ganglia 中 Home office 网格报告*

使用菜单按钮（如上指出的），你可以获取到每台服务器和集群的信息。还可以使用 <ruby> 对比主机</ruby>Compare Hosts选项卡来比较集群中所有服务器的状态。

可以使用正则表达式选择一组服务器，立刻就可以看到它们性能的对比：

![Ganglia Host Server Information](/data/attachment/album/201701/30/221338lf3qe08cvl0xsq8q.png)

*Ganglia 服务器信息*

我最喜欢的一个特点是对移动端有友好的总结界面，可以通过 Mobile 选项来访问。选择你感兴趣的集群，然后选中一个主机。

![Ganglia Mobile Friendly Summary View](/data/attachment/album/201701/30/221339bq8x7zmwjwawfwqf.png)

*Ganglia 移动端总结截图*

### 总结

本篇文章向大家介绍了 Ganglia，它是一个功能强大、扩展性很好的监控工具，主要用来监控集群和网格。它可以随意安装，便捷的组合各种功能（你甚至可以尝试一下[官方网站](http://ganglia.info/)提供的 Demo）。

此时，你可能会发现许多知名的 IT 或非 IT 的企业在使用 Ganglia。除了我们在文章中提及的之外，还有很多理由这样做，其中易用性，统计的图形化（在名字旁附上脸部照片更清晰，不是吗）可能是最重要的原因。

但是请不要拘泥于本篇文章，尝试一下自己去做。如果你有任何问题，欢迎给我留言。

---

via: <http://www.tecmint.com/install-configure-ganglia-monitoring-centos-linux/>

作者：[Gabriel Cánepa](http://www.tecmint.com/author/gacanepa/) 译者：[ivo-wang](https://github.com/ivo-wang) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译，[Linux中国](https://linux.cn/) 荣誉推出


三款极棒的专注于云端的 Linux 发行版

没怎么听过的发行版...

我好像一个没有听过

小众化的发行版啊

![](/data/attachment/album/201701/31/090613svqqqnavqqtqqqpf.jpg)

>
> 概述：我们列举几款以云端为中心的 Linux 发行版，它们被视为真正能替代 Chrome OS 的 Linux 发行版。
>
>
>

世界正在向云端服务转变，而且我们都知道 Chrome OS 倍受人们喜爱。嗯，它确实值得赞许。它超级快、轻盈、省电、简约、设计精美而且充分发挥了当今科技所能提供的云端潜能。

虽然 [Chrome OS](https://en.wikipedia.org/wiki/Chrome_OS) 只能在谷歌的硬件上使用，但是，在你的台式机或者笔记本上，还是有其他的方法来体验云计算的潜能。

正如我重复所说的，在 Linux 领域中，人们总能参与其中，比如那些看起来像 Windows 或者 Mac OS 的Linux 发行版。Linux 汇集了分享，爱和计算体验的最前沿。让我们马上看看这份列表吧！

### 1、 Cub Linux

![](/data/attachment/album/201701/31/090646u5hsj5k8j35m33s6.jpg)

这不是 Chrome OS ，上述图片描绘的是 Cub Linux 的桌面。不清楚我说的什么？

Cub Linux 对于 Linux 用户来说不是什么新鲜事，但是如果你确实不知道的话，（我来解释下，）Cub Linux 灵感来源于主流的 Chrome OS ，是一款专注于网页的 Linux 发行版。从母亲 Linux 来讲，它也是 Chrome OS 的开源兄弟。

Chrome OS 内置了 Chrome 浏览器。不久之前，一个名为 [Chromixium OS](https://itsfoss.com/chromixiumos-released/) 的项目启动，旨在用 Chromium 浏览器取代 Chrome 浏览器，来提供与 Chrome OS 同样的体验。因为一些法律上的争论，项目名字后来改为 Cub Linux （取自 **C**hromium 和 **Ub**untu 两个词）。

![](/data/attachment/album/201701/31/090716s0bk2320p57p2442.jpg)

撇开历史不说，如名字提示的那样，Cub Linux 基于 Ubuntu ，使用了轻量的 Openbox 桌面环境。定制的桌面来给人以 Chrome OS 的印象，而且看起来很整洁。

在应用部分，你能安装 Chrome 网上商店的网页应用和所有的 Ubuntu 应用。对，有 Chrome OS 的精美应用，你仍能体会到 Ubuntu 的好处。

就表现而言，这操作系统相当快，这多亏了它自身的 Openbox 桌面环境。基于 Ubuntu ，Cub Linux 的稳定性是毋庸置疑的。这桌面流畅的动画和漂亮的用户界面，对于眼睛是一种享受。

我向花费大部分时间在浏览器，时不时做些家务的人推荐 Cub Linux 。嗯，一个浏览器就是你所需要的全部，而且，一个浏览器就可以让你得到全部。

### 2、Peppermint OS

不少人把目光投向 Linux 因为他们想要一个良好的使用计算机的体验。一些人是真的不喜欢防病毒软件、磁盘整理程序、清理工具的打扰，他们只是想要一个操作系统而不是个孩子。我必须说 Peppermint OS 真的不会打扰用户。[Peppermint OS](https://peppermintos.com/) 的开发者在理解用户需求上花费了大量的时间精力。

![](/data/attachment/album/201701/31/090754rxom8nxr5wqp99br.jpg)

系统默认内置了很少的软件。从每一个软件类别挑选的一些应用内置进去，这种传统的想法没有被开发者所采纳，这是为了良好的用户体验。个性化定制电脑的权力已经移交给用户。顺便说一句，当能用网页替代几乎大部分应用时，我们真的需要安装那么多的应用吗？

**Ice**

Ice 是一个有用的小工具，它能将你最喜爱和经常用到的网页转化成桌面应用，这样你就能直接从你的桌面或菜单启动。这就是我们所说的特定页浏览器。

![](/data/attachment/album/201701/31/090831ftytbvshhtvh6hpt.jpg)

喜欢 facebook ？想要快速启动，为什么不弄一个 facebook 的网页应用在你的桌面上？当人们抱怨 Linux 上不知如何正确安装 Google Drive 应用时，Ice 能让你在一次单击就能访问

Peppermint OS 7 是基于 Ubuntu 16.04 。它不仅有流畅、稳固的表现，而且反应很快。一个深度定制的 LXDE 将会是你的首页。我所说的定制是兼顾了华丽的表现和视觉吸引力。

Peppermint OS 介于云操作系统和本地操作系统。虽然这个操作系统的框架被设计来支持快速的云端应用，但是本地的 Ubuntu 应用运行得也不错。如果你是像我那样，想要一个能在在线和离线之间保持平衡的操作系统的话，[Peppermint OS](https://peppermintos.com/) 很适合你。

### 3、Apricity OS

[Apricity OS](https://apricityos.com/) 在这里是极具美感的 Linux 发行版之一。它就像是 Linux 里的蒙娜丽莎。但是，不止外观优美，它还有更多优点。

![](/data/attachment/album/201701/31/090940fkpun5tz5guffnuq.jpg)

将 [Apricity OS](https://itsfoss.com/apricity-os/) 加入这名单中的基本理由是它的简洁。当桌面操作系统设计变得越来越乱、堆砌元素时（我不只是在讨论非 Linux 操作系统），Apricity 除去所有杂项，简化最基本的人机交互。在这，Gnome 桌面环境被定制得非常优美。他们使其变得更简单。

预装的软件真的很少。几乎所有的 Linux 发行版都预装一样的预装软件。但是 Apricity OS 有一个全新的软件集合。提供了 Chrome 而不是 Firefox 。我真的很期待这点。我是说为什么不在外面告诉我们改变了什么？

Apricity OS 也展现了我们在上一段讨论的 Ice 工具。但不是 Firefox ，而是将 Chrome 浏览器用在网页-桌面一体化里。Apricity OS 默认内置了 Numix Circle 图标。每一次你添加一个流行的网页应用，那就会有一个优美的图标放在你的底栏上。

![](/data/attachment/album/201701/31/091011xqfpwplfjlnv0kld.jpg)

看见我所说的了吗？

Apricity OS 基于 Arch Linux 。（所以任何想要快速上手 Arch ，想要优美发行版的人，来[这里](https://apricityos.com/)下载 Apricity 的 ISO 文件吧。) Apricity 完全保持了 Arch “选择自由”的原则。在 Ice 上只要花费十分钟，你就能把你所有喜爱的网页应用配置好。

华丽的背景，极简主义的桌面和一大堆的功能。这些特性使得 Apricity OS 在建立一个很棒的云端系统方面成为一个极佳选择。在 Apricity OS 花上 5 分钟，你就会完全爱上它。我是认真的。

到此你就看完了全部，这是给网上居住者的云端 Linux 发行版。给我们一些关于网页应用和本地应用话题的看法。别忘了分享。

---

via: <https://itsfoss.com/cloud-focused-linux-distros/>

作者：[Aquil Roshan](https://itsfoss.com/author/aquil/)  译者：[ypingcn](https://github.com/ypingcn) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译，[Linux中国](https://linux.cn/) 荣誉推出


Linux 内核组织（kernel.org）将关闭 FTP 服务

看来FTP协议以后只会越来越小众，走向灭亡的边缘了

优胜劣汰，本来就很正常！况且，FTP当初是内网使用的！

我时不时会通过 https 协议访问 mirrors.kernel.og，查看或者手动下载一些包，还好这个只是关闭 FTP 通道。

标题。。。。。

从没有感觉FTP快过，除非没有别的选择，不会使用FTP~

FTP 从未定义为内网使用。

确实。 端口 20 21 的。 还有什么passive 模式的。 对客户端的要求不是一般高。 现在都是NAT上网，不实用。

<ruby> <a href="https://www.kernel.org/">  Linux 内核组织 </a> <rp>  （ </rp> <rt>  Linux Kernel Organization </rt> <rp>  ） </rp></ruby>（kernel.org） 是一家建立于 2002 年的加利福尼亚公共福利公司，其目的是公开地免费分发 Linux 内核和其它开源软件。它接受 Linux 基金会的管理，包括技术、资金和人员支持，用以维护 [kernel.org](https://www.kernel.org/) 的运营。

![](/data/attachment/album/201701/31/230456loylh656v67oa1aa.jpg)

Linux 内核组织是 Linux 内核发布的官方场所，在其站点上可以找到 Linux 内核的各个版本，包括最早的 1.0 到最新的 4.x 内核。其所提供的内核获取方式多种多样，包括：

* [HTTP](https://www.ietf.org/rfc/rfc2616.txt) <https://www.kernel.org/pub/>
* [GIT](https://git-scm.com/) <https://git.kernel.org/>
* [RSYNC](https://rsync.samba.org/) rsync://rsync.kernel.org/pub/

以及 FTP 方式，然而，现在他们[决定停止](https://kernel.org/shutting-down-ftp-services.html) FTP 方式的下载了。

最初，早在 1998 年的时候， [Linux 内核组织](http://kernel.org/)就提供了以 FTP 服务为基础的内核代码获取方式，除了可以直接通过 FTP 进行下载以外，还可以通过 HTTP 协议封装来访问 FTP 资源，甚至，还允许通过 NFS 和 SMB/CIFS 来将他们的 FTP 资源挂载为本地分区。

![](/data/attachment/album/201701/31/223911knuau6uz7u4i08k4.jpg)

不过，不久之后，他们发现提供一个公开的 NFS/CIFS 服务器看起来并不是一个好主意，不仅仅是因为这两种服务在慢速网络时表现很糟糕，而且它们本身也存在严重的安全隐患。因此于当年年底时停止了对 NFS 和 SMB/CIFS 的支持。

而现在，基于如下考虑：

* FTP 服务需要在防火墙和负载均衡设备上做额外的配置和调整
* FTP 服务器不支持缓存和加速器，这严重影响了性能
* 大多数的相关软件缺乏维护和更新

因此，在服务了 19 年之后，Linux 内核组织决定彻底终止 FTP 服务器上剩下的 FTP 服务了。Linux 内核组织所有的 FTP 服务都将在今年内关闭，为了减少影响，关闭分为两个阶段：

1. <ftp://ftp.kernel.org/> 服务将于 2017 年 3 月 1 日终止
2. <ftp://mirrors.kernel.org/> 服务将于 2017 年 12 月 1 日终止

不过，如果你有任何疑问，欢迎联系 [ftpadmin@kernel.org](mailto:ftpadmin@kernel.org) 。


2017 年成为 Linux 专家的 4 个热门技能

Summary: 你在新的一年里需要刷哪些技能？

社交技能应该排第一

我还以为有人会说配图。

沟通真的很重要

软技能--- 赞

配图大赞哦@！~

你在新的一年里需要刷哪些技能？

>
> 你在新的一年里需要刷哪些技能？
>
>
>

![](/data/attachment/album/201701/31/233141le334md33m1i3dje.jpg)

成为 Linux 专家的一个问题是“专家”的定义在不断变化。当我进入 Linux 世界的时候，那时认为成为一个 *Linux 专家*，你需要能够编译自己的内核。天啊，如果你想在笔记本电脑上使用 Linux，即便你只是*用户*，你也必须编译一个自定义内核。 如今编译自己的内核通常是浪费时间。这不是说它并不重要，但在开源世界，我们建立在他人成功的基础之上，而 Linux 发行版为我们提供了运行良好的内核。虽然“专家”的定义并不总是那么剧烈变化，但对 IT 专业人员的需求每年都在变化。

下面是 2017 年 Linux 专业人员的四个重要技能：

### 1、 安全

我不是在讨论安全专家或安全顾问。这些职位和服务当然很重要，但是随着联网设备渗透到我们生活的每一个方面，我们需要在我们做出的每一个决定中都具有安全意识。今年，我的妻子和我买了一台洗衣机和一台冰箱，它们都配备了蓝牙。黑客攻入我的漂洗系统的想法可能看起来很傻，但这都是潜在的攻击点。

当激活工作、家庭或我们的口袋中的任何系统时，我们应该考虑它们可能引发的安全问题。而且因为像联网烤面包机这样的物品不太可能及时获得固件升级，我们需要按照普通设备可能遭到破坏的思路来设计其余的系统。相比以前任何时候，我们更需要考虑来自防火墙内的攻击。不要让你的文件服务器被你的搅拌器破坏！

### 2、 DevOps

[DevOps](https://opensource.com/tags/devops) 不再是一个新概念。在过去两三年里，我们一直鼓励员工学习 DevOps，以便他们能够在工作中取得成功。这是个好建议，但这并不意味着我们应该完全依赖自动化工具来完成我们的工作。Chef、Puppet、Ansible、Salt Stack 及类似的工具是美好的，但我们需要了解背后发生了什么，所以当发生一些不可避免的错误，我们应该知道如何解决它。

使用 DevOps 的编程方法来计算，我们仍然需要能够维护、修复和理解在代码层之下运行的系统的人。没有 Linux 专家，云计算将是一个可怕的地方，即使那个云在你自己的机房里。

### 3、 开发

作为系统管理员，20 年来，我从来没有时间学习编程。这听起来可能是一个借口，但这是事实。我所有的开发技能就是基本的脚本编写，以帮助我更快工作。不过，那些日子已经结束了。虽然我们需要在 DevOps 世界中拥有系统管理技能，但我们还需要系统管理员拥有编程技能。

如果你是一个像我一样的老练的系统管理员，你可能已经采用 DevOps 并每天使用它。如果你真的想要胜过他人，你需要学习如何以编程方式解决问题，并且不要认为 Chef 或 Puppet 代码只是配置文件。 每个 IT 专业人员都至少需要掌握编程的概念，因为 DevOps 代码至少在某种程度上抽象了 IT 的每个方面。

### 4、 软技能

通常，我们在准备职业生涯时所考虑的最后一件事是所谓的 *软技能* - 社交和沟通技巧 - 但是它们可能是最有可能决定你走向成功的技能。无论你正在寻找一份新工作，还是试图适应当前职业生涯的变化，软技能是至关重要的。

划分 IT 各个领域的标准是交错的，并且良好的沟通能力使得这些模糊的分野成为一个有利条件，而不是绊脚石。我们正生活在一个开发人员围绕着服务器，而运维团队编写 Ruby 代码来维护服务器农场的世界里。这些都是 IT 中的大胆的新思想，如果人们不能在不同部门间很好的沟通，工作场所将迅速有敌对气氛。此外，IT 人员总是需要与其他业务领域的人员进行有效沟通。而且，现在比以往有更大的需求。

你计划在 2017 年里添加什么到你的技能中？在评论栏中让我们知道吧。

---

作者简介：

Shawn Powers - 自 2009 年起是 CBT Nuggets ([www.cbtnuggets.com](http://www.cbtnuggets.com)) 的一名 IT 训练员，专于 Linux、Chef 及为大规模网络集成多个平台。他在 2016 年 12 月发布了一个在线高级 Linux 认证课程（LPIC-2）。

---

via: <https://opensource.com/article/17/1/yearbook-4-hot-skills-linux-pros-2017>

作者：[Shawn Powers](https://opensource.com/users/shawnpowers) 译者：[geekpi](https://github.com/geekpi) 校对：[jasminepeng](https://github.com/jasminepeng)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Mir 并不只是 Unity 8

这样看来Mir和Wayland也就是比X少了个透明性而已。<br />
这根本就不值得去换成Mir和Wayland。

![mir](/data/attachment/album/201702/01/002628b7oez3vie3t2v2ez.png)

*这是一篇来自 Canonical 的软件工程师 Alan Griffiths 的一篇游客文章。如果你也想投稿，请联系 [ubuntu-devices@canonical.com](mailto:ubuntu-devices@canonical.com)*

Mir 是一个计算机显示的管理应用的支持项目。它可以与当前 Ubuntu 桌面（及很多其他桌面）上使用的、我们更熟悉的 X-Window 相比较。我下面会讨论 Mir 的一些动机，但本篇的目的是澄清 Mir 和 Unity 8 之间的关系。

大多数时候你听说 Mir 时都会提到 Unity 8。这并不奇怪，因为 Unity 8 是 Canonical 新的用户界面 shell，用户会一直与它交互。 Mir “只”是使这成为可能。Unity 8 目前用于手机和平板电脑，也可以在 Ubuntu 16.10 桌面上“预览”它。

在这里我想解释一下，可以不用 Unity 8 也可以使用 Mir。要么作为替代 shell，要么作为嵌入式环境的更简单的界面：信息亭，电子标牌等。Mir “抽象层”证明了这一点，它提供了三个重要的元素：

1. libmiral.so - Mir 的稳定接口，提供基本的窗口管理；
2. miral-shell - 一个提供“传统”和“平铺”窗口管理的示例 shell；
3. miral-kiosk - 一个仅提供基本窗口管理的示例“信息亭”。

miral-shell 和 miral-kiosk 示例服务器可从 zesty 的归档文件中获得，Kevin Gunn 已经在“Voices”上写了一篇基于 miral-kiosk 的“信息亭”的概览的[博文](http://voices.canonical.com/kevin.gunn/)。我将在下面给出更多关于使用这些例子的细节，但在[我的“voices”博客](http://voices.canonical.com/alan.griffiths/)上有更多（包括“如何”开发自己的替代 Mir 服务器）。

### 使用 MIR

Mir 是一套编程库，而不是独立的程序。这意味着这需要程序去调用它实现相应的功能。有两种方式去使用 Mir 库：编写程序的时候作为“客户端”，或者在实现 shell 时作为“服务端”。客户端（和 X11 一起）典型是使用工具库，而不是直接使用 Mir（或者 X11）。

GTK、Qt 和 SDL2 中有对 Mir 的支持。当在那些工具库中启用对它的支持时（默认在 Ubuntu 中启用支持），意味着使用这些工具的程序应该“可以工作”于 Mir 中。除此之外还有一个 Xmir：一个运行于 Mir 的 X11 服务器，这允许基于 X 的服务运行在 Mir 服务端上。

但是开始之前 Mir 客户端需要一个相匹配的 Mir 服务端。在最后一个开发周期中，Mir 团队在演示中将 MirAL 作为编写 Mir 服务端的推荐方法，并推出了一个“miral-examples”包。在 Ubuntu 的开发版本 zesty 中，你可以从归档中安装它：

```
$ sudo apt install miral-examples mir-graphics-drivers-desktop qtubuntu-desktop

```

*对于其他平台，你需要自己构建 MirAL（有关详细信息，请参阅 Mir 桌面环境示例）。*

miral-examples 安装后你可以在 Unity 7 中以窗口的方式运行一个 Mir 服务端，然后在里面运行一个客户端（比如 gedit）：

```
$ miral-shell&
$ miral-run gedit

```

这会给你一个（非常基础的）“传统” 的桌面窗口管理。另外你可以试下“平铺”窗口管理器：

```
$ miral-shell --window-manager tiling&
$ miral-run qterminal

```

或者（甚至更基础的）信息亭界面：

```
$ miral-kiosk&
$ miral-run 7kaa

```

这些 Mir 服务端都不会提供带有“启动器”、通知等的完整“桌面”。但是它们演示了不使用 Unity 8 使用 Mir 的可能。

### MIR 解决的问题

X-Window 系统过去是，并且现在也是，一种提供了与计算机的交互的非常成功的方式。它提供了广泛的硬件和驱动程序一致的抽象。它支持许多桌面环境和图形用户界面工具包，并可以让它们在大量计算机上一起工作。

但它来自一个与当前电脑使用方式非常不同的时代，现在有一些问题是很难满足的，因为它需要支持老旧的系统。

在 1980 年，大多数计算机是由专家管理的大型事物，将它们连接在一起“是非常困难的”。在那个时代，开发软件的成本是这样的，一个程序“监听”另一个程序获得的好处是可以忽略不计的：此时几乎没有计算机，同时它们是独立的，它们所有的工作和金融无关。

X-Window 开发于这种环境下，通过一系列扩展，它已经适应了许多变化。但它本质上是不安全的：任何应用程序可以知道显示了什么（并影响它）。你可以编写像 Xeyes（用“眼睛”跟踪光标）或“Tickeys”（通过键盘来生成打字机噪声）等应用程序。现实是，任何应用程序可以跟踪和操纵几乎所有的事情。这就是基于 X 的桌面如 Unity 7、Gnome、KDE及其它桌面工作的方式。

X-Window 中窗口管理的开放性质不适合用于具有数百万计算机连接到因特网的世界，它们用于信用卡交易和网上银行，且由非专家管理，并自愿安装来自陌生人的程序。人们越来越意识到让 X-Window 适应新的安全性和图形性能的要求是不可行的。

现在至少有两个开源项目旨在提供一个替代品：Mir 和 Wayland。虽然有些人认为两者是竞争关系，但在很多领域，它们有共同的利益：它们都需要与那些之前假定使用 X11 的其它软件交互，并且许多引入支持的工作对两者都有益。

Canonical 的 X-Window 替换品 Mir，它只将信息暴露给它需要的应用程序（因此没有按键监听或光标跟踪）。它可以满足当前时代的需求，并可以利用现代硬件，如图形处理器。

---

via: <https://insights.ubuntu.com/2016/11/28/mir-is-not-only-about-unity8/>

作者：Alan Griffiths 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Fedora 上使用 Redshift 改善睡眠

Summary: 大多数电子设备发射的蓝光被认为对我们的睡眠有负面影响。更好的方法是根据你周围环境调整屏幕的色温。实现这一点的最流行的方法之一是使用 Redshift。

不是有类似的flux么.

以前用flux。

后来发现redshitf不错，于是windows和安卓用xflux，linux用redshift

而现在，windows10创意者更新自带夜光功能，gnome3.24也有这个功能啦，所以，他们可以抛弃骆

大多数电子设备发射的蓝光被认为对我们的睡眠有负面影响。作为一个尝试，我们可以在黑暗中不再使用我们的电子设备，以改善我们的睡眠。然而，由于这对我们大多数人并不是很适合，更好的方法是根据你周围环境调整屏幕的色温。实现这一点的最流行的方法之一是使用 Redshift。 Redshift 的创建者 Jon Lund Steffensen 这样描述了他的程序：

>
> Redshift 会根据你周围的环境调整屏幕的色温。如果你在夜间在屏幕前工作，它可以帮助你减少眼睛伤害。
>
>
>

Redshift 在 Fedora Workstation 上仅工作在 X11 会话中。所以如果你使用 Fedora 24，Redshift 可以工作在默认登录会话中。然而，在 Fedora 25 上，登录的默认会话是 Wayland，因此你将需要替代使用其 GNOME shell 扩展。注意，这个 GNOME Shell 扩展也适用于 X11 会话。

### Redshift 工具

#### 安装

Redshift 在 Fedora 的仓库中，因此我们使用下面的命令安装：

```
sudo dnf install redshift

```

该软件也提供了 GUI。要使用的话就安装 `redshift-gtk`。记住，这个工具只能在 X11 会话中使用：

#### 使用 Redshift 工具

用像下面的命令在命令行中运行：

```
redshift -l 23.6980:133.8807 -t 5600:3400

```

在以上命令中，`-l 23.6980:133.8807` 的意思是我们通知 Redshift 我们当前的位置是南纬 23.6980°，东经 133.8807°。 `-t 5600:3400` 表明你白天想要的色温是 5600，晚上是 3400。

色温与发射的蓝光的量成比例：较低的色温意味着较低量的蓝光。我喜欢在白天使用 5600K（6500K 是中性日光），在晚上使用 3400K（更低的色温让我觉得像盯着番茄一样），但你可以随意尝试。

如果你不指定位置，Redshift 会尝试使用 Geoclue 方法来确定你的位置坐标。如果此方法不起作用，你可以使用几个[网站](http://www.latlong.net/)和在线地图来查找坐标。

![screenshot1](/data/attachment/album/201702/01/180117p6zveubmu25us6uw.png)

别忘记将 Redshift 设置为自动启动，查看 [Jon 的网站](http://jonls.dk/redshift/)来获取更多信息。

### Redshift GNOME Shell 扩展

该程序不能在运行 Wayland 显示服务器（这是 Fedora 25 中的标准）的环境中工作。幸运的是，这里有一个方便的 GNOME Shell 扩展可以做到同样的工作。要安装它，请运行以下命令：

```
sudo dnf copr enable mystro256/gnome-redshift
sudo dnf install gnome-shell-extension-redshift

```

从 COPR 仓库安装后，注销并重新登录你的 Fedora Workstation，然后在 GNOME Tweak 工具中启用它。关于更多信息，请查看 gnome-redshift 的 [copr 仓库](https://copr.fedorainfracloud.org/coprs/mystro256/gnome-redshift/)或 [github 仓库](https://github.com/benzea/gnome-shell-extension-redshift)。

启用扩展后，GNOME shell 右上角会出现一个小小的太阳（或月亮）图标。该扩展还提供了一个设置对话框来调整 redshift 和温度的时间。

![screenshot-from-2017-01-18-15-21-47](/data/attachment/album/201702/01/180118kup8gzo8y9yg0pop.jpg)

### 相关软件

#### F.lux

Redshift 可以被看作是 F.lux 的开源变体。现在有一个 [linux 版本的 F.lux](https://justgetflux.com/linux.html)。如果你不介意使用闭源软件，或者 Redshift 不能正常工作，你可以考虑使用它。

#### Android 版 Twilight

Twilight 与 Redshift 相似，但是用于 Android。它可以让你在晚上在智能手机或平板上阅读更加舒服。

#### Redshift plasmoid

这是 Redshift GUI 的 KDE 版本。你可以在 [github](https://github.com/simgunz/redshift-plasmoid)  中找到更多信息。

---

via: <https://fedoramagazine.org/safe-eyes-redshift/>

作者：[novel](http://novel.id.fedoraproject.org/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


OpenSSL 在 Apache 和 Dovecot 下的使用（一）

Summary: 在这有两部分的系列中，Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们。


KDE 5.9 发布，全局菜单回来了

大爱KDE！

坐等Linux mint升级

linux mint 会支持全局菜单？

感觉kde不好用

好 爱得很

2017 年 1 月 30 日，KDE 团队宣布发布了 KDE Plasma 5.9。

![](/data/attachment/album/201702/01/231821tbv80bnnbmevbbvz.jpg)

虽然 KDE Plasma 5.9 开发周期很短，不过考虑到 5.9 并非像 5.8 一样是个 LTS 版本也是可以理解的。 这次发布还是一个相当大的更新，带来了不少新的功能，并改善了 Wayland 支持，我们推荐所有 KDE 用户升级到这个版本。

### 全局菜单回来了

对于从 KDE Plasma 5.8 LTS 或之前的版本升级的用户而言，可能最重要原因就是它带回了“全局菜单”。全局菜单是一个 KDE 4 系列的功能，但是在 KDE 5 中被取消了，经过了用户的多次要求，KDE 开发团队终于在 KDE Plasma 5.9 中将这一功能再次实现了。

在其[发布公告](https://www.kde.org/announcements/plasma-5.9.0.php)中称：“全局菜单回来了。KDE 的这项开创性的功能从应用窗口分离出了菜单栏，允许通过 Plasma Widget 显示该菜单或将其整齐的放入窗口栏。”如下，你可以看到显示在 Plasma Widget 和窗口栏中的全局菜单。

![](/data/attachment/album/201702/01/231845xoym0ar0aub0wmun.jpg)

*显示在 Plasma Widget 中的全局菜单*

![](/data/attachment/album/201702/01/231911hpd8cqyn8ylr9o9i.jpg)

*显示在窗口栏中的全局菜单*

### 改进 Wayland 支持，可以增强生产力的新工具

对于那些使用下一代 Wayland 显示服务器的人来说，KDE Plasma 5.9 中带来了大量改进。这包括截屏的能力、支持使用颜色拾取器、实现了无边框最大化窗口以支持全屏、支持点击应用的空白区域来拖动应用等等。

KDE Plasma 的 Wayland 支持允许用户为窗口设置颜色方案，这对于改善可用性有帮助。实现了面板的自动隐藏，并能在面板上正确显示 X11 应用的图标。此外，还有一些新的设置工具可以用于配置触摸板，也可以设置手势。

KDE Plasma 5.9 也增加了一些很酷的新工具，比如说你可以通过拖动截屏的提示弹窗来将截屏拖动到 Web 浏览器的表单、聊天窗口或邮件中。重新打造的拖放功能可以让你直接在系统托盘区增加小部件，也可以直接从全屏的<ruby> 应用仪表盘启动器 <rp>  （ </rp> <rt>  Application Dashboard launcher </rt> <rp>  ） </rp></ruby>中增加小部件。

![](/data/attachment/album/201702/01/231933cdqodc7iq1314d13.jpg)

*拖动截屏的提示弹窗*

KRunner 的搜索结果中可以显示“打开包含文件夹”和“在终端中运行”菜单。有一个新的应用可以让用户将多个小部件组织成一个。此外，KDE Plasma 5.9 还改善了 KDE 应用和 Plasma 桌面的外观， 以及更漂亮、更紧凑的 Breeze 风格的滚动条。

![](/data/attachment/album/201702/01/231953n1iijilaevbbleco.jpg)

*“打开包含文件夹”*

KDE Plasma 5.9 已经可以从其官网下载源代码了，各个发行版很快就会发布更新包。

按照计划，KDE Plasma 5.9 会有五个维护版本，最后一个维护版本 5.9.5 将发布于 2017 年 4 月 25 日。

### KDE Plasma 5.10 已经在路上

KDE Plasma 5.9 刚刚出炉，而 KDE 开发团队就已经投入到了 5.10 的开发中。据闻，在 5.10 中会有一个新的“<ruby> 弹性加载 <rp>  （ </rp> <rt>  Spring-Loading </rt> <rp>  ） </rp></ruby>”功能。

弹性加载是一种文件夹视图，当用户将一个文件夹/文件拖放到另外一个文件夹时，悬浮在其上会即时显示该文件夹内容，你可以在显示的文件夹内继续拖放悬浮，并选择你要采取的动作。从下面的演示视频看，还是很有吸引力的。

此外，文件夹视图也会得到性能的极大提升。


LXD 2.0 系列（六）：远程主机及容器迁移

这是 LXD 2.0 系列介绍文章的第六篇。

1. [LXD 入门](/article-7618-1.html)
2. [安装与配置](/article-7687-1.html)
3. [你的第一个 LXD 容器](/article-7706-1.html)
4. [资源控制](/article-8072-1.html)
5. [镜像管理](/article-8107-1.html)
6. [远程主机及容器迁移](/article-8169-1.html)
7. [LXD 中的 Docker](/article-8235-1.html)
8. [LXD 中的 LXD](/article-8257-1.html)
9. [实时迁移](/article-8263-1.html)
10. [LXD 和 Juju](/article-8273-1.html)
11. [LXD 和 OpenStack](/article-8274-1.html)
12. [调试，及给 LXD 做贡献](/article-8282-1.html)

![](/data/attachment/album/201702/02/232809gf1yvnndffzznyaq.jpg)

### 远程协议

LXD 2.0 支持两种协议:

* LXD 1.0 API：这是在客户端和 LXD 守护进程之间使用的 REST API，以及在 LXD 守护进程间复制/移动镜像和容器时使用的 REST API。
* Simplestreams：Simplestreams 协议是 LXD 客户端和守护进程使用的只读、仅针对镜像的协议，用于客户端和 LXD 守护进程获取镜像信息以及从一些公共镜像服务器（如 Ubuntu 镜像）导入镜像。

以下所有内容都将使用这两个协议中的第一个。

### 安全

LXD API 的验证是通过客户端证书在 TLS 1.2 上使用最近的密钥验证的。 当两个 LXD 守护进程必须直接交换信息时，源守护程序生成一个临时令牌，并通过客户端传输到目标守护程序。 此令牌仅可用于访问特定流，并且会被立即撤销，因此不能重新使用。

为了避免中间人攻击，客户端工具还将源服务器的证书发送到目标服务器。这意味着对于特定的下载操作，目标服务器会被提供源服务器的 URL、所需资源的一次性访问令牌以及服务器应该使用的证书。 这可以防止中间人攻击，并且只允许临时访问所传输的对象。

### 网络需求

LXD 2.0 使用这样一种模型，某个操作的目标（接收端）直接连接到源以获取数据。

这意味着你必须确保目标服务器可以直接连接到源、可以更新任何所需的防火墙。

我们有个[允许反向连接的计划](https://github.com/lxc/lxd/issues/553)，允许通过客户端代理本身以应对那些严格的防火墙阻止两台主机之间通信的罕见情况。

### 与远程主机交互

LXD 使用的是“远程”的概念，而不是让我们的用户总是提供主机名或 IP 地址，然后在他们想要与远程主机交互时验证证书信息。

默认情况下，唯一真正的 LXD 远程配置是 `local:`，这也是默认的远程（所以你不必输入它的名称）。这个本地（`local:`）远程使用 LXD REST API 通过 unix 套接字与本地守护进程通信。

#### 添加一台远程主机

假设你已经有两台装有 LXD 的机器：你的本机以及远程那台我们称为“foo”的主机。

首先你需要确保“foo”正在监听网络，并设置了一个密码，以便得到一个远程 shell，运行：

```
lxc config set core.https_address [::]:8443
lxc config set core.trust_password something-secure

```

在你本地 LXD 上，你需要使它对网络可见，这样我们可以从它传输容器和镜像：

```
lxc config set core.https_address [::]:8443

```

现在已经在两端完成了守护进程的配置，你可以添加“foo”到你的本地客户端：

```
lxc remote add foo 1.2.3.4

```

（将 1.2.3.4 替换成你的 IP 或者 FQDN）

看上去像这样：

```
stgraber@dakara:~$ lxc remote add foo 2607:f2c0:f00f:2770:216:3eff:fee1:bd67
Certificate fingerprint: fdb06d909b77a5311d7437cabb6c203374462b907f3923cefc91dd5fce8d7b60
ok (y/n)? y
Admin password for foo:
Client certificate stored at server: foo

```

你接着可以列出远端服务器，你可以在列表中看到“foo”：

```
stgraber@dakara:~$ lxc remote list
+-----------------+-------------------------------------------------------+---------------+--------+--------+
|      NAME       |                         URL                           |   PROTOCOL    | PUBLIC | STATIC |
+-----------------+-------------------------------------------------------+---------------+--------+--------+
| foo             | https://[2607:f2c0:f00f:2770:216:3eff:fee1:bd67]:8443 | lxd           | NO     | NO     |
+-----------------+-------------------------------------------------------+---------------+--------+--------+
| images          | https://images.linuxcontainers.org:8443               | lxd           | YES    | NO     |
+-----------------+-------------------------------------------------------+---------------+--------+--------+
| local (default) | unix://                                               | lxd           | NO     | YES    |
+-----------------+-------------------------------------------------------+---------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases              | simplestreams | YES    | YES    |
+-----------------+-------------------------------------------------------+---------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily                 | simplestreams | YES    | YES    |
+-----------------+-------------------------------------------------------+---------------+--------+--------+

```

#### 与它交互

好了，所以我们已经有了一台定义好的远程服务器，我们现在可以做些什么？

现在，就如你看到的，唯一的不同是你必须告诉 LXD 要哪台主机运行。

比如：

```
lxc launch ubuntu:14.04 c1

```

它会在默认主机（`lxc remote get-default`），也就是你的本机上运行。

```
lxc launch ubuntu:14.04 foo:c1

```

这个会在 foo 上运行。

列出远程主机正在运行的容器可以这么做：

```
stgraber@dakara:~$ lxc list foo:
+------+---------+---------------------+-----------------------------------------------+------------+-----------+
| NAME |  STATE  |         IPV4        |                     IPV6                      |    TYPE    | SNAPSHOTS |
+------+---------+---------------------+-----------------------------------------------+------------+-----------+
| c1   | RUNNING | 10.245.81.95 (eth0) | 2607:f2c0:f00f:2770:216:3eff:fe43:7994 (eth0) | PERSISTENT | 0         |
+------+---------+---------------------+-----------------------------------------------+------------+-----------+

```

你要记住的一件事是你需要在远程主机上同时指定镜像和容器。因此如果你在“foo”上有一个“my-image”的镜像，并且希望从它创建一个“c2”的容器，你需要运行：

```
lxc launch foo:my-image foo:c2

```

最后，就如你希望的那样得到一个远程容器的 shell：

```
lxc exec foo:c1 bash

```

#### 复制容器

在两台主机间复制容器就如它听上去那样简单：

```
lxc copy foo:c1 c2

```

你会有一个新的从远程“c1”复制过来的本地“c2”容器。这需要停止“c1”容器，但是你可以在运行的时候只复制一个快照：

```
lxc snapshot foo:c1 current
lxc copy foo:c1/current c3

```

#### 移动容器

除非你在做实时迁移（将会在之后的文章中讲到），不然你需要在移动前先停止容器，接着就会如你预料的那样。

```
lxc stop foo:c1
lxc move foo:c1 local:

```

这个例子等同于：

```
lxc stop foo:c1
lxc move foo:c1 c1

```

### 是如何工作的

正如你期望的那样, 与远程容器的交互时 LXD 使用的 REST API 并不是通过本地 Unix 套接字，而是通过 HTTPS 传输。

当两个守护程序之间交互时会变得有些棘手，如复制和移动的情况。

在这种情况下会发生：

1. 用户运行`lxc move foo：c1 c1`。
2. 客户端联系 `local:` 远程以检查是否现有“c1”容器。
3. 客户端从“foo”获取容器信息。
4. 客户端从源“foo”守护程序请求迁移令牌。
5. 客户端将迁移令牌以及源 URL 和“foo”的证书发送到本地 LXD 守护程序以及容器配置和周围设备。
6. 然后本地 LXD 守护程序使用提供的令牌直接连接到“foo” a) 它连接到第一个控制 websocket b) 它协商文件系统传输协议（zfs 发送/接收，btrfs 发送/接收或者纯 rsync） c) 如果在本地可用，它会解压用于创建源容器的镜像。这是为了避免不必要的数据传输。 d) 然后它会将容器及其任何快照作为增量传输。
7. 如果成功，客户端会命令“foo”删除源容器。

### 在线尝试

没有两台机器来尝试远端交互和复制/移动容器？

没有问题，你可以使用我们的 [demo 服务](https://linuxcontainers.org/lxd/try-it/)。这里甚至还包括了一步步的指导！

### 额外信息

LXD 的主站在： <https://linuxcontainers.org/lxd>

LXD 的 GitHub 仓库： <https://github.com/lxc/lxd>

LXD 的邮件列表： <https://lists.linuxcontainers.org>

LXD 的 IRC 频道： #lxcontainers on irc.freenode.net

---

作者简介：我是 Stéphane Graber。我是 LXC 和 LXD 项目的领导者，目前在加拿大魁北克蒙特利尔的家所在的Canonical 有限公司担任 LXD 的技术主管。

---

via: <https://www.stgraber.org/2016/04/12/lxd-2-0-remote-hosts-and-container-migration-612/>

作者：[Stéphane Graber](https://www.stgraber.org/author/stgraber/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译，[Linux中国](https://linux.cn/) 荣誉推出