使用一次性密码本通过 SSH 安全登录 Linux

Summary: 有人说，安全不是一个产品，而是一个过程（LCTT 注：安全公司 McAfee 认为，安全风险管理是一个方法论，而不是安全产品的堆叠）。虽然 SSH 协议被设计成使用加密技术来确保安全，但如果使用不当，别人还是能够破坏你的系统：比如弱密码、密钥泄露、使用过时的 SSH 客户端等，都能引发安全问题。 在考虑 SSH 认证方案时，大家普遍认为公钥认证比密码认证更安全。然而，公钥认证技术并不是为公共环境设置的，如果你在一台公用电脑上使用公钥认证登录 SSH 服务器，你的服务器已经毫无安全可言了，公用的电脑可能会记录你的公钥，或从你的内存

如果登陆280次以后是不是就意味着密码表失败了呢？

如果登陆280次以后是不是就意味着密码表失败了呢？

如果登陆280次以后是不是就意味着密码表失败了呢？

是的，你需要重新生成一个新的密码表。

centos 7 otpw-gen > temporary_password.txt这个命令找不到啊。。。

搞定了。。就是略繁琐啊！！

# 使用一次性密码本通过 SSH 安全登录 Linux

有人说，安全不是一个产品，而是一个过程（LCTT 注：安全公司 McAfee 认为，安全风险管理是一个方法论，而不是安全产品的堆叠）。虽然 SSH 协议被设计成使用加密技术来确保安全，但如果使用不当，别人还是能够破坏你的系统：比如弱密码、密钥泄露、使用过时的 SSH 客户端等，都能引发安全问题。

在考虑 SSH 认证方案时，大家普遍认为[公钥认证](/article-5444-1.html)比密码认证更安全。然而，公钥认证技术并不是为公共环境设置的，如果你在一台公用电脑上使用公钥认证登录 SSH 服务器，你的服务器已经毫无安全可言了，公用的电脑可能会记录你的公钥，或从你的内存中读取公钥。如果你不信任本地电脑，那你最好还是使用其他方式登录服务器。现在就是“一次性密码（OTP）”派上用场的时候了，就像名字所示，一次性密码只能被使用一次。这种一次性密码非常合适在不安全的环境下发挥作用，就算它被窃取，也无法再次使用。

