Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

Summary: Nginx 是最快的 HTTP 服务器。还有一个相当惊人的事实是，在特定的用户并发数和请求数下，Node.js 可以比 Nginx 和 Apache 更快。

Ghost 可能不是很快，不过对开发者更友好

worpress已经是成年大叔了，经验丰富；Ghost现在不过是个毛头小子，会玩

![](/data/attachment/album/201611/30/113514ymytktqy2qygp2ft.jpg)

>
> 巨头之间的终极对决：崛起的新星 Node.js 能否战胜巨人 Apache 和 Nginx？
>
>
>

我和你一样，都阅读过大量散布在互联网各处的意见或事实，其中有一些我认为是可靠的，而其它的可能是谣传，让人难以置信。

我读过的许多信息是相当矛盾的，有人深信 StackOverflow（比如[这个](http://stackoverflow.com/questions/9967887/node-js-itself-or-nginx-frontend-for-serving-static-files)和[另一个](http://stackoverflow.com/questions/16770673/using-node-js-only-vs-using-node-js-with-apache-nginx)），而其他人展示了一个清晰的令人惊讶的[结果](http://centminmod.com/siegebenchmarks/2013/020313/index.html)，这在推动我自己去做测试来验证结论的过程中扮演了重要的角色。

起初，我做了一些思想准备，我认为我可以避免自己进行实际测试来校验结论的麻烦——在我知道这一切之前我一直这样认为。

尽管如此，回顾之前，似乎我最初的想法是相当准确的，并且被我的测试再次印证。这个事实让我想起了当年我在学校学到的爱因斯坦和他的光电效应的实验，他面临着一个光的波粒二重性的问题，最初的结论是实验受到他的心理状态的影响，即当他期望结果是一个波的时候结果就会是一个波，反之亦然。

也就是说，我坚信我的结果不会在不久的将来被证明二重性，虽然我的心理状态可能在某种程度上对它们有影响。

### 关于比较

上面我读过一份材料具有一种革新的方式，在我看来，需要了解其自然而然的主观性和作者自身的偏见。

我决定采用这种方式，因此，提前声明以下内容：

开发者花了很多年来打磨他们的作品。那些取得了更高成就的人通常参考很多因素来做出自己的抉择，这是主观的做法；你需要推崇和捍卫你的技术决策。

也就是说，这个比较文章的着眼点不会成为另一篇“哥们，使用适合你的东西就好”的口水文章。我将会根据我的自身经验、需求和偏见提出建议。你可能会同意其中一些观点，反对另外一些；这很好——你的意见会帮助别人做出明智的选择。

感谢 [SitePoint](https://www.sitepoint.com/sitepoint-smackdown-php-vs-node-js/) 的 Craig Buckler ，重新启发了我对比较类文章的看法——尝试重新忘记自我，并试图让所有的读者心悦诚服。

### 关于测试

所有的测试都在本地运行：

* 英特尔酷睿 i7-2600k，四核八线程的机器
* [Gentoo Linux](http://iwf1.com/5-reasons-use-gentoo-linux/) 是用于测试的操作系统

用于基准测试的工具：ApacheBench，2.3 <$Revision: 1748469 $>

测试包括一系列基准，从 1000 到 10000 个请求以及从 100 到 1000 个的并发请求——结果相当令人惊讶。

此外，我还进行了在高负载下测量服务器功能的压力测试。

至于内容，主要是一个包含一些 Lorem Ipsum 的标题和一张图片静态文件。

![](/data/attachment/album/201611/30/113723yf4af51hn5nfhnf9.jpg)

*Lorem Ipsum 和 ApacheBenchmark*

我决定专注于静态文件的原因是因为它们去除了可能对测试产生影响的各种渲染因素，例如：编程语言解释器的速度、解释器与服务器的集成程度等等。

此外，基于我自身的经验，平均网页加载时间很大一部分通常花费在静态内容上，例如图片，因此关注哪个服务器可以节省我们加载静态内容的时间是比较现实的。

除此之外，我还想测试一个更加真实的案例，案例中我在运行不同 CMS 的动态页面（稍后将详细介绍）时对服务器进行基准测试。

#### 服务器

正如我用的是 Gentoo Linux，你就知道我的 HTTP 服务器在一开始就已经经过优化了，因为我在构建系统的时候只使用了我实际需要的东西。也就是说，当我运行我的测试的时候，不会在后台运行任何不必要的代码或加载没用的模块。

![](/data/attachment/album/201611/30/113747a3fszmotz9b3bg13.jpg)

*Apache、Nginx 和 Node.js 的使用的配置对比*

#### Apache

```
$: curl -i http://localhost/index.html

HTTP/1.1 200 OK
Date: Sun, 30 Oct 2016 15:35:44 GMT
Server: Apache
Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT
ETag: "2cf2-54015b280046d"
Accept-Ranges: bytes
Content-Length: 11506
Cache-Control: max-age=600
Expires: Sun, 30 Oct 2016 15:45:44 GMT
Vary: Accept-Encoding
Content-Type: text/html

```

Apache 配置了 “event mpm”。

#### Nginx

```
$: curl -i http://localhost/index.html

HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Sun, 30 Oct 2016 14:17:30 GMT
Content-Type: text/html
Content-Length: 11506
Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT
Connection: keep-alive
Keep-Alive: timeout=20
ETag: "58160010-2cf2"
Accept-Ranges: bytes

```

Nginx 包括几个调整：`sendfile on`、`tcp_nopush on` 和 `tcp_nodelay on`。

#### Node.js

```
$: curl -i http://127.0.0.1:8080

HTTP/1.1 200 OK
Content-Length: 11506
Etag: 15
Last-Modified: Thu, 27 Oct 2016 14:09:58 GMT
Content-Type: text/html
Date: Sun, 30 Oct 2016 16:39:47 GMT
Connection: keep-alive

```

在静态测试中使用的 Node.js 服务器是从头定制的，这样可以让它尽可能更加的轻快——没有使用外部模块（Node 核心模块除外）。

### 测试结果

点击图片以放大：

![](/data/attachment/album/201611/30/113817jerzgmxs5xcgeuec.jpg)

*Apache、Nginx 与 Node 的对比：请求负载的性能（每 100 位并发用户）*

![](/data/attachment/album/201611/30/113843us9khy9zyzqlksqt.jpg)

*Apache、Nginx 与 Node 的对比：用户负载能力（每 1000 个请求）*

### 压力测试

![](/data/attachment/album/201611/30/113912ynpnnm5gp5npnmgk.jpg)

*Apache、Nginx 与 Node 的对比：完成 1000 位用户并发的 100000 个请求耗时*

### 我们可以从结果中得到什么？

从以上结果判断，似乎 Nginx 可以在最少的时间内完成最多请求，换句话来说，**Nginx** 是最快的 HTTP 服务器。

还有一个相当惊人的事实是，在特定的用户并发数和请求数下，Node.js 可以比 Nginx 和 Apache 更快。

但当请求的数量在并发测试中增加的时候，Nginx 将重回领先的位置，这个结果可以让那些陷入 Node.js 的遐想的人清醒一下。

和 Apache、Nginx 不同的是，Node.js 似乎对用户的并发数不太敏感，尤其是在集群节点。如图所示，集群节点在 0.1 秒左右保持一条直线，而 Apache 和 Nginx 都有大约 0.2 秒的波动。

基于上述统计可以得出的结论是：网站比较小，其使用的服务器就无所谓。然而，随着网站的受众越来越多，HTTP 服务器的影响变得愈加明显。

当涉及到每台服务器的原始速度的底线的时候，正如压力测试所描述的，我的感觉是，性能背后最关键的因素不是一些特定的算法，而实际上是运行的每台服务器所用的编程语言。

由于 Apache 和 Nginx 都使用了 C 语言—— AOT 语言（编译型语言），而 Node.js 使用了 JavaScript ——这是一种 JIT 语言（解释型语言）。这意味着 Node.js 在执行程序的过程中还有额外的工作负担。

这意味着我不能仅仅基于上面的结果来下结论，而要做进一步校验，正如你下面看到的结果，当我使用一台经过优化的 Node.js 服务器与流行的 Express 框架时，我得到几乎相同的性能结论。

### 全面考虑

逝者如斯夫，如果没有服务的内容，HTTP 服务器是没什么用的。因此，在比较 web 服务器的时候，我们必须考虑的一个重要的部分就是我们希望在上面运行的内容。

虽然也有其它的功能，但是 HTTP 服务器最广泛的使用就是运行网站。因此，为了看到每台服务器的性能的实际效果，我决定比较一下世界上使用最广泛的 CMS（内容管理系统）WordPress 和 Ghost —— 内核使用了 JavaScript 的一颗冉冉升起的明星。

基于 JavaScript 的 Ghost 网页能否胜过运行在 PHP 和 Apache / Nginx 上面的 WordPress 页面？

这是一个有趣的问题，因为 Ghost 具有操作工具单一且一致的优点——无需额外的封装，而 WordPress 需要依赖 Apache / Nginx 和 PHP 之间的集成，这可能会导致显著的性能缺陷。

除此之外，PHP 距 Node.js 之间还有一个显著的性能落差，后者更佳，我将在下面简要介绍一下，可能会出现一些与初衷大相径庭的结果。

#### PHP 与 Node.js 的对决

为了比较 WordPress 和 Ghost，我们必须首先考虑一个影响到两者的基本组件。

基本上，WordPress 是一个基于 PHP 的 CMS，而 Ghost 是基于 Node.js（JavaScript）的。与 PHP 不同，Node.js 有以下优点：

* 非阻塞的 I/O
* 事件驱动
* 更新颖、更少的残旧代码

由于有大量的测评文章解释和演示了 Node.js 的原始速度超过 PHP（包括 PHP 7），我不会再进一步阐述这个主题，请你自行用谷歌搜索相关内容。

因此，考虑到 Node.js 的性能优于 PHP，一个 Node.js 的网站的速度要比 Apache / Nginx 和 PHP 的网站快吗？

#### WordPress 和 Ghost 对决

当比较 WordPress 和 Ghost 时，有些人会说这就像比较苹果和橘子，大多数情况下我同意这个观点，因为 WordPress 是一个完全成熟的 CMS，而 Ghost 基本上只是一个博客平台。

然而，两者仍然有共同竞争的市场，这两者都可以用于向世界发布你的个人文章。

制定一个前提，我们怎么比较两个完全基于不同的代码来运行的平台，包括风格主题和核心功能。

事实上，一个科学的实验测试条件是很难设计的。然而，在这个测试中我对更接近生活的情景更感兴趣，所以 WordPress 和 Ghost 都将保留其主题。因此，这里的目标是使两个平台的网页大小尽可能相似，让 PHP 和 Node.js 在幕后斗智斗勇。

由于结果是根据不同的标准进行测量的，最重要的是尺度不一样，因此在图表中并排显示它们是不公平的。因此，我改为使用表：

![](/data/attachment/album/201611/30/114003k1fi187hhf38z4ia.jpg)

*Node、Nginx、Apache 以及运行 WordPress 和 Ghost 的比较。前两行是 WordPress，底部的两行是 Ghost*

正如你所见，尽管事实上 Ghost（Node.js）正在加载一个更小的页面（你可能会惊讶 1kb 可以产生这么大的差异），它仍然比同时使用 Nginx 和 Apache 的 WordPress 要慢。

此外，使用 Nginx 代理作为负载均衡器来接管每个 Node 服务器的请求实际上会提升还是降低性能？

那么，根据上面的表格，如果说它产生什么效果的话，它造成了更慢的效果——这是一个合理的结果，因为额外封装一层理所当然会使其变得更慢。当然，上面的数字也表明这点差异可以忽略不计。

但是上表中最重要的一点是，即使 Node.js 比 PHP 快，HTTP 服务器的作用也可能超过某个 web 平台使用的编程语言的重要性。

当然，另一方面，如果加载的页面更多地依赖于服务器端的脚本处理，那么我怀疑结果可能会有点不同。

最后，如果一个 web 平台真的想在这场竞赛里击败 WordPress，从这个比较中得出的结论就是，要想性能占优，必须要定制一些像 PHP-FPM 的工具，它将直接与 JavaScript 通信（而不是作为服务器来运行），因此它可以完全发挥 JavaScript 的力量来达到更好的性能。

---

via: <https://iwf1.com/apache-vs-nginx-vs-node-js-and-what-it-means-about-the-performance-of-wordpress-vs-ghost/>

作者：[Liron](https://iwf1.com/tag/linux) 译者：[OneNewLife](https://github.com/OneNewLife) 校对：[wxy](https://github.com/wxy)

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

（题图来自：[deviantart.net](http://img11.deviantart.net/4258/i/2015/230/3/0/superman_vs_thanos_by_vinroc-d967zo6.jpg)）


Linux 下五个最佳的 FPS 游戏

亮出个使命召唤出来就好了！

没有显卡支持，有再多的游戏也没用

来自江苏南京的 Chrome Mobile 54.0|Android 5.1 用户

linux：显卡支持是什么可以吃吗<br />
linux自带全部显卡驱动啊

5款里3款是V社的<br />
可以，可以

看看 linux 发行版本各自为政，桌面环境混乱不堪，无法像 windows 或 macOS 那样高度统一。目前看来是不适合作为游戏软件的 OS 的。必须制定一个标准，至少有一个统一的框架吧，像 Sony PS 那样。最好制作一些类似于 PSP 的游戏，尽量不要吃电脑的显卡，动不动就要4G8G太TM吓人了。这哪是玩游戏，这是游戏玩儿人！

我读书少你表骗我

你還在用XP

都在玩儿,很不错,steam上也便宜

都没玩过。<br />
顺便再次推荐一下这个网站：http://www.penguspy.com/

经常在steam　linux上玩，可以

战争雷霆

![best FPS games for linux](/data/attachment/album/201612/01/081405o00a36343738y638.jpg)

开源用户久经游戏界的冷落与疏忽，他们给别的操作系统大量生产游戏，却没有几个在 Linux 上可以玩的。要在 Linux 上玩到画质好的 Linux 游戏大作，解决方案就是 [wine](https://www.winehq.org/)，但 wine 在开箱即用方面做的并不好。大多数画质一般的小游戏的制作者通常并不考虑为 Linux 开发或移植游戏，因为 Linux 的用户群体太小了。

如今，Linux 的用户规模和范畴日益增多，而且你也看到了非开源的组织也[表达了他们对开源的支持](http://www.theverge.com/2016/9/15/12926288/microsoft-really-does-love-linux)。

我们应该对 Linux 游戏抱有期望吗？现在有能在 Linux 系统上运行的大作吗？可以在网上与其他操作系统的用户玩吗？这些问题的答案是响亮的 YES.

让我给你介绍一下 Linux 系统上的 5 个最好的 FPS 游戏（第一人称射击游戏）。想玩这些游戏并不太麻烦，你可以安装任何一种 Linux 系统。我们选择了五个最好的，你可以看看：

### **1、<ruby>   CS - 反恐精英：全球攻势  <rp>  （ </rp> <rt>  Counter-Strike: Global Offensive  </rt> <rp>  ） </rp></ruby>**

这个多人的第一人称射击游戏是 Hidden Patch 与 Valve 公司开发的游戏，它发布于 2012 年 8 月 21 日，但到 2014 年 9 月份才为 Linux 用户推出 Linux 移植版。

这款游戏本来是为游戏<ruby> 半条命 <rp>  （ </rp> <rt>  Half-Life </rt> <rp>  ） </rp></ruby>所开发的游戏 MOD。

![counter strike for linux](/data/attachment/album/201612/01/081406s4fmlqaznf83n324.jpg)

这款跨平台游戏只支持 Windows、MacOS 和 Linux 用户，电视游戏机用户因为主机游戏更新速度太慢而不支持。这款 Linux 游戏包含四种游戏模式。

#### CS 游戏模式

**经典：竞技模式**

这是让 CS （反恐精英）出名的最有名的游戏模式，五对五，一场三十局。可以加入你同伴的队伍，也可以排队加入随机队伍的空位。

![counter strike classic competitive](/data/attachment/album/201612/01/081406sxdq82js2xkpt8qk.jpg)

**经典：休闲模式**

如果玩家不想玩之前的 30 局 16 胜模式，可以选择休闲模式，找个对手按自己的节奏打。系统会自动给玩家穿上防弹衣，也提供防御炸弹用的工具包。成功射杀敌人还有额外奖励。

**爆破模式**

爆破模式是一个快节奏的游戏模式，游戏中玩家轮流保卫一个炸弹点，防御带有起始武器装备的攻击者。这个模式里，如果你在当前局成功射杀敌人，就会在下一局获得更强的武器，最终你会获得一把强大的狙击步枪。

**军备竞赛模式**

这个模式是一种武器升级模式，玩家通过击杀敌人来得到一把升级过的武器。当你取得武器列表中最先进的武器时，你将得到一把金匕首并赢得胜利。

#### CS 的配置要求

* **系统：** Ubuntu 12.04
* **处理器：** 64-bit 英特尔双核，或 AMD 2.8 GHz 处理器
* **内存：** 4 GB
* **显卡：** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310、AMD 12.11)、 OpenGL 2.1
* **硬盘：** 至少 15 GB 的空间
* **声卡：** OpenAL 兼容声卡

### **2、<ruby>   无主之地 2  <rp>  （ </rp> <rt>  Borderlands 2 </rt> <rp>  ） </rp></ruby>**

![borderlands 2](/data/attachment/album/201612/01/081407glppiz91dzygpl2p.jpg)

无主之地是综合了第一人称射击游戏和角色扮演游戏的角色扮演射击游戏，是 Gearbox（一个独立游戏开发组）制作的。

这个游戏中，四名玩家组成寻宝猎人队伍，做各种主线与支线任务找到潘多拉星球上的”传说宝库“。玩家可以在游戏里到网上与其他玩家组队。这个游戏于 2012 年 9 月 18 日正式出售。游戏采用虚幻引擎 3 和 PhysX Technology 开发。

#### 无主之地 2 游戏情节

这款游戏的游戏情节主要是完成主线任务和搜刮战利品（武器、盾、服饰等等）。游戏里有四种角色，每个角色有不同的技能和操作风格。

* **突击兵（Axton）** – 可以召唤“军刀炮塔“提供攻击性辅助角色；
* **魔女（Maya）** – 可以用一个能量球将敌人暂时固定在一处；
* **刺客（Zer0）** – 可以在短时间内进入隐身状态，并制造全息假象来迷惑敌人；
* **狂枪手（Salvador）** – 可以暂时手持两把武器，比如拿一对火箭筒指向敌人;

| ![Axton “The Commando”](/data/attachment/album/201612/01/081407mpp4td32b294tyq2.jpg)

*Axton “突击兵”*

![Zero”The Assassin”](/data/attachment/album/201612/01/081408tsxj98l4dzz388l4.jpg)

*Zero “刺客”*

![Maya “The Siren”](/data/attachment/album/201612/01/081409yfjflhmmhag1azkx.jpg)

*Maya “魔女”*

![Salvador ](/data/attachment/album/201612/01/081409dpcge27gonojtayp.jpg)

*Salvador “狂枪手”*

这款游戏受到评论家的好评。根据游戏的趣味性、游戏世界的构造，还有 RPG 系统，IGN 给这个游戏的评分是 9/10。

#### 无主之地 2 配置要求

* **系统：** SteamOS、Ubuntu 14.04
* **处理器：** 英特尔双核、AMD Phenom II X4
* **处理器速度：** 2.4GHz
* **内存：** 4 GB
* **硬盘：** 13 GB
* **显卡 (NVidia)：** Geforce 260
* **显卡 (VRam)：** 1GB

无主之地 2 Linux 版目前不支持英特尔集成显卡芯片组和 ATI 芯片组。

### **3、<ruby>   军团要塞  <rp>  （ </rp> <rt>  Team Fortress </rt> <rp>  ） </rp></ruby>**

![team fortress 2](/data/attachment/album/201612/01/081410kij686k5dwd9z946.jpg)

这款游戏是有史以来最受欢迎，且评分最高的游戏之一，而且它是免费的。这是 [Valve 公司](http://www.valvesoftware.com/) 制作与发售的一款第一人称在线多玩家射击游戏。这款游戏经常更新，mod、地图，还有装备也常更新。游戏的玩家也可以参与游戏更新的内容设计。游戏于 2013 年 2 月 14 日移植到 Linux 系统。

游戏中，玩家可以加入不同队伍，选择不同角色参与各种游戏模式（包括情报战模式和山丘之王模式）。

#### 军团要塞 2 游戏情节

游戏的故事背景中，两个队伍由两方招的雇佣兵组成，目的是保护其中一方的资产，并销毁另一方的公司资产。两个队伍名字分别代表两方的公司 - RED（保证开挖爆破，即红队）和 BLU（建筑联合同盟，即蓝队）。你可以从九名各有优势和劣势的角色挑选自己喜欢的来玩。

#### 军团要塞 2 游戏模式

**情报战模式**

这个模式的目的是获取一个装有情报的公文包并回到你的大本营，而要防止敌人将公文包成功带回他们的大本营。拿着公文包的玩家可以随时丢掉公文包，或者在被杀的时候掉落。如果在两分钟之内没有别人捡起公文包，公文包就会回到起点。

时间到的时候，分数最高的队伍获胜。

![team fortress 2 capture flag](/data/attachment/album/201612/01/081410rrnf3fdfs8m5my5y.jpg)

**推车模式**

在这个游戏模式中，地图上只有一个公文包，所以双方需要强盗公文包运送到指定地点。只有同一个队伍的人可以拿公文包，直到成功运到指定地点，或者掉落倒计时结束时公文包回到起始点。

![team fortress special delivery](/data/attachment/album/201612/01/081411u4r4z060xg0elg8k.jpg)

**山丘之王**

这个游戏模式的目的是控制地图中心点，并坚持保卫一段时间。

游戏开始时，玩家无法进入守卫点，直到某方达到了进入守卫点的分数，封锁才会被解除。占领控制点的时候，游戏会开始守卫倒计时，这时对方玩家需要夺得控制权，开始他们的守卫倒计时。当某方队伍的倒计时表达到 00:00 的时候，游戏结束，占领控制点的队伍获胜。

![team fortress king of the hill](/data/attachment/album/201612/01/081411tc874wgzpdzbgh4z.jpg)

#### 军团要塞 2 配置要求

* **系统：** Ubuntu 12.04
* **处理器：** 英特尔双核或 AMD 2.8 GHz
* **内存：** 1 GB RAM **显卡：** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310、 AMD 12.11)、OpenGL 2.1
* **网络：** 互联网连接
* **硬盘：** 15 GB 可用空间
* **声卡：** OpenAL 兼容声卡
* **其他：** 鼠标，键盘

### **4、<ruby>   地铁 2033 重制版  <rp>  （ </rp> <rt>  Metro 2033 redux </rt> <rp>  ） </rp></ruby>**

地铁 2033 重制版由 4A 游戏工作室开发、THQ 发售。玩家以 Artyom 的角色在核战后莫斯科的废墟中生存，他需要打败一群被称为“DARKENS”的邪恶突变体。

![metro 2033 redux](/data/attachment/album/201612/01/081412fnfdejiwfj5kql45.jpg)

有时游戏里的人类也是敌人，所以为了防止被抓住，游戏种玩家应该多用隐形术并悄无声息地干掉敌人。

地铁 2033 受到诸多评论家的好评，其中 IGN 给的评分是 6.9/10。

#### 地铁 2033 游戏情节

游戏主要发生在莫斯科地铁中，有个别任务设在在地面上的核辐射废墟中。游戏是单人游戏，玩家需要看游戏场景片得悉重要情节。

游戏里玩家可以使用传统武器（左轮手枪、猎枪）。玩家需要搜查废墟或尸体获得子弹。

敌人分两类，一类是人，另一类是突变体。人攻击玩家的时候会躲避玩家攻击，而突变体会正面攻击，企图咬伤玩家。

玩家大部分时间都待在黑暗的隧道里，需要手电筒照亮路线。在地面上的时候，玩家需要防毒面具，而这个防毒面具有可能在战斗种受到损害，这样玩家就不得不再去寻找一个新的防毒面具。

#### 地铁 2033 配置要求

**最低配置**

* **系统：** 64-bit Ubuntu 12.04 或 14.04 或 Steam OS
* **处理器：** 英特尔 i5 2.7 GHz (或同等的 AMD)
* **内存：** 4 GB RAM
* **显卡：** NVIDIA Geforce 460 / AMD 5850 加 2GB VRAM
* **硬盘：** 10 GB 可用空间
* **其他：** 因为用 OpenGL 4, 游戏不支持英特尔集成显卡

**推荐配置**

* **系统：** 64-bit Ubuntu 12.04 or 14.04 or Steam OS
* **处理器：** Intel Core i7 2.5 Ghz (or equivalent AMD)
* **内存：** 8 GB RAM
* **显卡：** NVIDIA Geforce 680 / AMD 7870 with 2GB VRAM+
* **硬盘：** 10 GB 可用空间
* **其他：** 因为用OpenGL 4, 游戏不支持英特尔集成显卡

### **5、<ruby>   求生之路 2  <rp>  （ </rp> <rt>  Left 4 Dead 2 </rt> <rp>  ） </rp></ruby>**

这是 Valve 公司制作与发售的多人协作 FPS，于 2013 年 7 月发行 Linux 版本。

![left 4 dead 2](/data/attachment/album/201612/01/081413b8u5ud0j188jr91u.jpg)

游戏有四名幸存者供玩家选择，需要打败僵尸，即感染者。这些感染者会因为严重的精神病而极具攻击性。游戏软件里的 AI 会按照玩家的水平而提升游戏难度，使游戏更有挑战性。

#### 求生之路 2 游戏情节

这个游戏里共有五个章节，其中每个章节分三到五个级别。每个章节在菜单里和加载屏幕中以电影形式出现，电影主人公是四名幸存者。

![left 4 dead 2](/data/attachment/album/201612/01/081414og3m5hi3nmuigamk.jpg)

玩家可以看到队伍同伴的生命状况，同时也要注意射击或挥舞武器时不要误伤到同伴。

#### 游戏模式

求生之路 2 总共有 5 种游戏模式：

**战役模式**

四名玩家组成队伍，共同完成故事章节。游戏中遇到的其他幸存者都是 CPU 控制的 NPC。

**单人模式**

和战役模式相近，但队友都是 CPU 控制的 NPC。

**对抗模式**

四名操控幸存者的玩家对抗四名操控特殊感染者的玩家。每一局双方玩家都会调换角色，按幸存者局里面队伍所获得的分数计算积分。

**生存模式**

玩家会被封在某个章节地图中的一个区，游戏开始时画面会出一个计时器。玩家会按照地图里的生存时间得分，坚持的时间越长，得分越高。

**清道夫模式**

玩家分成两组，4 对 4，一组幸存者，一组感染者。幸存者需要收集大量的油桶，并装满一个发电机里，而感染者则要防止幸存者成功完成任务。

#### 求生之路 2 配置要求

* **系统：** Ubuntu 12.04
* **处理器：** 英特尔双核或 AMD 2.8 GHz
* **内存：** 2 GB RAM
* **显卡：** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (显卡: nVidia 310、 AMD 12.11)、 OpenGL 2.1
* **硬盘：** 13 GB 可用空间
* **声卡：** OpenAL 兼容声卡

### 总结

这些年来，Linux 已经日益受到游戏厂家们的重视，在游戏界不像以前那么受到冷落。如今的 Linux 已不像昔日，以前，别的操作系统的用户笼统的概括说“Linux 只能供程序员编程“，但如今的 Linux 已经不同了。

现在，你已经不需要双系统来打游戏，虽然现在的选择暂时不多，但天天都会增加。在这五个游戏中，你最喜欢那一部？在下方的评论里告诉我们吧。

---

via: <http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux>

作者：[Mohd Sohail](http://www.linuxandubuntu.com/contact-us.html) 译者：[jayjay823](https://github.com/jayjay823) 校对：[wxy](https://github.com/wxy)

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


Livepatch —— 免重启给 Ubuntu Linux 内核打关键性安全补丁

Fedora 说明已经支持更新内核不重启，但实际上每次更新，依然要重启才能生效。

应该是更新内核补丁不需要重启吧

UBUNTU很多东西早就不是自由开源的啦

我就关心Debian Gnu/Linux什么时候能支持在线kernelPATH.哈哈

感觉ubuntu 太a花哨了，改用arch了，在等arch中的 方案

不不，用 uname --kernel-release 看版本号没变。

![](/data/attachment/album/201612/01/103248f6kpmxoko1mfi6yw.png)

如果你是一个在企业环境中维护关键性系统的系统管理员，你肯定对以下两件事深有感触：

1) 很难找个停机时间去给系统安装安全补丁以修复内核或者系统漏洞 。如果你工作的公司或者企业没有适当的安全策略，运营管理可能最终会优先保证系统的运行而不是解决系统漏洞。 此外，内部的官僚作风也可能延迟批准停机时间。我当时就是这样的。

2) 有时候你确实负担不起停机造成的损失，并且还要做好用别的什么方法减小恶意攻击带来的的风险的准备。

好消息是 Canonical 公司最近针对 Ubuntu 16.04 (64位版本 / 4.4.x 内核)　发布了 Livepatch 服务，它可以让你不用重启就能给内核打关键性安全补丁。 对，你没看错：使用 Livepatch 你不用重启就能使 Ubuntu 16.04 服务器系统的安全补丁生效。

### 注册 Ubuntu Livepatch 账号

要运行 Canonical Livepatch 服务你先要在这里注册一个账号 <https://auth.livepatch.canonical.com/>，并且表明你是一个普通用户还是企业用户（付费）。 通过使用令牌，所有的 Ubuntu 用户都能将最多 3 台不同的电脑连接到 Livepatch 服务：

![Canonical Livepatch Service](/data/attachment/album/201612/01/103304x2y6zxlkk5ylm6l2.png)

*Canonical Livepatch 服务*

下一步系统会提示你输入你的 Ubuntu One 凭据，或者你也可以注册一个新账号。如果你选择后者，则需要你确认你的邮件地址才能完成注册：

![Ubuntu One Confirmation Mail](/data/attachment/album/201612/01/103305fcbbrtj6tttlbtmz.png)

*Ubuntu One 确认邮件*

一旦你点了上面的链接确认了你的邮件地址，你就会回到这个界面：<https://auth.livepatch.canonical.com/> 并获取你的 Livepatch 令牌。

### 获取并使用 Livepatch 令牌

首先把分配给你账号的这个唯一的令牌复制下来：

![Canonical Livepatch Token](/data/attachment/album/201612/01/103305edoib4ljjhgjodij.png)

*Canonical Livepatch 令牌*

然后打开终端，输入：

```
$ sudo snap install canonical-livepatch

```

上面的命令会安装 livepatch 程序，下面的命令会为你的系统启用它。

```
$ sudo canonical-livepatch enable [YOUR TOKEN HERE]

```

如果后一条的命令提示找不到 `canonical-livepatch` ，检查一下 `/snap/bin` 是否已经添加到你的路径， 或者把你的工作目录切换到 `/snap/bin` 下执行也行。

```
$ sudo ./canonical-livepatch enable [YOUR TOKEN HERE]

```

![Install Livepatch in Ubuntu](/data/attachment/album/201612/01/103306evw4i153a89ia4an.png)

*在 Ubuntu 中安装 Livepatch*

之后，你可能需要检查应用于内核的补丁的描述和状态。幸运的是，这很简单。

```
$ sudo ./canonical-livepatch status --verbose

```

如下图所示：

![Check Livepatch Status in Ubuntu](/data/attachment/album/201612/01/103306alazeevauub688z7.png)

*检查补丁安装情况*

在你的 Ubuntu 服务器上启用了 Livepatch，你就可以在保证系统安全的同时把计划内的外的停机时间降到最低。希望 Canonical 的这个举措会在管理上给你带来便利，甚至更近一步带来提升。

如果你对这篇文章有什么疑问，欢迎在下面留言,我们会尽快回复。

---

via: <http://www.tecmint.com/livepatch-install-critical-security-patches-to-ubuntu-kernel>

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

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


开源可以用来做设计吗？

不可以，我之前就在CentOS用过gimp打开psd文件，结果发现颜色偏的厉害

如果RGB值一样，还偏色，那就是你色彩空间管理的问题。<br />
gimp打开psd最大问题是不支持图层效果的调节。

开源的[超凡和强大](https://medium.com/dawn-capital/why-leverage-the-power-of-open-source-to-build-a-successful-software-business-8aba6f665bc4#.ggmn2ojxp)毋庸置疑。从服务器到个人电脑桌面、移动设备，甚至到所谓的“物联网”，开源在各个领域遍布全球。然而有一个行业，传统的专有闭源软件解决方案依然占据主导地位，并且通常特别昂贵，这就是设计产业。在这篇文章中，我们会大致描述一些自由及开源的替代软件来抛砖引玉，看是否能代替你现在所用的设计工具集。也许你是一个刚起步的设计师，需要节省开支。也许你的经验十分丰富，只是单纯的想换一个更加“开放”的工作方式。读下去，让我们看看[自由及开源软件](https://en.wikipedia.org/wiki/Free_and_open-source_software)世界到底带来了什么！

![](/data/attachment/album/201612/02/160906fn27zhx36chb7jwl.jpg)

### 绘图

在开源世界，有几个可行且十分强大的工具，代替 Adobe 支持的主流产品。

#### GIMP

GIMP, 或者说 <ruby>   GNU 图像处理程序  <rt>  GNU Image Manipulation Program </rt></ruby> 是一个非常强大的免费开源软件，可替代 Adobe 公司的 PhotoShop 。它由一个相当强大的核心团队开发和维护，为设计创造提供强大的图片编辑工具，比如滤镜、笔刷、修饰。如果你想使用 UX/UI 库设计模型，GIMP 甚至可以处理 .PSD 文件。最后，GIMP 还可以用来做数字艺术、logo 等类似的东西。GIMP 可以免费下载并在 Linux、MacOS 和 Windows 上运行。

#### Inkscape

[Inkscape](https://inkscape.org/en/) 有一个宣传语，代表着它的核心价值观 —— “Draw Freely”，它是一个开源而自由的产品，可以替代 Adobe 公司的另一产品 —— 强大、专有而且昂贵的矢量程序 Illustrator 。Inkscape 提供了大量的设计和画图工具，易用的颜色拾取导航栏，滤镜和渐变工具，还有很多很多。如果设计师下决心使用开源软件解决方案，你可以在博客和论坛帖子上找到非常好的在线文档。和 GIMP 一样，Inkscape 也可以免费下载并可在 Linux、MacOS 和 Windows 上运行。

想从经验丰富的图形和网页设计师那里学习更多关于这些开源工具的使用知识？请在 YouTube 网站上找一下这些人：

* [Nick Saporito](https://www.youtube.com/channel/UCEQXp_fcqwPcqrzNtWJ1w9w) （Nick 有很好的资源，介绍 Inkscape 的基本特性，涵盖了图标、网站或者图形设计师日常会使用的基本功能）。
* [Irfan Prastinato](https://www.youtube.com/user/desainew) （Irfan 的亮点是使用 Inkscape 专注于现代图标的创作）。
* [Cameron Bohnstedt](https://www.youtube.com/channel/UCOfXyFkINXf_e9XNosTJZDw) （Cameron 是一个数字艺术家，由于他很专业并且有丰富的经验，开源工具（GIMP、Inkscape、Blender）的力量被真正的展示了出来。很有感染力，值得一看）。

### 网页设计与开发

要设计功能丰富、响应快速的网页和原型时，这里有几个工具 —— 有些是开源的 —— 供设计师选择。这些工具最近几年一直在持续发展，在我看来，这应该是反映出了设计发展的趋势是响应式网站设计要和我们生产的设备变化得一样快。

#### Bootstrap

在我看来，[Bootstrap](http://getbootstrap.com/) 促进了响应式设计，甚至是“移动为先”的设计实现了跳跃式的突破。Boostrap 最初由 Twitter 开发人员 Mark Otto 和 Jacob Thornton 开发，是一个完全开源、完全可定制的开发框架，利用它你可以制作出满足你的客户需求的网页。有了 Bootstrap 就有了坚实的基础， Bootstrap 4.0 目前正在进行内部测试，在稳定的 3.0 版本的基础上做了大量的底层优化，包括 CSS 预处理器从 Less 换成 Sass，一个增强的网格系统，JavaScript 插件的重构等等。

#### Gravit

另一个自由开源的矢量程序 Gravit，它受到越来越多的关注。Gravit 可以在浏览器上运行，不仅是 Adobe Illustrator 在矢量方面的一个切实可行的替代品（尽管功能不是那么丰富），也有望成为一个成熟的设计环境。不论是 logo 设计，还是移动应用、网站，任何东西你都可以拿来会进行设计。自从 Gravit 成为我在浏览器上的可选工具后，我最近一些工作就是靠它完成的，除此之外它还很强大，简洁直观。

### 一些免费但不开源的解决方案……

#### Webflow

[Webflow](https://webflow.com/) 是一个强大的全能网页设计环境，可以在浏览器上运行。Webflow 的奇妙之处是设计网页基本不需要写代码，当你设计时，它会在后台自动生成代码。我发现 Webflow 的界面十分干净清爽，非常直观。诚然，Webflow 没有开源，但是免费版支持同时设计和开发两个网页项目。

#### Froont

另一个基于浏览器的网页设计程序是 [Froont](http://froont.com/)。和 Webflow 相似, Froont 设计非常直观简洁，而且强大。利用 Froont，在任何相关设备上，你都可以高效地设计一个全新、独一无二的响应式网站。和 Webflow 一样，Froont 还允许设计师在需要的时候导出代码。

Webflow 和 Froont 除了收费计划外均有免费版，很适于一次设计一个站点，还可以将你的工作成果发布到网上，如果你选择的话。

### 文本编辑器

有一些产品供想使用自由开源编辑器的设计师和开发者选择，作为自己平常编写代码工具的替代品。

#### Atom

Atom 号称为<ruby> “   面向 21 世纪的黑客级编辑器  ” <rt>  hackable editor for the 21st Century </rt></ruby>, 它是全功能的编辑器，看起来内置了完成工作所需的所有功能 —— 比如代码自动补全、多功能视图等。它的可玩性很高，用户可以以自己喜欢的方式对 Atom 进行自定义。Atom 有自己的包管理器, 用户可以下载成千上万的软件包进一步定制 Atom，添加独一无二的功能。

### 结论

当今时代，设计师不要被昂贵臃肿的专有软件所束缚。使用一些自由开源的工具，具有开源意识的设计师有足够多的选择，为他们的客户创造漂亮、实用的设计作品。如果喜欢这篇文章就分享吧，也可以在下面评论你最喜欢的开源的设计工具！

---

via: <https://freedompenguin.com/articles/opinion/open-source-design-thing/>

作者：[Sean LeRoy](https://freedompenguin.com/author/seanleroy/) 译者：[fuowang](https://github.com/fuowang) 校对：[jasminepeng](https://github.com/jasminepeng)

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


一周开源新闻：微软更新 Skype for Linux，支持短信功能

Summary:
更多：
- Ubuntu 16.04.2 和 Ubuntu 17.04 (Zesty Zapus) 进展
- Snapd 和 Flatpack 竞赛般的推出新版本

下一个会不会是MSOffice for Linux，那其他的开源office处境就比较尴尬了，毕竟大家用MS的实在是太多

Snapd 和 Flatpack 竞赛般的推出新版本<br />
Flatpack 拼错了吧。

谢谢：》

很期待下下一代ubuntu如何命名啊

### 微软更新 Skype for Linux，支持短信功能

Skype for Linux 1.13 版本现可下载。

![](/data/attachment/album/201612/02/192644omlkybqrzn3gpprb.png)

微软近期发布 Skype 的 Linux 版本的更新，增加了一个重要功能，并修复了很多 bug。

Skype 1.13 Linux 版本仍在内部测试阶段。它引入了短信功能，Linux 用户现在可以从桌面发送短消息。这是 Skype 此版本的最重要的更新之一。

现在就可以尝试下 Skype 1.13 Linux 版本，点击这里获取 [DEB](https://www.skype.com/en/download-skype/skype-for-linux/downloading-web/?type=weblinux-deb) 或 [RPM](https://www.skype.com/en/download-skype/skype-for-linux/downloading-web/?type=weblinux-rpm) 包。

更新日志如下：

* 支持发短信
* 更新到 Electron 1.4.7
* 将远程 1 对 1 通话扩至组通话
* 崩溃报告的改进
* 增加认证令牌取消功能
* 修复 bug，提高性能

### Ubuntu 16.04.2 和 Ubuntu 17.04 (Zesty Zapus) 进展

#### Ubuntu 16.04.2 LTS 将于 2017 年 1 月 19 日发布，使用 4.8 Kernel

Canonical 的 Leann Ogasawara 表示，Ubuntu 16.04.2 LTS 将于 2017 年 1 月 19 日发布，使用 4.8 内核，这是Ubuntu 16.04 LTS (Xenial Xerus) 的第二个小版本更新。

Ubuntu 16.04 LTS (Xenial Xerus) 是一个长期支持版本, 也就是说，五年中它要不停修复安全问题和软件更新，一直到 2021 年 4 月。在此期间，操作系统共要发布五个小版本。当前，Ubuntu 16.04 LTS 和 16.04.1 LTS 使用的是 Linux 4.4 LTS 内核。

#### Ubuntu 17.04 发布时间表公布

![](/data/attachment/album/201612/02/192701k64ww0w2p6gpuiu5.png)

近期，Canonical 还公布了 Ubuntu 17.04 (Zesty Zapus) 系统的[发布时间表](https://wiki.ubuntu.com/ZestyZapus/ReleaseSchedule)。Canonical 和 Ubuntu 创始人 Mark Shuttleworth 将 Ubuntu 17.04 命名为 “Zesty Zapus”（跳鼠的意思）。该项目 10 月24 日启动。

Ubuntu 17.04 预计 2017 年 4 月 13 日发布，3 月 23 日发布最终 Beta 版，第一个 Alpha 测试版将于 2016 年 12 月 29 日发布。

Ubuntu 17.04 是一个普通版本（不是 LTS）， 也就是说，对它只支持 9 个月，到 2018 年 1 月。预计它将使用 Linux 4.10 核心，以及最新的开源应用程序和 GNU/Linux 技术。

### Snapd 和 Flatpak 竞赛般的推出新版本

### Canonical 发布 Snapd 2.18 Snappy Daemon

Snappy 团队高兴地[宣布](https://lists.snapcraft.io/archives/snapcraft/2016-November/001761.html)， snapd 2.18 于 2016年 11 月 24 日发布。

![](/data/attachment/album/201612/02/193155sedtr9j2p2m39ajp.jpg)

新版本可用于 Ubuntu Core 16 和 Ubuntu 16.10、 Ubuntu 16.04 LTS。

snapd 2.18 突出的新特性包括 `snap info < name|path >`命令，用于查看特定 Snap 包的细节。 `snap find --section=< name >` 命令, 使用不带任何参数的 `snap find` 命令可以查看特定的 snap， 并支持慢速连接下的差异下载。

#### Flatpak 0.6.14 发布

2016 年 11 月 29 日，[Flatpak 0.6.13](http://news.softpedia.com/news/flatpak-0-6-13-universal-linux-binary-format-is-a-major-update-with-new-features-509633.shtml) 发布一个多月后，Alex Larsson 宣布， 新版本已可用。

![](/data/attachment/album/201612/02/193145boih26xanc1n1fco.jpg)

Flatpak 0.6.14 是最新最先进的 Linux app 容器，意在成为跨主流 GNU/Linux 平台的应用发布的未来。 和 bubblewrap 0.1.4 捆绑, 新的 Flatpak 要求 OSTree 2016.14，这就不再需要原来的一些规避措施。


Canonical 和 Docker  公司合作在 Ubuntu 上以 Snap 格式发布 Docker 引擎

ubuntu很好用

2016 年 11 月最后一天，Canonical 和 Docker 公司宣布了一个新的商务合作意向，承诺为 Ubuntu Linux 提供[商业版 Docker 引擎](https://www.docker.com/products/docker-engine)的企业级支持和 SLA。

![](/data/attachment/album/201612/02/201853v1nh1sg1tiepz46q.jpg)

这两家公司将在 Ubuntu 平台上集成商业版 Docker 引擎，这样 Canonical 就可以一体化为其客户提供商业版 Docker 引擎和 Ubuntu Linux 系统的支持。

“通过我们的合作，将商业版 Docker 引擎带到了庞大的 Ubuntu 社区， 在敏捷性、移植性和安全性方面为用户提供了更多选择。”Docker 的商业发展和技术联盟副总裁 Nick Stinemates 说。

### Ubuntu 的客户现在可以受益于 Docker 的官方支持

Docker 和 Canonical 之间的新合作将使 Ubuntu 客户得到 Docker 的官方支持，而目前其他的 Linux 发行版尚无此支持。因此， Docker 公司将会以 Snap 格式发布和维护新版本的商业版 Docker 引擎。

这些 Docker 维护的 Snap 软件包将由 Docker 公司推送回上游，Ubuntu 16.04 LTS 及其它支持 Snap 的 Linux 系统将可以直接访问由官方构建的 Docker 应用容器。

“在可伸缩容器运营方面，Ubuntu 和 Docker 的组合很流行，这次的合作意向将使我们的用户可以在商业版 Docker 引擎的 DevOps 产品化方面开辟一条更快、更容易的发展道路。”Canonical 的云联盟和商业发展副总裁 John Zannos 说。

据 Canonical 和 Docker 称，Ubuntu 在以容器为中心的 DevOps 平台环境中非常流行，所以在加快和保持维护 Docker 版本发布的需求方面日益增加。最新的 Snap 技术为 Ubuntu 上的新发布 Docker 软件提供了额外的安全保护。


起步的好选择：安装 Xubuntu 16.10 完全指南

Summary: Xubuntu 一直是我最喜欢的发行版之一。与其它的 Linux 发行版相比，它的外观看起来不那么迷人，它当然也不会把你需要的软件全部预装上。Xubuntu 能够给你的就是一个良好的起点。

看样子好多人都不喜欢ubnutu的GNOME软件中心

xfce真的是非常优秀的桌面，用起来效率非常高。

我觉得windows10子系统ubuntu14.04用着还算顺手，windows现在越来越想苹果靠拢了，也看出苹果当初多么有眼光。

getting things ready这是新机首次开机OOBE才有的东西，我也没见得安装ubuntu的时候卡在flash这段你们抱怨什么，我反正是很无语，一个flash能卡安装1个小时，所以每次我都不选联网安装<br />
至少微软在中国的服务器我是全速的

那就别用firefox了，或者卸载flashplugin-installer再直接去下官方版flash再手动替换

regular releases 和 LTS releases ，这两个版本有什么区别？各有什么特点？

xubuntu是我很长时间的首选，但稳定性越来越令人不满，现在已经用debian了。

LTS 无非就是支持期长罢了

还有能在win下安装的版本吗？

regular releases  是过期后不再支持了，还是过期后需要升级到新版本？<br />
 LTS releases 是在有效期内一直不升级，只打补丁吗？

所有版本都是过期后不发表补丁了——至于你说升级还是继续用，看你自己。

LTS 版本只是支持期长罢了。

无论是那种，你都可以升级的。升级后就是按照新的版本的支持期来维护了。

### 简介

![](/data/attachment/album/201612/02/235129fzp4bd8jua8e772v.png)

Xubuntu 一直是我最喜欢的发行版之一。与其它的 Linux 发行版相比，它的外观看起来不那么迷人，它当然也不会把你需要的软件全部预装上。

Xubuntu 能够给你的就是一个良好的起点。

如果你是那种喜欢定制桌面和外观的人，那么 XFCE 绝对是适合于这种的最好的桌面环境。如果你的系统资源不足，或想让桌面漂亮舒服， XFCE 还是一个很棒的选择。

Xubuntu 之所以成领先于其它 Linux 发行版，就是因为它默认安装 XFCE 桌面。

毫无疑问，在硬件兼容性、易用性、稳定性、易于安装，以及拥有一个大型社区等方面，Ubuntu 是很难被超越的。Xubuntu 是 Ubuntu Linux 发行版的官方流派，因此你可以拥有所有 Ubuntu 的优点，除了用 XFCE 桌面代替 Unity 桌面。

你可以选择性的安装应用到你的发行版上，而不是像其它发行版那样预装了一堆你不需要的应用。Xubuntu 只附带了一些必须的应用，在这么小的核心之外的应用要靠你自己去找并安装。

对我来说，以上就是我为什么认为 Xubuntu 是最棒的发行版的原因。从简单的基本安装开始，然后按照你要的去定制就好了。

### 如何获得 Xubuntu

你可以访问 Xubuntu 的官网：<http://xubuntu.org/>。

![](/data/attachment/album/201612/03/133636hllydhhurq854hlw.png)

你可以在这里 <http://xubuntu.org/getxubuntu/> 找到下载页。

它有两个版本，大多数人会选择长期支持版本（LTS），除非你希望每六个月更新一次系统。而另一个版本是我今天要讲的，它就是 16.10 版。

你既可以选择一个种子文件来下载 ISO，也可以访问它的镜像源下载。

![](/data/attachment/album/201612/03/133704ybkkk9p3v7zkfjfx.png)

如果你选择在镜像源中下载，你需要点击合适的 ISO 文件。比如 64 位的选择 amd-64.iso 文件，而 32 位的选择 i386.iso。

有很多教程，可以教你怎么创建一个 Linux 启动 U 盘：

* [这是一个如何在 Ubuntu 下创建的教程，同样适用于 Xubuntu](http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm#step2)
* [你也可以试试这份针对 Xubuntu 的教程](http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xubuntu-Linux-USB-Drive.htm)
* [或者你也可以试试这个](http://www.everydaylinuxuser.com/2015/11/how-to-create-ubuntu-1510-usb-drive.html)

如果这些你都觉得太复杂，你可以 [从这买一个](https://www.osdisc.com/products/xubuntu?affiliate=everydaylinuxuser)。

### 安装

![](/data/attachment/album/201612/03/133732yips76z17klqpzk1.png)

像 Ubuntu 其它版本一样，安装 Xubuntu 相当直白。如果你曾经装过一个版本，那么基本上你可以安装任何一个版本。

开始时选择你的安装语言。

![](/data/attachment/album/201612/03/133756p9xbnahn44x96z1n.png)

你会被问到，是否需要同时安装更新，是否要安装第三方软件，包括播放音乐的软件和专有驱动。想要完成这些，你需要联网。

再次，这也很直白，我们会在之后再次涉及到这些。

![](/data/attachment/album/201612/03/133818yognxo0sexkxwyrx.png)

如果你有一个备用的未分配的磁盘分区和并且安装了 Windows，您将看到可以选择在已有 Windows 的情况下安装 Xubuntu 并设置双启动。

您也可以选择安装 Xubuntu 作为唯一的操作系统，还可以选择别的任何你喜欢的分区来安装。

![](/data/attachment/album/201612/03/133842y4ph748f22dmh08h.png)

下一步是设置你所在的区域以确定你的时区。

![](/data/attachment/album/201612/03/133904d3k1qhb3lyzleygk.png)

接下来两步是选择语言和键盘设置，以确定键盘模式。

![](/data/attachment/album/201612/03/133925l2y218cgyxs4vwr4.png)

最后创建一个默认账户，输入你的名字、你计算机的名字、设置用户名和密码。

Xubuntu 将会被安装在你的电脑上了，你可以继续往下看了。

### 第一印象

![](/data/attachment/album/201612/03/133948lsx6vcl6axqbdxlx.png)

Xubuntu 的初始界面只有一个面板位于蓝色桌面的顶部。通过桌面上的图标，你可以看到所有可用的驱动器。

画面的顶部是个简单的面板。

面板的左侧角落有一个单独的图标（老鼠的样子），点击它后会出现一个时尚而轻量，但功能全面的菜单，它被称为 Whisker（胡须）菜单。

在右上角有着通知、电源、蓝牙、网络、音量和时钟的图标。

### 连接互联网

![](/data/attachment/album/201612/03/134012mjgu8f58irg0yu03.png)

你可以通过点击面板上的网络图标来连接互联网。一个无线网络的列表将会出现，你可以选择一个点击，并键入密码，就可以连接了。

我是在我的联想 Ideapad Y700 上安装 Xubuntu 的，这个本子很现代，其上运行的许多发行版在无线网络连接时会有些小问题，我不得不找些规避问题的方法。

但 Xubuntu 16.10 工作的很好，不需要做任何修改。

### 驱动

![](/data/attachment/album/201612/03/134050nu0yc4qx4y4wc00e.png)

为你的电脑寻找可用的附加驱动是十分必要的。

虽然默认的开源驱动是基本够用的，但是如果你有着较好的显卡，并且想获得更好的图形体验，那就十分有必要去寻找专有驱动。

打开菜单，搜索附加驱动，你可以找到附加驱动设置界面。

如果看到你的显卡驱动，但是它不工作，那么我还是建议你用默认的显卡驱动。

### 打印

![](/data/attachment/album/201612/03/134117huqunayi4yz1l84a.png)

我有一个爱普生 WF-2630 无线打印机。 Xubuntu 能够直接找到这台打印机，并安装相关驱动。

我打印了测试页，发现它的输出非常合适。

### 网络存储

![](/data/attachment/album/201612/03/134217ahpnjjchxphg9lgp.png)

我有一个跨无线网络连接的 WD MyCloud 存储设备。

可以通过默认的文件管理器 Thunar 来访问这个设备。值得注意的是，我在网络设备中找到了 WD MyCloud 设备，但是点击它时显示错误。

但是我打开 Windows 网络文件夹时，WD MyCloud 也显示出来了，而且我也能正常访问该设备上的文件夹。

### 软件

![](/data/attachment/album/201612/03/134252sf71n1c127zzcvf2.png)

我在文章开始时提到了，Xubuntu 配备了最少的应用集，不过它包含了你开始所需要的所有应用。

火狐浏览器是它的默认浏览器，Thunderbird 是默认的邮件客户端。

![](/data/attachment/album/201612/03/134547vout1em1avsoslsm.png)

你也有一个全套的 LibreOffice 套件和 Parole 媒体播放器。

它也有一系列工具，比如图片查看器、计算器、光盘刻录工具，还有一个 BT 下载器。

![](/data/attachment/album/201612/03/134654acq6ko6e55ucwsoq.png)

我很高兴，现在在大多数发行版上，Abiword 和 Gnumeric 都被忽略掉了，因为它们实在无关紧要。大多数人们最终会安装 Libreoffice 的。

缺乏专门的音频播放器这点比较奇怪。另外我需要提到的是我通常最终会安装谷歌的 Chrome 浏览器，而不是使用Firefox。

本节的第一个图片说明了原因。这张图片里，我试图观看 Google Play 商店的 “Curb Your Enthusiam” 视频，可惜的是各种 DRM 和其它一些问题导致了视频无法播放。

从谷歌网站上一个简单的下载就可以解决问题。如下所示。

![](/data/attachment/album/201612/03/134807ppsg5sppyxyyp3p3.png)

### 安装软件

![](/data/attachment/album/201612/03/134855f8japppntnj8ezie.png)

在 Ubuntu 16.04 以后的发行版上普遍存在的一个主要问题是有些程序无法在图形安装软件中安装。

比如在软件管理器中找不到 Steam。

![](/data/attachment/album/201612/03/134943bq25e2msa3zefzm2.png)

如果你使用命令行输入 `sudo apt-cache search steam` 你会发现有这个软件。

![](/data/attachment/album/201612/03/135016rd6sp6f4s8fh4srr.png)

并不是只有 Steam 被遗漏了，其它软件比如 Skype 同样不能在图形软件管理工具中找到。

我真希望这个问题已经在所有 Ubuntu 发行版中解决了。

我最近还试用了 Kubuntu 16.04 ，发现它的叫做 Discover 的软件工具完全无用，搜索根本不工作。

幸运的是，Xubuntu 上的软件管理器可以安装大多数软件包，我利用它搜寻并装上了 Quod Libet 音乐播放器。

![](/data/attachment/album/201612/03/135053imjsd9b7rqe8ddd9.png)

![](/data/attachment/album/201612/03/135123xoktjknlnytrnjtg.png)

顺便说一下，如果你在安装 Xubuntu 时选择了同时安装解码器，那么 MP3 播放也不会出现任何问题。

如果没有安装，那么你需要打开终端模拟器，安装 Xubuntu Restricted Extras 包。

### 个性化 Xubuntu

![](/data/attachment/album/201612/03/135204ghga3o0mhk0h38mk.png)

在这方面你可以做很多事来定制 Xubuntu， [参见这里](http://linux.about.com/od/howtos/ss/Customise-The-XFCE-Desktop-Environment.htm)。

Xubuntu 提供一整套漂亮的壁纸，如上图所示，你要做的第一件事就是选一个好看的壁纸并添加一个 Dock 风格的面板，里面含所有你喜欢的软件的启动器。

![](/data/attachment/album/201612/03/135312ikt2mt2jmdk8dam0.png)

Xubuntu 有一个相对较新的特性就是 XFDashboard 。它带来了与 Gnome 桌面类似的 Dash 面板。你可以在上面添加启动器和能够让应用快速启动的键盘快捷键。

![](/data/attachment/album/201612/03/135401mw4nnr4m8v9nn4hg.png)

此图展示了一个快速选择不同工作区和启动应用的好方法。

说老实话，当谈到个性化 Xubuntu 时，有一种世界尽在我掌中的感觉。

![](/data/attachment/album/201612/03/135435gbz9t2qtt49gtq69.png)

### 问题

我在使用 Xubuntu （包括所有基于 Ubuntu 的发行版）时感受到的最大问题就是应用商店里面找不到一些重要的应用。为啥没有 Steam ？

在 Xubuntu 安装时收到一个崩溃的错误，如下图所示。

![](/data/attachment/album/201612/03/135458tl5fr9e9f6lffrfg.png)

我没有搞明白这个问题是怎么回事，因为它没有带来任何副作用。安装工作也没有出岔子。

### 总结

我不对 Xubuntu 点评更多，并不是因为我不喜欢它。事实上我是 Xubuntu 的大粉丝，并且我在另一个电脑上有一个它的深度定制版。

我使用电脑时，我希望了解发生了什么，没有比看到下面这种情况更让人恼火的了。

![](/data/attachment/album/201612/03/135558csgkswr6lcgqhsfz.jpg)

认真的说，为啥会有人认为 windows 适合工作？似乎每隔一就会看到消息 “正在安装(1/285)” ，于是当它自己更新时，你就失去了一个小时。而 Xubuntu（和其它发行版一样）更新不会打断你每天的工作。

事实是，Xubuntu 真的没有什么需要改变的，它可靠、稳定、不需要改变什么（除了软件管理器）。

我非常推荐 Xubuntu。

此外，我还得说去试一试 Peppermint OS、Linux Mint XFCE 或者 Manjaro XFCE 也是十分值得的。

---

via: <http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html>

作者：[Gary Newell](http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html) 译者：[chao-zhi](https://github.com/chao-zhi) 校对：[jasminepeng](https://github.com/jasminepeng)

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


安卓编年史（11）：The Nexus One——迎来 Google Phone

![](/data/attachment/album/201612/03/224922jdhdkdtjghgpgos7.jpg)

![重新设计的拨号和联系人页面。](/data/attachment/album/201612/03/224959utqx1d2g4z0tgvdz.png)

*重新设计的拨号和联系人页面。 [Ron Amadeo 供图]*

联系人/拨号应用程序的圆角标签拥有了更清晰、更成熟的外观设计。拨号器更名为“电话”，并且拨号按键从圆形改为了圆角矩形。语音邮件、拨号、以及删除按键被放置在底部。这个界面是安卓在 3.0 之前缺乏设计一致性的一个很好的例子。仅仅在这个界面上，标签用的是直角矩形，拨号按键使用圆角矩形，底部按键两侧合起来是个完整的圆。这里就像是个 UI 控件的摸奖袋，没有人尝试过让它们之间相互搭配。

安卓 2.0 的一个新特性是“快速拨号”，它将联系人以略缩图的形式添加到整个系统。从其它应用中点击它们可以打开一个联系这个人的快捷方式列表。这在联系人里并没有多大意义，但像在 Google Talk 中，能够通过点击某人的略缩图来给他拨号是十分方便的。

![](/data/attachment/album/201612/03/225004v6a5u2txcetttzay.png)

*[Ron Amadeo 供图]*

安卓 2.0 终于配备了接通和拒绝来电所需要的所有屏幕按键，而不再需要实体按钮，Droid 从中获益，从它的设计中除去了在现在看来是多余的按钮。安卓对于接通和拒绝来电的解决方案是这些左滑和右滑的标签。他们的工作方式就像是滑动解锁（后来被用到了滑动解锁中）——向右滑动绿色按钮接通来电，向左滑动红色按钮则是拒绝。一旦进入通话中，它看起来就很像安卓 1.6 了。所有选项还是隐藏在菜单按钮之中。

某人在设计拨号界面的时候一定在煲电话粥。他们只是去掉了“拨号盘”上字母的粗体，而不是从安卓 1.6 中重新绘制数字“5”的按键，然后就这么收工了。

![计算器和浏览器](/data/attachment/album/201612/03/225009wkoaodf0laalcf6o.png)

*计算器和浏览器 [Ron Amadeo 供图]*

计算器从在安卓 0.9 中被引入以来第一次得到改进。黑色玻璃球按钮换成了蓝色和黑色过渡的按钮。旧版计算器按键的按下高亮的红色边框被改为了一个比较正常的白色轮廓。

浏览器的微型网站名称栏改进为一个完整的、功能更完善的地址栏，并且带有书签按钮。为了节省屏幕空间，地址栏被附加到网页上，所以地址栏会随着页面向上滚动，给你留下更多的网页阅读空间。安卓 1.6 独特的缩放控制和附加按钮被去除，被替换为一个更简单的双击缩放手势，并且浏览器可以再次打开 arstechnica.com 而不崩溃了。这里还是没有双指捏合缩放。

![打开设置的相机，闪光灯设置，以及查看照片界面的菜单。](/data/attachment/album/201612/03/225016yo4p54n807j3u011.jpg)

*打开设置的相机，闪光灯设置，以及查看照片界面的菜单。 [Ron Amadeo 供图]*

相机应用有个布满整个左侧的抽屉式菜单，打开它有许多设置。摩托罗拉 Droid 是率先带有 LED 闪光灯的安卓手机之一，所以设置里有个闪光灯控制，以及还有像场景模式、白平衡、效果、图片尺寸和存储位置（SD 卡或内置存储）的设置。

在照片查看界面，谷歌精简了菜单按钮。和屏幕上的选项相比，它们之间不再有重复的选项。这样精简后省下的空间，使得所有的选项能够在菜单里放得下了，而不再需要一个“更多”按钮。

![电子邮件应用的“帐户”页面，新的组合收件箱，系统设置的帐户与同步页面，自动亮度设置。 ](/data/attachment/album/201612/03/225018tf1bfct5x1o5tifo.png)

*电子邮件应用的“帐户”页面，新的联合收件箱，系统设置的帐户与同步页面，自动亮度设置。 [Ron Amadeo 供图]*

电子邮件应用程序有了大的功能提升。最重要的是它终于支持了 Microsoft Exchange。安卓 2.0 版本的电子邮件中收件箱和文件夹视图终于分开了，而不是使用安卓 1.0 引入的凌乱的混合视图。电子邮件甚至有了一个统一的收件箱，可以将你不同账户的所有邮件显示到一起。

这个收件箱视图和 Gmail 一起，把普通的电子邮件应用打趴下了。联合收件箱甚至胜过了 Gmail 的功能，这是极其罕见的。尽管如此，相对于 Gmail 来说，电子邮件仍然感觉像个多余的继女。它使用了 Gmail 界面来查看邮件，这意味着收件箱和文件夹使用了黑色主题，查看邮件却奇怪地选择了亮色主题。

捆绑的 Facebook 应用程序有一个很棒的账户同步功能，它可以从社交网络上下载联系人的照片和信息，并无缝集成到联系人应用里。后来 Facebook 和谷歌分道扬镳，[谷歌取消了这一功能](http://techcrunch.com/2011/02/22/google-android-facebook-contacts/)。谷歌表示，在 Facebook 不向其共享信息的情况下，与 Facebook 分享信息并不是什么好想法，因此更好的用户体验败给了公司间的政治斗争。

（不幸的是，我们无法展示 Facebook 应用，因为它也是死在 OAuth 更新手中的客户端之一。现在不可能从像这么老旧的应用上登录了。）

最后一张图片显示了自动亮度控制，安卓 2.0 是第一个支持这一功能的版本。Droid 配备了光线传感器，点击该复选框，会使亮度滑块消失，并且允许设备自动控制屏幕亮度。

正如它的名字所暗示的那样，安卓 2.0 是谷歌有史以来最大的更新。摩托罗拉和威瑞森给安卓带来了一个外形酷炫的设备，并在广告上投入了数不清的资金。之后的一段时间里，“Droid”成为了一个家喻户晓的名字。

### The Nexus One——迎来 Google Phone

![](/data/attachment/album/201612/03/225019grdaesenew49qaaw.jpg)

2010 年 1 月，第一款 Nexus 设备发布，称为“[Nexus One](http://arstechnica.com/gadgets/2010/01/nexus-one-review/)”。对谷歌来说，这部设备是个巨大的里程碑。这是第一部由谷歌设计并冠名的设备，而且谷歌计划直接向消费者出售设备。宏达电代工的 Nexus One 拥有 1GHz 的单核高通骁龙 S1 处理器、512MB 的内存、512MB 存储空间，以及一块 3.7 英寸的 AMOLED 显示屏。

Nexus One 代表着拥有纯净的安卓体验，没有运营商的定制和应用植入。谷歌直接控制安卓的更新。这使得谷歌能够在软件完成时直接向用户进行推送， 而不是再经过运营商的许可。运营商总是拖慢这一过程，因为他们对用户已经付过钱手机并不总是那么热切地想要改善它们。

谷歌[直接在网上](http://arstechnica.com/gadgets/2010/01/googles-big-news-today-was-not-a-phone-but-a-url/)销售 Nexus One，无锁、无合约、完整零售价 529.99 美元。尽管同样的 Nexus One 在 T-Mobile 商店的合约价仅为 179.99 美元，谷歌想通过它的在线商店改变美国手机行业的运作方式。谷歌当时的想法是先挑选手机，再选择运营商，以此打破美国无线寡头对硬件的控制。

但谷歌的零售革命并没有奏效，在在线手机商店开通半年后，谷歌关闭了该服务。谷歌指出首要问题是销量低。在 2010 年，网上购物并不像今天这样司空见惯，消费者也还没有准备好在他们不能先握在自己手中试用的设备上花费 530 美元。高昂的价格也是一个制约因素；智能手机消费者更习惯于为眼前的设备花费 200 美元，并签署一项为期两年的合同。还有摩托罗拉 Droid 的因素，相比之下这部三个月前发布的设备并没有显著的不足。还由于 Droid 的庞大的营销活动和“iPhone 杀手”的炒作，它已经夺取了大多数 Nexus One 所面向的安卓发烧友市场。

尽管 Nexus One 的网上销售尝试可以被认为是失败的，谷歌还是从中学到了很多。2012 年，谷歌以 Google Play 的“设备”板块[重新推出其网上商店](http://arstechnica.com/gadgets/2012/04/unlocked-samsung-galaxy-nexus-can-now-be-purchased-from-google/)。

---

![](/data/attachment/album/201612/03/225019adddueebumers6u1.jpg)[Ron Amadeo](http://arstechnica.com/author/ronamadeo) / Ron 是 Ars Technica 的评论编缉，专注于安卓系统和谷歌产品。他总是在追寻新鲜事物，还喜欢拆解事物看看它们到底是怎么运作的。[@RonAmadeo](https://twitter.com/RonAmadeo)

---

via: <http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/11/>

译者：[alim0x](https://github.com/alim0x) 校对：[wxy](https://github.com/wxy)

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


容器和 Unikernel 能从树莓派和 Arduino 学到什么？

![](/data/attachment/album/201612/04/060501ycxczt5ho8jikotp.png)

某一天，我和我的一个机械工程师朋友聊天的时候。 他最近在做一个给半挂卡车的电子辅助刹车系统，他提到他们公司的办公室里都是 [Arduinos](https://opensource.com/resources/what-arduino)。这主要是方便员工可以快速的对新的想法进行实验。他也提到了，Arduinos 其实比自己画电路板更加昂贵。对此，我感到非常震惊，因为我从软件行业得到的印象是 Arduinos 比定制电路板更加便宜。

我常常把 [Arduinos](https://opensource.com/life/16/4/arduino-day-3-projects) 和 [树莓派](https://opensource.com/resources/what-raspberry-pi) 看做是可以制作非常有趣设备的小型、Cool、特别的组件。我主要从事于软件行业，并且总是觉得运行在 x86 和 x86-64 设备上的 Linux 才算是“常规用途”。而事实是，Arduinos 并不是特殊用途。实际上，它们是很常规的用途。它们相当的小、便宜，而且非常的灵活。这就是为什么它们像野火一样流行起来的原因。它们有全品类的输入输出设备和扩展卡。它们能让创客们快速的构建非常 Cool 的设备。它们甚至可以让公司可以快速地开发产品。

一套 Arduino 的单价比批量生产的电路板高了很多，但是，看不见的时间成本却低了很多。当电路板大规模生产的时候，价格可以控制的很低，但是，之前的研发费用却高了很多。所以，总而言之，答案就是，使用 Arduino 划得来。

### Unikernel、Rump 内核和容器主机

Unikernel、Rump 内核和迷你 Linux 发行版，这些操作系统是为了特有用途而构建的。这些特有的操作系统，某种程度上就像定制电路板。它们需要前期的投入，还需要设计，但是，当大规模部署的时候，它可以提供强大的性能。

迷你操作系统，例如：红帽企业版 Atomic 或者 CoreOS 是为了运行容器而构建的。它们很小，快速，易于在启动时配置，并且很适合于运行容器。缺点就是它需要额外的工程量来添加第三方插件，比如监控客户端或者虚拟化的工具。副作用就是载入的工具也需要重新设计为超级权限的容器。 如果你正在构建一个巨大的容器环境，这些额外的工作量是划算的。但是，如果只是想尝试下容器，那可能就没必要了。

容器提供了运行标准化的工作流程（比如使用 [glibc](https://en.wikipedia.org/wiki/GNU_C_Library) 编译）的能力。一个好处就是你可以在你的电脑上构建和测试这个工作单元（Docker 镜像）并且在完全不同的硬件上或者云端非常顺利的部署，而保持着相同的特性。在生产环境中，容器的宿主机仍然由运维团队进行配置管理，但是应用被开发团队控制。这就是对双方来说最好的合作方式。

Unikernels 和 Rump 内核依旧是为了特定目标构建的，但是却更进一步。整个的操作系统在构建的时候就被开发或者架构师配置好了。这带来了好处，同时还有挑战。

一个好处就是，开发人员可以控制这个工作流程的运转。理论上说，一个开发者可以为了不同的特性，尝试 [不同的 TCP 协议栈](http://www.eetasia.com/ARTICLES/2001JUN/2001JUN18_NTEK_CT_AN5.PDF)，并且选择最好的一个。在操作系统启动的时候，开发人也可以配置 IP 地址，而不是通过 DHCP。 开发人员也可以裁剪任何对于应用而言不需要的部分。这也是性能提升的保障，因为减少了[不必要的上下文切换](https://en.wikipedia.org/wiki/Context_switch)。

同时，Unikernel 也带来了挑战。目前，还缺失很多的工具。 现在，和画板子的世界类似，开发人员需要花费很多时间和精力在检查是否有完整的库文件存在，不然的话，他们必须改变他们应用的执行方式。在如何让这个“嵌入式”的操作系统在运行时配置的方面，也存在挑战。最后，每次操作系统的大改动，都需要[反馈到开发人员](http://developers.redhat.com/blog/2016/05/18/3-reasons-i-should-build-my-containerized-applications-on-rhel-and-openshift/)来进行修改。这并没有一个在开发和运维之间明确的界限，所以我能想象，为了接受了这个开发流程，一些组织或者公司必须要改变。

### 结论

在专门的容器主机比如 Rump 内核和 Unikernel 方面也有一些有趣的传闻，因为，它们会带来一个特定工作流程的潜在变革（嵌入式、云，等等）。在这个令人激动又快速发展的领域请保持你的关注，但是也要谨慎。

目前，Unikernel 看起来和定制电路板很像。它们都需要前期的研发投资，并且都是非常独特的，可以为确定的工作流程带来好处。同时，容器甚至在常规的工作流中都非常有趣，而且它不需要那么多的投入。一个简单的例子，运维团队能方便的在容器上部署一个应用，但是在 Unikernel 上部署一个应用则需要重新设计和编码，而且业界并不能完全保证，这个工作流程就可以被部署在 Unikernel 上。

容器，Rump 内核 和 Unikernel 有一个光明的未来！

---

via: <https://opensource.com/business/16/5/containers-unikernels-learn-arduino-raspberry-pi>

作者：[Scott McCarty](https://opensource.com/users/fatherlinux) 译者：[MikeCoder](https://github.com/MikeCoder) 校对：[wxy](https://github.com/wxy)

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


WattOS：一个稳如磐石、快如闪电、面向所有人的轻量级 Linux 发行版

为毛跟Elementary OS Loki  对比, 感觉毫无意义.   去跟xface之类的轻量级比对比对啊.

这文章还没有贴吧的水贴质量好…………<br />
写了一堆都是些啥啊啊啊啊啊

根据描述，桌面大概是LXDE，并且是Ubuntu16.04的衍生版吧

同感！

www\.jwz\.org/blog/2016/10/they-live-and-the-secret-history-of-the-mozilla-logo/<br />
翻下这个如何?

谢谢，已经推荐给选题。

LibreOffice 我都是直接下.deb來安裝.

来自广东中山的 Internet Explorer 9.0|Windows 7 用户

看看。

![WattOS](/data/attachment/album/201612/04/063506h2b0690tukjuspt2.png)

*Jack Wallen 将介绍一下是什么让 WattOS 这么特别。*

Linux 领域里的每个人不是听说过就是使用过某个轻量级的 Linux 发行版。大家都知道我们不断追求的是：占用内存少，配置资源要求低，包含一个轻量级的桌面环境（或者窗口管理器），并且提供和其他发行版相似的桌面布局，把赌注押在相同的需求之上。

这种发行版大多用来工作。有一个可以击垮很多轻量级 Linux 发行版的问题，它们没有真正含有一般用户完成工作需要的工具。结果就是，它们沦落为用来完成特殊任务（像数据恢复、做信息亭等）。

在某种程度上，WattOS 陷入了同样的困境（它唯一含有的生产力工具是 PDF 阅读器，而且它使用标准的“任务栏/开始菜单”象征桌面）。然而幸运的是，WattOS 通过难以置信的运行速度、稳定性以及内置新立得包管理器弥补了这些缺点；所以，WattOS 可以很容易的成为一个适合所有人的轻量级 Linux 发行版。

到底是什么让 WattOS 如此特别，让我们一起一探究竟。

### 内核

事实上当我发现 WattOS 基于 kernel 4.4 内核时我非常吃惊。升级系统之后，执行 `uname -r` 命令可以看到是 4.4.0-38-generic。鉴于这个发行版的目的是让老旧和运行卡顿的机器重获新生，它和我的 Elementary OS Loki 发行版内置相同版本的内核真是一个可爱的惊喜。这意味着 WattOS 在新旧硬件上都会有良好的工作表现。

真正的惊喜不止于此，当你去 WattOS 的网站，你会同时发现 32 位和 64 位版本的下载地址（现在大多数新的发行版都倾向于放弃 32 位发行版本）。所以，不仅系统内核对新式硬件提供支持，而且系统发行版本的多种架构也能让那些老式的 32 位机器重获新生。

### 运行速度

当安装上 WattOS 的时候，有那么一刻我对它有纯粹的羡慕。WattOS 的运行速度快的令人难以置信。甚至当它的桌面版作为客户机在 VirtualBox 虚拟机平台工作时，运行速度依然远远超过了我的 Elementary OS Loki 桌面发行版。后来我才了解到当时运行的宿主机是 [System76 Leopard](https://system76.com/desktops/leopard)，配置有水冷装置的 i7 处理器和 16GB 的运行内存。分配给 WattOS 大约 2G 的内存，让它看起来没有什么任务可以拖慢它。WattOS 的运行速度壮观的令人难以诉说，它越来越成熟了。我从没见过火狐浏览器能打开的这么快。

接下来说说 LibreOffice 应用的启动。由于想测试 LibreOffice 的启动速度，所以我打开了新立得软件包管理器，计划安装这一开源办公软件套件的佼佼者。

无果。

安装 LibreOffice 的主要问题是缺少一个依赖软件包 python3-uno，而且无论怎么尝试都无法安装成功。然而，最后我在 [LibreOffice 官方网站](https://www.libreoffice.org/) 上下载了 deb 格式的软件包。把下载的文件解压之后，`cd` 到 LibreOffice*5.2.2.2*Linux*x86-64*deb/DEBS/ 目录下，最后通过执行 `sudo dpkg -i *.deb` 命令成功的安装好了 LibreOffice。

LibreOffice 运行的怎么样呢？速度快到要疯了。值得再提的是，我从没见过这个应用能像在 WattOS 上运行的这么快。点击 LibreOffice Writer 的图标，它花费的时间是在 Elementary OS Loki （已经很快了）主机上花费的一半。

### 桌面

我个人偏爱于桌面向更加现代化的趋势进行迭代。我是 Ubuntu 的 Unity 桌面，GNOME 3 桌面，以及（特别是） [Elementary OS](https://elementary.io/) 的粉丝。所以使用古老风格桌面的主意意味着对我几乎没有吸引力。即便如此，WattOS 在把现代设计风格融入老式设计时做的非常好。举例来说，默认的桌面主题（图 1）。WattOS 的 UI 设计者巧妙设计了桌面主题，所以它没有完全偏离 Windows XP 或者老式 Linux CDE 风格的窗口管理器的设计理念。

![WattOS](/data/attachment/album/201612/04/063508dsn5e6hf56hr5sl6.png)

*图 1：WattOS 的文件管理器展示了有些现代化的主题 [使用许可](https://www.linux.com/licenses/category/used-permission)*

关于 WattOS 的桌面（基于 [LXDE](http://lxde.org/)）的确有一些要说的但以前从来没说过，就是每个拥有像简洁、直接，有足够灵活度和自定义度这些特点的 Linux 桌面版，对每个使用过 Windows 95 的电脑使用者来说都会很熟悉。

### 惊喜之处，优点和缺点

正像每个新的 Linux 桌面版的体验那样，WattOS 有让人惊喜的地方，同时也有优点和缺点。首先，说说优点。

WattOS 除了绝对的速度（用一个简单的 “WOW” 来评论），还在桌面上固定了一些特别的惊喜（大多数都是预置的应用）。额外的软件中最好的是 [KeePassX](https://www.keepassx.org/)（一个极少被默认包含在桌面版的应用）。我认为密码管理器应该默认安装在每一个电脑桌面上，值得骄傲的是 WattOS 预装了这个杰出的工具。

下一个讨论的是预装火狐浏览器。许多轻量级的发行版会预装像 [Surf](http://surf.suckless.org/) 或者 [Midori](http://midori-browser.org/) 这样的浏览器。这两个浏览器都不错，但是它们的兼容性经常达不到像谷歌文档这样网站的要求。因为 WattOS 含有成熟的火狐浏览器，你会发现该系统的功能在火狐浏览器兼容的网站上表现的很完美。

最后，算不上好的意外。正如我已经提到的，在安装 LibreOffice 时马上就有了故障。然而安装像 GIMP 这样的软件就很顺利（所以我认为这是偶然问题）。除了这一个问题，我觉得默认桌面菜单有些混乱。例如，新立得软件包管理器放在个性化菜单里。我更愿在主菜单中突出显示项中看到它，并且加上类似“软件安装”（或任何其他新用户容易理解）的标签。从我的视角来说，个性化菜单项应该用于放置配置该平台各种风格的工具，而不是安装软件的工具。

除此之外，若想在 WattOS 主攻方向上的找茬的话，特别是你要找一个面对老旧硬件 Linux 发行版时，你会发现这非常困难。

### 结论

尽管 WattOS 主要为老旧硬件设计，但你完全可以把它运行在现代桌面电脑上，并且会运行的很好。根据零学习曲线，你很快就会熟悉 WattOS，并发现它运行极快而且稳定。试试这个小排量的 Linux 发行版吧，相信它会给你同样深刻的印象。如果你发现 WattOS 运行的不够快（发生了一些我没有预料到的事），你完全可以去使用 [Microwatt](http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/)（一个更轻的轻量级发行版）。

---

via: <https://www.linux.com/learn/wattos-rock-solid-lightning-fast-lightweight-linux-distro-all>

作者：[JACK WALLEN](https://www.linux.com/users/jlwallen) 译者：[fuowang](https://github.com/fuowang) 校对：[wxy](https://github.com/wxy)

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


Neofetch ：带发行版 Logo 图像的系统信息显示工具

在 Reddit 的 unixporn 里面经常看到这个

感觉自己定制这些东西没什么必要。。screenfetch就挺好。

玩了一下 貌似没啥卵用…………比screenfetch稍稍多点东西 不过这个本来就是展示下电脑情况而已 不必折腾了………………<br />
主要是不在官方源里 哈哈哈

我是看到二次元才进来的。<br />
看完文章才知道，原来这只是个壁纸。

不是壁纸。。。

又重新看了一遍，是不是哪个二次元是使用全息图像调出来的？

关键得有一个好的图片壁纸！

Neofetch 是一个跨平台的易于使用的 [系统信息显示命令行脚本](http://www.tecmint.com/screenfetch-system-information-generator-for-linux/)，它收集你的系统信息，并在终端中和图像一起显示出来，这个图像可能是你的发行版的 logo 也可能是你选择的一幅 ascii 艺术字。

Neofetch 和 [ScreenFetch](http://www.tecmint.com/screenfetch-system-information-generator-for-linux/) 或者 [Linux\_Logo](http://www.tecmint.com/linux_logo-tool-to-print-color-ansi-logos-of-linux/) 很像，但是它可以高度定制，并且还有一些额外的我们要在下面讨论的特点。

它的主要特点有：运行速度快，可以显示全色图像 —— 用 ASCII 字符显示的发行版 logo ，旁边显示系统信息，可以高度定制，可以随时随地显示系统信息，并且在脚本结束的时候还可以通过一个特殊的参数来启用桌面截图。

![](/data/attachment/album/201612/04/145722xrl8tzwegoeh22oh.jpg)

#### 系统要求：

1. Bash 3.0+ 带 ncurses 支持。
2. w3m-img (有时候会打包成 w3m) 或者 iTerm2 或者 Terminology，用于显示图像。
3. [imagemagick](http://www.tecmint.com/install-imagemagick-in-linux/)，用于创建缩略图。
4. 支持 `[\033[14t` 的 [Linux 终端模拟器](http://www.tecmint.com/linux-terminal-emulators/) 或者 xdotool 或者 xwininfo + xprop 或者 xwininfo + xdpyinfo 。
5. Linux 系统中还需要 feh、nitrogen 或者 gsettings 来提供对墙纸的支持。

注意：你可以从 Neofetch 的 Github 页面了解更多关于可选依赖的信息，以检查你的 [Linux 终端模拟器](http://www.tecmint.com/linux-terminal-emulators/) 是不是真的支持 `\033[14t` 或者是否需要一些额外的依赖来使这个脚本在你的发行版上工作得更好。

### 怎样在 Linux 系统上安装 Neofetch

Neofetch 可以从几乎所有 Linux 发行版的第三方仓库轻松安装，请按照以下各自的安装说明进行安装。

#### Debian

```
$ echo "deb http://dl.bintray.com/dawidd6/neofetch jessie main" | sudo tee -a /etc/apt/sources.list
$ curl -L "https://bintray.com/user/downloadSubjectPublicKey?username=bintray" -o Release-neofetch.key && sudo apt-key add Release-neofetch.key && rm Release-neofetch.key
$ sudo apt-get update
$ sudo apt-get install neofetch

```

#### Ubuntu 和 Linux Mint

```
$ sudo add-apt-repository ppa:dawidd0811/neofetch
$ sudo apt-get update
$ sudo apt-get install neofetch

```

#### RHEL, CentOS 和 Fedora

你的系统里面要安装了 `dnf-plugins-core` ，或者用以下命令安装它：

```
$ sudo yum install dnf-plugins-core

```

启用 COPR 仓库然后安装 neofetch。

```
$ sudo dnf copr enable konimex/neofetch
$ sudo dnf install neofetch

```

#### Arch Linux

你可以用 packer 或 Yaourt 从 AUR 安装 neofetch 或 neofetch-git。

```
$ packer -S neofetch
$ packer -S neofetch-git
或
$ yaourt -S neofetch
$ yaourt -S neofetch-git

```

#### Gentoo

从 Gentoo/Funtoo 的官方源安装 app-misc/neofetch。如果你要安装这个程序的 git 版的话，你可以安装 app-misc/neofetch-9999。

### 怎么在 Linux 中使用 Neofetch

一旦你安装了 Neofetch ，使用它的一般语法是：

```
$ neofetch

```

注意： 要是你没有安装 w3m-img 或者 [imagemagick](http://www.tecmint.com/install-imagemagick-in-linux/) 的话，[screenfetch](http://www.tecmint.com/screenfetch-system-information-generator-for-linux/) 会默认被启用，neofetch 会如下图所示显示你的 [ASCII 艺术 logo]。

#### Linux Mint 系统信息

![Linux Mint 系统信息](/data/attachment/album/201612/04/145755ztaccavd22vssaop.png)

*Linux Mint 系统信息*

#### Ubuntu 系统信息

![Ubuntu System Information](/data/attachment/album/201612/04/145756t92tpnypsgnmity2.png)

*Ubuntu 系统信息*

如果你想用图片显示你的发行版 logo，需要用下面的命令安装 w3m-img 或者 imagemagick 。

```
$ sudo apt-get install w3m-img    [On Debian/Ubuntu/Mint]
$ sudo yum install w3m-img        [On RHEL/CentOS/Fedora]

```

然后再次运行 neofetch，你就会看到如下图所示的用你系统的默认墙纸来显示图片。

```
$ neofetch

```

![Ubuntu System Information with Logo](/data/attachment/album/201612/04/145757thnj4nc7888p8den.png)

*Ubuntu 系统信息带 logo*

第一次运行 neofetch 后，它会在这里创建一个配置文件： `$HOME/.config/neofetch/config`。

这个配置文件可以让你通过 `printinfo ()` 函数来调整你想显示在终端的系统信息。你可以增加，修改，删除，也可以使用 bash 代码去调整你要显示的信息。

你可以如下图所示用你喜欢的编辑器打开这个配置文件：

```
$ vi ~/.config/neofetch/config

```

以下是我系统配置的片段 ，显示了 `printinfo ()` 函数。

Neofetch 配置

```
#!/usr/bin/env bash
# vim:fdm=marker
#
# Neofetch config file
# https://github.com/dylanaraps/neofetch

# Speed up script by not using unicode
export LC_ALL=C
export LANG=C

# Info Options {{{

# Info
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
printinfo() {
    info title
    info underline

    info "Model" model
    info "OS" distro
    info "Kernel" kernel
    info "Uptime" uptime
    info "Packages" packages
    info "Shell" shell
    info "Resolution" resolution
    info "DE" de
    info "WM" wm
    info "WM Theme" wmtheme
    info "Theme" theme
    info "Icons" icons
    info "Terminal" term
    info "Terminal Font" termfont
    info "CPU" cpu
    info "GPU" gpu
    info "Memory" memory

    # info "CPU Usage" cpu_usage
    # info "Disk" disk
    # info "Battery" battery
    # info "Font" font
    # info "Song" song
    # info "Local IP" localip
    # info "Public IP" publicip
    # info "Users" users
    # info "Birthday" birthday

    info linebreak
    info cols
    info linebreak
}
.....

```

下面的命令可以显示所有你能在 neofetch 脚本中用的参数和配置值：

```
$ neofetch --help

```

要启用所有的功能和参数来运行程序，你可以用 `--test` 参数：

```
$ neofetch --test

```

要再次显示 ASCII 艺术 logo ，你可以用 `--ascii` 参数 :

```
$ neofetch --ascii

```

这篇文章中，我们向你介绍了一个可以高度定制的、用来收集系统信息并将它显示在终端上的命令行脚本。

如果你有什么问题，或者对这个脚本有什么想法，请在下面留言。

最后但是同样重要的是，如果你知道有类似的脚本，请毫不犹豫地告诉我们，感谢反馈。

在此访问 [neofetch Github 仓库](https://github.com/dylanaraps/neofetch)。

---

via: <http://www.tecmint.com/neofetch-shows-linux-system-information-with-logo>

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

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


在 Linux 下将 PNG 和 JPG 批量互转的四种方法

Summary: 我们会使用 Linux 命令行工具，并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .JPG 格式的，以及转换回来。

…………我来介绍一种简单的…………<br />
用gimp》》》》》》

按照作者逻辑我再添加若干种方法完成转换，用PHP, python,c,c++,java等各种语言写个批量处理都算

如果在网站后台弄这个，人家用批处理，你用GUI<br />
TOO YOUNG

说白了，就是用 ImageMagick 啊

计算机术语中，批处理指的是用一个非交互式的程序来[执行一序列的任务](http://www.tecmint.com/using-shell-script-to-automate-linux-system-maintenance-tasks/)的方法。这篇教程里，我们会使用 Linux 命令行工具，并提供 4 种简单的处理方式来把一些 `.PNG` 格式的图像批量转换成 `.JPG` 格式的，以及转换回来。

![](/data/attachment/album/201612/04/235739n64z4407mwwcc4yc.jpg)

虽然所有示例中我们使用的都是 `convert` 命令行工具，但是您也可以使用 `mogrify` 命令来达到同样的效果。

`convert` 命令的语法如下：

```
$ convert 输入选项 输入文件 输出选项 输出文件
```

而 `mogrify` 的为：

```
$ mogrify 选项 输入文件

```

注意：在使用 `mogrify` 命令时，默认情况下源图像文件会被转换后的新文件覆盖掉，您可以使用明确的操作选项来禁止覆盖，具体的选项可以在手册页中查询得到。

下面是把所有 `.PNG` 格式图像批量转换为 `.JPG` 格式的各种实现方式。如果想把 `.JPG` 转换为 `.PNG` 格式，也可使用这些命令，按需修改。

### 1、 使用 `ls` 和 `xargs` 命令来转换 PNG 和 JPG

[ls 命令](10) 可以列出所有的 png 图像文件， `xargs` 使得可以从标准输入构建和执行 `convert` 命令，从而将所有 `.png` 图像转换为 `.jpg` 图像。

```
----------- 从 PNG 转换到 JPG -----------
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

----------- 从 JPG 转换到 PNG -----------
$ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

```

关于上面命令选项的说明：

1. `-1` – 告诉 ls 每行列出一个图像名称的选项标识
2. `-n` – 指定最多参数个数，例子中为 1
3. `-c` – 指示 bash 运行给定的命令
4. `${0%.png}.jpg` – 设置新转换的图像文件的名字，`%` 符号用来删除源文件的扩展名

 [![Convert PNG to JPG Format in Linux](/data/attachment/album/201612/04/235758uhc0hrooi6sh5p9s.png)](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-in-Linux.png)

*Linux 中 PNG 格式转为 JPG 格式*

我使用 `ls -ltr` 命令按[修改的日期和时间列出所有文件](http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time/)。

类似的，也可以使用上面的命令要把 `.JPG` 图像转换为 `.PNG` 格式，只需稍微调整就行。

### 2、 使用 GNU 的 `parallel` 命令来转换 PNG 和 JPG

GNU 的 parallel 使用户能够从标准输入并行构建和执行 shell 命令。确保您的系统上安装了 GNU Parallel，否则请使用以下适当的命令进行安装：

```
$ sudo apt-get install parallel     [在 Debian/Ubuntu 系统中]
$ sudo yum install parallel         [在 RHEL/CentOS 和 Fedora 系统中]

```

安装好 `parallel` 工具后，您就可以运行下面的命令来把所有从标准输入的 `.PNG` 图像转换成 `.JPG` 格式的图像。

```
----------- 从 PNG 转换到 JPG -----------
$ parallel convert '{}' '{.}.jpg' ::: *.png

----------- 从 JPG 转换到 PNG -----------
$ parallel convert '{}' '{.}.png' ::: *.jpg

```

其中：

1. `{}` – 输入行替代符，代替了从输入源读取的完整行。
2. `{.}` – 去除扩展名的输入行。
3. `:::` – 指定输入源的符号，即上面示例的命令行，在这里 *png 或 jpg* 是命令参数。

 [![Parallel Command - Converts All PNG Images to JPG Format](/data/attachment/album/201612/04/235758zxkwqk11y1ppqyx4.png)](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-Parallel-Command.png)

*Parallel 命令 – 把所有 PNG 图像转换为 JPG 格式*

或者，您也可以结合 [ls](http://www.tecmint.com/tag/linux-ls-command/) 和 `parallel` 命令来批量转换所有图像，如图所示：

```
----------- 从 PNG 转换到 JPG -----------
$ ls -1 *.png | parallel convert '{}' '{.}.jpg'

----------- 从 JPG 转换到 PNG -----------
$ ls -1 *.jpg | parallel convert '{}' '{.}.png'

```

### 3、 使用 `for` 循环命令来转换 PNG 和 JPG

为了避免编写 shell 脚本的繁琐，你可以从命令行执行 `for` 循环语句，如下所示：

```
----------- 从 PNG 转换到 JPG -----------
$ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

----------- 从 JPG 转换到 PNG -----------
$ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

```

对上面的命令所使用的选项参数的描述：

1. `-c` 允许执行包括在单引号中的循环语句。
2. `image` 变量是目录中的图像名的数量记数器。
3. 对于每个转换操作，在 `$image` 转换为 `${image%.png}.jpg` 这行中，[echo 命令](http://www.tecmint.com/echo-command-in-linux/)通知用户 png 图像已经转换为 jpg 格式，反之亦然。
4. `${image%.png}.jpg` 语句创建了转换后的图像名字，其中 `%` 表示去除源图像文件的扩展名。

 [![for loop - Convert PNG to JPG Format](/data/attachment/album/201612/04/235759tllxnevp7vml3emv.png)](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-for-loop-Command.png)

*for 循环语句 – 从 PNG 转换到 JPG 格式*

### 4、 使用 Shell 脚本来转换 PNG 和 JPG

如果你不想像前面的例子那样让你的命令行变得邋遢的话，可以写一个小脚本，如下所示：

注意：适当地交换 `.png` 和 `.jpg` 扩展名，如下面的例子所示，从一种格式转换到另一种格式：

```
#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo “image $image converted to ${image%.png}.jpg ”
done
exit 0

```

把上面的脚本保存为 `convert.sh` 文件，然后使此脚本文件可执行，接着从存有图像文件的目录下执行。

```
$ chmod +x convert.sh
$ ./convert.sh

```

 [![Batch Image Convert Using Shell Script](/data/attachment/album/201612/04/235759l7lvjgt9f31r8afr.png)](http://www.tecmint.com/wp-content/uploads/2016/11/Batch-Image-Convert-Using-Shell-Script.png)

*使用 Shell 脚本来批量图像转换*

总之，我们介绍了一些重要的将 `.PNG` 图像批量转换为 `.JPG` 格式的方法，以及再转回来。如果还想对图像进行一些优化的话, 您可以移步到  [Linux 系统中如何压缩 png 和 jpg 图像](http://www.tecmint.com/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/)这篇指导文章。

您可以给我们分享一些包括 Linux 命令行工具在内的把图像从一种格式转成另一种格式的方式方法，或者在下面的评论部分畅所欲言。

---

via: <http://www.tecmint.com/linux-image-conversion-tools/>

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

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


在 CentOS 和 RHEL 系统上安装或自动更新安全补丁

更新了些什么你知道吗？更新站点或者组件包可靠吗？？！！出现了像苹果那样的TOOLKIT事件由谁来进行负责？？！！

TOO YOUNG, TOO SIMPLE

登陆了一下，就是想搜一下有没有“如何在 Debian/Ubuntu 上配置自动安全更新”的翻译，然而没有-。-

自己写个systemd的service会不会？

哈哈，已经做了选题——很快就会有的。

自动更新后遇到需要重启怎么办？例如kernel update了，自动reboot么？

在 Linux 系统上，其中一个最重要的需求就是保持定期更新最新的安全补丁，或者为相应的 Linux 版本更新可用的安全补丁。

在之前的文章中，我们分享了[如何在 Debian 和 Ubuntu 系统上自动安装安全更新](/article-8060-1.html)，在这篇文章中，我们将分享如何在 CentOS/RHEL 7/6 版本中设置在需要时自动更新重要的安全补丁。

![](/data/attachment/album/201612/06/112140lmuu47077kkfyi6w.png)

和它同一家族的其它 Linux 版本（Fedora 或 Scientific Linux）中可以用类似的方法进行配置。

### 在 CentOS/RHEL 系统上配置自动安全更新

在 CentOS/RHEL 7/6 系统上，你需要安装下面的安装包：

```
# yum update -y && yum install yum-cron -y

```

### 在 CentOS/RHEL 7　系统上启用自动安全更新

安装完成以后，打开 `/etc/yum/yum-cron.conf`，然后找到下面这些行内容，你必须确保它们的值和下面展示的一样

```
update_cmd = security
update_messages = yes
download_updates = yes
apply_updates = yes

```

第一行表明自动更新命令行应该像这样：

```
# yum --security upgrade

```

而其它的行保证了能够通知并自动下载、安装安全升级。

为了使来自 root@localhost 的通知能够通过邮件发送给同一账户（再次说明，你可以选择其他账户，如果你想这样的话），下面这些行也是必须的。

```
emit_via = email
email_from = root@localhost
email_to = root

```

### 在 CentOS/RHEL 6 上启用自动安全更新

默认情况下， cron 任务被配置成了立即下载并安装所有更新，但是我们可以通过在 `/etc/sysconfig/yum-cron` 配置文件中把下面两个参数改为 `yes`，从而改变这种行为。

```
# 不要安装，只做检查（有效值： yes|no）
CHECK_ONLY=yes
# 不要安装，只做检查和下载（有效值： yes|no）
# 要求 CHECK_ONLY=yes（先要检查后才可以知道要下载什么）
DOWNLOAD_ONLY=yes

```

为了启用关于安装包更新的邮件通知，你需要把 `MAILTO` 参数设置为一个有效的邮件地址。

```
# 默认情况下 MAILTO 是没有设置的，crond 会将输出发送邮件给自己
# （LCTT 译注：执行 cron 的用户，这里是 root）
# 例子： MAILTO=root
MAILTO=admin@tecmint.com

```

最后，打开并启用 `yum-cron` 服务：

```
------------- On CentOS/RHEL 7 -------------
systemctl start yum-cron
systemctl enable yum-cron
------------- On CentOS/RHEL 6 -------------
# service yum-cron start
# chkconfig --level 35 yum-cron on

```

恭喜你，你已经成功的在 CentOS/RHEL 7/6 系统上设置了自动升级。

### 总结

在这篇文章中，我们讨论了如何保持你的服务器定期更新或升级最新的安全补丁。另外，为了保证当新的补丁被应用时你自己能够知道，你也学习了如何配置邮件通知。

如果你有任何关于这篇文章的疑问，请在下面的评论区留下你的问题。我们期待收到你的回复。

---

via: <http://www.tecmint.com/auto-install-security-patches-updates-on-centos-rhel/>

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

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


如何在 Linux 中查找一个文件

但是作者应该把find命令讲的更详细些，很多人都不愿意看一大堆英文的man page的

这只是个引子，我们其实陆续介绍过很多次，各种深度的。

locate 第一次用，速度确实很快！

稍微简略了点，希望可以更加地详尽。

关于    # find -name test.file

命令会搜索整个目录树来查找名为 test.file 的文件，并且会提供其存放位置。你可以使用你 Linux 上一个存在的文件名来尝试一下

If  no paths are given, the current directory is used. （参考man手册） 应该是当前的目录树

谢谢，你说的对，这点是没有描述清楚。

find 命令 -name “文件名”

                -type    文件类型

                ！         取反

例如：  find  /data/ -type d ！ -name "abc"

#查找出/data目录下不包含abc的目录

希望对大家有用

mdjbf [Microsoft Edge 14.14393|Windows 10]

记得有的同事find之前也updatedb一下，好奇怪啊！

哈哈，这就是不求甚解的结果。

![](/data/attachment/album/201612/06/115513ee3se45f5es8z93e.jpg)

对于新手而言，在 Linux 中使用命令行可能会非常不方便。没有图形界面，很难在不同文件夹间浏览，找到需要的文件。本篇教程中，我会展示如何在 Linux 中查找特定的文件。

第一步要做的是**[通过 SSH 连接到你的 Linux](https://www.rosehosting.com/blog/connect-to-your-linux-vps-via-ssh/)**。在 Linux 中查找文件有两种方法。一种是使用 `find` 命令，另外一种是使用 `locate` 命令。我们先看第一种。

### find 命令

使用 **Linux find 命令**可以用不同的搜索标准如名字、类型、所属人、大小等来搜索目录树。基本语法如下：

```
# find path expression search-term

```

下面是使用 find 命令根据文件名来查找特定文件的一个例子：

```
# find -name test.file

```

命令会搜索整个目录树来查找名为 `test.file` 的文件，并且会提供其存放位置。你可以使用你 Linux 上一个存在的文件名来尝试一下。

find 命令有时会花费几分钟来查找整个目录树，尤其是如果系统中有很多文件和目录的话。要显著减少时间，你可以指定搜索的目录。比如，如果你知道 `/var` 中存在 `test.file`，那就没有必要搜索其它目录。这样，你可以使用下面的命令：

```
# find /var -name test.file

```

find 还可以根据时间、大小、所属人、权限等选项搜索文件。要了解更多关于这些选项的信息，你可以使用查看\*\* Linux find 命令\*\*的手册。

```
# man find

```

### locate 命令

要在Linux中使用`locate`命令，首先需要安装它。

如果你正在使用 Ubuntu，运行下面的命令来安装 locate：

```
# apt-get update
# apt-get install mlocate

```

如果你使用的是 CentOS ，运行下面的命令来安装 locate：

```
# yum install mlocate

```

locate 是一种比 find 更快的方式，因为它在数据库中查找文件。要更新搜索数据库，运行下面的命令：

```
# updatedb

```

使用 locate 查找文件的语法：

```
# locate test.file

```

就像 find 命令一样，locate 也有很多选项来过滤输出。要了解更多你可以查看**Linux Locate 命令**的手册。

```
# man locate

```

如果你喜欢这篇文件，请使用左边的按钮分享到社交网络上，或者在下面留言，谢谢。

---

via: <https://www.rosehosting.com/blog/linux-find-file/>

作者：[RoseHosting](https://www.rosehosting.com/blog/linux-find-file/) 译者：[geekpi](https://github.com/geekpi) 校对：[jasminepeng](https://github.com/jasminepeng)

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


安卓编年史（12）：Android 2.1——动画的大发现（以及滥用）时代

我第一次见到 Android 就已经是 2.1 了。

![](/data/attachment/album/201612/06/172423stru4kzhjp8mtwt5.jpg)

### Android 2.1——动画的大发现（以及滥用）时代

安卓 2.1 随着 Nexus One 的发布一同到来，这时距安卓 2.0 的发布仅仅过了三个月。新系统并不是一个大的更新升级，所以它仍然使用 Éclair（泡芙）这个名称。安卓的开发以一种闻所未闻的步伐急速进行，在过去的 15 个月中，谷歌平均每两个半月就发布一个新版本。

绝大部分得益于威瑞森在市场营销上的努力以及“Droid”产品线，安卓日益流行起来。即便如此，这个系统还是被人觉得丑，这时的安卓工程师看起来就几乎没有接受过正式的设计培训，在安卓 2.1 中，他们尝试着通过在所有能用上的地方大量使用动画效果，想让东西看起来更整齐一点。这么做的结果就是系统看起来拼命想要证明它可以实现动画效果。许多新增的部分感觉更像是技术的演示而不是为了用户体验的改善。

![安卓2.1和2.0中的锁屏和主屏幕。](/data/attachment/album/201612/06/172558ne66eb2js668zr4c.png)

*安卓 2.1 和 2.0 中的锁屏和主屏幕。 [Ron Amadeo 供图]*

安卓 2.0 的旋转拨号式锁屏在仅仅在一个版本之后就被踢到路边去了，取而代之的是和来电界面使用的相同的拉动式标签式解锁。锁屏时钟尝试使用了一种独特的安卓字体，但是相比其它字体来说，它真是丑得可以。

安卓 2.1 最大的特色之一是“动态壁纸”——可互动的或是动态图片可以被设置为壁纸。默认的动态壁纸是个灰色正方形组成的大方阵，不断有蓝色，红色，黄色以及绿色的光点拖着尾巴穿越屏幕。点击屏幕会使光点以你点击的位置为中心向四个方向射出。尽管动态壁纸看起来很棒（并且相对 iPhone 而言是个独特的特性），但动画背景对电池和处理器而言可不是什么好事。它似乎让整个系统的运行都变得有点慢了。

在主屏幕上，默认的谷歌搜索小部件周围有了更多空间，并且现在它位于所在行的正中央。页面指示器现在出现在屏幕底部的左右角落，主屏幕的页数也从 3 页变成了 5 页。底部的应用抽屉标签被替换为一个正方形方阵组成的图标，这个（对应用列表的）暗喻直到今天谷歌也还在使用。

![图片展示了安卓2.1和2.0中的应用抽屉设计以及应用的选择。](/data/attachment/album/201612/06/172602esqdxkk1s1s5hqsd.png)

*图片展示了安卓 2.1 和 2.0 中的应用抽屉设计以及应用的选择。 [Ron Amadeo 供图]*

和新应用抽屉图标一同到来的还有全新的应用抽屉。应用抽屉不再是以前从屏幕底部上拉的带标签容器的样子，新界面显示为一个全屏界面。原先的碳纤维编织纹理被去掉了，变成了一个纯黑背景——这个改变会一直持续到 KitKat。

谷歌决定添加一个浮动的、半透明的 home 图标到应用抽屉的底部，好让人们方便地退出全屏的应用列表界面。这个可以看作是安卓 4.0 中引入的虚拟 home 键的前身。

应用抽屉同样有个俗气的图形效果。在滚动的时候，在应用列表顶部和底部的图标会向内弯曲并且看起来像是向手机深处移动一样，有点像星球大战开场的滚动字幕。

应用的图标也有不多的改变。“Amazon MP3”和“Alarm Clock”（闹钟）都去掉了前面那个单词，然后他们就从按字母排序的列表的前两个位置退了下来。出现了两个新的应用：新闻和天气，以及 Google Voice，这是谷歌的通信服务。由于 Nexus One 不是威瑞森的定制机，威瑞森的可视语音邮件被去掉了。

![修改后的时钟应用。](/data/attachment/album/201612/06/172606s7bauo707oi7077a.png)

*修改后的时钟应用。 [Ron Amadeo 供图]*

不止是名称的更改，时钟应用还迎来了整体上的重制。点击时钟快捷方式不再会打开闹钟页面；取而代之的是去到“桌面时钟”界面（上方左图），它带有一个和壁纸一致的背景。时钟使用和锁屏一样的字体，并从新的新闻和天气应用中获取天气。

新的闹钟页面清除了许多旧版本中奇怪的设计。模拟时钟和可选择的时钟样式已经不见了。复选框已经被一个带绿色亮光的开关所取代，它比“灰色勾选/绿色勾选”更容易理解。尽管可能从快照很难看出来，旧的闹钟设计在时间旁同时显示 AM 和 PM。2.1 的设计里取消了这一项，只显示相关的 AM/PM 标记。底部放置了一个数字时钟，点击时钟图标会将你带回桌面时钟界面。

![安卓2.1和2.0中的相册和单独图片查看界面。](/data/attachment/album/201612/06/172611ogptzoooy7ztrkpo.png)

*安卓 2.1 和 2.0 中的相册和单独图片查看界面。 [Ron Amadeo 供图]*

谷歌想要改进安卓外观的欲望在 2.1 的相册中最为明显，这里几乎都是大量使用的动画效果和半透明。当应用打开的时候，单独的图片从屏幕顶部飞下并且打乱成小堆组成相册。当打开相册的时候，图片堆各自分离，照片滑开形成方阵的形式。所有你触摸的东西会弹开，压缩，以及拉伸，就像是果冻的弹簧片一样。

相册这里没有一个“标准”的背景。它会从屏幕上随机选择一张图片并深度模糊，然后作为背景图片使用。当这张图片滑出屏幕显示范围后，它会重新选择一张背景图片，所以背景色调总是会和你的图片相匹配。

屏幕的左上角放置了面包屑导航栏。它显示你当前的位置，以及你所在位置和主界面之间的任何文件夹——它可以被看作是在安卓 3.0 中即将推出的“向上”按钮的前身。在右上角是一个相机的链接，这还留着相同的在安卓 1.6 中登场的人造皮革设计——两个设计截然不同。

而相机是另一个奇怪的、一次性的设计，从来没有哪个安卓应用间的随意的 UI 设计差距能有和新的相册应用间这么明显。它并没有采用安卓的按钮、菜单、或任何现有的 UI 规范。它甚至在每个界面隐藏了状态栏——你几乎不能分辨出你正在盯着的是安卓。

在单张照片查看视图，你终于可以在图片之间滑动切换，从而去掉了短粗的左右箭头。出于某种原因，这个界面并没有颜色匹配的背景。它是应用中唯一一个背景为黑色的部分。缩放控制在右上方（仍然没有两指捏合缩放），可用命令沿着屏幕的底部排成一行。点击“菜单”按钮（虚拟或实体键）并不会像所有其他的应用一样出现一个 2×3 格的方阵——仅仅是底部的一行选项从两个变成了另外三个选项。

![充满动画效果的相册应用。](/data/attachment/album/201612/06/172621z3b0p3105c1z3d1x.png)

*充满动画效果的相册应用。 [Ron Amadeo 供图]*

上面第一张图片，显示了一个相册视图。大型相册的话你可以水平滚动，或使用在屏幕底部的快速滚动条。长按图片（虽然有点奇怪，或者可以按实体菜单按钮）会弹出一个“复选框”界面，这时你可以点击几张照片同时选中它们。你选中照片之后，你可以批量分享、删除或旋转照片。

这个界面和接下来的单张照片查看界面的菜单是半透明对话气泡式的，点击各个按钮时它们会跳出来。再重复一遍，这和你所看到的正常的安卓体验规范大相径庭。相册还是第一个拥有越界效果（overscroll）的应用之一。当你到达照片墙的底部时，整个界面会向滚动的方向扭曲。

2.1 的相册是第一个能同时显示您云存储的 Picasa 照片以及本地照片的客户端。这些照片缩略图的左下角有白色相机快门图标。这后来成为了 Google+ Photos。

之前或之后任何安卓应用程序看起来都不像这个相册。有很好的理由解释这是为什么——它不是谷歌做的！这个应用外包给了 Cooliris，他们看样子并没有打算花费精力遵循任何一条现有的安卓 UI 规范。尽管应用是可用的，所有的动画和效果使它看起来像是只注重风格而不注重实质的产物。

![“新闻和天气”应用展示了……新闻和天气。](/data/attachment/album/201612/06/172624bdfr6oir6crzdj6p.png)

*“新闻和天气”应用展示了……新闻和天气。 [Ron Amadeo 供图]*

来比较下相册应用和另一个全新的安卓 2.1 应用：新闻和天气。相册是个充满透明动画效果的汇聚，而新闻和天气则全是深色渐变和对比色。这个应用提供了桌面时钟的天气显示，它甚至还带着一个主屏幕小部件。第一张图显示的是当前位置的天气和六天的预报。沿着屏幕顶部排列着一些标签，城市名称旁有个小小的“i”按钮，点击它会打开温度和降水图。你可以在图上滑动以得到指定时间的精确温度和降水信息。

这个应用里最大的创新在于可滑动标签，这个想法最终将成为一个标准的安卓 UI 规范。在天气之后是一些可由用户定制的新闻标签，除了点击标签切换之外，你还可以在屏幕上水平滑动，标签也会跟着切换。新闻标签都显示着一个新闻标题列表，它们几乎总是正好截断到你弄不明白这条新闻讲了什么的程度。当你从这个应用打开一个网页时，它并不会启动浏览器。相反，它会在应用内打开新闻，带着个奇怪的白色边框。

![谷歌地图的一些实验性功能，新的小部件设计，Google Voice里我们能接触到的唯一一个界面，以及新的带标签的音乐界面设计。](/data/attachment/album/201612/06/172628v8mb2x2b2vxzbov3.jpg)

*谷歌地图的一些实验性功能，新的小部件设计，Google Voice 里我们能接触到的唯一一个界面，以及新的带标签的音乐界面设计。 [Ron Amadeo 供图]*

安卓 2.1 里的小部件全部经过了重新设计，几乎所有东西都带有黑色渐变，空间利用上也更加合理。时钟变回了一个圆，日历的顶部加上了蓝色，着让它和应用变得更加相似。Google Voice 可以启动，但是登录已经失效了——这是你现在能看到的所有东西了。

人们经常忽视的音乐应用有个小更新。四个按钮的主界面被完全去除，并且在屏幕顶部添加了每个音乐显示模式的标签。这意味着在打开应用的时候，你就能直接看到音乐列表，而不是一个导航页。不同于新闻和天气应用里的标签，这些新增的标签不能滑动切换。

![](/data/attachment/album/201612/18/154605bdud6kty2st2iiiu.png)

### Android 2.1, update 1——无尽战争的开端

谷歌是第一代 iPhone 的主要合作伙伴——公司为苹果的移动操作系统提供了谷歌地图、搜索，以及 Youtube。在那时，谷歌 CEO 埃里克·施密特是苹果的董事会成员之一。实际上，在最初的苹果发布会上，施密特是在史蒂夫·乔布斯[之后第一个登台的人](http://www.youtube.com/watch?v=9hUIxyE2Ns8#t=3016)，他还开玩笑说两家公司如此接近，都可以合并成“AppleGoo”了。

当谷歌开发安卓的时候，两家公司间的关系慢慢变得充满争吵。然而，谷歌很大程度上还是通过拒 iPhone 关键特性于安卓门外，如双指缩放，来取悦苹果。尽管如此，Nexus One 是第一部不带键盘的直板安卓旗舰机，设备被赋予了和 iPhone 相同的外观因素。Nexus One 结合了新软件和谷歌的品牌，这是压倒苹果的最后一根稻草。根据沃尔特·艾萨克森为史蒂夫·乔布斯写的传记，2010 年 1 月在看到了 Nexus One 之后，这位苹果的 CEO 震怒了，说道：“如果需要的话我会用尽最后一口气，以及花光苹果在银行里的 400 亿美元，来纠正这个错误……我要摧毁安卓，因为它完全是偷窃来的产品。我愿意为此发起核战争。”

所有的这些都在秘密地发生，仅在 Nexus One 发布后的几年后才公诸于众。公众们最早在安卓 2.1——推送给 Nexus One 的一个称作 “[2.1 update 1](http://arstechnica.com/gadgets/2010/02/googles-nexus-one-gets-multitouch/)” 的更新，发布后一个月左右捕捉到谷歌和苹果间愈演愈烈的分歧气息。这个更新添加了一个功能，正是 iOS 一直居于安卓之上的功能：双指缩放。

尽管安卓从 2.0 版本开始就支持多点触控 API 了，但系统的默认应用在乔布斯的命令下依然和这项实用的功能划清界限。在关于 Nexus One 的和解会议谈崩了之后，谷歌再也没有理由拒双指缩放于安卓门外了。谷歌给设备推送了更新，安卓终于补上了不足之处。

随着谷歌地图、浏览器以及相册中双指缩放的全面启用，谷歌和苹果的智能手机战争也就此拉开序幕。在接下来的几年中，两家公司会变成死敌。双指缩放功能更新的一个月后，苹果开始了它的征途，起诉了所有使用安卓的公司。HTC、摩托罗拉以及三星都被告上法庭，直到现在都还有一些诉讼还没解决。施密特也辞去了苹果董事会的职务。谷歌地图和 Youtube 被从 iPhone 中移除，苹果甚至开始打造自己的地图服务。今天，这两位选手几乎是 “AppleGoo” 竞赛的唯一选手，涉及领域十分广泛：智能手机、平板、笔记本、电影、TV 秀、音乐、书籍、应用、邮件、生产力工具、浏览器、个人助理、云存储、移动广告、即时通讯、地图以及机顶盒……以及不久它们将会在汽车智能、穿戴设备、移动支付，以及客厅娱乐等进行竞争。

---

![](/data/attachment/album/201612/06/172630v978lo4o997cailj.jpg)

[Ron Amadeo](http://arstechnica.com/author/ronamadeo) / Ron 是 Ars Technica 的评论编缉，专注于安卓系统和谷歌产品。他总是在追寻新鲜事物，还喜欢拆解事物看看它们到底是怎么运作的。 [@RonAmadeo](https://twitter.com/RonAmadeo)

---

via: <http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/12/>

译者：[alim0x](https://github.com/alim0x) 校对：[wxy](https://github.com/wxy)

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


Eclipse Che：下一代基于 Web 的 IDE

Summary: Eclipse Che 是一个基于 Web 的集成开发环境（IDE）和工作区。在这些工作空间中的项目具有运行所需的一切工具，开发人员不用做什么事情，只需要创建工作空间时选择正确的软件环境。

全组件本地化源才是最重要的！！！

eclipse che应该是第一个完全使用容器方式部署的应用系统

月食·扯

![Eclipse Che简介，下一代基于Web的IDE](/data/attachment/album/201612/06/213951tkrslimrlvkos990.png "Introduction to Eclipse Che, a next-generation, web-based IDE")

即使对于熟练的开发人员，想要去为一个项目贡献代码，正确的安装和配置一个集成开发环境、<ruby> 工作区 <rp>  （ </rp> <rt>  workspace </rt> <rp>  ） </rp></ruby>和构建工具，都是一个十分艰难和浪费时间的任务。[Codenvy](http://codenvy.com/) 的CEO，Tyler Jewell，也面临着这个问题。当他养好了一些小病，又处理了一些管理工作之后，试图建立一个简单的 Java 项目来找回他曾经的编程技能。经过多天的努力，Jewell 的项目依然无法工作，但这就是给予了他灵感。他想做个可以让“任何人，任何时候都可以为安装软件的项目做贡献”的东西。

正是这个想法引发了 [Eclipse Che](http://eclipse.org/che) 的发展。

Eclipse Che 是一个基于 Web 的集成开发环境（IDE）和工作区。Eclipse Che 将工作区与合适的运行时<ruby> 软件环境 <rp>  （ </rp> <rt>  stack </rt> <rp>  ） </rp></ruby>捆绑在一起，全都紧密结合起来。在这些工作空间中的项目具有运行所需的一切工具，开发人员不用做什么事情，只需要创建工作空间时选择正确的软件环境。

Eclipse Che 已经就绪的捆绑软件环境支持绝大多数现代流行语言。现在已经支持 C++、Java、Go、PHP、 Python、 .NET、Node.js、 Ruby on Rails，和 Android 开发等。<ruby> 软件环境库 <rp>  （ </rp> <rt>  Stack Library </rt> <rp>  ） </rp></ruby>提供了多种选择，如果这样还不够，还可以选择创建一个提供自定义的环境的定制软件环境。

Eclipse Che 是一个功能齐全的 IDE，而不是一个基于 Web 的简易文本编辑器。它构建于 Orion 和 JDT 之上。支持<ruby> 智能感知 <rp>  （ </rp> <rt>  Intellisense </rt> <rp>  ） </rp></ruby>和调试，并集成了 Git 和 Subversion 版本控制软件。IDE 甚至可以由多个用户共享，进行结对编程。只需一个 Web 浏览器，开发人员就可以编写和调试他们的代码。但是，如果开发人员更喜欢使用基于桌面的 IDE，也可以使用 SSH 连接到工作空间。

Eclipse Che 底层所采用的主要技术之一是 [Linux 容器](https://opensource.com/resources/what-are-linux-containers) - Docker。工作空间是同样是使用 Docker 构建的，安装 Eclipse Che 的本地副本只需要 Docker 和一个小脚本文件。只需在第一次运行时，第一次运行 `che.sh start` 时，就会下载和运行必需的 Docker 容器。但是，如果你觉得设置 Docker 来安装 Eclipse Che 依然太麻烦，Codenvy 还提供在线托管的方法。甚至，他们为开源项目的每个贡献者都提供了 4GB 的工作区。使用 Codenvy 的托管选项或者其它的在线托管方式，只需要提供一个 URL 给潜在贡献者，就会自动创建一个包含项目代码的工作区，所有这些只需轻轻点击一下。

除了 Codenvy 之外，Eclipse Che 的贡献者还包括微软、红帽、IBM、三星和许多其它的人或组织。很多贡献者正在致力于开发 Eclipse Che 的定制版本以用于其特定用途。例如，三星的 [Artik IDE](http://eclipse.org/che/artik) 项目用于物联网领域。基于 Web 的 IDE 可能会让一些人失业，但 Eclipse Che 提供很多的机会，并且有很多业内的大公司需要，值得一试。

---

via: <https://opensource.com/life/16/11/introduction-eclipse-che>

作者：[Joshua Allen Holm](https://opensource.com/users/holmja) 译者：[Vic020](http://www.vicyu.net/) 校对：[wxy](https://github.com/wxy)

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


怎样在 Arch Linux 终端上更改 WiFi 密码

这种方法在Ubuntu中应该不能用吧？

我以前都是用的wpasupplicant

以前我有近一年实体机用arch, 但是后来我用虚拟机连基本的桌面环境都装不好。wiki弄啊弄，反而没以前清楚了

![](/data/attachment/album/201612/06/220404mqtq65txdymobrsp.png)

自从修改了我的路由器的 WiFi 网络密码后，我的 Arch Linux 测试机就不能连接到网络了。由于我的 Arch Linux 测试机没有图形化桌面环境，我不得不在终端上更改 WiFi 密码。在图形化操作界面中，更改 WiFi 密码是很容易的。我仅仅需要打开网络管理器，就能很快更改 WiFi 网络密码。但是，我从来没有在 Arch Linux 终端上用命令行来更改 WiFi 密码。我开始在 google 上搜索相关资料，并且在 Arch Linux 论坛找到了一个好的解决办法。如果你也面临同样的问题，读完这篇文章吧，这个方法并没有那么难。

### 在终端更改 WiFi 网络密码

修改了路由器的 WiFi 密码之后，我尝试运行 `wifi-menu` 命令来更新 WiFi 密码，但是它一直报如下错误。

```
sudo wifi-menu

```

它显示了可用的 WiFi 列表。

![](/data/attachment/album/201612/06/215254jyyw6qh0afqzhhul.png)

我的 WiFi 网络名为 Murugs9376。我选中了我的 WiFi 网络，然后在 OK 处按下回车。它没有让我输入新的 WiFi 密码（我以为它会先问我是否密码已经更改），却显示了下面的错误。

```
Interface 'wlp9s0' is controlled by netctl-auto
WPA association/authentication failed for interface 'wlp9s0'

```

![](/data/attachment/album/201612/06/215547exc8nn85unn59jf1.png)

在 Arch 发行版上，我没有太多的经验。因此我去了 Arch Linux 论坛希望能找到解决方法。感天谢地，之前有人发了同样问题的帖子并从一位 Arch 老司机那里得到了解决办法。

网络相关的配置文件都是存放在 `/etc/netctl/` 文件夹下。例如，下面是我的 Arch Linux 测试机上该文件夹下的内容：

```
ls /etc/netctl/

Sample Output:

examples    ostechnix         'wlp9s0-Chendhan Cell Service'  wlp9s0-Pratheesh
hooks       wlp9s0            wlp9s0-Murugu9376
interfaces  wlp9s0-AndroidAP  wlp9s0-none

```

![](/data/attachment/album/201612/06/215611g9f9lslr6eile9fl.png)

我如果想要更改密码，只需要删除我的 WiFi 网络配置文件 (这里是 `wlp9s0-Murugs9376`) 并且重新运行 `wifi-menu` 命令。

因此，用下面的命令来删除原来的 WiFi 配置文件:

```
sudo rm /etc/netctl/wlp9s0-Murugu9376

```

删除配置文件之后，运行 `wifi-menu` 命令来更新 WiFi 密码。

```
sudo wifi-menu

```

选择 WiFi 网络，并且按回车键。

![](/data/attachment/album/201612/06/215632v8g35tnl1qqq3n5s.png)

为新配置文件输入一个新名字。

![](/data/attachment/album/201612/06/215653bmf8aa6va6az9v8l.png)

最后，输入 WiFi 新密码到配置文件中，并且按下回车键。

![](/data/attachment/album/201612/06/215713hnza1fhip7f7aaik.png)

这样就完成了。现在，我们已经更新了我们的 WiFi 网络密码。像你所看到的一样，在 Arch Linux 终端里面更新 WiFi 密码并不是件很难的事情。任何人都能在几秒钟以内完成它。

如果您觉得这个教程很有帮助，希望您能分享到您的社交网络中来支持我们。

谢谢！

---

via: <https://www.ostechnix.com/update-wifi-network-password-terminal-arch-linux/>

作者：[SK](https://www.ostechnix.com/author/sk/) 译者：[chenzhijun](https://github.com/chenzhijun) 校对：[jasminepeng](https://github.com/jasminepeng)

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


在 Linux 中找出所有在线主机的 IP 地址

Summary: 你可以在 Linux 的生态系统中找到很多网络监控工具，它们可以为你生成出网络中所有设备的摘要，包括它们的 IP 地址等信息。然而，实际上有时候你只需要一个简单的命令行工具，运行一个简单的命令就能提供同样的信息。

有zmap的吗？

https://linux.cn/article-5860-1.html

// 你看你不注册用户，没法进行站内搜索吧~

cool

往文章的右侧看，或者 Ctrl-F 在本页面搜一下 zmap。

我记得NMAP里有个NPING的工具，可以自定义发送伪装包。以前利用这个试过ARP。后来笔记没有了。不知道站里有这个工具的介绍吗？

精品好文收藏分享

![](/data/attachment/album/201612/06/221705eiyxem2djd2cc0d7.jpg)

你可以在 Linux 的生态系统中找到很多[网络监控工具](https://linux.cn/topic-linux-system-performance-monitoring.html)，它们可以为你生成出网络中所有设备的摘要，包括它们的 IP 地址等信息。

然而，实际上有时候你只需要一个简单的命令行工具，运行一个简单的命令就能提供同样的信息。

本篇教程会向你展示如何找出所有连接到给定网络的主机的 IP 地址。这里我们会使用 [Nmap 工具](http://www.tecmint.com/nmap-network-security-scanner-in-kali-linux/)来找出所有连接到相同网络的设备的IP地址。

[Nmap](/article-7960-1.html) (Network Mapper 的简称)是一款开源、强大并且多功能的探查网络的命令行工具，用来[执行安全扫描、网络审计](http://www.tecmint.com/audit-network-performance-security-and-troubleshooting-in-linux/)、[查找远程主机的开放端口](http://www.tecmint.com/find-open-ports-in-linux/)等等。

如果你的系统中还没有安装 Nmap，在你的发行版中运行合适的命令来安装：

```
$ sudo yum install nmap     [在基于 RedHat 的系统中]
$ sudo dnf install nmap     [在基于Fedora 22+ 的版本中]
$ sudo apt-get install nmap [在基于 Debian/Ubuntu 的系统中]

```

安装完成后，使用的语法是：

```
$ nmap  [scan type...]  options  {target specification}

```

其中，**{target specification}**这个参数可以用**主机名、IP 地址、网络**等来替代。

所以要列出所有连接到指定网络的主机 IP 地址，首先要使用 [ifconfig 命令](http://www.tecmint.com/ifconfig-command-examples/)或者[ip 命令](http://www.tecmint.com/ip-command-examples/)来识别网络以及它的子网掩码：

```
$ ifconfig
或者
$ ip addr show

```

![Find Network Details in Linux](/data/attachment/album/201612/08/090909axrkfdr3ynjnbnzx.png)

*在 Linux 中查找网络细节*

接下来，如下运行 Nmap 命令：

```
$ nmap  -sn  10.42.0.0/24

```

 [![Find All Live Hosts on Network](/data/attachment/album/201612/06/221731agtnqp13ttz1c2zn.png)](http://www.tecmint.com/wp-content/uploads/2016/11/Find-All-Live-Hosts-on-Network.png)

*查找网络中所有活跃的主机*

上面的命令中：

* `-sn` - 是扫描的类型，这里是 ping 方式扫描。默认上，Nmap 使用端口扫描，但是这种扫描会禁用端口扫描。
* `10.42.0.0/24` - 是目标网络，用你实际的网络来替换。

要了解全面的信息，查看 Nmap 的手册：

```
$ man nmap

```

或者不带任何参数直接运行 Nmap 查看使用信息摘要：

```
$ nmap

```

此外，对于有兴趣学习 Linux 安全扫描技术的人，可以阅读 [Nmap in Kali Linux](http://www.tecmint.com/nmap-network-security-scanner-in-kali-linux/) 这篇实践指导。

好了，就是这样了，记得在下面的回复区给我们发送问题或者评论。你也可以跟我们分享其他列出指定网络已连接设备的 IP 地址的方法。

---

via: <http://www.tecmint.com/find-live-hosts-ip-addresses-on-linux-network/>

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

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


Fedora 25 Workstation 安装指南

终于支持 node 6.9.1 了。

很不错的入门文章，文章调理清晰，linuxcn看布局 就很舒服

jun413947139 [Microsoft Edge 15.14971|Windows 10]

谢谢——可惜我现在对布局的调整优化已经力不从心了——大哭。

在我的笔记本上用不了这个系统，fedora24版倒还正常，一更新后也当掉了，最直接的反应就是启动黑屏

等它提供全组件iso镜像了，我就换回来，现在觉得Debian Gnu/Linux的全镜像发布方式就是好一点点，很多时候没有镜像做本地源眼睛干瞪起没办法，网络没有谣传的那么稳定和高速，最关键是着急用你还得搜索和查找，这也是需要大量时间成本的

win7下无法选择标准分区，创建分区一直失败。这个是怎么回事儿？

fedora这种比较更新快的系统提供这些都没用，更新了之后马上依赖不满足（arch更极端），当然也不排除有例外，如有打过大部分包的openSUSE风滚草

2G内存试了下，又换成f22了，能用就没再折腾，不过最近第一次开机有点卡了，想着要不要换个版本

请问一下这样安装会不会覆盖原来的win7系统？

来自湖北武汉华中科技大学的 Sogou Explorer 2|Windows 7 用户

在这篇教程中，我们将会走完在电脑上安装 Fedora 25 workstation 的每一步。该指南包括整个安装过程中的每一步截图，因此，请认真跟着操作。

![](/data/attachment/album/201612/07/210434pbzllsrlllscrlli.jpg)

#### Fedora 25 Workstation 有哪些新特性?

正如大家所期待的那样，Fedora 的这个最新版本在基础组件上做了很多的改变以及修复大量的 bug，除此之外，它带来了很多新的功能强大的软件，如下所示：

* GNOME 3.22，可以重命名多个文件，重新设计的键盘布局工具以及一些用户界面上的改进。
* 使用 Wayland 代替 X11 系统，以满足现代图形硬件设备。
* 支持 MP3 格式解码。
* Docker 1.12。
* Node.js 6.9.1。
* 支持 Rust 系统编程语言。
* 支持多个版本的 Python 编程语言，包括 Python2.6、2.7、3.3、3.4 和 3.5。
* 不再检查 GNOME Shell 扩展与当前的 GNOME Shell 版本的兼容性等等。

注意：如果电脑上已安装了前一个版本 Fedora 24，或许你可以考虑使用更简单的几个步骤[将 Fedora 24 升级到 Fedora 25](http://www.tecmint.com/upgrade-fedora-24-to-fedora-25-workstation-server/) 以避免全新的安装过程。

### 安装 Fedora 25 Workstation 版本

从下面的链接下载 ISO 系统镜像开始，本安装教程将使用 64 位的镜像来安装。

* [下载 Fedora 25 Workstation 64 位版本](https://download.fedoraproject.org/pub/fedora/linux/releases/25/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-25-1.3.iso)
* [下载 Fedora 25 Workstation 32 位版本](https://download.fedoraproject.org/pub/fedora/linux/releases/25/Workstation/i386/iso/Fedora-Workstation-Live-i386-25-1.3.iso)

下载完 Fedora 25 的系统镜像后，第一步是创建一个可启动设备（DVD 或 USB 设备），使用 [Unetbootin 和 dd 命令](http://www.tecmint.com/install-linux-from-usb-device/)来制作 USB 启动工具，或使用其它你想用的方法也行。

1、 创建完成启动设备后，插入并从该设备（DVD/USB）启动，此时，你应该看到如下图所示的 Fedora Workstation Live 的启动界面。

选择 “Start Fedora-Workstation-Live 25” 选项，然后单点回车。

![Fedora 25 Boot Menu](/data/attachment/album/201612/07/210530wqhs1s9yz8s9xax8.png)

*Fedora 25 启动菜单*

2、 接下来，你会进入到登录界面，单击“Live System User”以 Live 用户身份进入系统。

![Fedora 25 Live User Login](/data/attachment/album/201612/07/210531f6gez5mj999exse9.png)

*Fedora 25 Live 用户登录*

3、 登入系统后，几秒钟后桌面上会出现下面的欢迎界面，如果你想在安装前试用 Fedora 系统，单击 “Try Fedora”，否则单击 “Install to Hard Disk” 进入到全新安装过程。

![Fedora 25 Welcome Screen](/data/attachment/album/201612/07/210533sm7kkd4pahhd79bd.png)

*Fedora 25 欢迎界面*

4、 在下面的界面中，选择想要使用的安装语言，然后单击“<ruby> 继续 <rp>  （ </rp> <rt>  Continue </rt> <rp>  ） </rp></ruby>”按钮进入到安装总结页面。

![Select Installation Language Type](/data/attachment/album/201612/07/210534ykeoey3b37kokyc6.png)

*选择安装语言类型*

5、 下图是安装总结界面，显示默认的区域及系统设置内容。你可以根据自己的位置和喜好来定制区域及系统设置。

从键盘设置开始。单击“<ruby> 键盘 <rp>  （ </rp> <rt>  KEYBOARD </rt> <rp>  ） </rp></ruby>”进入到键盘布局自定义设置界面。

![Fedora 25 Installation Summary](/data/attachment/album/201612/07/210535ypzdodqo8lqz8d3p.png)

*Fedora 25 安装总结*

6、 在这个界面中，根据你电脑之前的设置使用`+`号来添加你需要的键盘布局，然后单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>"返回到安装总结界面。

![Set Keyboard Layout](/data/attachment/album/201612/07/210536yamh4iaiu6qrqd5u.png)

*设置键盘布局*

7、 下一步，单击“<ruby> 时间与日期 <rp>  （ </rp> <rt>  TIME & DATA </rt> <rp>  ） </rp></ruby>”调整系统时间和日期。输入所在地区和城市来设置时区，或者从地图上快速选择。

注意你可以从右上角启用或者停用网络时间同步。设置完系统时间和日期后，单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>”返回到安装总结界面。

![Set System Timezone](/data/attachment/album/201612/07/210538civv6mad44am40pb.png)

*设置系统时区*

8、 返回到安装总结界面，单击“<ruby> 网络与主机名 <rp>  （ </rp> <rt>  NETWORK & HOSTNAME </rt> <rp>  ） </rp></ruby>”设置网络和主机名。

主机名设置完成后，单击“<ruby> 应用 <rp>  （ </rp> <rt>  Apply </rt> <rp>  ） </rp></ruby>”来检查主机名是否可用，如果可用，单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>”。

![Set Hostname for Fedora 25](/data/attachment/album/201612/07/210538gffz75b5j5ebf3bw.png)

*设置 Fedora 25 的主机名*

9、 此时，在安装总结界面，单击“<ruby> 安装目标 <rp>  （ </rp> <rt>  INSTALLATION DESTINATION </rt> <rp>  ） </rp></ruby>”来为系统文件划分安装空间。

在“<ruby> 其它存储选项 <rp>  （ </rp> <rt>  Other Storage Options </rt> <rp>  ） </rp></ruby>”上选择“<ruby> 我要配置分区 <rp>  （ </rp> <rt>  I will configure partitioning </rt> <rp>  ） </rp></ruby>”来执行手动分区，然后单击 “<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>” 前进至手动分区界面。

![Select Installation Destination Drive](/data/attachment/album/201612/07/210539nsi5ks0qjej7js0w.png)

*选择安装位置*

10、 下面是手动分区界面，选择“<ruby> 标准分区 <rp>  （ </rp> <rt>  Standard Partition </rt> <rp>  ） </rp></ruby>”为新的分区模式来安装。

![Manual Partitioning Selection](/data/attachment/album/201612/07/210539xpbbbu90tbq3b53q.png)

*手动配置分区*

11、 现在通过点`+`号增加一个挂载点来创建一个`/root`分区。

* 挂载点： /root
* 建议容量： 合适即可（比如 100 GB）

之后，单击“<ruby> 增加挂载点 <rp>  （ </rp> <rt>  Add mount point </rt> <rp>  ） </rp></ruby>”添加刚刚创建的分区/挂载点。

![Create New Root Partition](/data/attachment/album/201612/07/210540nghvb3ug7mdg7dhg.png)

*创建新的 Root 分区*

下图展示了 `/root` 分区设置。

![Root Partition Settings](/data/attachment/album/201612/07/210541vafk4agabokzeccs.png)

*Root 分区设置*

12、 下一步，通过`+`号创建<ruby> 交换分区 <rp>  （ </rp> <rt>  swap </rt> <rp>  ） </rp></ruby>

交换分区是硬盘上的一个虚拟的磁盘空间，用于临时存放那些当前 CPU 不使用的内存数据。

* 挂载点： swap
* 建议容量：合适即可（比如 4 GB）

单击“<ruby> 增加挂载点 <rp>  （ </rp> <rt>  Add mount point </rt> <rp>  ） </rp></ruby>”添加交换分区。

![Create Swap Partition](/data/attachment/album/201612/07/210542b7ljn7hnwnjnk4ws.png)

*创建交换分区*

![Swap Partition Settings](/data/attachment/album/201612/07/210543ka2k02e5e9bk7e0d.png)

*交换分区设置*

13、 创建完 `root` 分区和 `swap` 分区后，单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>”按钮来查看这些要对磁盘进行的更改。单击 “<ruby> 接受调整 <rp>  （ </rp> <rt>  Accept Changes </rt> <rp>  ） </rp></ruby>” 允许执行所有的分区调整。

![Accept Partition Changes](/data/attachment/album/201612/07/210544x5ara4hzpaeihaaa.png)

*接受分区调整*

14、 你最后的安装总结内容应该跟下图显示的差不多。单击“<ruby> 开始安装 <rp>  （ </rp> <rt>  Begin Installation </rt> <rp>  ） </rp></ruby>”开始真正安装系统。

![Final Installation Summary](/data/attachment/album/201612/07/210545dlmm0nnpbml60b9e.png)

*最后的安装总结内容*

15、 系统文件安装开始后，你可以在下面的界面中，创建一个常用的系统用户，并为 root 账号设置密码。

![User Configuration Settings](/data/attachment/album/201612/07/210547feghg567mdnoh7gd.png)

*用户配置设置*

16、 之后，单击“<ruby> ROOT 密码 <rp>  （ </rp> <rt>  ROOT PASSWORD </rt> <rp>  ） </rp></ruby>”来设置 root 账号密码。像之前一样，单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>”返回到用户配置界面。

![Set Root Account Password](/data/attachment/album/201612/07/210548q3kfzff3skbboaoe.png)

*设置 root 账号密码*

17、 之后，在用户配置界面单击“<ruby> 创建用户 <rp>  （ </rp> <rt>  USER CREATION </rt> <rp>  ） </rp></ruby>”按钮来创建一个常用的系统用户。你也可以勾选“<ruby> 将该用户作为管理员 <rp>  （ </rp> <rt>  Make the user administrator </rt> <rp>  ） </rp></ruby>”选项把该用户提升为系统管理员。

再次单击“<ruby> 完成 <rp>  （ </rp> <rt>  Done </rt> <rp>  ） </rp></ruby>”按钮继续。

![Create System User Account](/data/attachment/album/201612/07/210549p3foisupggpig3os.png)

*创建系统用户账号*

18、 安装过程将会持续一段时间，你可以去休息会了。安装完成之后，单击“<ruby> 退出 <rp>  （ </rp> <rt>  Quit </rt> <rp>  ） </rp></ruby>”重启系统，并弹出你使用的启动设备。终于，你可以登录进入新的 Fedora 25 Workstation 了。

![Fedora 25 Login Screen](/data/attachment/album/201612/07/210551zpnwepw1k1nkfnkd.png)

*Fedora 25 登录界面*

![Fedora 25 Workstation Desktop](/data/attachment/album/201612/07/210553h0lc82qqwy2x7m7u.png)

*Fedora 25 Workstation 桌面*

就写到这里吧！请在下面提出相关的问题并发表评论。

---

via: <http://www.tecmint.com/fedora-25-installation-guide/>

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

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


Linux 下清空或删除大文件内容的 5 种方法

Summary: 在 Linux 终端下处理文件时，有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢？在这篇文章中，我们将介绍几种借助一些实用的命令来清空文件内容的方法。

直接rm不久好了， 搞这么麻烦

要清空文件内容，rm 应该就不行了。

然后你还需要一个  touch

然后，文件呢？其实，这里就像是研究茴香豆的茴有几种写法一样，给大家一些有益的提示，每个人都可以有自己喜欢的用法。

学习了.

一般都只用“> access.log”这个，，比较简单，易记

rm file && touch file

没想到会有这么多个方法清空文件

说rm和touch的一看就是没有做过实际的运维。

感觉原理好像都是 > filename

echo "" > access.log比较好用

unzip, strip, touch, grep, finger, mount, fsck, more, yes, fsck, fsck, fsck, top, free, umount, sleep

非常赞的精品好文

考虑IO的  蠢货

考虑IO的  蠢货

考虑IO的  蠢货

考虑IO的  蠢货

来自49.7.58.115的 Chrome 83.0|Windows 10 用户

赶紧跑路了  哈哈

对于一个大文件，你可以试试两种的差别，不知道就不要乱说

不错的，学习了

不错的，学习了

刘先祺到此一游，写的真好

刘先祺到此一游，写的真好

在 Linux 终端下处理文件时，有时我们想直接清空文件的内容但又不必使用任何 [**Linux 命令行编辑器**](http://www.tecmint.com/linux-command-line-editors/) 去打开这些文件。那怎样才能达到这个目的呢？在这篇文章中，我们将介绍几种借助一些实用的命令来清空文件内容的方法。

![](/data/attachment/album/201612/08/195853w24pcumpmsb4ccm4.jpg)

**注意：**在我们进一步深入了解这些方法之前，请记住: 由于[**在 Linux 中一切皆文件**](http://www.tecmint.com/explanation-of-everything-is-a-file-and-types-of-files-in-linux/)，你需要时刻注意，确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。

前面已经说道，下面的这些方法都是从命令行中达到清空文件的目的。

**提示：**在下面的示例中，我们将使用名为 `access.log` 的文件来作为示例样本。

### 1. 通过重定向到 Null 来清空文件内容

清空或者让一个文件成为空白的最简单方式，是像下面那样，通过 shell 重定向 `null` （不存在的事物）到该文件：

```
# > access.log

```

![Empty Large File Using Null Redirect in Linux](/data/attachment/album/201612/08/195901fofaphifi0ofmhaf.png)

*在 Linux 下使用 Null 重定向来清空大文件*

### 2. 使用 ‘true’ 命令重定向来清空文件

下面我们将使用 `:` 符号，它是 shell 的一个内置命令，等同于 `true` 命令，它可被用来作为一个 no-op（即不进行任何操作）。

另一种清空文件的方法是将 `:` 或者 `true` 内置命令的输出重定向到文件中，具体如下：

```
# : > access.log
或
# true > access.log

```

![Empty Large File Using Linux Commands](/data/attachment/album/201612/08/195901eil5fu4ufun7i5u7.png)

*使用 Linux 命令清空大文件*

### 3. 使用 cat/cp/dd 实用工具及 /dev/null 设备来清空文件

在 Linux 中， `null` 设备基本上被用来丢弃某个进程不再需要的输出流，或者作为某个输入流的空白文件，这些通常可以利用重定向机制来达到。

所以 `/dev/null` 设备文件是一个特殊的文件，它将清空送到它这里来的所有输入，而它的输出则可被视为一个空文件。

另外，你可以通过使用 [**cat 命令**](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/) 显示 `/dev/null` 的内容然后重定向输出到某个文件，以此来达到清空该文件的目的。

```
# cat /dev/null > access.log

```

![Empty File Using cat Command](/data/attachment/album/201612/08/195901bzrhc00qgu3gfncr.png)

*使用 cat 命令来清空文件*

下面，我们将使用 [**cp 命令**](http://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/) 复制 `/dev/null` 的内容到某个文件来达到清空该文件的目的，具体如下所示：

```
# cp /dev/null access.log

```

![Empty File Content Using cp Command](/data/attachment/album/201612/08/195902jgzbvxrzsh19041a.png)

*使用 cp 命令来清空文件*

而下面的命令中， `if` 代表输入文件，`of` 代表输出文件。

```
# dd if=/dev/null of=access.log

```

![Empty File Content Using dd Command](/data/attachment/album/201612/08/195902od39ydzwy9dky4j9.png)

*使用 dd 命令来清空文件内容*

### 4. 使用 echo 命令清空文件

在这里，你可以使用 [**echo 命令**](http://www.tecmint.com/echo-command-in-linux/) 将空字符串的内容重定向到文件中，具体如下：

```
# echo "" > access.log
或者
# echo > access.log

```

![Empty File Using echo Command](/data/attachment/album/201612/08/195902j6e6mhjjred5mmec.png)

*使用 echo 命令来清空文件*

**注意：**你应该记住空字符串并不等同于 `null` 。字符串表明它是一个具体的事物，只不过它的内容可能是空的，但 `null` 则意味着某个事物并不存在。

基于这个原因，当你将 [echo 命令](http://www.tecmint.com/echo-command-in-linux/) 的输出作为输入重定向到文件后，使用 [cat 命令](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/) 来查看该文件的内容时，你将看到一个空白行（即一个空字符串）。

要将 null 做为输出输入到文件中，你应该使用 `-n` 选项，这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。

```
# echo -n "" > access.log

```

![Empty File Using Null Redirect](/data/attachment/album/201612/08/195903cel7zrk70w2o02qa.png)

*使用 Null 重定向来清空文件*

### 5. 使用 truncate 命令来清空文件内容

`truncate` 可被用来[**将一个文件缩小或者扩展到某个给定的大小**](http://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/)。

你可以利用它和 `-s` 参数来特别指定文件的大小。要清空文件的内容，则在下面的命令中将文件的大小设定为 0:

```
# truncate -s 0 access.log

```

![Truncate File Content in Linux](/data/attachment/album/201612/08/195903v1ht1ptgdkwpjkll.png)

*在 Linux 中截断文件内容*

我要介绍的就是这么多了。在本文中，我们介绍了几种通过使用一些简单的命令行工具和 shell 重定向机制来清除或清空文件内容的方法。

上面介绍的这些可能并不是达到清空文件内容这个目的的所有可行的实践方法，所以你也可以通过下面的评论栏告诉我们本文中尚未提及的其他方法。

---

via: <http://www.tecmint.com/empty-delete-file-content-linux/>

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

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


不常见但是很有用的 gcc 命令行选项（一）

Summary: 你知道，你可以让 gcc 保存每个编译阶段的输出吗？你知道用于生成警告的 -Wall 选项，它并不会包含一些特殊的警告吗？gcc 的很多命令行选项都不会经常用到，但是它们在某些特定的情况下会变得非常有用，例如，当你在调试代码的时候。

--save-temp不是--sava-temps吧

不不，是带 s 的，因为要保留好几个文件——你可以看看 man 手册。

译者好……

“好消息是 gcc 编译器提供了相应的命令行选项，你可以在标准编译命令中使用这些选项获得原本被编译器删除的中间文件。我们所说的选项就是-sava-temps。”

这里的“sava”大概是个 typo。

译者你好，

“好消息是 gcc 编译器提供了相应的命令行选项，你可以在标准编译命令中使用这些选项获得原本被编译器删除的中间文件。我们所说的选项就是-sava-temps。”

这里的“sava”大概是个 typo。

谢谢您的提醒。

软件工具通常情况下会提供多个功能以供选择，但是如你所知的，不是所有的功能都能被每个人用到的。公正地讲，这并不是设计上的错误，因为每个用户都会有自己的需求，他们只在他们的领域内使用该工具。然而，深入了解你所使用的工具也是很有益处的，因为你永远不知道它的某个功能会在什么时候派上用场，从而节省下你宝贵的时间。

![](/data/attachment/album/201612/08/205506mhw6nic6wsfihehe.jpeg)

举一个例子：编译器。一个优秀的编程语言编译器总是会提供极多的选项，但是用户一般只知道和使用其中很有限的一部分功能。更具体点来说，比如你是 C 语言开发人员，并将 Linux 作为你的开发平台，那么你很有可能会用到 gcc 编译器，这个编译器提供了 (几乎) 数不清的命令行选项列表。

你知道，你可以让 gcc 保存每个编译阶段的输出吗？你知道用于生成警告的 `-Wall` 选项，它并不会包含一些特殊的警告吗？gcc 的很多命令行选项都不会经常用到，但是它们在某些特定的情况下会变得非常有用，例如，当你在调试代码的时候。

所以在本文中，我们会介绍这样的几个选项，提供所有必要的细节，并通过简单易懂的例子来解释它们。

但是在开始前，请注意本文中所有的例子所使用的环境：基于 Ubuntu 16.04 LTS 操作系统，gcc 版本为 5.4.0。

### 在每个编译阶段查看中间代码的输出

你知道在通过 gcc 编译 c 语言代码的时候大体上共分为四个阶段吗？分别为预处理 -> 编译 -> 汇编 -> 链接。在每个阶段之后，gcc 都会产生一个将移交给下一个阶段的临时输出文件。但是生成的都是临时文件，因此我们并不能看到它们——我们所看到的只是我们发起编译命令，然后它生成的我们可以直接运行的二进制文件或可执行文件。

但是比如说在预处理阶段，如果调试时需要查看代码是如何进行处理的，你要怎么做呢？好消息是 gcc 编译器提供了相应的命令行选项，你可以在标准编译命令中使用这些选项获得原本被编译器删除的中间文件。我们所说的选项就是`-save-temps`。

以下是 [gcc 手册](https://linux.die.net/man/1/gcc)中对该选项的介绍：

>
> 永久存储临时的中间文件，将它们放在当前的文件夹下并根据源文件名称为其命名。因此，用 `-c -save-temps` 命令编译 foo.c 文件时会生成 foo.i foo.s 和 foo.o 文件。即使现在编译器大多使用的是集成的预处理器，这命令也会生成预处理输出文件 foo.i。
>
>
> 当与 `-x` 命令行选项结合使用时，`-save-temps` 命令会避免覆写与中间文件有着相同扩展名的输入源文件。相应的中间文件可以通过在使用 `-save-temps` 命令之前重命名源文件获得。
>
>
>

以下是怎样使用这个选项的例子：

```
gcc -Wall -save-temps test.c -o test-exec

```

下图为该命令的执行结果，验证其确实产生了中间文件：

![](/data/attachment/album/201612/09/102206aqcwh2qcsa8fa9q0.png)

因此，在截图中你所看到的 test.i、test.s、 test.o 文件都是由 `-save-temps` 选项产生的。这些文件分别对应于预处理、编译和链接阶段。

### 让你的代码可调试和可分析

你可以使用专有的工具调试和分析代码。如 [gdb](https://www.gnu.org/software/gdb/) 就是专用于调试的工具，而 [gprof](https://sourceware.org/binutils/docs/gprof/) 则是热门的分析工具。但你知道 gcc 特定的命令行选项也可以让你的代码可调试和可分析吗？

让我们开始调试之路吧！为了能在代码调试中使用 gdb，你需要在编译代码的时候使用 gcc 编译器提供的 `-g` 选项。这个选项让 gcc 生成 gdb 需要的调试信息从而能成功地调试程序。

如果你想要使用此选项，建议您详细阅读 [gcc 手册](https://linux.die.net/man/1/gcc)提供的有关此选项的详细信息——在某些情况下，其中的一些内容可能是至关重要的。 例如，以下是从手册页中摘录的内容：

>
> GCC 允许在使用 `-g` 选项的时候配合使用 `-O` 选项。优化代码采用的便捷方式有时可能会产生意想不到的结果：某些你声明的变量可能不复存在；控制流可能会突然跳转到你未曾预期的位置；一些语句也许不会执行，因为它们已经把常量结果计算了或值已经被保存；一些语句可能会在不同地方执行，因为它们已经被移出循环。
>
>
> 然而优化的输出也是可以调试的。这就使得让优化器可以合理地优化或许有 bug 的代码。
>
>
>

不只是 gdb，使用 `-g` 选项编译代码，还可以开启使用 Valgrind 内存检测工具，从而完全发挥出该选项的潜力。或许还有一些人不知道，mencheck 工具被程序员们用来检测代码中是否存在内存泄露。你可以在[这里](http://valgrind.org/docs/manual/mc-manual.html)参见这个工具的用法。

继续往下，为了能够在代码分析中使用 gprof 工具，你需要使用 `-pg` 命令行选项来编译代码。这会让 gcc 生成额外的代码来写入分析信息，gprof 工具需要这些信息来进行代码分析。[gcc 手册](https://linux.die.net/man/1/gcc) 中提到：当编译你需要数据的源文件时，你必须使用这个选项，当然链接时也需要使用它。为了能了解 gprof 分析代码时具体是如何工作的，你可以转到我们的网站[专用教程](https://www.howtoforge.com/tutorial/how-to-install-and-use-profiling-tool-gprof/)进行了解。

**注意**：`-g` 和 `-pg` 选项的用法类似于上一节中使用 `-save-temps` 选项的方式。

### 结论

我相信除了 gcc 的专业人士，都可以在这篇文章中得到了一些启发。尝试一下这些选项，然后观察它们是如何工作的。同时，请期待本教程系列的[下一部分](https://www.howtoforge.com/tutorial/uncommon-but-useful-gcc-command-line-options-2/)，我们将会讨论更多有趣和有用的 gcc 命令行选项。

---

via: <https://www.howtoforge.com/tutorial/uncommon-but-useful-gcc-command-line-options/>

作者：[Ansh](https://twitter.com/howtoforgecom) 译者：[dongdongmian](https://github.com/dongdongmian) 校对：[wxy](https://github.com/wxy)

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


Linux 的实用性 VS 行动主义

Summary: 我们使用 Linux 是因为它比其他操作系统更实用，还是其他更高级的理由呢？

上学时是一个自由软件的信徒，工作了就注重体验了。

来自四川成都的 Internet Explorer 11.0|Windows 8 用户

我也算是一个实用主义的爱好者吧。

我们使用 Linux 是因为它比其他操作系统更实用，还是其他更高级的理由呢？

*我们使用 Linux 是因为它比其他操作系统更实用，还是其他更高级的理由呢？*

![](/data/attachment/album/201612/09/205601f78lz1eqhh4o14iq.jpg)

运行 Linux 的最吸引人的事情之一就是它所提供的自由。 Linux 社区之间的分野在于我们如何看待这种自由。

对一些人来说，使用 Linux 可以享受到不受供应商限制或避免高昂的软件成本的自由。大多数人会称这个是一个实用性的考虑。而其它用户会告诉你，他们享受的是自由软件的自由。那就意味着拥护支持<ruby>   自由软件运动  <rt>  Free Software Movement </rt></ruby>的 Linux 发行版，完全避免专有软件和所有相关的东西。

在这篇文章中，我将带你比较这两种自由的区别，以及它们如何影响 Linux 的使用。

### 专有的问题

大多数 Linux 用户有一个共同点，就是他们尽量避免使用专有软件。对像我这样的实用主义的爱好者来说，这意味着我能够控制我的软件支出，以及避免过度依赖特定供应商。当然，我不是一个程序员……所以我对安装软件的调整是十分微小的。但也有一些个别情况，对应用程序的小调整就意味着它要么能工作，要么不能。

还有一些 Linux 爱好者，倾向于避开专有软件，因为他们觉得使用它们是不道德的。通常这里主要的问题是使用专有软件会剥夺或者干脆阻碍你的个人自由。像这些用户更喜欢使用 Linux 发行版和软件来支持 [自由软件理念](https://www.gnu.org/philosophy/free-sw.en.html) 。虽然它与开源的概念相似并经常直接与之混淆，[但它们之间还是有些差异的](https://www.gnu.org/philosophy/free-software-for-freedom.en.html) 。

因此，问题就在这里：像我这样的用户往往将便利性置于纯粹的软件自由的理念之上。不要误会我的意思，像我这样的人喜欢使用符合自由软件理念的软件，但我们也更有可能做出让步（使用专有软件），以完成特定的任务。

这两种类型的 Linux 爱好者都喜欢使用非专有软件的解决方案。但是，自由软件倡导者根本不会去使用专有软件，而实用主义用户会选择具有最佳性能的工具。这意味着，在有些情况下，这些用户会在他们的非专有操作系统上运行专有应用或代码。

最终，这两种类型的用户都喜欢使用 Linux 所提供的非专有解决方案。但是，我们这样做的原因往往会有所不同。有人认为那些不支持自由软件的人是无知的。我不同意这种看法，我认为它是实用方便性的问题。那些喜欢实用方便性的用户根本不关心他们软件的政治问题。

### 实用方便性

当你问起绝大多数的人为什么使用他们现在的操作系统，回答通常都集中于实用方便性。方便性可能体现在“它是我一直使用的系统”，乃至于“它运行了我需要的软件”。 其他人可能进一步解释说，软件对他们使用操作系统的偏好影响不大，而是对操作系统的熟悉程度的问题，最后，还有一些特殊的“商业考虑”或硬件兼容性等问题也导致我们使用这个操作系统而不是另一个。

这可能会让你们中许多人很惊讶，不过如今我运行桌面 Linux 最大的一个原因是由于我熟悉它。即使我能为别人提供 Windows 和 OS X 的支持，实际上我使用这些操作系统时感觉相当沮丧，因为它们根本就不是我习惯的用法。也因此我对那些 Linux 新手表示同情，因为我太懂得踏入陌生的领域是怎样的让人恼火了。我的观点是这样的 —— 熟悉具有价值，而且熟悉加强了实用方便性。

现在，如果我们把它和一个自由软件倡导者的需求来比较，你会发现这种人都愿意学习新的甚至更具挑战性的东西，以避免使用非自由软件。对这种用户，我最赞赏的地方，就是他们坚定的采取少数人选择的道路来坚持他们的原则，在我看来，这是十分值得赞赏的。

### 自由的价值

我不羡慕那些自由软件倡导者的一个地方，就是根据<ruby>   自由软件基金会  <rt>  Free Software Foundation </rt></ruby>规定的标准，为实现其自由，他们要始终使用 Linux 发行版和硬件而付出的额外工作。这意味着 Linux 内核需要摆脱专有的驱动支持，而且硬件不需要任何专有代码。当然不是不可能的，但确实很难。

一个自由软件倡导者可以达到的最好的情况是硬件是“自由兼容”的。有些供应商，可以满足这一需求，但大多提供的硬件依赖于 Linux 兼容的专有固件。实用主义用户对自由软件倡导者来说是个搅局者。

那么这一切意味着的是，倡导者必须比实用主义的 Linux 爱好者，更加警惕。这本身并不一定是坏事，但如果是打算跳入自由软件的阵营那就要考虑下了。比较而言，实用主义的用户可以不假思索地使用与 Linux 兼容的任何软件或硬件。我不知道你是怎么想的，但在我眼中这样更轻松一点。

### 定义自由软件

这一部分可能会让一部分人不高兴，因为我不相信自由软件只有一种。从我的立场，我认为真正的自由是能够在一个特定情况下在所有可用的数据里，用最适合这个人生活方式的方法来解决。

对我来说，我更喜欢使用能满足我所有需求的 Linux 桌面，这包括使用非专有软件和专有软件。尽管有人认为专有软件限制了我的个人自由，但我必须反驳这一点，因为我有优先使用它的自由，即选择的自由。

或许，这也就是为什么我更认同<ruby> 开源软件 <rt>  Open Source Software </rt></ruby>的理想，而不是坚持<ruby> 自由软件运动 <rt>  Free Software movement </rt></ruby>的理念。我更愿意和这样的人群在一起，他们不会花时间告诉我，我使用对我最适合的方式却是错误的。根据我的经验，这些开源的人群仅仅是感兴趣去分享自由软件的优点，不带有自由软件的理想主义的激情。

我觉得自由软件的概念很棒。而且对那些需要活跃在软件政治，并向大众指出使用专有软件的缺陷的人来说，我认为 Linux ( [GNU/Linux](https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy) ) 行动是一个不错的选择。而像我这样的实用主义用户可能从自由软件的支持者转向，如本文中所说。

当我介绍 Linux 的桌面时，我富有激情地分享它的实际优点。如果我成功地让他们享受这一经历，我鼓励用户自己去发现自由软件的观点。但我发现大多数人使用 Linux 并不是因为他们想拥抱自由软件，而仅仅是他们想要最好的用户体验。也许只有我是这样的观点，很难说。

你怎么认为呢？你是一个自由软件倡导者吗？也许你倾向于在桌面 Linux 发行版中使用专有软件/代码？那么评论和分享您的 Linux 桌面体验吧！

---

via: <http://www.datamation.com/open-source/linux-practicality-vs-activism.html>

作者：[Matt Hartley](http://www.datamation.com/author/Matt-Hartley-3080.html) 译者：[joVoV](https://github.com/joVoV) 校对：[jasminepeng](https://github.com/jasminepeng)

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


如何在 Linux 和 Windows 之间共享 Steam 的游戏文件

![](/data/attachment/album/201612/09/212454zfl22ls4e292z9ip.jpg)

*简介：这篇详细的指南将向你展示如何在 Linux 和 Windows 之间共享 Steam 的游戏文件以节省下载的总用时和下载的数据量。我们将展示给你它是怎样为我们节约了 83% 的数据下载量。*

假如你决心成为一名 Linux 平台上的玩家，并且在 [Steam](http://store.steampowered.com/) 上拥有同时支持 Linux 和 Windows 平台的游戏，或者基于同样的原因，拥有双重启动的系统，则你可以考虑看看这篇文章。

我们中的许多玩家都拥有双重启动的 Linux 和 Windows。有些人只拥有 Linux 系统，但同时拥有当前还没有被 Linux 平台上的 Steam 支持的游戏。所以我们同时保留这两个系统以便我们可以在忽略平台的前提下玩我们喜爱的游戏。

幸运的是 [Linux 游戏](https://itsfoss.com/linux-gaming-guide/)社区应运而生，越来越多在 Windows 平台上受欢迎的 Steam 游戏也发布在 Linux 平台上的 Steam 中。

我们中的许多人喜欢备份我们的 Steam 游戏，使得我们不再苦苦等待游戏下载完成。这些游戏很大程度上是 Windows 平台下的 Steam 游戏。

现在，很多游戏也已经登陆了 [Linux 平台上的 Steam](https://itsfoss.com/install-steam-ubuntu-linux/)，例如<ruby> 奇异人生 <rp>  （ </rp> <rt>  Life is Strange </rt> <rp>  ） </rp></ruby>、<ruby> 古墓丽影 2013 <rp>  （ </rp> <rt>  Tomb Raider 2013 </rt> <rp>  ） </rp></ruby>、<ruby> 中土世界：魔多阴影 <rp>  （ </rp> <rt>  Shadow of Mordor </rt> <rp>  ） </rp></ruby>、<ruby> 幽浮：未知敌人 <rp>  （ </rp> <rt>  XCOM: Enemy Unknown </rt> <rp>  ） </rp></ruby>、幽浮 2、<ruby> 与日赛跑 <rp>  （ </rp> <rt>  Race The Sun </rt> <rp>  ） </rp></ruby>、<ruby> 公路救赎 <rp>  （ </rp> <rt>  Road Redemption </rt> <rp>  ） </rp></ruby>、<ruby> 燥热 <rp>  （ </rp> <rt>  SUPERHOT </rt> <rp>  ） </rp></ruby>等等，并且[这份名单一直在增长](https://itsfoss.com/best-linux-games/)。甚至还有<ruby>   杀出重围：人类分裂  <rp>  （ </rp> <rt>  Deus Ex: Mankind Divided </rt> <rp>  ） </rp></ruby>和<ruby>   疯狂的麦克斯  <rp>  （ </rp> <rt>  Mad Max </rt> <rp>  ） </rp></ruby>！！！在一些游戏的 Windows 版发布之后，现在我们不必再等候多年，而只需等待几月左右，便可以听到类似的消息了，这可是大新闻啊！

下面的实验性方法将向你展示如何使用你现存的任何平台上游戏文件来在 Steam 上恢复游戏的大部分数据。对于某些游戏，它们在两个平台下有很多相似的文件，利用下面例子中的方法，将减少你在享受这些游戏之前的漫长的等待时间。

在下面的方法中，我们将一步一步地尝试利用 Steam 自身的备份与恢复功能或者以手工的方式来达到我们的目的。当涉及到这些方法的时候，我们也将向你展示这两个平台上游戏文件的相同和不同之处，以便你也可以探索并做出你自己的调整。

下面的方法中，我们将使用 Ubuntu 14.04 LTS 和 Windows 10 来执行备份与恢复 Steam 的测试。

### 1、Steam 自身的备份与恢复

当我们尝试使用 Windows 平台上 Steam 中《<ruby> 燥热 <rp>  （ </rp> <rt>  SUPERHOT </rt> <rp>  ） </rp></ruby>》这个游戏的备份（这些加密文件是 .csd 格式）时，Linux 平台上的 Steam 不能识别这些文件，并重新开始下载整个游戏了！甚至在做了验证性检验后，仍然有很大一部分文件不能被 Steam 识别出来。我们在 Windows 上也做了类似的操作，但结果是一样的！

![](/data/attachment/album/201612/10/193426kxihtblbit8ltppt.jpeg)

![](/data/attachment/album/201612/10/193448ibhw8434bnr046mp.jpeg)

现在到了我们用某些手工的方法来共享 Windows 和 Linux 上的 Steam 游戏的时刻了！

### 2、手工方法

首先，让我们先看看 Linux 下这些游戏文件所处的位置（用户目录在 /home 中）：

这是 Linux 平台上 Steam 游戏的默认安装位置。 `.local` 和 `.steam` 目录默认情况下是不可见的，你必须将它们显现出来。我们将推荐使用一个自定义的 Steam 安装位置以便更容易地处理这些文件。这里 `SUPERHOT.x86_64` 是 Linux 下原生的可执行文件，与 Windows 中的 `.exe` 文件类似。

![](/data/attachment/album/201612/10/193508uz733epp6v586l4e.jpeg)

下图展示的位置包含我们需要的大部分文件（在 Windows 和 Linux 平台上相同）：

![](/data/attachment/album/201612/10/193528wg6kxa0kxa6fkmkv.jpeg)

下面我们来看看这些 `.acf` 格式的文件。`appmanifest_322500.acf` 便是那个我们需要的文件。编辑并调整这个文件有助于 Steam 识别在 `common` 这个目录下现存的非加密的原始文件备份：

![](/data/attachment/album/201612/10/193558zcs8ce8ec88conzn.jpeg)

为了确认这个文件是一样的，用编辑器打开这个文件并检查它。我们越多地了解这个文件越好。这个[链接是来自 Steam 论坛上的一个帖子](https://steamcommunity.com/app/292030/discussions/0/357286663676318082/)，它展示了这个文件的主要意义。它类似于下面这样：

```
“AppState”
{
“appid”        “322500”
“Universe”        “1”
“name”        “SUPERHOT”
“StateFlags”        “4”
“installdir”        “SUPERHOT”
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”       “<SteamID>”
“BytesToDownload”        “909578688”
“BytesDownloaded”        “909578688”
“AutoUpdateBehavior”        “0”
“UserConfig”
{
“Language”        “english”
}
“MountedDepots”
{
“322503”        “1943012315434556837”
}
}

```

在 Linux 平台上卸载游戏后我们再进行测试。现在让我们看看在 Windows 10 上相同的游戏安装目录里包含哪些内容：

![](/data/attachment/album/201612/10/193633odedu3ed57333uzu.jpeg)![](/data/attachment/album/201612/10/193655fkt5wx07khdwqir5.jpeg)

我们复制了 `SUPERHOT` 目录和 `.acf` 格式的清单文件（这个文件在 Windows 的 Steam 上格式是一样的）。在复制 `.acf` 文件和游戏目录到 Linux 中 Steam 它们对应的位置时，我们需要确保 Steam 没有在后台运行。

在转移完成之后，我们运行 Steam 并看到了这个：

![](/data/attachment/album/201612/10/193721r0db0604691av9th.jpeg)

所以下图显示只需要有 235.5 MB 的文件需要下载，而不是整个 867.4 MB，这意味着超过 70% 的文件已经被 Steam 识别了:) ！相对来说，节省了一笔大量的时间开销。当然不同的游戏可能有所不同，但对于那些网速居于平均水平或以下的玩家来说，这种方法绝对值得一试，尤其是考虑到当前那些 40-50 GB 大小的重量级游戏。

我们还进行了其他几种尝试：

* 我们尝试使用 Linux 下原有的清单文件（`.acf`）和来自 Windows 的手工备份文件，但结果是 Steam 重新开始下载游戏。
* 我们看到当我们将 `SUPERHOT_Data` 这个目录中的 `SH_Data` 更换为 Windows 中的对应目录时，同上面的一样，也重新开始下载整个游戏。

### 理解清单目录的一个尝试

清单目录绝对可以被进一步地被编辑和修改以此来改善上面的结果，使得 Steam 检测出尽可能多的文件。

在 Github 上有一个[项目](https://github.com/dotfloat/steam-appmanifest)，包含一个可以生成这些清单文件的 python 脚本。任何 Steam 游戏的 AppID 可以从[SteamDB](https://steamdb.info/) 上获取到。知晓了游戏的 ID 号后，你便可以用你喜爱的编辑器以下面的格式创建你自己的清单文件 `appmanifest_<AppID>.acf`。在上面手工方法中，我们可以看到 SUPERHOT 这个游戏的 AppID 是 322500，所以对应的清单文件名应该是 `appmanifest_322500.acf`。

下面以我们知晓的信息来尝试对该文件进行一些解释：

```
“AppState”                                   // 应用（游戏）的状态
“appid”        “322500”                    // 游戏的 AppID
“Universe”        “1”
“name”        “SUPERHOT”                   // 游戏的名称
“StateFlags”        “4”
“installdir”        “SUPERHOT”             // 安装目录的名称
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”        “<SteamID>”             // 唯一的帐号拥有者的 <SteamID>
“BytesToDownload”        “909578688”       // 将这个数字除以 1073741824(1024 x 1024 x 1024) 便可以计算出还需要下载的数据大小，以 GB 记。
“BytesDownloaded”        “909578688”       // 已下载数据的大小， 以 Bytes 记。
“AutoUpdateBehavior”        “0”            // 当这个设为 0 时，该游戏将自动升级。

“UserConfig”                                 // 用户的配置信息
{
“Language”        “english”
}
“MountedDepots”                              //  这个部分大多与游戏的 DLC 相关。
{
“322503”        “1943012315434556837”
}
}

```

通过计算下载的数据的大小，你可以将它与 Steam 展现的信息进行比较并进行更多的调整。

假如你知道更多关于清单文件或者手工方式中另外可以改进的方法，请在评论中分享给大家。我们打算去发现更多的关于这些文件格式的信息，当前在官方的 [Valve 开发者社区](https://developer.valvesoftware.com/wiki/Main_Page) 或者  [Steam 论坛](http://steamcommunity.com/discussions/) 上我们还没有发现完整的文档。

至少现在为止，这些便是我们知道的在 Linux 和 Windows 之间分享 Steam 游戏的最好方法了。

---

via: <https://itsfoss.com/share-steam-files-linux-windows/>

作者：[Avimanyu Bandyopadhyay](https://itsfoss.com/author/avimanyu/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 中启用 Shell 脚本的调试模式

脚本是存储在一个文件的一系列命令。在终端上输入一个个命令，按顺序执行的方法太弱了，使用脚本，系统中的用户可以在一个文件中存储所有命令，反复调用该文件多次重新执行命令。

在学习脚本或写脚本的初期阶段，我们通常从写小脚本或者几行命令的短脚本开始，调试这样的脚本时我们通常无非就是通过观察它们的输出来确保其正常工作。

然而，当我们开始写非常长或上千行命令的高级脚本，例如改变系统设置的脚本，[在网络上执行关键备份](/article-5694-1.html) 等等，我们会意识到仅仅看脚本输出是不足以在脚本中找到 Bug 的！

因此，在 Linux 系列中这篇介绍 Shell 脚本调试， 我们将看看如何启用 Shell 脚本调试，然后在之后的系列中解释不同的 Shell 脚本调试模式以及如何使用它们。

![](/data/attachment/album/201612/11/123710ekugnqneekklrbn6.jpg)

### 如何开始写一个脚本

一个脚本与其它文件的区别是它的首行，它包含 `#!` （She-Bang - [释伴](/article-3664-1.html)：定义文件类型）和路径名（解释器路径），通知系统该文件是一个命令集合，将被指定程序(解释器)解释。

下面是不同类型脚本 `首行` 示例：

```
#!/bin/sh          [sh 脚本]
#!/bin/bash        [bash 脚本]
#!/usr/bin/perl    [perl 程序]
#!/bin/awk -f      [awk 脚本]

```

注意：如果脚本仅包含一组标准系统命令，没有任何内部 Shell 指令，首行或 `#!` 可以去掉。

### 如何在 Linux 操作系统执行 Shell 脚本

调用一个脚本脚本的常规语法是：

```
$ 脚本名  参数1 ... 参数N

```

另一种可能的形式是明确指定将执行这个脚本的 Shell，如下：

```
$ shell 脚本名  参数1 ... 参数N

```

示例：

```
$ /bin/bash   参数1 ... 参数N     [bash 脚本]
$ /bin/ksh   参数1 ... 参数N      [ksh 脚本]
$ /bin/sh   参数1 ... 参数N       [sh 脚本]

```

对于没有 `#!` 作为首行，仅包含基础系统命令的脚本，示例如下：

```
### 脚本仅包含标准系统命令
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

```

使它可执行并运行，如下：

```
$ chmod +x  脚本名
$ ./脚本名

```

### 启用 Shell 脚本调试模式的方法

下面是主要的 Shell 脚本调试选项：

* `-v` （verbose 的简称） - 告诉 Shell 读取脚本时显示所有行，激活详细模式。
* `-n` （noexec 或 no ecxecution 简称） - 指示 Shell 读取所有命令然而不执行它们，这个选项激活语法检查模式。
* `-x` （xtrace 或 execution trace 简称） - 告诉 Shell 在终端显示所有执行的命令和它们的参数。 这个选项是启用 Shell 跟踪模式。

#### 1、 改变 Shell 脚本首行

第一个机制是改变 Shell 脚本首行，如下，这会启动脚本调试。

```
#!/bin/sh 选项

```

其中， 选项可以是上面提到的一个或多个调试选项。

#### 2、 调用 Shell 调试选项

第二个是使用如下调试选项启动 Shell，这个方法也会打开整个脚本调试。

```
$ shell 选项   参数1 ... 参数N

```

示例：

```
$ /bin/bash 选项   参数1 ... 参数N

```

#### 3、 使用 Shell 内置命令 set

第三个方法是使用内置命令 `set` 去调试一个给定的 Shell 脚本部分，如一个函数。这个机制是重要的，因为它让我们可以去调试任何一段 Shell 脚本。

我们可以如下使用 `set` 命令打开调试模式，其中选项是之前提到的所有调试选项。

```
$ set 选项

```

启用调试模式：

```
$ set -选项

```

禁用调试模式：

```
$ set +选项

```

此外，如果我们在 Shell 脚本不同部分启用了几个调试模式，我们可以一次禁用所有调试模式，如下：

```
$ set -

```

关于启用 Shell 脚本调试模式，先讲这些。正如我们看到的，我们可以调试一整个 Shell 脚本或者特定部分脚本。

在此系列下面的两篇文章中，我们会举例介绍如何使用 Shell 脚本调试选项，进一步了解 <ruby> 详细 <rp>  （ </rp> <rt>  verbose </rt> <rp>  ） </rp></ruby>、<ruby> 语法检查 <rp>  （ </rp> <rt>  syntax checking </rt> <rp>  ） </rp></ruby>、 <ruby> 跟踪 <rp>  （ </rp> <rt>  tracing </rt> <rp>  ） </rp></ruby>调试模式。

更重要的是，关于这个指南，欢迎通过下面评论提出任何问题或反馈。

---

via: <http://www.tecmint.com/enable-shell-debug-mode-linux/>

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

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