有个生成一次性密码的方法是通过[谷歌认证器](/article-2642-1.html)，但在本文中，我要介绍的是另一种 SSH 登录方案：[OTPW](http://www.cl.cam.ac.uk/%7Emgk25/otpw.html)，它是个一次性密码登录的软件包。不像谷歌认证，OTPW 不需要依赖任何第三方库。

### OTPW 是什么

OTPW 由一次性密码生成器和 PAM 认证规则组成。在 OTPW 中一次性密码由生成器事先生成，然后由用户以某种安全的方式获得（比如打印到纸上）。另一方面，这些密码会通过 Hash 加密保存在 SSH 服务器端。当用户使用一次性密码登录系统时，OTPW 的 PAM 模块认证这些密码，并且保证它们不能再次使用。

### 步骤1：OTPW 的安装和配置

#### 在 Debian, Ubuntu 或 Linux Mint 发行版上

使用 apt-get 安装：

```
$ sudo apt-get install libpam-otpw otpw-bin

```

打开针对 SSH 服务的 PAM 配置文件（/etc/pam.d/sshd），注释掉下面这行（目的是禁用 PAM 的密码认证功能）：

```
#@include common-auth

```

添加下面两行（用于打开一次性密码认证功能）：

```
auth       required     pam_otpw.so
session    optional     pam_otpw.so

```

#### 在 Fedora 或 CentOS/RHEL 发行版上

在基于 RedHat 的发行版中没有编译好的 OTPW，所以我们需要使用源代码来安装它。

首先，安装编译环境：

```
$ sudo yum git gcc pam-devel
$ git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw
$ cd otpw

```

打开 Makefile 文件，编辑以“PAMLIB=”开头的那行配置：

64 位系统：

```
PAMLIB=/usr/lib64/security

```

32 位系统：

```
PAMLIB=/usr/lib/security

```

编译安装。需要注意的是安装过程会自动重启 SSH 服务一下，所以如果你是使用 SSH 连接到服务器，做好被断开连接的准备吧（LCTT 译注：也许不会被断开连接，即便被断开连接，请使用原来的方式重新连接即可，现在还没有换成一次性口令方式。）。

```
$ make
$ sudo make install

```

现在你需要更新 SELinux 策略，因为 /usr/sbin/sshd 会往你的 home 目录写数据，而 SELinux 默认是不允许这么做的。如果没有使用 SELinux 服务（LCTT 注：使用 getenforce 命令查看结果，如果是 enforcing，就是打开了 SELinux 服务），请跳过这一步。

```
$ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol
$ sudo semodule -i mypol.pp

```

接下来打开 PAM 配置文件（/etc/pam.d/sshd），注释下面这行（为了禁用密码认证）：

```
#auth       substack     password-auth

```

添加下面两行（用于打开一次性密码认证功能）：

```
auth       required     pam_otpw.so
session    optional     pam_otpw.so

```

#### 步骤2：配置 SSH 服务器，使用一次性密码

打开 /etc/ssh/sshd\_config 文件，设置下面三个参数。你要确保下面的参数不会重复存在，否则 SSH 服务器可能会出现异常。

```
UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
UsePAM yes

```

你还需要禁用默认的密码认证功能。另外可以选择开启公钥认证功能，那样的话你就可以在没有一次性密码的时候使用公钥进行认证。

```
PubkeyAuthentication yes
PasswordAuthentication no

```

重启 SSH 服务器。

Debian, Ubuntu 或 Linux Mint 发行版：

```
$ sudo service ssh restart

```

Fedora 或 CentOS/RHEL 7 发行版：

```
$ sudo systemctl restart sshd

```

（LCTT 译注：虽然这里重启了 sshd 服务，但是你当前的 ssh 连接应该不受影响，只是在你完成下述步骤之前，无法按照原有方式建立新的连接了。因此，保险起见，要么多开一个 ssh 连接，避免误退出当前连接；要么将重启 sshd 服务器步骤放到步骤3完成之后。）

#### 步骤3：使用 OTPW 产生一次性密码

之前提到过，你需要事先创建一次性密码，并保存起来。使用 otpw-gen 命令创建密码：

```
$ cd ~
$ otpw-gen > temporary_password.txt

```

这个命令会让你输入密码前缀，当你以后登录的时候，你需要同时输入这个前缀以及一次性密码。密码前缀是另外一层保护，就算你的一次性密码表被泄漏，别人也无法通过暴力破解你的 SSH 密码。

设置好密码前缀后，这个命令会产生 280 个一次性密码（LCTT 译注：保存到 ~/.otpw 下），并将它们导出到一个文本文件中（如 temporary\_password.txt）。每个密码（默认是 8 个字符）由一个 3 位十进制数索引。你需要将这个密码表打印出来，并随身携带。

查看 ./.otpw 文件，它存放了一次性密码的 HASH 值。头 3 位十进制数与你随身携带的密码表的索引一一对应，在你登录 SSH 服务器的时候会被用到。

```
$ more ~/.otpw

```

---

```
OTPW1
280 3 12 8
191ai+:ENwmMqwn
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z

```

### 测试一次性密码登录 SSH 服务器

使用普通的方式登录 SSH 服务器：

```
$ ssh user@remote_host

```

如果 OTPW 成功运行，你会看到一点与平时登录不同的地方：

```
Password 191:

```

现在打开你的密码表，找到索引号为 191 的密码。

```
023 kBvp tq/G  079 jKEw /HRM  135 oW/c /UeB  191 fOO+ PeiD  247 vAnZ EgUt

```

从上表可知，191 号密码是“fOO+PeiD”。你需要加上密码前缀，比如你设置的前缀是“000”，则你实际需要输入的密码是“000fOO+PeiD”。

成功登录后，你这次输入的密码自动失效。查看 ~/.otpw　文件，你会发现第一行变成“---------------”，这表示 191 号密码失效了。

```
OTPW1
280 3 12 8
---------------
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z

```

### 总结

在这个教程中，我介绍了如何使用 OTPW 工具来设置一次性登录密码。你也许意识到了在这种双因子的认证方式中，打印一张密码表让人感觉好 low，但是这种方式是最简单的，并且不用依赖任何第三方软件。无论你用哪种方式创建一次性密码，在你需要在一个不可信任的环境登录 SSH 服务器的时候，它们都很有用。你可以就这个主题来分享你的经验和观点。

---

via: <http://xmodulo.com/secure-ssh-login-one-time-passwords-linux.html>

作者：[Dan Nanni](http://xmodulo.com/author/nanni) 译者：[bazz2](https://github.com/bazz2) 校对：[wxy](https://github.com/wxy)

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


微软开源了WCF框架

Summary: 微软于今日（2015/5/20）宣布了针对 .NET Core 的重大开源：WCF（Windows Communication Foundation）。  如MSDN中的描述:WCF是一个构建面向服务应用的框架。使用WCF，你可以从一个服务终端给另一个发送异步消息。服务终端可以是托管在IIS中连续可用的服务的一部分，也可以是托管在某个程序上的服务。服务终端可以是请求服务端数据的客户端。消息可以是一个字符或者XML，也可以是复杂的二进制流。 它的代码放在GitHub，包含了Window桌面中完整WCF框架的一部分，它支持已经可用于构建Window Store上的WCF应用的库。这些主要是基于客户端，

# 微软开源了WCF框架

微软于今日（2015/5/20）宣布了针对 .NET Core 的重大开源：WCF（Windows Communication Foundation）。

<img src="content_image/album_201505_24_230007w1v2c1kq19mz9mjj.png" alt="" title="">

如[MSDN](https://msdn.microsoft.com/en-us/library/ms731082%28v=vs.110%29.aspx)中的描述:“WCF是一个构建面向服务应用的框架。使用WCF，你可以从一个服务终端给另一个发送异步消息。服务终端可以是托管在IIS中连续可用的服务的一部分，也可以是托管在某个程序上的服务。服务终端可以是请求服务端数据的客户端。消息可以是一个字符或者XML，也可以是复杂的二进制流。”

它的[代码放在GitHub](https://github.com/dotnet/wcf)，“包含了Window桌面中完整WCF框架的一部分，它支持已经可用于构建Window Store上的WCF应用的库。这些主要是基于客户端，方便移动设备和中间层服务器使用WCF进行通信。”

更多的关于微软开源 WCF 的细节查看[dotNETFoundation.org blog](http://www.dotnetfoundation.org/blog/wcf-is-open-source)的公告。

WCF听上去有点像Linux中用于进程/服务之间的进程间通讯的D-BUS。

---

via: <http://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Open-Source-WCF>

作者：[Michael Larabel](http://www.michaellarabel.com/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


更漂亮的 Square 2.0图标包

Summary: 优雅、现代的Square图标主题最近更新到了2.0版，它比以前更漂亮了。Square图标包与其他主要的桌面环境如Unity、 GNOME、KDE、 MATE等等兼容。这意味着你可以在所有的流行Linux发行版如Ubuntu、Fedora、Linux Mint、elementary OS等等中使用它。 这个图标包估计包含超过了15000个图标。 在Linux中安装Square 2.0图标包 有两种不同的Square图标，暗色和亮色。基于你的喜好，你可以选择二者之一。出于体验的目的，我建议你两个主题包都下载。 你可以用下面的链接下载图标包。文件存储在Google Drive，因此如果你没有看见像SourceForge这样标

又是扁平的？

# 更漂亮的 Square 2.0图标包

优雅、现代的[Square图标主题](http://gnome-look.org/content/show.php/Square?content=163513)最近更新到了2.0版，它比以前更漂亮了。Square图标包与其他主要的桌面环境如**Unity、 GNOME、KDE、 MATE等等**兼容。这意味着你可以在所有的流行Linux发行版如Ubuntu、Fedora、Linux Mint、elementary OS等等中使用它。 这个图标包估计包含超过了15000个图标。

### 在Linux中安装Square 2.0图标包

有两种不同的Square图标，暗色和亮色。基于你的喜好，你可以选择二者之一。出于体验的目的，我建议你两个主题包都下载。

你可以用下面的链接下载图标包。文件存储在Google Drive，因此如果你没有看见像[SourceForge](http://sourceforge.net/)这样标准的下载网站时不要怀疑。

* [Square Dark Icons](http://gnome-look.org/content/download.php?content=163513&id=1&tan=62806435)
* [Square Light Icons](http://gnome-look.org/content/download.php?content=163513&id=2&tan=19789941)

要使用图标主题，解压下载的文件到~/.icons文件夹下。如果它不存在，就创建它。当这些文件放好后，基于你的桌面环境，使用一个工具来改变图标主题。我以前写了一些关于这个主题的教程。如果你需要额外的帮助，那么欢迎指出来：

* [如何在Ubuntu Unity中改变主题](http://itsfoss.com/how-to-install-themes-in-ubuntu-13-10/)
* [如何在GNOME Shell中改变主题](http://itsfoss.com/install-switch-themes-gnome-shell/)
* [如何在Linux Mint中改变主题](http://itsfoss.com/install-icon-linux-mint/)
* [如何在Elementary OS Freya中改变主题](http://itsfoss.com/install-themes-icons-elementary-os-freya/)

### 试一下

这是我用Square图标在Ubuntu 14.04中的效果。我背景使用的是[Ubuntu 15.04 默认壁纸](http://itsfoss.com/default-wallpapers-ubuntu-1504/)。

Square主题中几个图标的样子：

你觉得怎么样？你认为它是[Ubuntu 14.04中最佳的图标主题](http://itsfoss.com/best-icon-themes-ubuntu-1404/)之一么？你会分享它并期待更多关于自定义Linux桌面的文章么？

---

via: <http://itsfoss.com/square-2-0-icon-pack-linux/>

作者：[Abhishek](http://itsfoss.com/author/abhishek/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0

Summary: PHP是一种为我们熟知的通用服务器网页脚本语言。非常多的在线网站都是用PHP编写的。PHP这些年来一直在持续进化，丰富其功能，变得易于使用，更好地组织的脚本语言。目前PHP的开发团队正筹备下一个PHP版本的发行，名字是PHP 7。现在的PHP版本为PHP 5.6，可能你清楚PHP 6已经流产了，PHP 7的支持者们不希望下一个重要的版本被其他分支混淆，即过去已经停止很久的PHP 6。所以决定下一个PHP主要的发行版本叫PHP 7，而不是PHP 6。PHP 7.0预计在今年十一月份发行。 在下一代主要PHP版本里有一些不错的功能：  为了改善执行效率与内存占用，新的

got it

# 在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0

PHP是一种为我们熟知的通用服务器网页脚本语言。非常多的在线网站都是用PHP编写的。PHP这些年来一直在持续进化，丰富其功能，变得易于使用，更好地组织的脚本语言。目前PHP的开发团队正筹备下一个PHP版本的发行，名字是PHP 7。现在的PHP版本为PHP 5.6，可能你清楚PHP 6已经流产了，PHP 7的支持者们不希望下一个重要的版本被其他分支混淆，即过去已经停止很久的PHP 6。所以决定下一个PHP主要的发行版本叫PHP 7，而不是PHP 6。PHP 7.0预计在今年十一月份发行。

在下一代主要PHP版本里有一些不错的功能：

* 为了改善执行效率与内存占用，新的版本添加了PHPNG功能。
* 引入了JIT引擎来动态编译Zend操作码为自然机器码，以此来达到更快的处理性能。这项功能允许随后的程序调用同一份代码，这样会运行快很多。
* AST（抽象语法树）是最新添加的功能，它可以增强支持PHP的扩展性和用户应用。
* 添加异步编程功能以支持同一个请求中的并行任务。
* 新的版本会支持独立的多线程网页服务器，这样可以使用一个单独的存储池处理很多并发的请求。

<img src="content_image/album_201505_25_093913g7xok2izc7is2dol.png" alt="" title="">

### 在CentOS/Fedora上安装PHP 7

让我们来看看怎样在CentOS 7和Fedora 21安装PHP7。为了安装PHP7，我们首先需要克隆php-src 仓库。当克隆工作完成，我们再配置和编译它。进行下一步之前，我们要确保已经在LInux系统下安装了如下的组件，否则PHP编译会返回错误中止。

* Git
* autoconf
* gcc
* bison

所有上面提到的要求可以使用Yum软件包管理器安装。以下一条命令即可完成：

```
yum install git autoconf gcc bison

```

准备好开始安装PHP7了吗？让我们先创建一个PHP7目录，作为你的当前工作目录。

```
mkdir php7
cd php7

```

现在克隆php-src仓库，在终端里运行下面的命令。

```
git clone https://git.php.net/repository/php-src.git

```

工作应该会在几分钟后完成，这里是一个样例输出，你应该会在任务完成时看见。

```
[root@localhost php7]# git clone https://git.php.net/repository/php-src.git
Cloning into 'php-src'...
remote: Counting objects: 615064, done.
remote: Compressing objects: 100% (127800/127800), done.
remote: Total 615064 (delta 492063), reused 608718 (delta 485944)
Receiving objects: 100% (615064/615064), 152.32 MiB | 16.97 MiB/s, done.
Resolving deltas: 100% (492063/492063), done.

```

让我们来配置，编译PHP7，在终端运行下面的命令，开始配置工作：

```
cd php-src
./buildconf

```

下面是./buildconf命令的样例输出。

```
[root@localhost php-src]# ./buildconf
buildconf: checking installation...
buildconf: autoconf version 2.69 (ok)
rebuilding aclocal.m4
rebuilding configure
rebuilding main/php_config.h.in

```

使用下面的命令，继续配置进程：

```
./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-mysql=/usr \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config
```

这会花去不少的时间，当完成后你应该会看到如下面的输出：

```
creating libtool
appending configuration tag "CXX" to libtool
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
```

运行下面的命令，完成编译过程。

```
make

```

“make”命令的样例输出如下所示：

```
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
pharcommand.inc
invertedregexiterator.inc
phar.inc

Build complete.
Don't forget to run 'make test'.
```

活儿干完了，该安装PHP7了，运行下面的命令安装它。

```
make install

```

成功安装的进程的样例输出应该像这样：

```
[root@localhost php-src]# make install
Installing shared extensions:     /root/php7/usr/lib/php/extensions/no-debug-non-zts-20141001/
Installing PHP CLI binary:        /root/php7/usr/bin/
Installing PHP CLI man page:      /root/php7/usr/php/man/man1/
Installing PHP CGI binary:        /root/php7/usr/bin/
Installing PHP CGI man page:      /root/php7/usr/php/man/man1/
Installing build environment:     /root/php7/usr/lib/php/build/
Installing header files:          /root/php7/usr/include/php/
Installing helper programs:       /root/php7/usr/bin/
program: phpize
program: php-config
Installing man pages:             /root/php7/usr/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment:      /root/php7/usr/lib/php/
[PEAR] Archive_Tar    - installed: 1.3.13
[PEAR] Console_Getopt - installed: 1.3.1
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.3
[PEAR] PEAR           - installed: 1.9.5
Wrote PEAR system config file at: /root/php7/usr/etc/pear.conf
You may want to add: /root/php7/usr/lib/php to your php.ini include_path
/root/php7/php-src/build/shtool install -c ext/phar/phar.phar /root/php7/usr/bin
ln -s -f /root/php7/usr/bin/phar.phar /root/php7/usr/bin/phar
Installing PDO headers:          /root/php7/usr/include/php/ext/pdo/

```

恭喜你，PHP7已经安装在你的Linux系统上了。安装完后，进入PHP7安装文件里的sapi/cli里面。

```
cd sapi/cli

```

验证一下PHP的版本。

```
[root@localhost cli]# ./php -v
PHP 7.0.0-dev (cli) (built: Mar 28 2015 00:54:11)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

```

### 总结

PHP 7也[添加到了remi仓库](http://blog.famillecollet.com/post/2015/03/25/PHP-7.0-as-Software-Collection)，这个即将到来的版本主要关注执行效率的提升，它的新特性致力于使PHP较好满足现代编程的需求和趋势。PHP 7.0将会有许多新的特性、丢弃一些老版本的东西。在接下来的日子里，我们希望看到新特性和弃用功能的具体情况。希望你喜欢！

---

via: <http://linoxide.com/linux-how-to/install-php-7-centos-7-fedora-21/>

作者：[Aun Raza](http://linoxide.com/author/arunrz/) 译者：[wi-cuckoo](https://github.com/wi-cuckoo) 校对：[wxy](https://github.com/wxy)

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


4个可以发送完整电子邮件的命令行工具

Summary: 今天的文章里我们会讲到一些使用Linux命令行工具来发送带附件的电子邮件的方法。它有很多用处，比如在应用程序所在服务器上，使用电子邮件发送一个文件过来，或者你可以在脚本中使用这些命令来做一些自动化操作。在本文的例子中，我们会使用foo.tar.gz文件作为附件。 有不同的命令行工具可以发送邮件，这里我分享几个多数用户会使用的工具，如mailx、mutt和swaks。 我们即将呈现的这些工具都是非常有名的，并且存在于多数Linux发行版默认的软件仓库中，你可以使用如下命令安装： 在 Debian / Ubuntu 系统 apt-get install mutt apt-get in

不错的文章，个人觉得四个工具中mutt最好用，哈哈

然而我163邮箱并没有收到邮件

got it

收到了，但是好慢，我早上发的，午睡后才收到

这个不错，linux运维用得到

那不是你发送方式的原因，是你的邮件服务器的原因。

我认为是163邮箱服务器的原因

没有说明，每个工具需要配置的文件。。。

# 4个可以发送完整电子邮件的命令行工具

今天的文章里我们会讲到一些使用Linux命令行工具来发送带附件的电子邮件的方法。它有很多用处，比如在应用程序所在服务器上，使用电子邮件发送一个文件过来，或者你可以在脚本中使用这些命令来做一些自动化操作。在本文的例子中，我们会使用foo.tar.gz文件作为附件。

<img src="content_image/album_201505_25_110629p173bcxip1cffcxo.png" alt="" title="">

有不同的命令行工具可以发送邮件，这里我分享几个多数用户会使用的工具，如`mailx`、`mutt`和`swaks`。

我们即将呈现的这些工具都是非常有名的，并且存在于多数Linux发行版默认的软件仓库中，你可以使用如下命令安装：

在 **Debian / Ubuntu** 系统

```
apt-get install mutt
apt-get install swaks
apt-get install mailx
apt-get install sharutils

```

在基于Red Hat的系统，如 **CentOS** 或者 **Fedora**

```
yum install mutt
yum install swaks
yum install mailx
yum install sharutils

```

### 1) 使用 mail / mailx

`mailx`工具在多数Linux发行版中是默认的邮件程序，现在已经支持发送附件了。如果它不在你的系统中，你可以使用上边的命令安装。有一点需要注意，老版本的mailx可能不支持发送附件，运行如下命令查看是否支持。

```
$ man mail

```

第一行看起来是这样的：

```
mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]] to-addr . . .

```

如果你看到它支持`-a`的选项（-a 文件名，将文件作为附件添加到邮件）和`-s`选项（-s 主题，指定邮件的主题），那就是支持的。可以使用如下的几个例子发送邮件。

**a) 简单的邮件**

运行`mail`命令，然后`mailx`会等待你输入邮件内容。你可以按回车来换行。当输入完成后，按Ctrl + D，`mailx`会显示EOT表示结束。

然后`mailx`会自动将邮件发送给收件人。

```
$ mail user@example.com

HI,
Good Morning
How are you
EOT

```

**b) 发送有主题的邮件**

```
$ echo "Email text" | mail -s "Test Subject" user@example.com

```

`-s`的用处是指定邮件的主题。

**c) 从文件中读取邮件内容并发送**

```
$ mail -s "message send from file" user@example.com < /path/to/file

```

**d) 将从管道获取到的`echo`命令输出作为邮件内容发送**

```
$ echo "This is message body" | mail -s "This is Subject" user@example.com

```

**e) 发送带附件的邮件**

```
$ echo “Body with attachment "| mail -a foo.tar.gz -s "attached file" user@example.com

```

`-a`选项用于指定附件。

### 2) mutt

Mutt是类Unix系统上的一个文本界面邮件客户端。它有20多年的历史，在Linux历史中也是一个很重要的部分，它是最早支持进程打分和多线程处理的客户端程序之一。按照如下的例子来发送邮件。

**a) 带有主题，从文件中读取邮件的正文，并发送**

```
$ mutt -s "Testing from mutt" user@example.com < /tmp/message.txt

```

**b) 通过管道获取`echo`命令输出作为邮件内容发送**

```
$ echo "This is the body" | mutt -s "Testing mutt" user@example.com

```

**c) 发送带附件的邮件**

```
$ echo "This is the body" | mutt -s "Testing mutt" user@example.com -a /tmp/foo.tar.gz

```

**d) 发送带有多个附件的邮件**

```
$ echo "This is the body" | mutt -s "Testing" user@example.com -a foo.tar.gz –a bar.tar.gz

```

### 3) swaks

Swaks（Swiss Army Knife，瑞士军刀）是SMTP服务上的瑞士军刀，它是一个功能强大、灵活、可编程、面向事务的SMTP测试工具，由John Jetmore开发和维护。你可以使用如下语法发送带附件的邮件：

```
$ swaks -t "foo@bar.com" --header "Subject: Subject" --body "Email Text" --attach foo.tar.gz

```

关于Swaks一个重要的地方是，它会为你显示整个邮件发送过程，所以如果你想调试邮件发送过程，它是一个非常有用的工具。

它会给你提供了邮件发送过程的所有细节，包括邮件接收服务器的功能支持、两个服务器之间的每一步交互。

（LCTT 译注：原文此处少了 sharutils 的相关介绍，而多了 uuencode 的介绍。）

### 4) uuencode

邮件传输系统最初是被设计来传送7位编码（类似ASCII）的内容的。这就意味这它是用来发送文本内容，而不能发会使用8位的二进制内容（如程序文件或者图片）。`uuencode`（“UNIX to UNIX encoding”，UNIX之间使用的编码方式）程序用来解决这个限制。使用`uuencode`，发送端将二进制格式的转换成文本格式来传输，接收端再转换回去。

我们可以简单地使用`uuencode`和`mailx`或者`mutt`配合，来发送二进制内容，类似这样：

```
$ uuencode example.jpeg example.jpeg | mail user@example.com

```

### Shell脚本：解释如何发送邮件

```
#!/bin/bash

FROM=""
SUBJECT=""
ATTACHMENTS=""
TO=""
BODY=""

# 检查文件名对应的文件是否存在
function check_files()
{
output_files=""
for file in $1
do
if [ -s $file ]
then
output_files="${output_files}${file} "
fi
done
echo $output_files
}

echo "*********************"
echo "E-mail sending script."
echo "*********************"
echo

# 读取用户输入的邮件地址
while [ 1 ]
do
if [ ! $FROM ]
then
echo -n -e "Enter the e-mail address you wish to send mail from:\n[Enter] "
else
echo -n -e "The address you provided is not valid:\n[Enter] "
fi

read FROM
echo $FROM | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# 读取用户输入的收件人地址
while [ 1 ]
do
if [ ! $TO ]
then
echo -n -e "Enter the e-mail address you wish to send mail to:\n[Enter] "
else
echo -n -e "The address you provided is not valid:\n[Enter] "
fi

read TO
echo $TO | grep -E '^.+@.+$' > /dev/null
if [ $? -eq 0 ]
then
break
fi
done

echo

# 读取用户输入的邮件主题
echo -n -e "Enter e-mail subject:\n[Enter] "
read SUBJECT

echo

if [ "$SUBJECT" == "" ]
then
echo "Proceeding without the subject..."
fi

# 读取作为附件的文件名
echo -e "Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with \"."
read att

echo

# 确保文件名指向真实文件
attachments=$(check_files "$att")
echo "Attachments: $attachments"

for attachment in $attachments
do
ATTACHMENTS="$ATTACHMENTS-a $attachment "
done

echo

# 读取完整的邮件正文
echo "Enter message. To mark the end of message type ;; in new line."
read line

while [ "$line" != ";;" ]
do
BODY="$BODY$line\n"
read line
done

SENDMAILCMD="mutt -e \"set from=$FROM\" -s \"$SUBJECT\" \
$ATTACHMENTS -- \"$TO\" <<< \"$BODY\""
echo $SENDMAILCMD

mutt -e "set from=$FROM" -s "$SUBJECT" $ATTACHMENTS -- $TO <<< $BODY

```

\*\* 脚本输出 \*\*

```
$ bash send_mail.sh
*********************
E-mail sending script.
*********************

Enter the e-mail address you wish to send mail from:
[Enter] test@gmail.com

Enter the e-mail address you wish to send mail to:
[Enter] test@gmail.com

Enter e-mail subject:
[Enter] Message subject

Provide the list of attachments. Separate names by space.
If there are spaces in file name, quote file name with ".
send_mail.sh

Attachments: send_mail.sh

Enter message. To mark the end of message type ;; in new line.
This is a message
text
;;

```

### 总结

有很多方法可以使用命令行/Shell脚本来发送邮件，这里我们只分享了其中4个类Unix系统可用的工具。希望你喜欢我们的文章，并且提供您的宝贵意见，让我们知道您想了解哪些新工具。

---

via: <http://linoxide.com/linux-shell-script/send-email-subject-body-attachment-linux/>

作者：[Bobbin Zachariah](http://linoxide.com/author/bobbin/) 译者：[goreliu](https://github.com/goreliu) 校对：[wxy](https://github.com/wxy)

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


Inxi：获取Linux的系统和硬件信息

Summary: 我们已经展示了一些不同的应用程序和方法来获取Linux的系统和硬件信息。在这一系列里，我们将看到如何使用inxi来获取这些详情信息。在论坛技术支持中，它可以作为调试工具，迅速确定用户的系统配置和硬件信息。  Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具，内容包括：  硬件 CPU 磁盘驱动器 Xorg 桌面环境 内核 GCC版本 进程 内存占用 和其他有用的信息  安装方法 Inxi在多数现代GNU/Linux操作系统的默认软件仓库中。所以我们可以简单地运行下列命令安装。 在基于Debian的发行版： sudo apt-get install inxi  在Fedora：

这个有点意思@！～

挺不错的！

# Inxi：获取Linux的系统和硬件信息

我们已经展示了一些不同的[应用程序](/article-1947-1.html)和方法来获取Linux的系统和硬件信息。在这一系列里，我们将看到如何使用**inxi**来获取这些详情信息。在论坛技术支持中，它可以作为调试工具，迅速确定用户的系统配置和硬件信息。

<img src="content_image/album_201505_25_113438f9lk9hf9xl32puwv.png" alt="" title="">

**Inxi**是一个可以获取完整的系统和硬件详情信息的命令行工具，内容包括：

* 硬件
* CPU
* 磁盘驱动器
* Xorg
* 桌面环境
* 内核
* GCC版本
* 进程
* 内存占用
* 和其他有用的信息

### 安装方法

Inxi在多数现代GNU/Linux操作系统的默认软件仓库中。所以我们可以简单地运行下列命令安装。

**在基于Debian的发行版：**

```
sudo apt-get install inxi

```

**在Fedora：**

```
sudo yum install inxi

```

**在基于RHEL的发行版：**

安装EPEL软件仓库：

```
sudo yum install epel-release

```

然后使用如下命令安装inxi：

```
sudo yum install inxi

```

### 使用方法

在终端运行如下命令可以获取系统的概况信息。

```
inxi

```

**示例输出：**

```
CPU~Dual core Intel Core i3-2350M CPU (-HT-MCP-) clocked at Min:800.000Mhz Max:1200.000Mhz Kernel~3.13.0-45-generic x86_64 Up~6:41 Mem~1537.7/3861.3MB HDD~500.1GB(52.5% used) Procs~183 Client~Shell inxi~1.9.17

```

当然，我们可以获取一个特定硬件的详情信息。比如获取**声音/音频硬件详情信息**，可以运行如下命令：

```
inxi -A

```

**示例输出：**

```
Audio:     Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel
           Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic

```

很酷是吧？

同样的，你可以获取**显卡**的详情信息。

```
inxi -G

```

**示例输出：**

```
Graphics:  Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller
           X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz
           GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0

```

硬盘信息呢？也是可以的。运行如下命令来获取完整的**硬盘**信息。

```
inxi -D

```

**示例输出：**

```
Drives:    HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9601325BD size: 500.1GB

```

显示Bios和主板详情信息：

```
inxi -M

```

**示例输出：**

```
Machine:   System: Dell (portable) product: Inspiron N5050
           Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012

```

不仅是硬性详情信息，它也可以显示我们系统中的**可用软件仓库列表**。

```
inxi -r

```

**示例输出：**

```
Repos:     Active apt sources in file: /etc/apt/sources.list
           deb http://ubuntu.excellmedia.net/archive/ trusty main restricted
           deb-src http://ubuntu.excellmedia.net/archive/ trusty main restricted
           deb http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
           deb-src http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted
           deb http://ubuntu.excellmedia.net/archive/ trusty universe
           .
           .
           Active apt sources in file: /etc/apt/sources.list.d/intellinuxgraphics.list
           deb https://download.01.org/gfx/ubuntu/14.04/main trusty main #Intel Graphics drivers
           Active apt sources in file: /etc/apt/sources.list.d/linrunner-tlp-trusty.list
           Active apt sources in file: /etc/apt/sources.list.d/wseverin-ppa-trusty.list
           deb http://ppa.launchpad.net/wseverin/ppa/ubuntu trusty main

```

Inxi还可以显示你所在位置的天气信息。感到意外吗？是的，它可以。

```
inxi -W Erode,Tamilnadu

```

这里**Erode**是地区，**Tamilnadu**是印度的一个邦。

示例输出：

```
Weather:   Conditions: 79 F (26 C) - Clear Time: February 4, 6:00 PM IST

```

### 查看完整的硬件详情信息

厌倦了逐一获取每种硬件的信息？你可以使用如下命令将所有信息一次列出：

```
inxi -F

```

**示例输出：**

```
System:    Host: sk Kernel: 3.13.0-45-generic x86_64 (64 bit) Desktop: LXDE (Openbox 3.5.2) Distro: Ubuntu 14.04 trusty
Machine:   System: Dell (portable) product: Inspiron N5050
           Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012
CPU:       Dual core Intel Core i3-2350M CPU (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx)
           Clock Speeds: 1: 800.00 MHz 2: 1000.00 MHz 3: 800.00 MHz 4: 800.00 MHz
Graphics:  Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller
           X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz
           GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0
Audio:     Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel
           Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic
Network:   Card-1: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) driver: ath9k
           IF: wlan0 state: up mac:
           Card-2: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver: r8169
           IF: eth0 state: down mac:
Drives:    HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9500325AS size: 500.1GB
Partition: ID: / size: 455G used: 245G (57%) fs: ext4 ID: /boot size: 236M used: 159M (72%) fs: ext2
           ID: swap-1 size: 4.19GB used: 0.00GB (0%) fs: swap
RAID:      No RAID devices detected - /proc/mdstat and md_mod kernel raid module present
Sensors:   System Temperatures: cpu: 64.5C mobo: N/A
           Fan Speeds (in rpm): cpu: N/A
Info:      Processes: 186 Uptime: 6:52 Memory: 1547.2/3861.3MB Client: Shell (bash) inxi: 1.9.17

```

就像上面你看到的那样，inxi显示出了完整的硬件详情信息。

更多的细节可以参考man手册。

```
man inxi

```

### 结论

你在寻找一个可以显示完整的系统和硬件详情信息的简单工具吗？那么不用再找了，inxi会提供你所需要的。并且，它还是在你系统默认的软件仓库中的轻量级工具。你还想要更多东西吗？试一试它，你不会失望。

欢呼吧！

---

via: <http://www.unixmen.com/inxi-find-system-hardware-information-linux/>

作者：[SK](http://www.unixmen.com/author/sk/) 译者：[goreliu](https://github.com/goreliu) 校对：[wxy](https://github.com/wxy)

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


五款 Linux 文本编辑器测评

Summary: Mayank Sharma 测试了5款不仅仅是能处理文字的超强文本编辑器。  如果你使用Linux已经有很长一段时间，你知道，不管是编辑一款app的配置文件，还是修改shell脚本，或者编写/查看代码，类似LibreOffice的工具并不适合。尽管字面上看起来都是一样，但是你并不需要一个文字处理器来完成这些任务；你需要的是一个文本编辑器。 在这个测评中，我们将着眼于5款更能胜任繁重文本工作的轻量级的文本编辑器。他们支持语法高亮，像拼写检查一样轻松处理代码缩进。你可以像你复制/粘贴文本那样容易地使用它们记录宏以及管理代码片段。 得益于它们的插

sublime 在linux下不支持中文输入法ibus，不知道这条有没有考虑进去。

我之前使用sublime的，结果不能输入中文实在蛋疼就换用gedit了，结果发现现在的gedit加上相关的插件用来编写代码和sublime已经差不多了，除了搜索和替换不是很方便外。

而且我非常喜欢gedit一个python代码格式规范化的插件，哪里的代码格式有问题，会用个感叹号标出来，保证代码100%兼容pep8标准。

现在很期待GNOME Builder

这篇测评是外国人写的，显然不会想到 ibus 的问题。

没有atom

# 五款 Linux 文本编辑器测评

>
> Mayank Sharma 测试了5款不仅仅是能处理文字的超强文本编辑器。
>
>
>

如果你使用Linux已经有很长一段时间，你知道，不管是编辑一款app的配置文件，还是修改shell脚本，或者编写/查看代码，类似LibreOffice的工具并不适合。尽管字面上看起来都是一样，但是你并不需要一个文字处理器来完成这些任务；你需要的是一个文本编辑器。

在这个测评中，我们将着眼于5款更能胜任繁重文本工作的轻量级的文本编辑器。他们支持语法高亮，像拼写检查一样轻松处理代码缩进。你可以像你复制/粘贴文本那样容易地使用它们记录宏以及管理代码片段。

得益于它们的插件，使得它们足以抗衡其它的以文本为中心的应用程序，一些简单的文本编辑器甚至超出了它们的设计目标。它们能胜任一个源代码编辑器的任务，甚至就是一个集成开发环境。

Emacs和Vim是两款最流行和强大的纯文本编辑器。但是，由于一些原因，我们在这个测评中并没有包括它们。首先，如果你使用它们中的任何一个，那么恭喜你：你不需要更换了。其次，它们都有陡峭的学习曲线，尤其是那些熟悉了桌面环境的用户：他们很更愿意投入其他有图形界面的文本编辑器。

### 目录:

#### Gedit

* URL:<http://projects.gnome.org/gedit/>
* 版本: 3.10
* 许可证: GPL
* Gnome的默认文本编辑器准备好挑战了吗?

#### Kate

* URL: [www.kate-editor.org](http://www.kate-editor.org)
* 版本: 3.11
* 许可证: LGPL/GPL
* Kate会挑战命运吗?

#### Sublime Text

* URL: [www.sublimetext.com](http://www.sublimetext.com)
* 版本: 2.0.2
* 许可证: Proprietary
* 在自由的土地上的带有黄金般的心脏的专利软件。

#### UltraEdit

* URL: [www.ultraedit.com](http://www.ultraedit.com)
* 版本: 4.1.0.4
* 许可证: Proprietary
* 足够证明它的价值了吗?

#### jEdit

* URL: [www.jedit.org](http://www.jedit.org)
* 版本: 5.1.0
* 许可证: GPL
* 基于Java的编辑器是否会毁掉其他编辑器的世界?

### 关键标准

除了Gedit和jEdit以外的所有工具，都是通过其推荐的安装方法安装在Fedora和Ubuntu上。前者已经兼容默认的Gnome桌面，后者仍然固执地反对安装在Fedora上。由于这些是相对简单的应用程序，他们没有复杂的依赖，唯一例外的是jEdit，它要求要有Oracle Java。

得益于Gnome和KDE持续的努力，所有编辑器无论在哪个桌面上的外观看起来很好，功能也很正常。这不仅是作为评价的标准，也意味着你不再受制于你的桌面环境兼容的工具。

除了它们独特的功能，我们也对所有候选者测试了常规的文本编辑功能。然而，它们并没有被设计为模仿现代字处理器的所有功能，我们也不以此评判。

### 编程语言支持

UltraEdit 能进行语法高亮、代码折叠以及拥有项目管理的能力。也有一个罗列源文件中所有函数的功能列表，但并不适用于我们测试的任何代码文件。UltraEdit也支持HTML5，有一个能添加常用HTML标记的HTML工具栏。

即使Gnome的默认文本编辑器Gedit，也有几个面向编码的功能特性，例如括号匹配、自动缩进以及为包括C, C++, Java, HTML, XML, Python, Perl, 以及许多其它编程语言进行语法高亮。

如果你需要更多的编程辅助功能，看一下Sublime和Kate。

Sublime支持多种编程语言并且能为(那些流行的)C#, D, Dylan, Erlang, Groovy, Haskell, Lisp, Lua, MATLAB, OCaml, R, 甚至 SQL 进行语法高亮。如果这还不够，你可以下载插件以支持更多的语言。另外，它的语法高亮功能提供了多个可定制选项。这个应用程序也会进行括号匹配，确保代码段都正确，Sublime的自动补全功能也支持用户创建的变量。就像Komodo IDE，Sublime也可以显示一个全部源代码的滚动预览图，这对于长代码文件导航和在文件中的不同部分跳转很方便。Sublime最好的功能之一就是能在编辑器内部运行特定语言，例如C++, Python, Ruby等的代码，当然假设在你的电脑上安装有编译器以及其它系统工具。省时间而且不用再开终端.

你也可以用插件在Kate中开启构建系统功能。另外，你可以为GDB调试器添加一个简单的前端。Kate能和Git，Subversion以及Mercurial版本控制系统一起工作，也提供了一些项目管理的功能。除了能为超过180种语言进行语法高亮，它支持所有的这些辅助功能，例如括号匹配，自动补全和自动缩进。它也支持代码折叠，甚至在一个程序中折叠函数。

唯一的遗憾的是jEdit，它声称自己是一个程序员的文本编辑器，但它缺少其他的基本功能，例如代码折叠，它甚至不能提示或者补全函数.

**评分：**

* Gedit：3/5
* Kate：5/5
* Sublime：5/5
* UltraEdit：3/5
* jEdit：1/5

### 键盘控制

高级文本编辑器的用户希望能完全通过键盘控制和操作，一些应用程序甚至支持用户自定义快捷方式的键盘绑定。

你可以轻松的使用Gedit的扩展键盘快捷键。可以在编辑文件时通过工具的快捷键调用工具，例如对一个文档进行拼写检查。你可以看到应用程序内部的一系列默认快捷键，但并没有图形化的方式去自定义它们。相似的，在Sublime中自定义键盘绑定，你需要修改它的XML的键盘映射文件。Sublime由于缺少定义键盘快捷键的图形化界面而饱受批评，但长期使用的用户支持当前的基于文件的机制：这给了他们更多的控制能力。

UltraEdit为它"一切都可自定义"的座右铭感到自豪，这也包括键盘快捷键。你可以自定义菜单导航的热键，以及定义你自己的访问大量功能的组合键映射。

除了完全可自定义的键盘快捷键以外，jEdit也有为Emacs预定义的键映射。Kate在这方面尤其令人映像深刻。它有简单可访问的自定义键绑定窗口。你可以更改默认的键，或者定义替代的键。另外，Kate也有一个能使用户使用Vi键操作Kate的Vi模式。

**评分：**

* Gedit：2/5
* Kate：5/5
* Sublime：3/5
* UltraEdit：4/5
* jEdit：5/5

### 片段和宏

宏通过自动化重复的步骤帮助你降低花费在编辑和组织数据上的时间，而代码片段通过创建可重用的源代码块为程序员扩展类似的功能。这两者都能节省你的时间。

标准的Gedit安装没有这两种功能中的任何一种，但是你可以通过独立的插件启用这些功能。片段插件随Gedit一起发布，但在Gedit内启用宏插件，则需要你手动下载和安装(被称为gedit-macropy，托管在GitHub上)。

Kate也同样通过插件的形式启用片段功能。一旦加入，插件也增加了PHP，Bash和Java的片段库。你可以在侧边栏中显示片段列表以便于访问。可以通过右击片段或者快捷键组合方式编辑它的内容。然而，令人惊讶的是，它不支持宏-尽管用户从2002年就不断要求！

jEdit也有一个启用片段的插件。它还可以从用户行为中记录宏或者你也可以用BeanShell 脚本语言(BeanShell支持像Perl和JavaScript那样将脚本对象封装为简单的方法)中写宏。jEdit也有一个可以从jEdit的网站中下载多种宏的插件。

Sublime有创建片段和宏的内建功能，也有为大多数编程语言经常使用的函数多种片段。

在UltraEdit中片段被称为智能模板，就像Sublime中一样，你可以根据正在编辑的源代码文件类型插入片段。要完成宏记录功能，UltraEdit还有集成了一个基于JavaScript的脚本语言引擎来完成自动任务。你也可以从该编辑器的网站中下载用户提交的宏和脚本。

**评分：**

* Gedit：3/5
* Kate：1/5
* Sublime：5/5
* UltraEdit：5/5
* jEdit：5/5

### 易用性

不像那些简陋的文本编辑器，这些文本编辑器在这方面可以适应从文档写作者到程序员的各种用户的需要。与精简应用程序相反，他们的开发者在寻找添加更多功能的途径。

尽管第一眼看上去这次测评中的大部分应用有一个很相似的布局，经过仔细的检查，你会发现一些可用性的差异。我们通过用户界面的合理使用来介绍它们的功能和特性，而不是铺天盖地地告诉读者。

#### Gedit: 4/5

Gedit的外观很普通，它有一个带有很少的菜单和按钮的简单界面。这是一把双刃剑，因为有些用户可能不会发现它真正的潜能。

Gedit可以在选项卡中打开多个文件，这些选项卡可以重排和在多个 Gedit窗口之间移动。用户可以选择通过插件来启用侧边栏来浏览文件或者在底部面板显示工具输出内容。这个应用程序会检测到被其它应用程序更改的文件并可以重新加载该文件。

为了适配Gnome，在应用程序的最新版本中做了大量的 UI 修改。然而修改还还不稳定，尽管包括了所有的功能，但是菜单交互的一些插件还需要升级。

*在功能与界面之间取得了良好的平衡，Gedit将其大部分功能隐藏在背后。*

#### Kate: 5/5

尽管用户界面的主要部分和Gedit相似，Kate可以在两边显示选项卡并且它的菜单更加丰富。该应用程序平易近人，吸引用户来挖掘它的其它功能。

Kate可以在KDE的KIO支持的所有协议上透明地打开和保存文件，包括通过HTTP, FTP, SSH, SMB 和 WebDAV。你可以用这个应用同时处理多个文件。但不同于大部分应用程序传统的水平选项卡选择栏，Kate在屏幕的两个方向都有选项卡。左侧的侧边栏显示打开的文件列表。需要同时查看一个文件不同部分的程序员也会感激它可以水平或者竖直分隔界面的能力。

*Kate能搭建为功能丰富的集成开发环境。*

#### Sublime: 5/5

Sublime支持你在不同方式同时查看多达四个文件。当你在集中精力编程时，它也有一个只显示文件和菜单的全屏无扰模式。

这个编辑器还在右边有个缩略地图，这在长文件中导航非常有用。应用程序为多种编程语言提供多种常用函数的片段，这使得它对于开发者非常有用。另一个精巧的功能是，无论你使用都是文本文档或者代码，都可以任意选择和替换。

*如果你不喜欢Sublime的Charcoal外观，你可以选择它包含的其它22种主题。*

#### UltraEdit: 3/5

UltraEdit在界面的顶部和底部加载了多种工具栏。加上切换文档的选项卡、两边的面板，以及分隔区域，使得只剩下一点空间给编辑窗口。

使用HTML的网络开发者有很多唾手可得的帮助。你可以通过FTP和SFTP访问远程文件。高级功能，例如记录一个宏以及比较文件，也简单易用。

使用应用程序的偏好设置窗口，你可以调整应用程序的多个方面，包括颜色主题和类似语法高亮的其它功能。

*UltraEdit的用户界面是高度可配置的 — 你可以像改变其它许多方面那样简单的自定义工具栏和菜单的布局。*

#### jEdit: 3/5

在可用性方面，首先一个不好就是jEdit不能在基于RPM的发行版上安装。导航编辑器需要一些时间来适应，因为它的菜单和其它流行的应用程序顺序不同，而且有些普通桌面用户不熟悉的名字。但是，该应用程序有详细的内部帮助，这有利于缓解学习曲线。

jEdit会高亮你所在的当前行，并使你能以多种查看方式分隔窗口。你可以简单地从应用程序中安装和管理插件，除了使用完整的宏，jEdit也支持你快速记录一个临时的宏。

*由于它的Java基础，jEdit在任何桌面环境中都不能给人宾至如归的感觉*

### 可用性和支持

在Gedit和Kate之间有很多相似性。两个应用程序都得益于他们各自的父项目，Gnome和KDE，捆绑在各种主流的发行版中。另外两个项目都是跨平台的，有Windows和Mac OS X版本以及原生的Linux版本。

Gedit托管在Gnome的网站上，并有一个简单的用户指南、关于多种插件的信息，以及包括邮件列表和IRC通道在内的常用联系方式。你也可以在其它基于Gnome的发行版，例如Ubuntu中找到使用信息。相似地，Kate得益于KDE的资源，并包括详细的用户信息以及邮件列表和IRC通道。你也可以从应用程序中获取相应的离线用户指南。

除了Linux，UltraEdit在Windows和Mac OS X中也可用，虽然在应用程序中并没有包括，但在启动时也有详细的用户指南。为了辅助用户的使用，UltraEdit保存了一个常见问题的数据库，一系列关于多种特定功能的详细介绍，用户还可以在论坛版块彼此帮助。另外，付费用户也可以通过邮件从开发者中获取支持。

Sublime支持一样多的平台，但是你需要单独为每种平台购买许可证。开发者通过博客让用户了解正在进行的开发，并积极参加它的论坛。这个项目支持设施的亮点是提供免费的详细教程和视频课程。Sublime非常漂亮。

由于jEdit是用java编写的，所以它在多种平台中都可用。在它的网站上你可以找到一个详细的用户指南以及一些插件帮助文档的链接。然而，这里没有能使用户和其他用户或者开发者交流的途径。

**评分：**

* Gedit：4/5
* Kate：4/5
* Sublime：5/5
* UltraEdit：3/5
* jEdit：2/5

### 附加组件和插件

不同的用户有不同的需求，一个简单的轻量级应用程序只能做到这么多。这就是为什么需要插件的原因。应用程序依赖于这些小部件来扩展它们的功能集并让更多的用户使用。

UltraEdit是一个例外。它没有第三方插件，但开发者将例如HtmlTidy这样的第三方工具集成到了UltraEdit。

Gedit附带了好多已安装的插件，你可以下载更多的更多gedit插件包。基于和Gedit版本的兼容性，项目网站也有到多个第三方插件的链接。

三个对程序员非常有用的插件是：Code Comment、在底部面板增加一个终端的Terminal Plugin以及Session Saver。当你用多个文件开发项目的时候Session Saver相当有用。你可以在选项卡中打开文件，保存会话，你可以用一键恢复，就可以按照你保存时的选项卡顺序打开所有的文件。

类似的，你可以通过用内部的插件管理器增加插件来扩展Kate。除了令人映像深刻的项目插件，一些开发者使用的插件包括嵌入式终端，它能编译和调试代码，以及对数据库执行SQL查询。

Sublime的插件是用Python写的，文本编辑器包括了一个类似于apt-get，能使用户查找，安装，升级和移除插件包的名为Package Control的工具。通过插件，你可以在Sublime中使用Git版本控制，以及美化JavaScript代码的JSLint工具。Sublime Linter能指出你代码中的错误，是编码人员必备的插件。

jEdit拥有最令人印象深刻的插件设施。该应用有超过200个插件，可以在它们自己的专用网站中浏览。网站通过不同的类型列出了插件，例如文件管理，版本控制，文本等。你可以在每个类型下找到很多的插件。

一些最好的插件是Android插件，它们提供了和Android项目协同工作的工具；你可以使用TomcatSwitch插件创建和控制外部Jakarta Tomcat服务器进程；以及类似于Vi功能的Vimulator插件。你可以通过使用jEdit的插件管理器安装这些插件。

**评分：**

* Gedit：3/5
* Kate：4/5
* Sublime：4/5
* UltraEdit：1/5
* jEdit：5/5

### 纯文本编辑

尽管它们强大的额外功能甚至可能会取代几种完全成熟的应用程序，有时候可能只需要使用这些庞大的文本编辑器读、写或者编辑简单的纯文本。虽然你可以使用它们中的任何一个输入文本，我们通过普通文本编辑的方便性评价它们。

Gnome的默认文本编辑器Gedit，支持取消和重做机制以及搜索和替换。它可以对多种语言进行拼写检查，并能通过使用Gnome GVFS库访问和编辑远程文件。

你也可以使用Kate进行拼写检查，它也可以让你对任何高亮文本进行Google搜索。它还有一个能可视化告知用户文件中更改过但没有保存的行的行修改系统。另外，它通过允许用户在文件中使用书签简化长文档的导航。

Sublime有很多可选择的编辑命令，例如缩进文本和格式化段落。它的自动保存功能帮助防止用户丢失他们的更改。高级用户还会喜欢基于正则表达式的递归查找和替换功能，以及选择多个不连续的文本块并执行统一操作。

UltraEdit也允许用户在查找和替换功能中使用正则表达式，并能通过FTP编辑远程文件。

JEdit一个独特的功能是它支持被称为寄存器的不限数目的剪切板。你可以复制文本片段到这些寄存器中，在编辑会话过程中都可用。

**评分：**

* Gedit：4/5
* Kate：5/5
* Sublime：5/5
* UltraEdit：4/5
* jEdit：4/5

### 我们的评比

在这里的所有编辑器都足以替换你已有的文本编辑器，来编辑文本和调整配置文件。事实上，没准它们会组合起来作为你的集成开发环境。这些应用程序都有各种各样功能，它们的开发者不会考虑剥离功能，而是增加越来越多的功能。

jEdit排在这次测试的最后面。因为它不仅坚持使用专有的Oracle Java运行时环境，不能在你的Fedora机器上安装，而且开发者并不积极和用户交互。

UltraEdit做的稍微好一点。这个商业专用工具专注于网络开发者，不为非开发者的高级用户提供任何功能，使得它不值得推荐为免费软件的替代品。

排在第三的是Gedit。作为Gnome的默认编辑器，它没有任何内在的问题，但尽管有很多积极的方面，它还是略微被Sublime和Kate超越。开诚布公地说，Kate是比Gedit更通用的编辑器，甚至考虑到他们的插件系统，评分也优于Gnome的默认编辑器。

Sublime和Kate都相当好。他们在我们的大多数测试中表现同样出色。Kate由于不支持宏而落后于Sublime，但键盘友好和能简单定义自定义键绑定又使Kate找回优势。

Kate成功的原因可以归结为它通过最小化学习曲线提供了最大化的功能。尽管使用它吧，不仅作为简单文本编辑器使用，或者容易使用语法高亮编辑配置文件，甚至得益于其项目管理能力能使用它协作一个复杂的编程项目。

我们不是选择Kate去替换一个类似“[XX，在这里插入你最喜欢的专业工具]”的全面的集成开发环境。但是它是一个专业工具理想的、全面的、以及完美的垫脚石。

Kate为能快速响应你的需要而设计，它的界面并不会使你茫然，并且和那些过于复杂的应用一样的有用。

### 1st Kate

* Licence LGPL/GPL Version 3.11
* [www.kate-editor.org](http://www.kate-editor.org)
* 拥有超能力，态度温和的文本编辑器。
* Kate是KDE项目中最有用的应用程序之一。

### 2nd Sublime Text

* Licence 专利 Version 2.0.2
* [www.sublimetext.com](http://www.sublimetext.com)
* 值得你每分钱的专业文本编辑器 - 简单易用，功能全面而且看起来很棒。

### 3rd Gedit

* Licence GPL Version 3.10
* <http://projects.gnome.org/gedit>
* 在Gnome中就用它吧。这是一个奇妙的文本编辑器，确实令人钦佩的工作，但这里的竞争实在太大了。

### 4th UltraEdit

* Licence Proprietary Version 4.1.0.4
* [www.ultraedit.com](http://www.ultraedit.com)
* 关注于为网络开发者提供各种便利，而不为普通用户提供任何特殊功能。

### 5th jEdit

* Licence GPL Version 5.1.0
* [www.jedit.org](http://www.jedit.org)
* 缺乏支持，不支持Fedora，缺乏好看的界面，jEdit被贬低到最后。

### 你也许希望尝试…

随你发行版发布的默认文本编辑器也能帮助你一些高级任务。例如KDE的KWrite和Raspbian的Nano。得益于KDE的katepart组件，KWrite继承了一些Kate的功能，得益于在树莓派上的可用性，Nano也开始重现风头。

如果你希望跟随Linux大师的脚步，你总是可以尝试高大上的文本编辑器Emacs和Vim。想尝试Vim强大的用户首先可以考虑gVim，它通过图形界面展现了Vim的强大。

除了jEdit和Kate，这里还有其他模仿Emacs和Vim之类的旧式高级编辑器的编辑器，比如JED 编辑器和Joe's Own Editor，这两者都有Emacs的模拟模式。另一方面，如果你在寻找轻量级的代码编辑器，可以看看Bluefish和Geany。他们的存在是为了填补文本编辑器和全面集成的开发平台之间的空隙。

---

via: <http://www.linuxvoice.com/text-editors/>

作者：[Ben Everard](http://www.linuxvoice.com/author/ben_everard/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[royaso](https://github.com/royaso),[wxy](https://github.com/wxy)

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


一个用于Gnome桌面的下拉式终端： Guake 0.7.0 发布

软件不错，但是名字太吓人，不敢用。。。。。

名字太吓人？

曾经用过一段时间，后来有段时间，也忘了是和什么软件冲突了，就再也不用了

xfce下面也很好使呢！

我一般是打开全屏的，非常爽。

我装好Ubuntu后迫不及待安装的就是 Guake，感觉好漂亮。。。我说的是我的壁纸←_←

挂科。。。。

并不好用。怎么卸载 T-T

卸载了

哈哈！

# 一个用于Gnome桌面的下拉式终端： Guake 0.7.0 发布

Linux的命令行是最好、最强大的东西，它使新手着迷，并为老手和极客的提供极其强大的功能。那些在服务器和生产环境下工作的人早已认识到了这个事实。有趣的是，Linux终端是Linus Torvald在1991年写内核时实现的第一批功能之一。

终端是个强大的工具，由于它没有什么可调整的部分，所以十分可靠。终端介于控制台环境和GUI环境之间。终端自身作为一个GUI程序，运行在桌面环境下。有许多终端是适用于特定的桌面环境的，其它的则是通用的。Terminator, Konsole, Gnome-Terminal, Terminology, XFCE terminal, xterm都是些常用的终端模拟器。

您可以从下面的链接中获得一份使用最广泛的终端模拟器的列表。

* [20 Useful Terminals for Linux](http://www.tecmint.com/linux-terminal-emulators/)

前几日上网时，我偶遇了名为‘Guake’的终端程序，它是用于gnome的终端模拟器。尽管这并不是我第一次听到Guake。实际上，我在大约一年前便知道了这个应用程序，但不知怎么搞的，我那时没有写写Guake，再后来我便渐渐忘掉了Guake，直到我再一次听到Guake。所以，最终，这篇文章诞生了。我将给你讲讲Guake的功能，在Debian、Ubuntu、Fedora上的安装过程以及一些测试。

#### 什么是Guake？

Guake是应用于Gnome环境的下拉式终端。主要由Python编写，使用了一些C，它以GPL2+许可证发布，适用于Linux以及类似的系统。Guake的灵感来源于电脑游戏Quake（雷神之锤）中的终端，Quake的终端能通过按下特定按键（默认为F12）从屏幕上滑下来，并在按下同样的键后滑上去。

值得注意的是，Guake并不是第一个这样的应用。Yakuake（Yet Another Kuake）是一个运行于KDE的终端模拟器，Tilda是一个用GTK+写成的终端模拟器。它们的灵感都来自于雷神之锤那上下滑动的终端。

#### Guake的功能

* 轻量级
* 简单而优雅
* 功能众多
* 强大
* 美观
* 将终端平滑地集成于GUI中
* 在按下预定义的键后出现/消失
* 支持热键、标签、透明化背景，这使得它适合所有Gnome用户
* 可配置各种方面
* 包括许多颜色的调色板
* 设定透明度的快捷方式
* 通过Guake配置，可在启动时运行一个脚本
* 可以在多个显示器上运行

Guake 0.7.0最近发布，它带来了一些修正以及上面提到的一些功能。完整的版本历史和源代码包可以在[这里](https://github.com/Guake/guake/releases/tag/0.7.0)找到。

### 在Linux中安装Guake终端

如果您对从源码编译Guake感兴趣，您可以从上面的链接处下载Guake，并在安装前进行编译。

然而Guake可以在许多的发行版中通过添加额外的仓库来安装。这里，我们将在Debian、Ubuntu、Linux Mint和Fedora下安装Guake。

首先从仓库获取最新的软件包列表，并从默认的仓库安装Guake，如下所示：

```
---------------- 在 Debian, Ubuntu 和 Linux Mint 上 ----------------
$ sudo apt-get update
$ apt-get install guake

```

---

```
---------------- 在 Fedora 19 及其以后版本 ----------------
# yum update
# yum install guake

```

安装后，可以从另一个终端中启动Guake：

```
$ guake

```

在启动它后，便可以在Gnome桌面中使用F12（默认配置）来拉下、收回终端。

看起来非常漂亮，尤其是透明背景。滑下来...滑上去...滑下来...滑上去...执行命令，打开另一个标签，执行命令，滑上去...滑下来...（作者已沉迷其中）

*Guake实战*

如果您的壁纸或活动窗口的颜色和Guake的颜色有些不搭。您可以改变您的壁纸，减少透明度或者改变Guake的颜色。

下一步便是进入Guake的配置，根据每个人的需求修改设置。可以通过应用菜单或者下面的命令来运行Guake的配置。

```
$ guake --preferences

```

*Guake终端配置*

设置滚动

*Guake滚动配置*

外观设置 - 在这里您可以修改文字颜色和背景色以及透明度。

*外观设置*

键盘快捷键 - 在这里您可以修改Guake显示的开关快捷键。

*键盘快捷键*

兼容性设置 - 基本上不必设置它。

*兼容性设置*

### 结论

这个项目即不是太年轻也不是太古老，因此它已经达到了一定的成熟度，足够可靠，可以开箱即用。像我这样需要在GUI和终端间频繁切换的人来说，Guake是一个福利。我不需要管理一个多余的窗口，频繁的打开和关闭，使用tab在大量打开的应用程序中寻找终端或切换到不同的工作区来管理终端，现在我需要的只有F12。

我认为对任何同时使用GUI和终端的Linux用户来说，Guake都是必须的工具。同样的，我会向任何想要在系统中结合使用GUI和终端的人推荐它，因为它既平滑又没有任何障碍。

上面就是我要说的全部了。如果在安装和使用时有任何问题，请告诉我，我们会帮助您。也请您告诉我您使用Guake的经验。在下面的评论区反馈您宝贵的经验。点赞和分享以帮助我们宣传。

---

via: <http://www.tecmint.com/install-guake-terminal-ubuntu-mint-fedora/>

作者：[Avishek Kumar](http://www.tecmint.com/author/avishek/) 译者：[wwy-hust](https://github.com/wwy-hust) 校对：[wxy](https://github.com/wxy)

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


Summary: 问题: 我尝试在  上编译程序，但是出现下面的编译错误： "pam_otpw.c:27:34: fatal error: security/pam_modules.h: No such file or directory"  我怎样才能修复这个错误?  缺失的头文件 'security/pam_modules.h' 是 libpam 开发版的一部分，一个 PAM(Pluggable Authentication Modules:插入式验证模块)库。因此要修复这个错误，你需要安装 libpam 开发包，如下所示。 对于 Debian、 Ubuntu 或者 Linux Mint: $ sudo apt-get install libpam0g-dev  对与 CentOS、 Fedora 或者 RHEL: $ sudo yum install gcc pam-devel  现在验证缺失的

$ sudo apt-file search  security/pam_modules.h<br />
libpam0g-dev: /usr/include/security/pam_modules.h

这种问题也能单独写篇文章？

这个，实在是太 low 了。。也不知道国外的 linux 网站是怎么想的。。

原文貌似是个问题的回答吧，类似论坛帖子一样，只是译者这样，O(∩_∩)O哈哈~

嗯，以后这种口水文章就不翻译了。

# 如何修复 “fatal error: security/pam_modules.h: No such file or directory”

>
> **问题**: 我尝试在 [某某 Linux 发行版] 上编译程序，但是出现下面的编译错误：
>
>
>
> ```
> "pam_otpw.c:27:34: fatal error: security/pam_modules.h: No such file or directory"
>
> ```
>
> 我怎样才能修复这个错误?
>
>
>

缺失的头文件 'security/pam\_modules.h' 是 libpam 开发版的一部分，一个 PAM(Pluggable Authentication Modules:插入式验证模块)库。因此要修复这个错误，你需要安装 libpam 开发包，如下所示。

对于 Debian、 Ubuntu 或者 Linux Mint:

```
$ sudo apt-get install libpam0g-dev

```

对与 CentOS、 Fedora 或者 RHEL:

```
$ sudo yum install gcc pam-devel

```

现在验证缺失的头文件是否安装到了 /usr/include/security。

<img src="content_image/album_201505_25_222442wr6oy6y68ymazton.jpg" alt="" title="">

---

via: <http://ask.xmodulo.com/fatal-error-security-pam-modules.html>

作者：[Dan Nanni](http://ask.xmodulo.com/author/nanni) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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


如何在CentOS上面安装“CentOS网页面板”

Summary: 关于CentOS网页面板 目前有很多免费的或者付费的控制面板。今天，我们来讨论CentOS网页面板（CWP），这是特别为基于RPM 的发行版，如CentOS，RHEL，Scientific Linux等设计的。CWP 是免费且开源的控制面板，可以被广泛用于简单地配置一个网页托管环境。不同于其他的控制面板，CWP能自动部署LAMP的软件栈及Varnish 缓存服务器。 特性 CWP有很多的特性和免费的服务。如我前面提到的一样，CWP会在你的服务器上自动安装全套的LAMP服务（apache，php，phpmyadmin，webmail，mailserver等等）。 CWP安装过程中会安装和配置的软件列表  Apache 网

这就是傻瓜式一键搭建WEB服务吧！看起来不错，不过自己部署也不要好久呀！

# 如何在CentOS上面安装“CentOS网页面板”

### 关于CentOS网页面板

目前有很多免费的或者付费的控制面板。今天，我们来讨论[CentOS网页面板（CWP）](http://centos-webpanel.com/)，这是特别为基于RPM 的发行版，如CentOS，RHEL，Scientific Linux等设计的。**CWP** 是免费且开源的控制面板，可以被广泛用于简单地配置一个网页托管环境。不同于其他的控制面板，CWP能自动部署LAMP的软件栈及Varnish 缓存服务器。

### 特性

CWP有很多的特性和免费的服务。如我前面提到的一样，CWP会在你的服务器上自动安装全套的LAMP服务（apache，php，phpmyadmin，webmail，mailserver等等）。

### CWP安装过程中会安装和配置的软件列表

* Apache 网页服务器
* PHP 5.4
* MySQL + phpMyAdmin
* Postfix + Dovecot + roundcube webmail
* CSF 防火墙
* File System Lock (不需要修改网站，你的所有文件都会被锁定修改)
* Backups; AutoFixer ，用于服务器配置

### 第三方应用：

* CloudLinux + CageFS + PHP Selector
* Softaculous – 脚本安装器 (免费版和白金版)

#### 网页服务器:

* Varnish 缓存服务器
* 从代码编译 Apache
* Apache 重新编译+附加模块
* Apache 服务器状态，配置
* 编辑 Apache 虚拟主机、虚拟主机模版，包括配置
* 重建所有 Apache 虚拟主机
* suPHP & suExec
* Mod Security + OWASP 规则
* Tomcat 8 服务器管理
* DoS 防护
* Perl cgi 脚本支持

#### PHP:

* PHP 切换器 (在PHP版本如: 5.2、 5.3、 5.4、 5.5之间切换)
* PHP选择器，选择每个用户或者每个文件的PHP版本（PHP 4.4、 5.2、 5.3、 5.4、5.5、 5.6)
* 简单的php编辑器
* 在用户面板下简单的php.ini生成器
* PHP 插件
* PHP.ini 编辑器 & PHP 信息 和列出模块
* 每个帐号一个php.ini
* FFMPEG，用于视频流网站
* CloudLinux + PHP 选择器

#### 用户管理

* 添加、列出、编辑和移除用户
* 用户监管
* Shell访问管理
* 用户限制管理
* 限制进程
* 限制访问文件
* 用户 FTP & File 管理器
* CloudLinux + CageFS
* 每个帐号专有IP

#### DNS:

* FreeDNS
* 添加、编辑、列出和移除DNS区块
* 编辑域名服务的IP
* DNS区块模板编辑器
* 新的易用DNS区块管理器 (用ajax)
* 新的DNS区块列表，带有额外的google解析信息 (同时检测 rDNS， 域名服务…)

#### Email:

* Postfix & dovecot
* 邮箱、别名
* Roundcube webmail
* Postfix 邮件队列
* rDNS 检查器模块
* 垃圾邮件拦截
* SPF & DKIM集成
* 重构带有反病毒、反垃圾邮件防护的 Postfix/Dovecot 的邮件服务器
* Email 自动应答器

#### 系统:

* CPU核心和时钟信息
* 内存使用信息
* 详细的磁盘状态
* 软件信息如内核版本、正常运行时间等等.
* 服务器状态
* ChkConfig管理
* 网络端口使用
* 网络配置
* sshd 配置
* 自动修复(检查重要的配置并尝试自动修复问题)

#### 监控:

* 监控服务，例如 top、 apache 状态、 mysql 等
* 在面板内使用Java SSH 终端/控制台
* 服务器配置 (例如 Apache、 PHP、 MySQL 等)
* 在屏幕/后台运行命令行

#### 安全:

* CSF防火墙
* SSL生成器
* SSL证书管理
* CloudLinux + CageFS

#### SQL:

* MySQL 数据库管理
* 添加本地或者远程访问的用户
* 实时监控MySQL进程列表
* 创建，移除数据库
* 为每个数据库添加额外的用户
* MySQL服务器配置
* PhpMyAdmin
* PostgreSQL, phpPgAdmin支持

#### 额外功能:

* TeamSpeak 3 管理器
* Shoutcast 管理器
* 自动更新
* 备份管理器
* 文件管理器
* 每个域名的虚拟FTP用户
* cPanel帐号迁移 (恢复文件，数据库和数据库用户)
* 还有更多

### 在CentOS 6上安装CentOS网页面板

写这篇教程的时候，CWP仅仅支持最高CentOS 6.x版本。在CentOS 7和更高的版本中是不支持的。

#### 前期准备：

**安装CWP之前，你必须知道以下的信息：**

* CWP 仅支持静态IP地址。它并不支持动态的，或者内部的IP地址。
* CWP 并没有卸载程序。当你安装CWP后，你必须重新安装服务器来移除它。
* 只能在一个新装的还没做任何配置改变的操作系统上安装CWP。
* 对于32位操作系统至少需要512MB RAM。
* 64位系统需要1024MB RAM。
* 要求至少20GB的硬盘空间。

如果是在VirtualBox上面测试，640MB RAM和10GB磁盘空间就足够了。

#### 更新服务器：

首先安装wget包，这是下载CWP需要的。

```
yum install wget -y

```

使用命令更新你的服务器：

```
yum update -y

```

重启一次，激活更新。

#### 安装CWP：

进入**/usr/local/src/**目录：

```
cd /usr/local/src

```

使用命令下载最新的CWP版本：

```
wget http://centos-webpanel.com/cwp-latest

```

如果上面的URL出现错误，用下面的链接代替。

```
wget http://dl1.centos-webpanel.com/files/cwp-latest

```

然后，用命令开始安装CWP：

```
sh cwp-latest

```

**样例输出：**

安装过程会持续到30分钟或者更多，取决于你的网速。

最后，你会看到如下安装完成的信息。记下一些详细信息，如mysql超级用户密码和CWP的登录URL，你随后会需要它们。然后，按下回车Enter重启系统。

重启进入系统后，你会看见CWP的欢迎登录信息。

#### 调整防火墙/路由：

CWP的默认网页控制界面的端口是**2030（http）**和**2031（https）**。你应该通过防火墙/路由允许使用这两个端口，以便远程接入CWP网络控制台。

编辑iptables文件：

```
vi /etc/sysconfig/iptables

```

添加如下的内容：

```
[...]
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2030 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2031 -j ACCEPT
[...]

```

保存并关掉文件。更新iptables服务使改变生效。

```
service iptables restart

```

### 进入CWP网络控制台

打开你的浏览器，键入：

**http://IP-Address:2030/**

或

**https://IP-Address:2031/**

你会看到类似下面的屏幕。

登录认证：

* **Username**：root
* **Password**：你的root密码

恭喜你！CWP已经安装成功了。

### CWP基本的配置

接下来，我们得做一些事，比如：

1. 设置域名服务器
2. 设置 ip 共享（必须是你的公共IP地址）
3. 设置至少一个托管包（或者编辑默认的包）
4. 设置 root 电子邮件，等等。

#### 设置域名服务器：

为建立域名服务器，找到**DNS Functions -> Edit nameservers IPs**。

设置你的域名服务器，点击保存按钮。

#### 建立共享IP和Root邮件地址：

在你的主机上托管网站，这是非常重要的一步。为了建立共享IP，进入**CWP Setting -> Edit settings**。

输入你的静态IP和邮件地址，然后点击保存设置按钮。

现在，CWP可以进行网站维护了。

#### 建立托管包

一个托管包就是一个网站托管计划，包括允许访问的磁盘空间，带宽，但没有FTP帐号，邮箱地址和数据库等等。你可以建立任意数量的网站托管计划，只要你喜欢。

要添加一个包，从CWP的控制台进入**Packages — Add a Package**

输入包的名字，允许访问的磁盘配额/RAM数量，FTP/Email帐号，数据库和子域名等等。点击保存设置按钮，建立一个网站托管计划。

现在，CWP可以管理你的域名了。

#### 添加域名：

创建新的域名，你至少得有一个用户帐号。

而添加一个用户，请进入**User Account -> New Account**。

输入域名(ex.unixmen.com)，用户名，密码和邮箱地址等等。最后，点击**Create**。

现在，我们添加一个新的域名。

进入**Domains -> Add Domain**。

输入新的域名，并且指定这个域名与用户名关联。

### 总结

在这篇教程中，我们看到了如何安装和配置CentOS网页面板，来创建一个简单的网站主机环境。CWP安装和使用非常简单。甚至一个菜鸟也可以在几个小时内建立一个基本的网站主机服务器。并且，CWP完全免费和开源。试一试吧！你不会失望的。

你可以在[CentOS Web Panel Wikipage](http://wiki.centos-webpanel.com/)找到更多关于CWP的信息。

加油！

---

via: <http://www.unixmen.com/how-to-install-centos-web-panel-in-centos/>

作者：[SK](http://www.unixmen.com/author/sk/) 译者：[wi-cuckoo](https://github.com/wi-cuckoo) 校对：[wxy](https://github.com/wxy)

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


Bodhi Linux 将引入 Moksha 桌面

Summary: 基于Ubuntu的轻量级Linux发行版Bodhi Linux致力于构建其自家的桌面环境，这个全新桌面环境被称之为Moksha（梵文意为完全自由）。Moksha将替换其原来的Enlightenment桌面环境。 为何用Moksha替换Englightenment？ Bodhi Linux的Jeff Hoogland最近表示了他对新版Enlightenment的不满。直到E17，Enlightenment都十分稳定，并且能满足轻量级Linux的部署需求。而E18则到处都充满了问题，Bodhi Linux只好弃之不用了。 虽然最新的Bodhi Linux 3.0发行版仍然使用了E19作为其桌面（除传统模式外，这意味着，对于旧的硬件，仍然会使用E17），Jeff对E

觉得不爽，fork一个。就这么简单。嘻嘻……

看好哦

# Bodhi Linux 将引入 Moksha 桌面

<img src="content_image/album_201505_25_234452uvqgd4g83v6brd83.jpg" alt="" title="">

基于Ubuntu的轻量级Linux发行版[Bodhi Linux](http://www.bodhilinux.com/)致力于构建其自家的桌面环境，这个全新桌面环境被称之为Moksha（梵文意为‘完全自由’）。Moksha将替换其原来的[Enlightenment桌面环境](https://www.enlightenment.org/)。

### 为何用Moksha替换Englightenment？

Bodhi Linux的Jeff Hoogland最近[表示](http://www.bodhilinux.com/2015/04/28/introducing-the-moksha-desktop/)了他对新版Enlightenment的不满。直到E17，Enlightenment都十分稳定，并且能满足轻量级Linux的部署需求。而E18则到处都充满了问题，Bodhi Linux只好弃之不用了。

虽然最新的[Bodhi Linux 3.0发行版](http://itsfoss.com/bodhi-linux-3/)仍然使用了E19作为其桌面（除传统模式外，这意味着，对于旧的硬件，仍然会使用E17），Jeff对E19也十分不满。他说道：

>
> 除了性能问题外，对于我个人而言，E19并没有给我带来与E17下相同的工作流程，因为它移除了很多E17的特性。鉴于此，我不得不将我所有的3台Bodhi计算机桌面改成E17——这3台机器都是我高端的了。这不由得让我想到，我们还有多少现存的Bodhi用户也怀着和我同样的感受，所以，我[在我们的用户论坛上开启一个与此相关的讨论](http://forums.bodhilinux.com/index.php?/topic/12322-e17-vs-e19-which-are-you-using-and-why/)。
>
>
>

### Moksha是E17桌面的延续

Moksha将会是Bodhi所热衷的E17桌面的延续。Jeff进一步提到：

>
> 我们将从整合所有Bodhi修改开始。多年来我们一直都只是给源代码打补丁，并修复桌面所带有的问题。如果该工作完成，我们将开始移植一些E18和E19引入的更为有用的特性，最后，我们将引入一些我们认为会改善最终用户体验的东西。
>
>
>

### Moksha何时发布？

下一个Bodhi更新将会是Bodhi 3.1.0，就在今年八月。这个新版本将为所有其默认安装镜像带来Moksha。让我们拭目以待，看看Moksha是否是一个好的决定。

---

via: <http://itsfoss.com/bodhi-linux-introduces-moksha-desktop/>

作者：[Abhishek](http://itsfoss.com/author/abhishek/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


Linux Email应用 Geary 更新了

Summary: Geary，Linux上流行的桌面email客户端，更新到版本0.10了  并且有了很多新的功能。  elementary OS上运行的旧版本的Geary Geary 0.10有一些不错的用户界面改进以及额外的UI功能，包括：  新增: 可以撤销归档、删除以及移动等操作 新增: 在2列或者2列布局之间切换 新的 split header bar  改进邮件列表，发件人布局 新的快捷键  使用j/k切换到上/下一封邮件  根据Yorba介绍，这次更新还引入了一个全新的全文检索算法 ，用来改进Geary的搜索体验。 这个更新应该能平息一下对该应用的搜索能力的抱怨：Geary返回的搜索结果就如同软件自己所宣

怎么用geary访问网易之类的邮箱？我按照网易帮助文件配置的，就是不行

我用这个破玩意就没添加成功过邮箱，菊花转半天也不知道哪里出问题了，简直是一坨。。

不支持网易和QQ邮箱。雅虎可以正常收发邮件。gmail被墙，也无法使用。

我的hotmail邮箱可以用。可惜不支持网易，看来需要换软件了

evolution路过

十分好用啊，简洁风格。gmail、outlook、qq我都用它收件

我天天用它检查qq邮箱来件……

# Linux Email应用 Geary 更新了

**Geary，Linux上流行的桌面email客户端，更新到版本0.10了 — 并且有了很多新的功能。**

*elementary OS上运行的旧版本的Geary*

Geary 0.10有一些不错的用户界面改进以及额外的UI功能，包括：

* 新增: 可以撤销归档、删除以及移动等操作
* 新增: 在2列或者2列布局之间切换
* 新的 “split header bar” — 改进邮件列表，发件人布局
* 新的快捷键 — 使用j/k切换到上/下一封邮件

根据Yorba介绍，这次更新还引入了一个**全新的全文检索算法** ，用来改进Geary的搜索体验。

这个更新应该能平息一下对该应用的搜索能力的抱怨：Geary返回的搜索结果就如同软件自己所宣称的“看起来和查询语句毫不相关”。

>
> ‘Yorba 建议所有这个软件客户端的用户升级到这个版本’
>
>
>

*“尽管并不是所有的搜索问题在0.10版本中都解决了，但Geary能确保显示的结果能和更好的匹配用户的查询，”[团队表示](https://wiki.gnome.org/Apps/Geary/FullTextSearchStrategy)。*

最后同样重要的是，专业用户会喜欢的主要功能：**支持一个账户有多个或者备用的email地址**。

如果你在Geary中设置Gmail账户来收取你的Yahoo，Outlook和KittyMail信件，你可以看到现在它们都整齐地放在一起，当你写信时在'From'栏你可以选择指定账户作为发送人。这并不是最重要，但是却是最经常被人要求的的功能。

这个流行的Linux电子邮件客户端的这次发布主要是bug修复，性能优化以及一些杂项改进。

Yorba建议所有这个客户端的用户都升级到这个发行版。

### 在Ubuntu 14.04, 14.10 & 15.04安装Geary 0.10

Yorba的最新版本可以从GNOME的Git账户下载可编译的源代码。但说实话：这不是有点麻烦吗？

Ubuntu用户想知道如何在 **14.04,14.10** 以及 **15.04**(那些更新爱好者) 上安装Geary 0.10。

官方的Youba PPA包括了 **Geary 最新版本** 以及Shotwell(照片管理器)和[California](http://www.omgubuntu.co.uk/2014/10/california-calendar-natural-language-parser)(日历应用)。请注意添加这个PPA会使你电脑上任何已经安装的这些应用更新到最近的版本。

Capiche? Coolio.

在Ubuntu上安装Geary你首先需要添加Yorba PPA和你的软件源。做这些你只需要打开终端窗口并小心地输入下面的两条命令：

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

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

```

在输入最后一条命令并敲击回车键后会提示输入你的密码。输入密码让安装完成。

完成后，打开你的桌面环境应用启动面板并查找‘Geary’图标。点击它，添加你的账户并查看[通过信息高速公路下载了什么](https://www.youtube.com/watch?v=rxM8C71GB8w)，开始使用简单的图形界面吧。

别忘记：你可以通过电子邮件告诉我们你想看的新闻，应用建议，以及任何你想我们包括的东西。

---

via: <http://www.omgubuntu.co.uk/2015/03/install-geary-ubuntu-linux-email-update>

作者：[Joey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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


Summary: 新出现在Ubuntu 15.04中的一个软件包解决了我对Unity 欢迎屏的微词：像Cinnamon这样的其它Linux桌面会话没有徽章图标。 我知道这有点吹毛求疵了；这只是对大多数人而言几乎毫无影响的视觉瑕疵罢了。但是这种不一致性时时刻刻缠绕着我，让我不胜其烦，因为Ubuntu的一些会话带有徽章图标，包括Unity、GNOME和KDE。而剩下的其它桌面环境，包括它自己的一些旁系产品，像Xubuntu，只会在会话切换列表和主用户界面显示了一个不能再简单的白点。 这些点点们造成的这种不一致性刺激着我的神经，即使它只是稍纵即逝，但这种刺激不仅仅来自设计，也

# ‘Unity Greeter Badges’：将丢失的会话图标带回Ubuntu登录屏幕

新出现在**Ubuntu 15.04中的一个软件包解决了我对Unity 欢迎屏的微词：像Cinnamon这样的其它Linux桌面会话没有徽章图标。**

我知道这有点吹毛求疵了；这只是对大多数人而言几乎毫无影响的视觉瑕疵罢了。但是这种不一致性时时刻刻缠绕着我，让我不胜其烦，因为Ubuntu的一些会话带有徽章图标，包括Unity、GNOME和KDE。而剩下的其它桌面环境，包括它自己的一些旁系产品，像Xubuntu，只会在会话切换列表和主用户界面显示了一个不能再简单的白点。

这些点点们造成的这种不一致性刺激着我的神经，即使它只是稍纵即逝，但这种刺激不仅仅来自设计，也来自可用性方面。标牌式的标志符号对于让我们知道我们即将登陆到哪个会话很有帮助。

例如，你能告诉我们这个是个什么会话呢？

Budgie? 也许是 MATE? 也能是 Cinnamon……我必须点开它才能知道。

没有必要这样做啊。构建Unity Greeter，就是为了让桌面环境开发者能够部署徽章到欢迎屏幕中（有些确实这样做了）。但在许多情况下，像MATE，它的包来自上游的Debian，想要移植一个“Ubuntu专用的补丁包”不太可取，也不太可能。

### 一个解决方案出炉了

一位有经验的Debian维护者[Doug Torrance](https://launchpad.net/%7Eprofzoom)有了修复该可用性瑕疵的解决方案。与其依赖桌面制造者自己来添加品牌式徽章到他们的包中，与其给Ubuntu增加维护它的责任重担，Torrance还不如自己创建了一个独立的‘unity-greeter-badges’包来收容它们。

承担起了直接提供会话标志的假定责任后，该包确保能同时迎合新旧窗口管理器、会话和桌面。

在30个左右的桌面环境列表中，它为以下桌面捆绑了新的会话徽章：

* Xubuntu
* Cinnamon
* MATE
* Cairo-Dock
* Xmonad
* Awesome
* OpenBox
* Pantheon

最重要的是，‘**Unity-Greeter-Badges**’已经被Ubuntu 15.04收录进去。这就意味着Torrance的包将可以直接安装，不需要PPA，也不需要下载。没有像Unity Greeter一样成为核心包的一部分，它可以以更高效和更及时的方式更新新的图标。

如果你真运行着Ubuntu 15.04，在不久的将来，你就可以从软件中心获取并安装该包了。

不想等到15.04？Torrance已经为Ubuntu 14.04和Ubuntu 14.10用户做了个.deb安装器。

* [下载用于Ubuntu 14.04的unity-greeter-badges](https://launchpad.net/%7Eprofzoom/+archive/ubuntu/misc/+files/unity-greeter-badges_0.1-0ubuntu1%7E201412111501%7Eubuntu14.04.1_all.deb)
* [下载用于Ubuntu 14.10的unity-greeter-badges](https://launchpad.net/%7Eprofzoom/+archive/ubuntu/misc/+files/unity-greeter-badges_0.1-0ubuntu1%7E201412111501%7Eubuntu14.10.1_all.deb)

---

via: <http://www.omgubuntu.co.uk/2015/01/unity-greeter-badges-brings-missing-session-icons-ubuntu-login-screen>

作者：[Joey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


指南：使用 Trickle 限制应用程序带宽占用

Summary: 有没有遇到过系统中的某个应用程序独占了你所有的网络带宽的情形？如果你有过这样的遭遇，那么你就会感受到Trickle这种带宽调整应用的价值。不管你是一个系统管理员还只是普通Linux用户，都需要学习如何控制应用程序的上下行速度，来确保你的网络带宽不会被某个程序霸占。  在 Linux 上安装 Trickle 带宽限制 什么是 Trickle? Trickle是一个网络带宽调整工具，可以让我们管理应用程序的网络上下行速度，使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说，Trickle可以让你基于单个应用程序来控制网络流量速率，而不

# 指南：使用 Trickle 限制应用程序带宽占用

有没有遇到过系统中的某个应用程序独占了你所有的网络带宽的情形？如果你有过这样的遭遇，那么你就会感受到Trickle这种带宽调整应用的价值。不管你是一个系统管理员还只是普通Linux用户，都需要学习如何控制应用程序的上下行速度，来确保你的网络带宽不会被某个程序霸占。

*在 Linux 上安装 Trickle 带宽限制*

### 什么是 Trickle?

Trickle是一个网络带宽调整工具，可以让我们管理应用程序的网络上下行速度，使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说，Trickle可以让你基于单个应用程序来控制网络流量速率，而不是仅仅针对与单个用户——这是在客户端网络环境中经典的带宽调整情况。

### Trickle 是如何工作的？

另外，trickle 可以帮助我们基于应用来定义优先级，所以当对整个系统进行了全局限制设定，高优先级的应用依然会自动地获取更多的带宽。为了实现这个目标，trickle 对 TCP 连接上的套接字的数据发送、接收设置流量限制。我们必须注意到，除了影响传输速率之外，在这个过程中，trickle任何时候都不会以任何方式来改变其中的数据。

### Trickle不能做什么？

这么说吧，唯一的限制就是，trickle不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序，因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。

由于trickle并不需要超级用户的权限来运行，所以用户可以设置他们自己的流量限制。可能这并不是你想要的，我们会探索如何使用全局设定来限制系统中的所有用户的流量限制。也即是说，此时系统中的每个用户具有管理各自的流量速率，但是无论如何，都会受到系统管理员给他们设置的总体限制。

在这篇文章中，我们会描述如何通过trickle在linux平台上管理应用程序使用的网络带宽。为了生成所需的流量，在此会在客户端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget， 在服务器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 来进行演示。 相同的指令也可以在RedHat，Fedora和Ubuntu等系统使用。

#### 前提条件

1. 对于 RHEL/CentOS 7/6， [开启EPEL仓库](/article-2324-1.html)。这些用于企业版 Linux 的额外软件包是一个由Fedora项目维护的高质量、开源的软件仓库，而且百分之百与其衍生产品相兼容，如企业版本Linux和CentOS。 在这个仓库中trickle和ncftp两者都是可用的。
2. 按照如下方式安装ncftp：

```
# yum update && sudo yum install ncftp      [基于 RedHat 的系统]
# aptitude update && aptitude install ncftp [基于 Debian 的系统]

```
3. 在单独的服务器上设置一个FTP服务器。需要注意的是，尽管FTP天生就不安全，但是仍然被广泛应用在安全性无关紧要的文件上传下载中。 在这篇文章中我们使用它来演示trickle的优点，同时它也会在客户端的标准输出流中显示传输速率。我们将是否在其它时间使用它放在一边讨论。

```
# yum update && yum install vsftpd      [基于 RedHat 的系统]
# aptitude update && aptitude install vsftpd        [基于 Debian 的系统]

```

现在，在FTP服务器上按照以下方式编辑 /etc/vsftpd/vsftpd.conf 文件。

```
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

```

在此之后，确保在你的当前会话中启动了vsftpd，并在之后的启动中让其自动启动。

```
# systemctl start vsftpd        [基于 systemd 的系统]
# systemctl enable vsftpd
# service vsftpd start          [基于 init 的系统]
# chkconfig vsftpd on

```
4. 如果你选择在一个使用 SSH 密钥进行远程访问的 CentOS/RHEL 7中搭建FTP服务器，你需要一个密码受保护的用户账户，它能访问**root目录之外**的某个目录，并有能在其中上传和下载文件的权限。

你可以通过在你的浏览器中输入以下的URL来浏览你的家目录。一个登录窗口会弹出来提示你输入FTP服务器中的有效的用户名和密码。

```
ftp://192.168.0.15

```

如果验证成功，你就会看到你的家目录中的内容。该教程的稍后部分中，你将可以刷新页面来显示在你之前上传过的文件。

*FTP 目录树*

### 如何在Linux中安装 trickle

1. 通过yum或aptitude来安装trickle.

为了确保能够成功安装，最好在安装工具之前，保证当前的安装包是最新的版本。

```
# yum -y update && yum install trickle              [基于 RedHat 的系统]
# aptitude -y update && aptitude install trickle        [基于 Debian 的系统]

```
2. 确认trickle是否对特定的二进制包有用。

之前我们解释过，trickle只对使用动态或共享的库的二进制包有用。为了确认我们是否可以对某个特定的应用使用trickle，我们可以使用著名的ldd（列出动态依赖）工具。 特别地，我们会查看任何给定程序的动态依赖中其当前使用的glibc，因为其准确地定义了通过套接字通讯所使用的系统调用。

对一个给定的二进制包执行以下命令来查看是否能对其使用trickle进行带宽调整：

```
# ldd $(which [binary]) | grep libc.so

```

例如，

```
# ldd $(which ncftp) | grep libc.so

```

其输出是：

```
# libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)

```

输出中的括号中的字符可能在不同的系统平台有所不同，甚至相同的命令在不同的时候运行也会不同，因为其代表包加载到物理内存中的地址。

如果上面的命令没有返回任何的结果，就说明这个二进制包没有使用libc包，因此trickle对其不能起到带宽调整的作用。

### 学习如何使用Trickle

最基本的用法就是使用其独立模式，通过这种方式，trickle用来显式地定义给定应用程序的上传下载速率。如前所述，为了简单，我们会使用相同的应用来进行上传下载测试。

#### 在独立模式下运行trickle

我们会比较在有无trickle的情况下的上传下载速率， ‘-d’选项指示下载速率（KB/s单位），而'-u'选项指示相同单位的上传速率。另外我们会使用到‘-s’选项来指定trickle应该以独立模式运行。

以独立模式运行trickle的基本语法如下：

```
# trickle -s -d [下载速率，KB/s] -u [上传速率，KB/s]

```

为了能够让你自己运行以下样例，确保你在自己的客户端安装了trickle和ncftp（我的是192.168.0.17）。

**样例1：在有无trickle的情况下上传一个2.8 MB的PDF文件。**

我们使用一个自由发布的[LInux基础知识PDF文件](http://linux-training.be/files/books/LinuxFun.pdf)来进行下面的测试。

你可以首先使用下面的命令将这个文件下载到你当前的工作目录中：

```
# wget http://linux-training.be/files/books/LinuxFun.pdf

```

下面是在没有trickle的情况下将一个文件上传到我们的FTP服务器的语法：

```
# ncftpput -u username -p password 192.168.0.15  /remote_directory local-filename

```

其中的 /remote\_directory 是相对于该用户的家目录的上传路径，而local-filename是一个你当前工作目录中的文件。

特别的是，在没有trickle的情形下，我们可以得到上传峰值速率52.02MB/s(请注意，这个不是真正的平均上传速率，而是峰值开始的瞬时值)，而且这个文件几乎在瞬间就完成了上传。

```
# ncftpput -u username -p password 192.168.0.15  /testdir LinuxFun.pdf

```

输出：

```
LinuxFun.pdf:                                           2.79 MB   52.02 MB/s

```

在使用trickle的情况下，我们会限制上传速率在5KB/s。在第二次上传文件之前，我们需要在目标目录中删除这个文件，否则ncftp就会通知我们在目标目录中已经存在了与上传文件相同的文件，从而不会执行文件的传输：

```
# rm /absolute/path/to/destination/directory/LinuxFun.pdf

```

然后：

```
# trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf

```

输出：

```
LinuxFun.pdf:                                           2.79 MB 4.94 kB/s

```

在上面的样例中，我们看到平均的上传速率下降到了5KB/s。

**样例2：在有无trickle的情况下下载相同的2.8MB的PDF文件**

首先，记得从原来的源目录中删除这个PDF：

```
# rm /absolute/path/to/source/directory/LinuxFun.pdf

```

请注意，下面的样例中将远程的文件下载到客户端机器的当前目录下，这是由FTP服务器的IP地址后面的“.”决定的。

没有trickle的情况下：

```
# ncftpget -u username -p  password 111.111.111.111 . /testdir/LinuxFun.pdf

```

输出：

```
LinuxFun.pdf:                                           2.79 MB  260.53 MB/s

```

在有trickle的情况下，限制下载速率在20KB/s：

```
# trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf

```

输出：

```
LinuxFun.pdf:                                           2.79 MB   17.76 kB/s

```

### 在监督[非托管]模式下运行Trickle

trickle也可以按照/etc/trickled.conf文件中定义的一系列参数运行在非托管模式下。 这个文件定义了守护线程 trickled的行为以及如何管理trickle。

另外，如果你想要全局设置被所有的应用程序使用的话，我们就会需要使用trickle命令。 这个命令运行守护进程，并允许我们通过trickle定义所有应用程序共享的上传下载限制，不需要我们每次来进行指定。

例如，运行：

```
# trickled -d 50 -u 10

```

会导致任何通过trickle运行的应用程序的上传下载速率分别限制在30kb/s和10kb/s。

请注意，你可以在任何时间都能确认守护线程trickled是否正在运行以及其运行参数：

```
# ps -ef | grep trickled | grep -v grep

```

输出:

```
root    16475   1  0 Dec24 ?        00:00:04 trickled -d 50 -u 10

```

**样例3：在使用/不使用trickle的情形下上传一个 19MB 的mp4文件到我们的FTP服务器。**

在这个样例中，我们会使用“He is the gift”的自由分发视频，可以通过这个[链接](http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4)下载。

我们将会在开始时通过以下的命令将这个文件下载到你的当前工作目录中:

```
# wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4

```

首先，我们会使用之前列出的命令来开启守护进程trickled:

```
# trickled -d 30 -u 10

```

在不使用trickle时:

```
# ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4

```

输出：

```
2014-00-1460-he-is-the-gift-360p-eng.mp4:               18.53 MB   36.31 MB/s

```

在使用trickle时：

```
# trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4

```

输出:

```
2014-00-1460-he-is-the-gift-360p-eng.mp4:               18.53 MB    9.51 kB/s

```

我们可以看到上面的输出，上传的速率下降到了约 10KB/s。

\*\* 样例4：在使用/不使用trickle的情形下下载这个相同的视频 \*\*

与样例2一样，我们会将该文件下载到当前工作目录中。

在没有trickle时:

```
# ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4

```

输出:

```
2014-00-1460-he-is-the-gift-360p-eng.mp4:               18.53 MB  108.34 MB/s

```

有trickle的时：

```
# trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4

```

输出:

```
2014-00-1460-he-is-the-gift-360p-eng.mp4:               18.53 MB   29.28 kB/s

```

上面的结果与我们之前设置的下载限速相对应(30KB/s)。

**注意:** 一旦守护进程开启之后，就没有必要使用trickle来为每个应用程序来单独设置限制。

如前所述，人们可以进一步地通过trickled.conf来客制化trickle的带宽速率调整，该文件的一个典型的分段有以下部分组成：

```
[service]
Priority = <value>
Time-Smoothing = <value>
Length-Smoothing = <value>

```

其中,

* [service] 用来指示我们想要对其进行带宽使用调整的应用程序名称
* Priority 用来让我们为某个服务制定一个相对于其他服务高的优先级，这样就不允许守护进程管理中的一个单独的应用程序来占用所有的带宽。越小的数字代表更高的优先级。
* Time-Smoothing [以秒计]: 定义了trickled让各个应用程序传输或接收数据的时间间隔。小的间隔值(0.1-1秒)对于交互式应用程序是理想的，因为这样会具有一个更加平滑的会话体验，而一个相对较大的时间间隔值(1-10秒)对于需要批量传输应用程序就会显得更好。如果没有指定该值，默认是5秒。
* Length-smoothing [KB 单位]: 该想法与Time-Smoothing如出一辙，但是是基于I/O操作而言。如果没有指定值，会使用默认的10KB。

上述平滑值（Time-Smoothing、 Length-smoothing）的改变会被翻译为将指定的服务的使用一个间隔值而不是一个固定值。不幸的是，没有一个特定的公式来计算间隔值的上下限，主要依赖于特定的应用场景。

下面是一个在CentOS 7 客户端中的trickled.conf 样例文件（192.168.0.17）：

```
[ssh]
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 2

[ftp]
Priority = 2
Time-Smoothing = 1
Length-Smoothing = 3

```

使用该设置，trickled会为SSH赋予比FTP较高的传输优先级。值得注意的是，一个交互进程，例如SSH，使用了一个较小的时间间隔值，然而一个处理批量数据传输的服务如FTP，则使用一个较大的时间间隔来控制之前的样例中的上传下载速率，尽管不是百分百的由trickled指定的值，但是也已经非常接近了。

### 总结

在该文章中,我们探索了使用trickle在基于Fedora发行版和Debian衍生版平台上来限制应用程序的带宽使用。也包含了其他的可能用法，但是不对以下情形进行限制:

* 限制系统工具的下载速度，例如[wget](http://www.tecmint.com/10-wget-command-examples-in-linux/)，或 BT客户端.
* 限制你的系统的包管理工具[`yum`](http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/)更新的速度 (如果是基于Debian系统的话，其包管理工具为[`aptitude`](http://www.tecmint.com/dpkg-command-examples/))。
* 如果你的服务器是在一个代理或防火墙后面(或者其本身即是代理或防火墙的话)，你可以使用trickle来同时设定下载和上传速率，或者客户端或外部通讯的速率。

欢迎提问或留言。

---

via: <http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trickle-in-linux/>

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

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


Synfig Studio 1.0：开源动画动真格的了

Summary: *现在可以下载 Synfig Studio 这个自由、开源的2D动画软件的全新版本了。 * 在这个跨平台的软件首次发行一年之后，Synfig Studio 1.0 带着一套全新改进过的功能，实现它所承诺的创造电影级的动画的工业级解决方案。 在众多功能之上的是一个改进过的用户界面，据项目开发者说那是个用起来更简单、更直观的界面。客户端添加了新的单窗口模式，让界面更整洁，而且使用了最新的 GTK3 库重制。 在功能方面有几个值得注意的变化，包括新加的全功能骨骼系统。 这套关节和转轴的骨骼构架非常适合2D剪纸动画，再配上这个版本新加的复杂的变形控制系

我想说的是。以前是用github自动登陆的怎么召回帐号阿

github 的哪个关联，在升级 https 之后，出现问题了。所以没办法了。。

那么之前使用github自动登陆的帐号没办法找回来吗？？不提供找回方式吗？

嗯，我尽量恢复 github 接口吧，您再等等哈。

因为这个习惯了貌似没有办法改变，sina等社交的东西都不怎么用，所以就用了github了

放心，请给我一点时间

谢谢！   ）_; )

哪里有中文教程啊？完全不会，但想学啊

# Synfig Studio 1.0：开源动画动真格的了

<img src="content_image/album_201505_27_135027e58vi11vy1iiycvq.jpg" alt="" title="">

\**现在可以下载 Synfig Studio 这个自由、开源的2D动画软件的全新版本了。 \**

在这个跨平台的软件首次发行一年之后，Synfig Studio 1.0 带着一套全新改进过的功能，实现它所承诺的“创造电影级的动画的工业级解决方案”。

在众多功能之上的是一个改进过的用户界面，据项目开发者说那是个用起来‘更简单’、‘更直观’的界面。客户端添加了新的**单窗口模式**，让界面更整洁，而且**使用了最新的 GTK3 库重制**。

在功能方面有几个值得注意的变化，包括新加的全功能骨骼系统。

这套**关节和转轴的‘骨骼’构架**非常适合2D剪纸动画，再配上这个版本新加的复杂的变形控制系统或是 Synfig 受欢迎的‘关键帧自动插入’（即：帧到帧之间的变形）应该会变得非常有效率的。（youtube视频 <https://www.youtube.com/M8zW1qCq8ng> ）

新的无损剪切工具，摩擦力效果和对逐帧位图动画的支持，可能会有助于释放开源动画师们的创造力，更别说新加的用于同步动画的时间线和声音的声效层！

### 下载 Synfig Studio 1.0

Synfig Studio 并不是任何人都能用的工具套件，这最新发行版的最新一批改进应该能吸引一些动画制作者试一试这个软件。

如果你想看看开源动画制作软件是什么样的，你可以通过下面的链接直接从工程的 Sourceforge 页下载一个适用于 Ubuntu 的最新版本的安装器。

* [下载 Synfig 1.0 (64bit) .deb 安装器](http://sourceforge.net/projects/synfig/files/releases/1.0/linux/synfigstudio_1.0_amd64.deb/download)
* [下载 Synfig 1.0 (32bit) .deb 安装器](http://sourceforge.net/projects/synfig/files/releases/1.0/linux/synfigstudio_1.0_x86.deb/download)

---

via: <http://www.omgubuntu.co.uk/2015/04/synfig-studio-new-release-features>

作者：[oey-Elijah Sneddon](https://plus.google.com/117485690627814051450/?rel=author) 译者：[H-mudcup](https://github.com/H-mudcup) 校对：[wxy](https://github.com/wxy)

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


zBackup：一个多功能的去重备份工具

Summary: zbackup是一个基于rsync思想的全局去重数据备份工具。给它传入一个大的tar文件后，它会仅存储一次该文件的重复部分，然后对结果进行压缩，并根据参数确定是否对其加密。传入另一个tar文件后，它会从之前的已备份文件中复用重复数据。只有新的改动会被保存，并且只要文件差异不是很大，需要的存储空间非常少。无论何时，之前的已备份文件都可以被完整地读出来。  zBackup特性  使用并行的LZMA或者LZO压缩算法压缩已备份数据 使用内置的AES加密算法加密已备份数据 可以删除旧的已备份数据 使用一个64位滚动哈希，保持软碰撞数量为0 备份库由

# zBackup：一个多功能的去重备份工具

zbackup是一个基于rsync思想的全局去重数据备份工具。给它传入一个大的tar文件后，它会仅存储一次该文件的重复部分，然后对结果进行压缩，并根据参数确定是否对其加密。传入另一个tar文件后，它会从之前的已备份文件中复用重复数据。只有新的改动会被保存，并且只要文件差异不是很大，需要的存储空间非常少。无论何时，之前的已备份文件都可以被完整地读出来。

<img src="content_image/album_201505_27_145946u9yfzo379gf9jxpy.png" alt="" title="">

### zBackup特性

* 使用并行的LZMA或者LZO压缩算法压缩已备份数据
* 使用内置的AES加密算法加密已备份数据
* 可以删除旧的已备份数据
* 使用一个64位滚动哈希，保持软碰撞数量为0
* 备份库由不可更改的文件组成，只有库中不存在的文件才能修改
* 使用C++语言编写，并且只有适量的依赖库
* 可以在生产环境安全使用
* 可以在不同备份库中交换数据而无需重新压缩

### 在ubuntu中安装zBackup

打开终端并运行如下命令：

```
sudo apt-get install zbackup

```

### 使用zBackup

`zbackup init`命令会初始化一个备份库，用来存放待备份的数据。

```
zbackup init [--non-encrypted] [--password-file ~/.my_backup_password ] /my/backup/repo

```

`zbackup backup`命令备份一个由`tar c`命令创建的tar文件到刚才使用`zbackup init`初始化的备份库。（LCTT 译注：实际使用时类似这样，tar c files | zbackup ...）

```
zbackup [--password-file ~/.my_backup_password ] [--threads number_of_threads ] backup /my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'`

```

`zbackup restore`命令从备份库中恢复一个已备份文件到tar文件中。

```
zbackup [--password-file ~/.my_backup_password ] [--cache-size cache_size_in_mb ] restore /my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'` > /my/precious/backup-restored.tar

```

### 可用选项

* -non-encrypted -- 不加密备份库。
* --password-file ~/.my*backup*password -- 使用位于~/.my*backup*password的口令文件来加密备份库和待备份文件，以及解密已备份文件。
* --threads number*of*threads -- 限制并行LZMA压缩的线程数为 number*of*threads。建议在32位的系统平台使用。
* --cache-size cache*size*in*mb -- 使用cache*size*in*mb中的缓存大小来加速恢复文件的过程。

### 上述命令中 zBackup 相关文件

* ~/.my*backup*password 用来加密备份库和待备份文件，以及解密已备份文件。更多细节见zbackup。
* /my/backup/repo 存放备份库的目录。
* /my/precious/restored-tar 用来恢复已备份文件的tar文件。
* /my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'` 指定的之前已备份文件的文件名。

---

via: <http://www.ubuntugeek.com/zbackup-a-versatile-deduplicating-backup-tool.html>

作者：[ruchi](http://www.ubuntugeek.com/author/ubuntufix) 译者：[goreliu](https://github.com/goreliu) 校对：[wxy](https://github.com/wxy)

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


Quagga上使用验证加固BGP会话安全

Summary: BGP协议运行于TCP之上，因而，它也继承了TCP连接的所有漏洞。例如，在一个BGP会话内，攻击者可以冒充一个合法的BGP邻居，然后说服另一端的BGP路由器共享路由信息给攻击者。在攻击者通告并向邻居路由注入伪造的路由时，就会发生这个问题。毫无戒备的邻居路由器就会开始向攻击者发送通信实况，实际上这些信息并没有去向任何地方，仅仅只是被丢弃了。回到2008年，YouTube实际上也受害于这样的BGP路由中毒，并遭受了长达一个小时的视频服务大量中断。一个更加糟糕的情况是，如果攻击者是个足够懂行的人，他们可以伪装成一台透明路由器，然后嗅

# Quagga上使用验证加固BGP会话安全

BGP协议运行于TCP之上，因而，它也继承了TCP连接的所有漏洞。例如，在一个BGP会话内，攻击者可以冒充一个合法的BGP邻居，然后说服另一端的BGP路由器共享路由信息给攻击者。在攻击者通告并向邻居路由注入伪造的路由时，就会发生这个问题。毫无戒备的邻居路由器就会开始向攻击者发送通信实况，实际上这些信息并没有去向任何地方，仅仅只是被丢弃了。回到2008年，YouTube实际上也[受害于](http://research.dyn.com/2008/02/pakistan-hijacks-youtube-1/)这样的BGP路由中毒，并遭受了长达一个小时的视频服务大量中断。一个更加糟糕的情况是，如果攻击者是个足够懂行的人，他们可以伪装成一台透明路由器，然后嗅探经过的通信以获取敏感数据。你可以想象，这会造成深远的影响。

要保护活跃的BGP会话不受攻击，许多服务提供商在BGP会话中使用[MD5校验和及预共享密钥](http://tools.ietf.org/html/rfc2385)。在受保护的BGP会话中，一台发送包的BGP路由器通过使用预共享的密钥生成MD5散列值、部分IP和TCP头以及有效载荷。然后，MD5散列作为一个TCP选项字段存储。在收到包后，接受路由器用同样的方法使用预共享密钥生成它的MD5版本。它会将它的MD5散列和接收到的某个包的值进行对比，以决定是否接受该包。对于一个攻击者而言，几乎不可能猜测到校验和或其密钥。对于BGP路由器而言，它们能在使用包的内容前确保每个包的合法性。

在本教程中，我们将为大家演示如何使用MD5校验和以及预共享密钥来加固两个邻居间的BGP会话的安全。

### 准备

加固BGP会话安全是相当简单而直截了当的，我们会使用以下路由器。

|  |  |  |
| --- | --- | --- |
| **路由器名称** | **AS 号** | **IP地址** |
| router-A | 100 | 10.10.12.1/30 |
| router-B | 200 | 10.10.12.2/30 |

常用的Linux内核原生支持IPv4和IPv6的TCP MD5选项。因此，如果你从全新的[Linux机器](/article-4232-1.html)构建了一台Quagga路由器，TCP的MD5功能会自动启用。剩下来的事情，仅仅是配置Quagga以使用它的功能。但是，如果你使用的是FreeBSD机器或者为Quagga构建了一个自定义内核，请确保内核开启了TCP的MD5支持（如，Linux中的CONFIG*TCP*MD5SIG选项）。

### 配置Router-A验证功能

我们将使用Quagga的CLI Shell来配置路由器，我们将使用的唯一的一个新命令是‘password’。

```
[root@router-a ~]# vtysh
router-a# conf t
router-a(config)# router bgp 100
router-a(config-router)# network 192.168.100.0/24
router-a(config-router)# neighbor 10.10.12.2 remote-as 200
router-a(config-router)# neighbor 10.10.12.2 password xmodulo

```

本例中使用的预共享密钥是‘xmodulo’。很明显，在生产环境中，你需要选择一个更健壮的密钥。

**注意**： 在Quagga中，‘service password-encryption’命令被用做加密配置文件中所有明文密码（如，登录密码）。然而，当我使用该命令时，我注意到BGP配置中的预共享密钥仍然是明文的。我不确定这是否是Quagga的限制，还是版本自身的问题。

### 配置Router-B验证功能

我们将以类似的方式配置router-B。

```
[root@router-b ~]# vtysh
router-b# conf t
router-b(config)# router bgp 200
router-b(config-router)# network 192.168.200.0/24
router-b(config-router)# neighbor 10.10.12.1 remote-as 100
router-b(config-router)# neighbor 10.10.12.1 password xmodulo

```

### 验证BGP会话

如果一切配置正确，那么BGP会话就应该起来了，两台路由器应该能交换路由表。这时候，TCP会话中的所有流出包都会携带一个MD5摘要的包内容和一个密钥，而摘要信息会被另一端自动验证。

我们可以像平时一样通过查看BGP的概要来验证活跃的BGP会话。MD5校验和的验证在Quagga内部是透明的，因此，你在BGP级别是无法看到的。

如果你想要测试BGP验证，你可以配置一个邻居路由，设置其密码为空，或者故意使用错误的预共享密钥，然后查看发生了什么。你也可以使用包嗅探器，像tcpdump或者Wireshark等，来分析通过BGP会话的包。例如，带有“-M ”选项的tcpdump将验证TCP选项字段的MD5摘要。

### 小结

在本教程中，我们演示了怎样简单地加固两台路由间的BGP会话安全。相对于其它协议而言，配置过程非常简明。强烈推荐你加固BGP会话安全，尤其是当你用另一个AS配置BGP会话的时候。预共享密钥也应该安全地保存。

---

via: <http://xmodulo.com/bgp-authentication-quagga.html>

作者：[Sarmed Rahman](http://xmodulo.com/author/sarmed) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


初来乍到Linux? 你需要知道的5款好应用

Summary: 当你刚刚迈入linux的世界时，你会立马动身开始使用那些知名的浏览器、云客户端、音乐播放器、邮件客户端，也许还有图形编辑器，对吗？可是，你却错过了几个非常重要的生产工具。这里将介绍给你5个应该安装的不容错过的应用。 Synergy Synergy 简直就是多桌面用户的福音。这是一个开源软件，它可以让你用一个鼠标和键盘跨越几台电脑、显示器和操作系统。在桌面之间切换鼠标和键盘非常简单，你只要把鼠标从一个桌面的边缘移向另一个桌面即可。  当你第一次打开 Synergy，它会引导你完成设置。你的主桌面就是你将与其它桌面共享输入设备的那

第一个工具第一次见，好新鲜的赶脚。我是小白，莫见怪O(∩_∩)O

最后一个虽然很酷炫,但是对学生党来说这个名字太不吉利啦233333~~~

# 初来乍到Linux? 你需要知道的5款好应用

当你刚刚迈入linux的世界时，你会立马动身开始使用那些知名的浏览器、云客户端、音乐播放器、邮件客户端，也许还有图形编辑器，对吗？可是，你却错过了几个非常重要的生产工具。这里将介绍给你5个应该安装的不容错过的应用。

### [Synergy](http://synergy-project.org/)

Synergy 简直就是多桌面用户的福音。这是一个开源软件，它可以让你用一个鼠标和键盘跨越几台电脑、显示器和操作系统。在桌面之间切换鼠标和键盘非常简单，你只要把鼠标从一个桌面的边缘移向另一个桌面即可。

当你第一次打开 Synergy，它会引导你完成设置。你的主桌面就是你将与其它桌面共享输入设备的那个。将主桌面设为服务端，将其它桌面设置为客户端。

Synergy 在互连的各个桌面间维持同一张粘贴板。它也将锁屏功能融合到了一起，例如，你可以跳过锁屏一次登录到所有桌面。你可以在 **Edit 菜单的 Setting** 下调整更多的设置，比如设置密码或者将 Synergy 设置成开机自启动。

（LCTT 译注：这是个[自由而开源][15]的好软件，但是如果你从它的网站下载，由于商业支持的缘故，是需要付费的；当然你可以自己[下载源代码并编译][15]。）

### [BasKet Note Pads](http://basket.kde.org/)

从某种意义上来讲，用 BasKet Note Pads，就像把你的大脑刻画进计算机里一样。它把我们不经意间的想法记录下来，然后任由我们去把它们组织起来。你可以在各种任务中用到 BasKet Note Pads，比如记录笔记、制作脑图、记录代办事项、保存链接、管理你的发现、或者追踪项目数据。

在 BasKet Note Pads 中，每个放到一个区域的主要的想法或项目被称作一个篮子（basket）。你可以进一步拆分，成一个或多个子篮或者兄弟篮。篮子进一步分成笔记，这些零零碎碎的笔记组成了一个项目。你可以自由组织它们，给它们打标签，和筛选它们。

该应用的双面板结构的左侧以树形结构显示了你创建的所有篮子。

BasKet Note Pads 第一次用起来可能有点复杂，但是如果你经常用它的话，你会觉得相当顺手。当你暂时不用它时，它会退出到系统托盘，方便你下次快速打开它。

如果在 Linux 上想要一个[更简单的笔记本替代品](http://www.makeuseof.com/tag/try-these-3-beautiful-note-taking-apps-that-work-offline/)？可以试试[Springseed](http://getspringseed.com/)。

### [Caffeine（咖啡因）](https://launchpad.net/caffeine)

你怎样确保你的电脑不会在放一部[精彩的电影](http://www.makeuseof.com/tag/popular-apps-movies-according-google/)中途突然休眠呢？Caffeine 会帮助你解决这个问题。当然，你并不需要为你的电脑泡一杯咖啡。你只需要安装一个轻量级的指示器 —— Caffeine。只要当前你是全屏模式，它就会禁用你的屏幕保护程序、锁屏程序，让你的电脑不会因为没有在任务中而进入睡眠模式。

[点击下载](http://ppa.launchpad.net/caffeine-developers/ppa/ubuntu/pool/main/c/caffeine/)安装最新版本的 Caffeine。如果你想以[PPA的方式](http://www.makeuseof.com/tag/ubuntu-ppa-technology-explained/)安装，使用如下命令：

```
$ sudo add-apt-repository ppa:caffeine-developers/ppa
$ sudo apt-get update
$ sudo apt-get install caffeine

```

如果你的Ubuntu版本是14.10或者15.04(或者其它衍生版本)，你还需要安装下面的依赖包：

```
$ sudo apt-get install libappindicator3-1 gir1.2-appindicator3-0.1

```

完成安装以后，将**Caffeine指示器**设置成开机自启动，这样可以使指示器显示在系统托盘里。你可以右键点击托盘图标打开应用的关联菜单，来开启或关闭Caffeine，

### Easystroke

Easystroke 是一个将[鼠标潜力](http://www.makeuseof.com/tag/4-astounding-linux-mouse-hacks/)开发出来的应用。通过一系列的设置，用鼠标、触摸屏、手写笔的手势来完成敲击键盘、执行命令和滚动屏幕等通用操作。在 Easystroke 里能够设置的手势相当多，而且当你看到应用的界面时，你会发现应用的引导非常清晰。

选择一个你喜欢的鼠标键开始设置手势。如果你喜欢，你还可以设置辅助功能键。通过Perferences>Behavior>Gesture Button 来设置。现在到**Action**选项卡里面，把你最常用的动作记录成手势吧。

在 Preferences 和 Advanced 选项卡中，你可以做一些其它的调整，比如将 EasyStroke 设置成自动启动，在系统托盘中显示图标，改变滚动速度。

### Guake

我把我最喜欢的应用放在最后。Guake 是根据第一人称射击视屏游戏 [Quake](http://en.wikipedia.org/wiki/Quake_%28video_game%29) 模仿而来的下拉式命令行终端。不管你是否在[学习命令行终端](http://www.makeuseof.com/tag/4-ways-teach-terminal-commands-linux-si/)，或者是有一定的基础，Guake 都可以将终端变得更加方便。你可以一键将它呼出，也可以一键将它隐藏。

就像下面这张图，当打开时，Guake 的界面会覆盖在当前的屏幕上。你可以在终端中右键点击，调出 Preference 来改变 Guake 的界面，滚动方式，快捷键等等。

如果[你的桌面](http://www.makeuseof.com/tag/10-top-linux-desktop-environments-available/)是 KDE，你可以选择一个类似的工具——[Yakuake](https://yakuake.kde.org/).

### 写下你最喜欢的 Linux 新发现！

还有更多[超级实用的 Linux 应用](http://www.makeuseof.com/tag/linux-treasures-x-sublime-native-linux-apps-will-make-want-switch/)等待被发现。放心，我们将一直关注，并把它们带到你们的生活中。

哪一个应用是你最喜欢研究的呢？哪一个是你觉得必不可少的呢？在评论里告诉给我们吧。

---

via: <http://www.makeuseof.com/tag/new-linux-5-apps-didnt-know-missing/>

作者：[Akshata](http://www.makeuseof.com/tag/author/akshata/) 译者：[sevenot](https://github.com/sevenot) 校对：[wxy](https://github.com/wxy)

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


Linux用户应知应会的7个‘ls’命令的独特技巧

Summary: 在前面我们系列报道的两篇文章中，我们已经涵盖了关于ls命令的绝大多数内容。本文时ls命令系列的最后一部分。如果你还没有读过该系列的其它两篇文章，你可以访问下面的链接。  Linux中的15个基本ls命令示例 15 个ls命令的面试问题（一） 10 个ls命令面试的问题（二）   7个ls命令独特技巧 1. 以各种时间格式附带时间戳列出目录中的内容 要以时间格式列出目录内容，我们需要选择以下两种方法中的任何一种。 # ls -l time-style= (方法 A)  注意 - 上面的开关--time的格式必须和-l开关同时使用，否则达不到目的。 # ls -full-time (方法 B)

got it

太好了！最难得的是做了动画效果！

来自上海的 Internet Explorer 9.0|Windows 7 用户

第3条有误，ls -p只是给目录加上斜杠"/"。要实现第3条说的加各种符号应该是ls -F。搬运一下ls --help  #有的是中文有的是英文看起来不太统一哈

-F, --classify             append indicator (one of */=>@|) to entries

-p,  --indicator-style=slash        对目录加上表示符号"/"

谢谢指正，马上修改！

# Linux用户应知应会的7个‘ls’命令的独特技巧

在前面我们系列报道的两篇文章中，我们已经涵盖了关于‘ls’命令的绝大多数内容。本文时‘ls命令’系列的最后一部分。如果你还没有读过该系列的其它两篇文章，你可以访问下面的链接。

* [Linux中的15个基本‘ls’命令示例](/article-5109-1.html)
* [15 个‘ls’命令的面试问题（一）](/article-5349-1.html)
* [10 个‘ls’命令面试的问题（二）](/article-5350-1.html)

*7个ls命令独特技巧*

### 1. 以各种时间格式附带时间戳列出目录中的内容

要以时间格式列出目录内容，我们需要选择以下两种方法中的任何一种。

```
# ls -l –time-style=[STYLE]               (方法 A)

```

**注意** - 上面的开关`--time`的格式必须和`-l`开关同时使用，否则达不到目的。

```
# ls -full-time                           (方法 B)

```

可以用以下任何一个选项替换`[STYLE]`。

```
full-iso
long-iso
iso
locale
+%H:%M:%S:%D

```

**注意** - 在上面行中，H（时），M（分），S（秒），D（日）的顺序可以任意调整。此外，你只需选择那些相关的选项，而不是所有选项。例如，`ls -l --time-style=+%H`将只显示小时。`ls -l --time-style=+%H:%M:%D`将显示小时、分钟和日。

```
# ls -l --time-style=full-iso

```

*ls命令的完整 ISO时间格式*

```
# ls -l --time-style=long-iso

```

*长时间格式列表*

```
# ls -l --time-style=iso

```

*时间格式列表*

```
# ls -l --time-style=locale

```

*本地时间格式列表*

```
# ls -l --time-style=+%H:%M:%S:%D

```

*日期和时间格式列表*

```
# ls --full-time

```

*完整格式时间列表*

### 2. 以多种格式列出目录内容，如以逗号分隔、水平格式、长格式、垂直格式、交叉格式等列出。

目录内容可以用以下建议的ls命令各种格式列出：

```
# ls --format=across        # 交叉
# ls --format=comma         # 逗号
# ls --format=horizontal    # 水平
# ls --format=long          # 长格式
# ls --format=single-column # 单栏
# ls --format=verbose       # 详情
# ls --format=vertical      # 垂直

```

*ls命令的列出格式*

### 3. 使用ls命令为目录内容输出结果添加像（/=@|）这样的指示符。

带有`-F`选项的ls命令将实现该目的。它会根据文件类型添加上面这些指示符其中之一。

```
# ls -F

```

*添加指示符到内容*

### 4. 根据扩展名、大小、时间和版本对目录内容排序。

我们可以使用`--extension`选项来按照扩展名对输出结果排序，`--size`扩展选项按照大小排序，`-t`扩展选项按照时间排序，`-v`扩展选项对版本排序。

我们也可以使用`--none`选项，它会以常规方式输出结果而不会进行排序。

```
# ls --sort=extension
# ls --sort=size
# ls --sort=time
# ls --sort=version
# ls --sort=none

```

*通过选项对内容排序列出*

### 5. 使用ls命令打印目录中各个项的数字UID和GID。

上面的环境可以通过使用带有-n标识的ls命令来实现。

```
# ls -n

```

*通过UID和GID对打印内容列表*

### 6. 标准输出结果中打印目录内容中比默认指定的更多栏目。

好吧，ls命令根据屏幕大小自动输出目录内容。

然而，我们可以手动分配屏幕宽度的值和出现的栏目的控制数。这可以通过使用‘`--width`’开关实现。

```
# ls --width 80
# ls --width 100
# ls --width 150

```

*根据窗口大小列出内容*

**注意**： 你可以试验你可以给width标识传递什么值。

### 7. 通过ls命令为列出的目录内容手动指定的制表符大小而不是默认的8。

```
# ls --tabsize=[value]

```

*按表尺寸列出内容*

**注意**： 指定`[Value]`的数值。

到目前为止，都讲完了。保持连线，我们会推出下一篇文章。别忘了在下面的评论中为我们提供有价值的反馈。为我们点赞并分享，帮我们推广。

---

via: <http://www.tecmint.com/linux-ls-command-tricks/>

作者：[Avishek Kumar](http://www.tecmint.com/author/avishek/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


Ubuntu 社区委员会要求 Kubuntu 项目领导人下台

Summary: 而 Jonathan Riddell 拒绝从 Kubuntu 领导人位置退出   这一切刚刚发生。一名Debian开发者以及Kubuntu委员会成员 Scott Kitterman 决定公开一些电子邮件，邮件披露了Ubuntu 社区委员会成员要求 Jonathan Riddell 从 Kubuntu 项目领导人位置退出的过程。 Jonathan Riddell 是 KDE 以及 Kubuntu 的一名开发者，多年来也是 Ubuntu 社区的一名重要成员。从 Scott Kitterman 今天曝光的社区邮件往来中来看，Jonathan Riddell 被指责对 Ubuntu 以及 Kubuntu 社区的一些成员咄咄逼人和挑衅。 长话短说，经过多轮邮件往来之后，Ubuntu 社区委员会

# Ubuntu 社区委员会要求 Kubuntu 项目领导人下台

>
> 而 Jonathan Riddell 拒绝从 Kubuntu 领导人位置退出
>
>
>

<img src="content_image/album_201505_29_062541fpgwgvyug3pgpzp1.jpg" alt="" title="">

**这一切刚刚发生。一名Debian开发者以及Kubuntu委员会成员 Scott Kitterman 决定公开一些电子邮件，邮件披露了Ubuntu 社区委员会成员要求 Jonathan Riddell 从 Kubuntu 项目领导人位置退出的过程。**

Jonathan Riddell 是 KDE 以及 Kubuntu 的一名开发者，多年来也是 Ubuntu 社区的一名重要成员。从 Scott Kitterman [今天曝光的社区邮件往来](https://skitterman.wordpress.com/)中来看，Jonathan Riddell 被指责对 Ubuntu 以及 Kubuntu 社区的一些成员咄咄逼人和挑衅。

长话短说，经过多轮邮件往来之后，Ubuntu 社区委员会的最终决定是让 Jonathan Riddell 退出他在 Ubuntu 以及Kubuntu 社区的领导人位置至少12个月，但仍可以像其他成员一样参与讨论。这个决定同时也得到了 Canonical 和Ubuntu 的创始人 Mark Shuttleworth 的支持。

“很遗憾写下了讨论这个我们觉得对 Ubuntu 社区有着消极影响的问题的邮件。长期以来，Jonathan Riddell 变得越来越难以交往。Jonathan 提出了有效的问题及关注，但当收到他不赞同的答案时，他的反应就不那么让人愉快了。”在 Ubuntu 社区委员会发出的第一封认为 Jonathan Riddell 行为“不友好”的邮件中这么写道。

### Jonathan Riddell拒绝从Kubuntu领导人位置退出

从今天 Scott Kitterman 披露邮件往来，并决定在博客上写第二篇博文来看，表明了他想从他在 Ubuntu 和 Kubuntu 的位置退出，这表明 Jonathan Riddell 可能拒绝从 Kubuntu 领导人位置退出。

正如预料之中，Kubuntu 社区委员会的成员们支持 Jonathan Riddell，并且回击了 Ubuntu 社区委员会罢免 Kubuntu 项目领导人的决定。“我要感谢所有在 Kubuntu 委员会投票再次肯定我的 Kubuntu 成员。”，Jonathan Riddell 在[他的博客](http://jriddell.org/)上写道，“希望 Kubuntu 能够继续走下去，我也计划和我深爱的社区伙伴们一起为 15.10 发布而努力。”

---

via: <http://news.softpedia.com/news/Ubuntu-Community-Council-Asks-the-Kubuntu-Project-Leader-to-Step-Down-482384.shtml>

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

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


Sleuth Kit：一个用来分析磁盘映像和恢复文件的开源取证工具

Summary: SIFT 是一个由 SANS 公司提供的基于 Ubuntu 的取证发行版。它包含许多取证工具，如 Sleuth kit/Autopsy 。但 Sleuth kit/Autopsy 可以直接在 Ubuntu 或 Fedora 发行版本上直接安装，而不必下载 SIFT 的整个发行版本。 Sleuth Kit/Autopsy 是一个开源的电子取证调查工具，它可以用于从磁盘映像中恢复丢失的文件，以及为了特殊事件进行磁盘映像分析。 Autopsy 工具是 sleuth kit 的一个网页接口，支持 sleuth kit 的所有功能。这个工具在 Windows 和 Linux 平台下都可获取到。  安装 Sleuth kit 首先，从 sleuthkit 的网站下载 Sleuth kit

# Sleuth Kit：一个用来分析磁盘映像和恢复文件的开源取证工具

SIFT 是一个由 SANS 公司提供的基于 Ubuntu 的取证发行版。它包含许多取证工具，如 Sleuth kit/Autopsy 。但 Sleuth kit/Autopsy 可以直接在 Ubuntu 或 Fedora 发行版本上直接安装，而不必下载 SIFT 的整个发行版本。

Sleuth Kit/Autopsy 是一个开源的电子取证调查工具，它可以用于从磁盘映像中恢复丢失的文件，以及为了特殊事件进行磁盘映像分析。 Autopsy 工具是 sleuth kit 的一个网页接口，支持 sleuth kit 的所有功能。这个工具在 Windows 和 Linux 平台下都可获取到。

### 安装 Sleuth kit

首先，从 [sleuthkit](http://www.sleuthkit.org/sleuthkit/download.php) 的网站下载 Sleuth kit 软件。使用下面的命令在虚拟终端下使用 wget 命令来下载它，下图展示了这个过程。

```
# wget http://cznic.dl.sourceforge.net/project/sleuthkit/sleuthkit/4.1.3/sleuthkit-4.1.3.tar.gz

```

使用下面的命令解压 sleuthkit-4.1.3.tar.gz 并进入解压后的目录：

```
# tar -xvzf sleuthkit-4.1.3.tar.gz

```

在安装 sleuth kit 之前，运行下面的命令来执行所需的检查：

```
# ./configure

```

然后使用 Make 命令来编译 sleuth kit ：

```
# make

```

最后，使用下面的命令将它安装到 **/usr/local** 目录下：

```
# make install

```

### 安装 Autopsy 工具

Sleuth kit 已经安装完毕，现在我们将为它安装 autopsy 界面。从 [sleuthkit 的 autopsy 页面](http://www.sleuthkit.org/autopsy/download.php)下载 Autopsy 软件。使用下面的命令在虚拟终端下使用 wget 命令来下载它，下图展示了这个过程。

```
# wget http://kaz.dl.sourceforge.net/project/autopsy/autopsy/2.24/autopsy-2.24.tar.gz

```

使用下面的命令解压 autopsy-2.24.tar.gz 并进入解压后的目录：

```
# tar -xvzf autopsy-2.24.tar.gz

```

autopsy 的配置脚本将询问 NSRL (National Software Reference Library) 和 **Evidence\_Locker** 文件夹的路径。

当弹窗问及 NSRL 时，输入 "n"，并在 **/usr/local** 目录下创建名为 Evidence*Locker 的文件夹。Autopsy 将在 Evidence*Locker 文件夹下存储配置文件，审计记录和输出文件。

```
# mkdir /usr/local/Evidence_Locker
# cd autopsy-2.24
# ./configure

```

在安装过程中添加完 Evidence\_Locker 的安装路径后， autopsy 在那里存储配置文件并展现如下的信息来运行 autopsy 程序。

在虚拟终端中键入 **./autopsy** 命令来启动 Sleuth kit 工具的图形界面：

在浏览器中键入下面的地址来访问 autopsy 的界面：

```
http://localhost:9999/autopsy

```

下图展现了 autopsy 插件的主页面：

在 autopsy 工具中，点击 **新案例** 按钮来开始进行分析。键入案例名称，此次调查的描述和检查人的姓名，下图有具体的展示：

在接下来的网页中，将展示在上一个的网页中键入的详细信息。接着点击 **增加主机** 按钮来添加有关要分析的机器的详细信息。

在下一个网页中键入主机名，相关的描述和要分析的机器的时区设置。

添加主机后，点击 **增加映像** 按钮来为取证分析添加映像文件。

在接下来的网页中点击 **增加映像文件** 按钮。它将打开一个新的网页，来询问映像文件的路径和选择映像的类型以及导入的方法。

正如下图中展示的那样，我们已经键入了 Linux 映像文件的路径。在我们这个例子中，映像文件类型是磁盘分区。

点击“下一步”按钮并在下一页中选择 **计算散列值** 的选项，这在下图中有展示。它也将检测所给映像的文件系统类型。

下面的图片展示了静态分析之前映像文件的 MD5 散列值。

在下一个网页中， autopsy 展现了有关映像文件的如下信息：

* 映像的挂载点
* 映像的名称
* 所给映像的文件系统类型

点击 **详情** 按钮来获取更多有关所给映像文件的信息。它还提供了从映像文件的卷中导出未分配的片段和字符串的数据信息，这在下图中有展现。

在下图中那样，点击 **分析** 按钮来开始分析所给映像。它将开启另一个页面，其中包含了映像分析的多个选项。

在映像分析过程中，Autopsy 提供了如下的功能：

* 文件分析
* 关键字搜索
* 文件类型
* 映像详情
* 数据单元

下图展示的是在给定的 Linux 分区映像上进行文件分析：

它将从所给映像中提取所有的文件和文件夹。在下图中也展示了已被删除的文件的提取：

### 结论

希望这篇文章能够给那些进入磁盘映像静态分析领域的新手提供帮助。Autopsy 是 sleuth kit 的网页界面，提供了在 Windows 和 Linux 磁盘映像中进行诸如字符串提取，恢复被删文件，时间线分析，网络浏览历史，关键字搜索和邮件分析等功能。

---

via: <http://linoxide.com/ubuntu-how-to/autopsy-sleuth-kit-installation-ubuntu/>

作者：[nido](http://linoxide.com/author/naveeda/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[wxy](https://github.com/wxy)

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


如何使用Monit部署服务器监控系统

Summary: 很多Linux系统管理员依赖一个集中式的远程监控系统（比如Nagios或者Cacti）来检查他们网络基础设备的健康状况。虽然集中式监控让管理员的生活更简单了，然而处理很多机器和服务时，专用的监控中心显然成为了一个单点故障，如果监控中心挂了或者因为什么原因（比如硬件或者网络故障）不可访问了，你就会失去整个网络基础设备情况的任何信息。 一个给你的监控系统增加冗余度的方法是安装独立的监控软件（作为后备），至少在网络中的关键/核心服务器上。这样在集中式监控系统挂掉的情况，你还有能力通过后备的监控方式来获取核心服务器的运行

长见识了，只是想知道上图那狗狗是啥品种呢？

测试了一下，的确很轻量。<br />
但是好像不能对lvm的分区进行监控。

相当强悍的小东东，监控linux系统信息。

很好的软件，但是有一个问题请教，邮件发送的时间和真实的时间相隔8个小时，可以在哪里更改吗？

那显然是时区没配对。

# 如何使用Monit部署服务器监控系统

很多Linux系统管理员依赖一个集中式的远程监控系统（比如[Nagios](http://xmodulo.com/monitor-common-services-nagios.html)或者[Cacti](http://xmodulo.com/monitor-linux-servers-snmp-cacti.html)）来检查他们网络基础设备的健康状况。虽然集中式监控让管理员的生活更简单了，然而处理很多机器和服务时，专用的监控中心显然成为了一个单点故障，如果监控中心挂了或者因为什么原因（比如硬件或者网络故障）不可访问了，你就会失去整个网络基础设备情况的任何信息。

一个给你的监控系统增加冗余度的方法是安装独立的监控软件（作为后备），至少在网络中的关键/核心服务器上。这样在集中式监控系统挂掉的情况，你还有能力通过后备的监控方式来获取核心服务器的运行状况。

### Monit是什么？

[Monit](http://mmonit.com/monit/)是一个跨平台的用来监控Unix/linux系统（比如Linux、BSD、OSX、Solaris）的工具。Monit特别易于安装，而且非常轻量级（只有500KB大小），并且不依赖任何第三方程序、插件或者库。然而，Monit可以胜任全面监控、进程状态监控、文件系统变动监控、邮件通知和对核心服务的自定义动作等场景。易于安装、轻量级的实现以及强大的功能，让Monit成为一个理想的后备监控工具。

我已经在一些机器使用Monit几年了，而且我对它的可靠性非常满意。甚至作为全面的监控系统，对任何Linux系统管理员来说Monit也是非常有用和强大的。在这篇教程中，我会展示如何在一个本地服务器部署Monit（作为后备监控系统）来监控常见的服务。在部署过程中，我只会展示我们用到的部分。

### 在Linux安装Monit

Monit已经被包含在多数Linux发行版的软件仓库中了。

Debian、Ubuntu或者Linux Mint：

```
$ sudo aptitude install monit

```

Fedora或者CentOS/RHEL：

在CentOS/RHEL中，你必须首先启用[EPEL](/article-2324-1.html)或者[Repoforge](http://xmodulo.com/how-to-set-up-rpmforge-repoforge-repository-on-centos.html)软件仓库.

```
# yum install monit

```

Monit自带一个文档完善的配置文件，其中包含了很多例子。主配置文件在/etc/monit.conf（Fedora/CentOS/RHEL 中），或者/etc/monit/monitrc（Debian/Ubuntu/Mint 中）。Monit配置文件有两部分：“Global”（全局）和“Services”（服务）。

### Global Configuration: Web Status Page （全局配置：Web状态页面）

Monit可以使用邮件服务来发送通知，也可以使用HTTP/HTTPS页面来展示。我们先使用如下配置的web状态页面吧：

* Monit监听1966端口。
* 对web状态页面的访问是通过SSL加密的。
* 使用monituser/romania作为用户名/口令登录。
* 只允许通过localhost、myhost.mydomain.ro和在局域网内部（192.168.0.0/16）访问。
* Monit使用pem格式的SSL证书。

之后的步骤，我会使用一个基于Red Hat的系统。在基于Debian的系统中的步骤也是类似的。

首先，在/var/cert生成一个自签名的证书（monit.pem）：

```
# mkdir /var/certs
# cd /etc/pki/tls/certs
# ./make-dummy-cert monit.pem
# cp monit.pem /var/certs
# chmod 0400 /var/certs/monit.pem

```

现在将下列代码片段放到Monit的主配置文件中。你可以创建一个空配置文件，或者基于自带的配置文件修改。

```
set httpd port 1966 and
     SSL ENABLE
     PEMFILE  /var/certs/monit.pem
     allow monituser:romania
     allow localhost
     allow 192.168.0.0/16
     allow myhost.mydomain.ro

```

### Global Configuration: Email Notification （全局配置：邮件通知）

然后，我们来设置Monit的邮件通知。我们至少需要一个可用的[SMTP服务器](http://xmodulo.com/mail-server-ubuntu-debian.html)来让Monit发送邮件。这样就可以（按照你的实际情况修改）：

* 邮件服务器的机器名：smtp.monit.ro
* Monit使用的发件人：monit@monit.ro
* 邮件的收件人：guletz@monit.ro
* 邮件服务器使用的SMTP端口：587（默认是25）

有了以上信息，邮件通知就可以这样配置：

```
set mailserver  smtp.monit.ro port 587
set mail-format {
 from: monit@monit.ro
 subject: $SERVICE $EVENT at $DATE on $HOST
 message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

       Yours sincerely,
          Monit

  }

set alert guletz@monit.ro

```

就像你看到的，Monit会提供几个内部变量（`$DATE`、`$EVENT`、`$HOST`等），你可以按照你的需求自定义邮件内容。如果你想要从Monit所在机器发送邮件，就需要一个已经安装的与sendmail兼容的程序（如postfix或者ssmtp）。

### Global Configuration: Monit Daemon （全局配置：Monit守护进程）

接下来就该配置Monit守护进程了。可以将其设置成这样：

* 在120秒后进行第一次检测。
* 每3分钟检测一次服务。
* 使用syslog来记录日志。

如下代码段可以满足上述需求。

```
set daemon 120
   with start delay 240
set logfile syslog facility log_daemon

```

我们必须定义“idfile”，Monit守护进程的一个独一无二的ID文件；以及“eventqueue”，当monit的邮件因为SMTP或者网络故障发不出去，邮件会暂存在这里；以及确保/var/monit路径是存在的。然后使用下边的配置就可以了。

```
set idfile /var/monit/id
set eventqueue
     basedir /var/monit

```

### 测试全局配置

现在“Global”部分就完成了。Monit配置文件看起来像这样：

```
#  Global Section

# status webpage and acl's
set httpd port 1966 and
     SSL ENABLE
     PEMFILE  /var/certs/monit.pem
     allow monituser:romania
     allow localhost
     allow 192.168.0.0/16
     allow myhost.mydomain.ro

# mail-server
set mailserver  smtp.monit.ro port 587
# email-format
set mail-format {
 from: monit@monit.ro
 subject: $SERVICE $EVENT at $DATE on $HOST
 message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

       Yours sincerely,
          Monit

  }

set alert guletz@monit.ro

# delay checks
set daemon 120
   with start delay 240
set logfile syslog facility log_daemon

# idfile and mail queue path
set idfile /var/monit/id
 set eventqueue
     basedir /var/monit

```

现在是时候验证我们的工作了，你可以通过运行如下命令来验证存在的配置文件（/etc/monit.conf）：

```
# monit -t

Control file syntax OK

```

如果monit提示任何错误，请再检查下配置文件。幸运的是，错误/警告信息是可以帮助你发现问题的，比如：

```
monit: Cannot stat the SSL server PEM file '/var/certs/monit.pem' -- No such file or directory
/etc/monit/monitrc:10: Warning: hostname did not resolve 'smtp.monit.ro'

```

一旦你确认配置文件没问题了，可以启动monit守护进程，然后等2到3分钟：

```
# service monit start

```

如果你使用的是systemd，运行：

```
# systemctl start monit

```

现在打开一个浏览器窗口，然后访问`https://<monit_host>:1966`。将`<monit_host>`替换成Monit所在机器的机器名或者IP地址。

如果你使用的是自签名的SSL证书，你会在浏览器中看到一个警告信息。继续访问即可。

你完成登录后，就会看到这个页面。

在这个教程的其余部分，我们演示监控一个本地服务器和常见服务的方法。你会在[官方wiki页面](http://mmonit.com/wiki/Monit/ConfigurationExamples)看到很多有用的例子。其中的多数是可以直接复制粘贴的！

### Service Configuration: CPU/Memory Monitoring （服务配置：CPU、内存监控）

我们先来监控本地服务器的CPU、内存占用。复制如下代码段到配置文件中。

```
check system localhost
    if loadavg (1min) > 10 then alert
    if loadavg (5min) > 6 then alert
    if memory usage > 75% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 60% then alert
    if cpu usage (wait) > 75% then alert

```

你可以很容易理解上边的配置。最上边的check是指每个监控周期（全局配置里设置的120秒）都对本机进行下面的操作。如果满足了任何条件，monit守护进程就会使用邮件发送一条报警。

如果某个监控项不需要每个周期都检查，可以使用如下格式，它会每240秒检查一次平均负载。

```
if loadavg (1min) > 10 for 2 cycles then alert

```

### Service Configuration: SSH Service Monitoring （服务配置：SSH服务监控）

先检查我们的sshd是否安装在/usr/sbin/sshd：

```
check file sshd_bin with path /usr/sbin/sshd

```

我们还想检查sshd的启动脚本是否存在：

```
check file sshd_init with path /etc/init.d/sshd

```

最后，我们还想检查sshd守护进程是否存活，并且在监听22端口：

```
check process sshd with pidfile /var/run/sshd.pid
   start program  "/etc/init.d/sshd start"
   stop program  "/etc/init.d/sshd stop"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout

```

我们可以这样解释上述配置：我们检查是否存在名为sshd的进程，并且有一个保存其pid的文件存在（/var/run/sshd.pid）。如果任何一个不存在，我们就使用启动脚本重启sshd。我们检查是否有进程在监听22端口，并且使用的是SSH协议。如果没有，我们还是重启sshd。如果在最近的5个监控周期（5x120秒）至少重启5次了，sshd就被认为是不能用的，我们就不再检查了。

### Service Configuration: SMTP Service Monitoring （服务配置：SMTP服务监控）

现在我们来设置一个检查远程SMTP服务器（如192.168.111.102）的监控。假定SMTP服务器运行着SMTP、IMAP、SSH服务。

```
check host MAIL with address 192.168.111.102
   if failed icmp type echo within 10 cycles then alert
   if failed port 25  protocol smtp then alert
             else if recovered then exec "/scripts/mail-script"
   if failed port 22  protocol ssh  then alert
   if failed port 143 protocol imap then alert

```

我们检查远程主机是否响应ICMP协议。如果我们在10个周期内没有收到ICMP回应，就发送一条报警。如果监测到25端口上的SMTP协议是异常的，就发送一条报警。如果在一次监测失败后又监测成功了，就运行一个脚本（/scripts/mail-script）。如果检查22端口上的SSH或者143端口上的IMAP协议不正常，同样发送报警。

### 总结

在这个教程，我演示了如何在本地服务器设置Monit，当然这只是Monit功能的冰山一角。你可以花些时间阅读Monit的man手册（写得很好）。Monit可以为任何Linux系统管理员做很多事情，并且具有非常优美和易于理解的语法。如果你将一个集中式的远程监控系统和Monit一同使用，你会得到一个更可靠的监控系统。你感觉Monit怎么样？

---

via: <http://xmodulo.com/server-monitoring-system-monit.html>

作者：[Iulian Murgulet](http://xmodulo.com/author/iulian) 译者：[goreliu](https://github.com/goreliu) 校对：[wxy](https://github.com/wxy)

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


使用 ARChon 运行时环境在 Ubuntu 上运行 Android 应用

Summary: 在此之前，我们尝试过在多款安卓应用模拟器工具上运行安卓应用，比如Genymotion、VirtualBox和Android SDK等。但是，有了这套全新的Chrome安卓运行环境，就可以在Chrome浏览器中运行安卓应用了。所以，下面是一些步骤来指导你如何使用ARChon运行时环境在Ubuntu上安装安卓应用。 谷歌已经公布了首批支持原生运行在Chrome OS的安卓应用，而这个全新的安卓运行时环境扩展程序使其成为可能。如今，一位名为Vlad Filippov的开发者已经找到了一种把安卓应用移植到桌面端Chrome浏览器的方法。他把chromeos-apk脚本和ARChon安卓运行环境扩展程序两

这个需要安装vnc桌面么

# 使用 ARChon 运行时环境在 Ubuntu 上运行 Android 应用

在此之前，我们尝试过在多款安卓应用模拟器工具上运行安卓应用，比如Genymotion、VirtualBox和Android SDK等。但是，有了这套全新的Chrome安卓运行环境，就可以在Chrome浏览器中运行安卓应用了。所以，下面是一些步骤来指导你如何使用ARChon运行时环境在Ubuntu上安装安卓应用。

谷歌已经公布了[首批支持原生运行在Chrome OS的安卓应用](http://chrome.blogspot.com/2014/09/first-set-of-android-apps-coming-to.html)，而这个全新的“**安卓运行时环境**”扩展程序使其成为可能。如今，一位名为Vlad Filippov的开发者已经找到了一种把安卓应用移植到桌面端Chrome浏览器的方法。他把chromeos-apk脚本和ARChon安卓运行环境扩展程序两者紧密结合在一起，使得安卓应用可以运行在Windows、Max和Linux系统的桌面端Chrome浏览器中。

应用借助这种运行环境时的性能并不是很好。同样，由于它是官方运行环境的非官方二次开发包，而且运行在Google的Chrome OS之外，因此一些如摄像头和喇叭等系统内置设备可能需要通过打补丁获得或者根本不支持。

### 安装Chrome

首先，需要在机器上安装Chrome，版本要求是Chrome 37或者更高。可以从[Chrome浏览器的下载页面](https://www.google.com/chrome/browser)下载。

如果打算安装开发通道版本，按照如下操作。

使用这个命令为Google Chrome添加软件源列表：

```
$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'

```

添加完软件源列表后，使用下列命令更新本地的软件库索引。

```
$ sudo apt-get update

```

现在，就可以安装非稳定版的google chrome，即开发版：

```
$ sudo apt-get install google-chrome-unstable

```

### 安装Archon运行时环境

接下来，需要下载定制版的运行环境安装包，因为官方版本不被Google或Vlad Filippov创建的Chromium安卓运行环境认可。它在很多方面有别于官方版本，主要区别是它可以用于Google浏览器的各个桌面端。下面是需要下载的运行环境安装包，请根据所安装的Ubuntu系统位数选择下列的一种。

**32位** Ubntu发行版：

* [下载 32 位版 Ubuntu 上的 Archron](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_32.zip)

**64位** Ubntu发行版：

* [下载 64 位版 Ubuntu 上的 Archron](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_64.zip)

下载好运行环境安装包后，从.zip文件中解压，并将解压得到的目录移动到Home目录。操作命令如下：

```
$ wget https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_32.zip

```

```
$ unzip ARChon-v1.1-x86_32.zip ~/

```

接下来是安装运行时环境，首先打开Google Chrome浏览器，在地址栏键入**chrome://extensions**。然后，选中“**开发者模式**”。最后，点击“**载入未打包扩展程序**”，选择刚才放置在**~/Home**下面的文件夹。

### 安装 ChromeOS-APK

如果要用到上面提到的那些应用，那么手动转换这些APK无需复杂的操作——只需要安装“[chromeos-apk](https://github.com/vladikoff/chromeos-apk/blob/master/README.md)”命令行JavaScript工具。可以在Node Package Modules（npm）管理器中安装它。为了安装npm和chromeos-apk，在shell或终端中运行下面命令：

```
$ sudo apt-get install npm nodejs nodejs-legacy

```

如果**操作系统是64位**，需要安装下面这个库，命令如下：

```
$ sudo apt-get install lib32stdc++6

```

然后，运行这条命令来安装最新的chromeos-apk：

```
$ npm install -g chromeos-apk@latest

```

取决于系统配置，可能需要以sudo权限运行后一条命令。

现在，我们将找一个应用程序的APK来在Google浏览器上试一试，但务必牢记**并非所有的安卓应用都可以**，有一些可能不稳定或者缺少某些特性。大部分安装即用的通讯类应用都不适用这个环境。

### 转换APK

将**安卓APK放到~/Home**下，然后在**终端**执行下列命令进行转换：

```
$ chromeos-apk myapp.apk --archon

```

如果想以全屏模式运行应用，请替换成这条命令：

```
$ chromeos-apk myapp.apk --archon --tablet

```

注意：请将myapp.apk替换成待转换的安卓APK应用的文件名。

为了方便，也可以使用[Twerk](https://chrome.google.com/webstore/detail/twerk/jhdnjmjhmfihbfjdgmnappnoaehnhiaf)来进行转换，这样可以跳过这一步。

### 运行安卓Apk

最后，打开chrome浏览器，然后进入chrome://extensions页面，勾选开发者模式。点击“载入未打包扩展程序”按钮，选择上面脚本刚创建的文件夹。

至此，就可以打开Chrome应用启动器运行安卓应用了。

### 总结

万岁！我们已经成功在Chrome浏览器中安装好安卓Apk应用程序了。这篇文章是关于一款由Vlad Filippov开发的、名为Archon的、时下流行的Chrome安卓运行环境。这个运行环境使用户在Chrome浏览器中运行转换过的Apk文件。目前它还不支持通讯类应用，诸如Whatsapp。因此，如果你有任何问题、建议和反馈，请在下面的评论框中写出来。非常感谢！去拥抱Archon吧！:-)

---

via: <http://linoxide.com/ubuntu-how-to/android-apps-ubuntu-archon-runtime/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[KayGuoWhu](https://github.com/KayGuoWhu) 校对：[wxy](https://github.com/wxy)

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


5 个基于Linux命令行的文件下载和网站浏览工具

Summary: Linux命令行是GNU/Linux中最神奇迷人的部分，它是非常强大的工具。命令行本身功能多样，多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大。Linux Shell支持多种不同类型的网络应用，无论是BT下载软件，专用下载器或者互联网冲浪。  5个命令行互联网工具 这里我们介绍了5个很好的命令行互联网工具，它们非常有用，也很容易上手。 1. rTorrent rTorrent是基于文本，用C++编写，追求高性能的Torrent客户端。支持大部分标准的Linux发行版，包括FreeBSD和Mac OS X。 安装rTorrent # apt-get install rtorrent (基于 APT 的系统)   #

貌似还有一个 lynx 吧。

我是来涨见识的

还有一个lynx浏览器

是的，这个好像是被遗忘了。。

# 5 个基于Linux命令行的文件下载和网站浏览工具

Linux命令行是GNU/Linux中最神奇迷人的部分，它是非常强大的工具。命令行本身功能多样，多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大。Linux Shell支持多种不同类型的网络应用，无论是BT下载软件，专用下载器或者互联网冲浪。

*5个命令行互联网工具*

这里我们介绍了5个很好的命令行互联网工具，它们非常有用，也很容易上手。

### 1. rTorrent

rTorrent是基于文本，用C++编写，追求高性能的Torrent客户端。支持大部分标准的Linux发行版，包括FreeBSD和Mac OS X。

#### 安装rTorrent

```
# apt-get install rtorrent    (基于 APT 的系统)

```

---

```
# yum install rtorrent        (基于 YUM 的系统)

```

在终端中用下面的命令检查rtorrent是否正确安装

```
# rtorrent

```

*rTorrent命令行工具*

#### rTorrent的功能

一些有用的快捷键和使用方法

* CTRL+ q – 退出rTorrent应用程序
* CTRL+ s – 开始下载
* CTRL+ d – 停止运行中的下载或者移除已完成的下载
* CTRL+ k – 停止并关闭运行中的下载
* CTRL+ r – 在上传/下载种子之前进行Hash检查
* CTRL+ q – 执行两次这个命令，rTorrent会直接退出而不发送“停止”信号
* Left Arrow Key – 跳到上一屏幕
* Right Arrow Key – 跳到下一屏幕

### 2. Wget

Wget是GNU项目的一部分，名字由World Wide Web (WWW)衍生而来。Wget是用来递归下载、离线查看本地服务器HTML文件一个很好的工具，它可用于Windows， Mac，以及Linux等大部分平台。Wget能通过HTTP，HTTPS和FTP下载文件。另外，能镜像整个网站，支持代理浏览以及暂停/回复下载使得它更为有用。

#### 安装Wget

由于是GNU项目的一部分，Wget捆绑在大部分标准Linux发行版中，不再需要独立下载安装。如果默认没有安装，你也可以使用apt或者yum安装。

```
# apt-get install wget        (基于 APT 的系统)

```

---

```
# yum install wget        (基于 YUM 的系统)

```

#### Wget的一些基本用法

使用wget下载一个单独的文件.

```
# wget http://www.website-name.com/file

```

递归下载整个网站.

```
# wget -r http://www.website-name.com

```

从一个网站下载指定类型的文件(例如 pdf 和 png).

```
# wget -r -A png,pdf http://www.website-name.com

```

Wget是一个很棒的工具，它允许在资源有限的机器上自定义或者过滤下载。这是镜像一个网站(Yahoo.com)的wget下载截图。

*Wget 命令行文件下载*

要获取更多wget下载的例子，可以阅读我们的文章[Wget下载命令例子](/article-4129-1.html)。

### 3. cURL

cURL是在多种协议上传输数据的命令行工具。cURL是支持FTP, HTTP, FTPS, TFTP, TELNET, IMAP, POP3等协议的客户端应用。cURL是一个不同于wget 的简单下载器，和其它的相比，它支持LDAP，POP3。cURL也很好的支持代理下载，暂停下载以及恢复下载。

#### 安装cURL

在软件仓库或者已安装软件中，cURL在大部分发行版中默认是可用的。如果没有安装，运行apt或者yum从软件仓库中获取需要的安装包。

```
# apt-get install curl        (基于 APT 的系统)

```

---

```
# yum install curl        (基于 YUM 的系统)

```

cURL的基本使用方法

```
# curl www.tecmint.com

```

*Curl 下载*

*Curl 下载*

### 4. w3m

W3m是GPL协议下发布的基于文本的web浏览器。W3m支持表格，帧，颜色，SSL连接以及内联图像。W3m以快速浏览而出名。

#### 安装w3m

W3m在大部分Linux发行版中也是默认可用的。如果不可用的话可以用apt或者yum获取需要的安装包。

```
# apt-get install w3m        (基于 APT 的系统)

```

---

```
# yum install w3m        (基于 YUM 的系统)

```

#### w3m的基本使用方法

```
# w3m www.tecmint.com

```

*基于文本的web浏览器w3m*

### 5. Elinks

Elinks是基于文本的免费浏览器，用于Unix及基于Unix的系统。Elinks支持 HTTP，HTTP Cookies以及支持浏览Perl和Ruby脚本（LCTT 译注：应该是指 CGI）。也很好的支持选项卡浏览。最棒的是它支持鼠标、彩色以及支持一系列的协议，例如HTTP, FTP, SMB, Ipv4 和 Ipv6。

#### 安装Elinks

Elinks在大部分Linux发行版上是默认可用的。如果不是的话，可以通过apt或者yum安装。

```
# apt-get install elinks    (基于 APT 的系统)

```

---

```
# yum install elinks        (基于 YUM 的系统)

```

Elinks的基本使用方法

```
# elinks www.tecmint.com

```

*Elinks命令行浏览互联网*

就是这些了。有你们喜欢读的有趣的文章，我会再次来到这里。到那时尽请关注并保持和Tecmint的联系，别忘了在评论部分给我们你的宝贵的反馈。

---

via: <http://www.tecmint.com/linux-command-line-tools-for-downloading-files/>

作者：[Avishek Kumar](http://www.tecmint.com/author/avishek/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)

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