添加 Ubuntu/Debian 到 RHEL/CentOS 7的 PXE 网络启动环境

Summary: 本教程将指引你添加Ubuntu 14.10 Server, Ubuntu 14.04 Server和Debian 7 Wheezy发行版到RHEL/CentOS 7的PXE网络启动环境中。  添加Ubuntu和Debian到PXE网络 虽然对于本教程，我只会演示怎样来添加64位网络安装镜像，但对于Ubuntu或者Debian的32位系统，或者其它架构的镜像，操作步骤也基本相同。同时，就我而言，我会解释添加Ubuntu 32位源的方法，但不会演示配置。 从PXE服务器安装 Ubuntu或者Debian要求你的客户机必须激活网络连接，最好是使用DHCP通过NAT来进行动态分配地址。以便安装器拉取所需的包并完成安装过程。 前置阅读  在RHE

大过年还技术流

问个问题，我不管用fedora还是ubuntu， 我的rtl8821ae的网卡总是驱动不起来。自己做了.config也没用。但我实在是找不到网线连网络。。。有啥办法能上网不

回复@Durham镇刘栋栋:插一个 USB WIFI 网卡试试

回复@Ge老梁头:生命不止，学习不休[嘻嘻]

回复@Linux中国:我哭啊。。。还得去借一个。。。我估计就差一个yum update了。。。但就是不能上网

回复@Linux中国:这劲头要赞一个

回复@Ge老梁头:[嘻嘻]

本条微博居然没有春晚

本教程将指引你添加**Ubuntu 14.10 Server, Ubuntu 14.04 Server**和**Debian 7 Wheezy**发行版到**RHEL/CentOS 7**的PXE网络启动环境中。

![Add Ubuntu and Debian to PXE Network](/data/attachment/album/201502/17/144241z2h93heq9dz00a39.png)

*添加Ubuntu和Debian到PXE网络*

虽然对于本教程，我只会演示怎样来添加**64位**网络安装镜像，但对于Ubuntu或者Debian的**32位**系统，或者其它架构的镜像，操作步骤也基本相同。同时，就我而言，我会解释添加Ubuntu 32位源的方法，但不会演示配置。

从PXE服务器安装 **Ubuntu**或者**Debian**要求你的客户机必须激活网络连接，最好是使用**DHCP**通过**NAT**来进行动态分配地址。以便安装器拉取所需的包并完成安装过程。

#### 前置阅读

* [在RHEL/CentOS 7中为多种Linux发行版安装PXE网络启动服务器](http://linux.cn/article-4902-1.html)

步骤 1： 添加Ubuntu 14.10和Ubuntu 14.04服务器到PXE菜单
------------------------------------------

**1.** 要将**Ubuntu 14.10**和**Ubuntu 14.04**添加网络安装源到PXE菜单可以通过两种方式实现：其一是通过下载Ubuntu CD ISO镜像并挂载到PXE服务器机器上，以便可以读取Ubuntu网络启动文件，其二是通过直接下载Ubuntu网络启动归档包并将其解压缩到系统中。下面，我将进一步讨论这两种方法：

### 使用Ubuntu 14.10和Ubuntu 14.04 CD ISO镜像

为了能使用此方法，你的PXE服务器需要有一台可工作的CD/DVD驱动器（LCTT 译注：也可以不用，参考下面内容）。在一台专用的计算机上，转到[Ubuntu 14.10下载](http://releases.ubuntu.com/14.10/)和[Ubuntu 14.04 下载](http://releases.ubuntu.com/14.04/)页，获取64位**服务器安装镜像**，将它烧录到CD，并将CD镜像放到PXE服务器DVD/CD驱动器，然后使用以下命令挂载到系统。

```
# mount /dev/cdrom  /mnt

```

如果你的PXE服务器没有CD/DVD驱动器，你可以使用**wget**命令下载**Ubuntu 14.10** 和**Ubuntu 14.04**的ISO镜像到本地，然后通过下面的命令（下载并挂载CD）挂载到服务器上上述相同位置。

#### 在Ubuntu 14.10上

```
------------------ 32位 ------------------

# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-i386.iso
# mount -o loop /path/to/ubuntu-14.10-server-i386.iso /mnt

```

---

```
------------------ 64位 ------------------

# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.10-server-amd64.iso /mnt

```

#### 在Ubuntu 14.04上

```
------------------ 32位 ------------------

# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-i386.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-i386.iso /mnt

```

---

```
------------------ 64位 ------------------

# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-amd64.iso /mnt

```

### 使用Ubuntu 14.10和Ubuntu 14.04网络启动镜像

对于该方法，使用以下命令下载Ubuntu网络启动镜像到PXE服务器。

#### 在Ubuntu 14.04上

```
------------------ 32位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-i386/current/images/netboot/netboot.tar.gz

```

---

```
------------------ 64位 ------------------

# cd
# http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-amd64/current/images/netboot/netboot.tar.gz

```

#### 在Ubuntu 14.04上

```
------------------ 32位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-i386/current/images/netboot/netboot.tar.gz

```

---

```
------------------ 64位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz

```

对于其它处理器架构，请访问下面的Ubuntu 14.10和Ubuntu 14.04网络启动官方页面，选择你的架构类型并下载所需文件。

* <http://cdimage.ubuntu.com/netboot/14.10/>
* <http://cdimage.ubuntu.com/netboot/14.04/>

**2.** 在下载完**ISO镜像**或**网络启动安装器**归档包后，通过执行以下命令拷贝整个**ubuntu-installer**文件夹到PXE tftp服务器位置。

**A).** 对于两种CD ISO镜像（**32位**或**64位**），在挂载特定架构的CD到PXE服务器**/mnt**系统路径后，请使用以下命令。

```
# cp -fr /mnt/install/netboot/ubuntu-installer/ /var/lib/tftpboot/

```

**B).** 对于网络启动归档，根据特定的Ubuntu架构，请运行以下命令。

```
# cd
# tar xfz netboot.tar.gz
# cp -rf ubuntu-installer/ /var/lib/tftpboot/

```

如果你想要在PXE服务器上同时使用两种Ubuntu服务器架构，先请下载，然后根据不同的情况挂载或解压缩32位架构，然后拷贝**ubuntu-installer**目录到**/var/lib/tftpboot**，然后卸载CD或删除网络启动归档以及解压缩的文件和文件夹。对于64位架构，请重复上述步骤，以便让最终的**tftp**路径形成以下结构。

```
/var/lib/tftpboot/ubuntu-installer/amd64
/var/lib/tftpboot/ubuntu-installer/i386

```

**3.** 在接下来的步骤，通过执行以下命令添加**Ubuntu 14.10**和**Ubuntu 14.04**菜单标签到**PXE服务器**默认配置文件中。

**重要**：我不可能同时演示两个Ubuntu版本的操作，出于演示的目的，我添加了**Ubuntu 14.04**菜单标签到PXE服务器，下述同样的操作也可应用到Ubuntu 14.10，只需对版本号稍作修改，仅仅只要根据你的Ubuntu版本修改版本号和到OS架构的路径。

在你最喜爱的文本编辑器的帮助下，打开PXE默认配置文件，而我偏好nano编辑器。

```
# nano /var/lib/tftpboot/pxelinux.cfg/default

```

接下来，添加以下配置到PXE菜单。

#### 对于Ubuntu 14.04 32位

```
label 1
menu label ^1) Install Ubuntu 14.04 x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet

label 2
menu label ^2) Ubuntu 14.04 Rescue Mode x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz rescue/enable=true -- quiet

```

#### 对于Ubuntu 14.04 64位

```
label 5
menu label ^5) Install Ubuntu 14.04 x64
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz -- quiet

label 5
menu label ^6) Ubuntu 14.04 Rescue Mode
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz rescue/enable=true -- quiet

```

![Add Ubuntu to PXE Boot](/data/attachment/album/201502/17/144243c5gi1io5sp7oo2so.jpg) 添加Ubuntu到PXE启动

**注**：如果你想要包含其它Ubuntu架构，请遵循以上相同的操作，并相应替换PXE默认菜单配置文件中的标签号和**ubuntu-installer/$architecture\_name/**目录。

**4.** 在配置完PXE菜单配置文件后，根据采用的方法清除源文件，并继续进行客户端PXE安装以测试配置是否正确。

```
---------------------- 对于CD/DVD方法 ----------------------

# umount /mnt

```

---

```
---------------------- 对于网络启动方法 ----------------------

# cd && rm -rf ubuntu-installer/netboot.tar.gz pxelinux.* version.info

```

下面是**Ubuntu 14.04**PXE客户端安装测试的截图。

![Select Ubuntu from PXE Menu](/data/attachment/album/201502/17/144244ymjsgvjg1m799vmc.jpg)

*从PXE菜单选择Ubuntu*

![Choose Ubuntu Installation Language](/data/attachment/album/201502/17/144246r55wgm60uc0m27g5.jpg)

*选择Ubuntu安装语言*

![Choose Ubuntu Rescue Mode](/data/attachment/album/201502/17/144247zujshrjssivc29no.jpg)

*选择Ubuntu救援模式*

![Ubuntu Rescue Mode Shell](/data/attachment/album/201502/17/144249m4fhw2kjhgan23hh.jpg)

*Ubuntu救援模式Shell*

步骤 2： 添加Debian 7 Wheezy到PXE菜单
-----------------------------

**5.** 添加**Debian 7**到PXE服务器，需要上述Ubuntu服务器版本相同的步骤。唯一不同点在于网络启动归档镜像下载链接和源目录的名称，现在改为**debian-installer**。

要下载**Debian Wheezy**网络启动归档，请转到[Debian网络安装下载](https://www.debian.org/distrib/netinst)页，从**网络启动**菜单选择你想要的系统架构，然后点击**目录**列表中的**网络启动**链接，并从**文件名**列表中下载**netboot.tar.gz**归档包。

因为Debian为众多系统架构如Armel，ia64，Mips，PowerPC，Sparc等等提供了网络安装源，所以在本指南中，我将只讨论**64位**架构。因为其它架构的配置过程和当前的几乎一样，唯一不同的是**debian-installer/$directory\_architecture name**。

所以，要进一步深入，以root帐号登录到你的**PXE服务器**，并通过以下命令抓取Debian 7 64位网络启动归档包。

```
# wget  http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz

```

![Download Debain 7 Netboot](/data/attachment/album/201502/17/144252pr2brw6bz2b2lf8v.jpg)

*下载Debian 7网络启动包*

**6.** 在**wget**下载完成**netboot.tar.gz**文件后，请将其解压缩并运行以下命令拷贝**debian-installer**目录到tftp服务器默认路径。

```
# tar xfz netboot.tar.gz
# cp -rf debian-installer/ /var/lib/tftpboot/

```

![Extract Debain 7 Netboot](/data/attachment/album/201502/17/144253n4wk44ln4dz4y3zw.jpg)

*解压缩Debian 7网络启动包*

![Copy Debain 7 Netboot to FTP](/data/attachment/album/201502/17/144254rehg9beplogeggo8.jpg)

*拷贝Debian 7网络启动文件到FTP*

**7.** 要添加**Debian Wheezy**标签到**PXE菜单**，请用你最喜爱的文本编辑器打开PXE服务器默认配置文件并添加以下标签。

```
# nano /var/lib/tftpboot/pxelinux.cfg/default

```

Debian Wheezy 64位的PXE标签菜单。

```
label 7
menu label ^7) Install Debian 7 x64
        kernel debian-installer/amd64/linux
        append vga=788 initrd=debian-installer/amd64/initrd.gz -- quiet

label 8
menu label ^8) Install Debian 7 x64 Automated
       kernel debian-installer/amd64/linux
       append auto=true priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz -- quiet

```

![Add Debian to PXE Boot](/data/attachment/album/201502/17/144258tsiw4l1jjizus95l.jpg)

*添加Debian到PXE启动*

**注**：如果你想要添加其它Debian架构，请重复上述步骤，并相应替换PXE默认菜单配置文件中的标签号和**debian-installer/$architecture\_name/**目录。

**8.** 在进行客户端测试配置之前，请执行以下命令来清除Debian源文件。

```
# cd && rm -rf debian-installer/  netboot.tar.gz  pxelinux.*  version.info

```

**9.** 然后通过网络启动一台客户机，选择从PXE菜单安装Debian，并像正常安装一样进一步下去。

![Select Install Debian from PXE](/data/attachment/album/201502/17/144259jj8epgubzvctvum4.jpg)

*选择从PXE安装Debian*

![Select Debian Install Language](/data/attachment/album/201502/17/144301go7fbmf2mfa4ttoz.jpg)

*选择Debian安装语言*

以上是要求添加并从RHEL/CentOS 7 PXE服务器安装**Ubuntu**或**Debian**到客户机上的全部步骤。在我的下一篇文章中，我将讨论一种更为复杂的方法，如何使用RHEL/CentOS 7 PXE网络启动服务器来安装**Windows 7**到客户机。

---

via: <http://www.tecmint.com/add-ubuntu-to-pxe-network-boot/>

作者：[Matei Cezar](http://www.tecmint.com/author/cezarmatei/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[Mr小眼儿](https://github.com/tinyeyeser)

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


如何在 Linux 下大量屏蔽恶意 IP 地址

Summary: 很多情况下，你可能需要在Linux下屏蔽IP地址。比如，作为一个终端用户，你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员，你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下，然而，你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个？  Netfilter/IPtables 的问题 在Linux中，可以很简单地用netfilter/iptables框架禁止IP地址： $ sudo iptables -A INPUT -s 1.1.1.1 -p T

@我的印象笔记

@我的印象笔记

Repost

实用

@比企谷九筒老湿

mark

@我的印象笔记

repost

留用

说好的私房菜[衰]

@有道云笔记收藏

[good]

没看懂图

centos7 下使用，那句shell会报错，楼主麻烦调整下。谢谢！无法发链接，就只有你自己google下了

我用的是阿里云服务器，使用yum install ipset无法安装ipset ，提示No package ipset available.<br />
请问怎么破？

学习了。

我现在碰到的问题，比这个棘手的多，因为现在电信运营商大多都是将用户IP封装到一个局域网，再NAT到一个公网IP 去外网访问，这就造成我看到的IP大多都是一个地理区块的公网IP，直接永久封禁是肯定不行的，所以就需要动态的封禁几个小时，然后过段时间自动解除，一直在找这方面的软件，但是目前没看到有。

很多情况下，你可能需要在Linux下屏蔽IP地址。比如，作为一个终端用户，你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员，你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下，然而，你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个？

![](/data/attachment/album/201502/17/210418loxnx9gygnmlx69b.png)

### Netfilter/IPtables 的问题

在Linux中，可以很简单地用netfilter/iptables框架禁止IP地址：

```
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP

```

如果你想要完全屏蔽一个IP地址段，你可以用下面的命令很简单地做到：

```
$ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP

```

然而，当你有1000个独立IP地址，且不带CIDR（无类别域间路由）前缀，你该怎么做？你要有1000条iptable规则！这显然这并不适于大规模屏蔽。

```
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . .

```

### 什么是IP集?

这时候就是[IP集](http://ipset.netfilter.org/)登场了。IP集是一个内核特性，它允许多个（独立）IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后，你可以创建一条iptables规则来匹配这个集合。

你马上就会看见IP集合的好处了，它可以让你用一条iptable规则匹配多个ip地址！你可以用多个IP地址和端口号的方式来构造IP集，并且可以动态地更新规则而没有性能影响。

### 在Linux中安装IPset工具

为了创建和管理IP集，你需要使用称为ipset的用户空间工具。

要在Debian、Ubuntu或者Linux Mint上安装：

```
$ sudo apt-get install ipset

```

Fedora或者CentOS/RHEL 7上安装：

```
$ sudo yum install ipset

```

### 使用IPset命令禁止IP

让我通过简单的示例告诉你该如何使用ipset命令。

首先，让我们创建一条新的IP集，名为banthis（名字任意）：

```
$ sudo ipset create banthis hash:net

```

第二个参数(hash:net)是必须的，代表的是集合的类型。IP集有[多个类型](http://ipset.netfilter.org/features.html)。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址，你可以使用hash:ip类型。

一旦创建了一个IP集之后，你可以用下面的命令来检查：

```
$ sudo ipset list

```

![](/data/attachment/album/201502/17/210447z0901b0upyb303iy.jpg)

这显示了一个可用的IP集合列表，并有包含了集合成员的详细信息。默认上，每个IP集合可以包含65536个元素（这里是CIDR块）。你可以通过追加"maxelem N"选项来增加限制。

```
$ sudo ipset create banthis hash:net maxelem 1000000

```

现在让我们来增加IP块到这个集合中：

```
$ sudo ipset add banthis 1.1.1.1/32
$ sudo ipset add banthis 1.1.2.0/24
$ sudo ipset add banthis 1.1.3.0/24
$ sudo ipset add banthis 1.1.4.10/24

```

你会看到集合成员已经改变了。

```
$ sudo ipset list

```

![](/data/attachment/album/201502/17/210449jebii80tcelwh2jc.jpg)

现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用"-m set --match-set "选项。

现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令：

```
$ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP

```

如果你愿意，你可以保存特定的IP集到一个文件中，以后可以从文件中还原：

```
$ sudo ipset save banthis -f banthis.txt
$ sudo ipset destroy banthis
$ sudo ipset restore -f banthis.txt

```

上面的命令中，我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。

### 自动IP地址禁用

现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上，有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是，让我们看看如何自动将IP黑名单加到IP集中。

首先让我们从[iblocklist.com](https://www.iblocklist.com/lists.php)得到免费的黑名单，这个网站有不同的免费和收费的名单。免费的版本是P2P格式。

接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。

首先，你需要安装了pip（参考[这个指导](http://ask.xmodulo.com/install-pip-linux.html)来安装pip）。

使用的下面命令安装iblocklist2ipset。

```
$ sudo pip install iblocklist2ipset

```

在一些发行版如Fedora，你可能需要运行：

```
$ sudo python-pip install iblocklist2ipset

```

现在到[iblocklist.com](https://www.iblocklist.com/lists.php)，抓取任何一个P2P列表的URL（比如"level1"列表）。

![](/data/attachment/album/201502/17/210451cbisbxb16btqe5li.jpg)

粘帖URL到下面的命令中。

```
$ iblocklist2ipset generate \
--ipset banthis "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" \
> banthis.txt

```

上面的命令运行之后，你会得到一个名为banthis.txt的文件。如果查看它的内容，你会看到像这些：

```
create banthis hash:net family inet hashsize 131072 maxelem 237302
add banthis 1.2.4.0/24
add banthis 1.2.8.0/24
add banthis 1.9.75.8/32
add banthis 1.9.96.105/32
add banthis 1.9.102.251/32
add banthis 1.9.189.65/32
add banthis 1.16.0.0/14

```

你可以用下面的ipset命令来加载这个文件：

```
$ sudo ipset restore -f banthis.txt

```

现在可以查看自动创建的IP集：

```
$ sudo ipset list banthis

```

在写这篇文章时候，“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。

最后，创建一条iptables命令来屏蔽这些坏蛋！

### 总结

这篇文章中，我描述了你该如何用强大的ipset来屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset，这样你就可以流畅地维护你的IP屏蔽列表了。那些对ipset的性能提升好奇的人，下图显示了iptables在使用和不使用ipset的基准测试结果（注意时间坐标轴）。

![](/data/attachment/album/201502/17/210453t9kk9jyyiy5e7c1u.jpg)

告诉我你多么喜欢这个。:-)

---

via: <http://xmodulo.com/block-unwanted-ip-addresses-linux.html>

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

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


Linux有问必答：如何在Linux下重命名多个文件

Summary: 提问：我知道我可以用mv命令重命名文件。但是当我想重命名很多文件怎么办？如果为每个文件都这么做将会是很乏味的。有没有办法一次性重命名多个文件？  在Linux中，当你想要改变一个文件名，使用mv命令就好了。然而mv不能使用通配符重命名多个文件。可以用sed、awk或者与xargs结合使用来处理多个文件的情况。然而，这些命令行即繁琐又不友好，并且如果不小心的话还很容易出错。你不会想要撤销1000个文件的错误名吧！ 当你想要重命名多个文件的时候，rename 工具或许是最简单、最安全和最强大的命令行工具。这个rename命令实际上是一个Perl

@我的印象笔记

还不多错哦

新年快乐！

@我的印象笔记

@我的印象笔记

小编，大年三十还发9微博呢@Linux中国

mark下

@有道云笔记收藏

[哈哈]

CentOS里面安装的是 c语言版的，语法是rename from to file[挖鼻屎]

终于知道这个东西怎么用了//@Linux中国:[赞]//@farseerfc: vidir， 然後這個問題就變成了如何在 vim （或者 emacs / nano ） 裏批量替換字符串的問題

@我的印象笔记

@我的印象笔记  //@Linux中国:[赞]//@farseerfc: vidir， 然後這個問題就變成了如何在 vim （或者 emacs / nano ） 裏批量替換字符串的問題

好东东！

很实用的东西。

>
> **提问**：我知道我可以用mv命令重命名文件。但是当我想重命名很多文件怎么办？如果为每个文件都这么做将会是很乏味的。有没有办法一次性重命名多个文件？
>
>
>

在Linux中，当你想要改变一个文件名，使用mv命令就好了。然而mv不能使用通配符重命名多个文件。可以用sed、awk或者与[xargs](http://xmodulo.com/xargs-command-linux.html)结合使用来处理多个文件的情况。然而，这些命令行即繁琐又不友好，并且如果不小心的话还很容易出错。你不会想要撤销1000个文件的错误名吧！

当你想要重命名多个文件的时候，rename 工具或许是最简单、最安全和最强大的命令行工具。这个rename命令实际上是一个Perl脚本，它预安装在所有的现在Linux发行版上。

![](/data/attachment/album/201502/18/152445ou3z7duhwo75751u.png)

下面是重命名命令的基本语法。

```
rename [-v -n -f] <pcre> <files>

```

<pcre> 是Perl兼容正则表达式，它表示的是要重命名的文件和该怎么做。正则表达式的形式是‘s/old-name/new-name/’。

‘-v’选项会显示文件名改变的细节（比如：XXX重命名成YYY）。

‘-n’选项告诉rename命令在不实际改变名称的情况下显示文件将会重命名的情况。这个选项在你想要在不改变文件名的情况下模拟改变文件名的情况下很有用。

‘-f’选项强制覆盖存在的文件。

下面，就让我们看下rename命令的几个实际例子。

### 改变文件扩展名

假设你有许多.jpeg的图片文件。你想要把它们的名字改成*.jpg。下面的命令就会将*.jpeg 文件改成 \*.jpg。

```
$ rename 's/\.jpeg$/\.jpg/' *.jpeg

```

### 大写改成小写，反之亦然

有时你想要改变文件名的大小写，你可以使用下面的命令。

把所有的文件改成小写：

```
# rename 'y/A-Z/a-z/' *

```

把所有的文件改成大写：

```
# rename 'y/a-z/A-Z/' *

```

![](/data/attachment/album/201502/18/152449qgyweeip0nmy0ntb.jpg)

### 更改文件名模式

现在让我们考虑更复杂的包含子模式的正则表达式。在PCRE中，子模式包含在圆括号中，$符后接上数字（比如$1，$2）。

比如，下面的命令会将‘img*NNNN.jpeg’变成‘dan*NNNN.jpg’。

```
# rename -v 's/img_(\d{4})\.jpeg$/dan_$1\.jpg/' *.jpeg

```

---

```
img_5417.jpeg renamed as dan_5417.jpg
img_5418.jpeg renamed as dan_5418.jpg
img_5419.jpeg renamed as dan_5419.jpg
img_5420.jpeg renamed as dan_5420.jpg
img_5421.jpeg renamed as dan_5421.jpg

```

比如，下面的命令会将‘img\_000NNNN.jpeg’变成‘dan\_NNNN.jpg’。

```
# rename -v 's/img_\d{3}(\d{4})\.jpeg$/dan_$1\.jpg/' *jpeg

```

---

```
img_0005417.jpeg renamed as dan_5417.jpg
img_0005418.jpeg renamed as dan_5418.jpg
img_0005419.jpeg renamed as dan_5419.jpg
img_0005420.jpeg renamed as dan_5420.jpg
img_0005421.jpeg renamed as dan_5421.jpg

```

上面的例子中，子模式‘\d{4}’会捕捉4个连续的数字，捕捉的四个数字就是$1, 将会用于新的文件名。

---

via: <http://ask.xmodulo.com/rename-multiple-files-linux.html>

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

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


如何在 Ubuntu 14.04 和 Linux Mint 17 中安装 Kodi14（XBMC）

Summary: Kodi，原名就是大名鼎鼎的XBMC，发布了开发代号为Helix的最新版本14。感谢官方XMBC提供的PPA，现在可以很简单地在Ubuntu14.04中安装了。 有些人可能还不了解Kodi，它是一个媒体中心软件，支持所有平台，如Windows、Linux、 Mac, Android等。此软件拥有全屏的媒体中心，可以管理所有音乐和视频，不单支持本地文件还支持网络播放，如Tube、Netflix、 Hulu, Amazon Prime和其他流媒体服务商。 在 Ubuntu 14.04 和 Linux Mint 17 中安装 XBMC 14 Kodi Helix 再次感谢官方的PPA，让我们可以轻松安装Kodi 14。支持Ubuntu 14.04、Ubuntu 12.04、L

过年还在发啊[good]

HTPC最爱

过年怎么和平时一样呢 没感觉在过年

好东西。

Repost

@我的印象笔记

@我的印象笔记 d

感觉不错，能看国内视频不？

![](/data/attachment/album/201502/18/153141u8qc8fplyb3hshh6.jpg)

[Kodi](http://kodi.tv/)，原名就是大名鼎鼎的XBMC，发布了开发代号为Helix的[最新版本14](http://kodi.tv/kodi-14-0-helix-unwinds/)。感谢官方XMBC提供的PPA，现在可以很简单地在Ubuntu14.04中安装了。

有些人可能还不了解Kodi，它是一个媒体中心软件，支持所有平台，如Windows、Linux、 Mac, Android等。此软件拥有全屏的媒体中心，可以管理所有音乐和视频，不单支持本地文件还支持网络播放，如Tube、[Netflix](http://itsfoss.com/watch-netflix-in-ubuntu-14-04/)、 Hulu, Amazon Prime和其他流媒体服务商。

### 在 Ubuntu 14.04 和 Linux Mint 17 中安装 XBMC 14 Kodi Helix

再次感谢官方的PPA，让我们可以轻松安装Kodi 14。支持Ubuntu 14.04、Ubuntu 12.04、Linux Mint 17、Pinguy OS 14.04、Deepin 2014、LXLE 14.04、Linux Lite 2.0, Elementary OS 以及其他基于 Ubuntu 的 Linux 发行版。

打开终端（Ctrl+Alt+T）然后使用下列命令。

```
sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install kodi

```

需要下载大约100MB，在我看来，这不是很大。若需安装解码插件，使用下列命令：

```
sudo apt-get install kodi-audioencoder-* kodi-pvr-*

```

#### 从 Ubuntu 中移除 Kodi 14

从系统中移除 Kodi 14，使用下列命令：

```
sudo apt-get remove kodi

```

同样也应该移除PPA软件源：

```
sudo add-apt-repository --remove ppa:team-xbmc/ppa

```

我希望这篇简单的文章可以帮助到你在Ubuntu、Linux Mint 和其他 Linux 版本中轻松安装 Kodi 14。你是怎么发现 Kodi 14 Helix 的?

你有没有使用其他的媒体中心来作为 XBMC 的替代？可以在下面的评论区分享你的观点。

---

via: <http://itsfoss.com/install-kodi-14-xbmc-in-ubuntu-14-04-linux-mint-17/>

作者：[Abhishek](http://itsfoss.com/author/Abhishek/) 译者：[Vic020/VicYu](http://www.vicyu.net) 校对：[Caroline](https://github.com/carolinewuyan)

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


Auditd - Linux 服务器安全审计工具

Summary: 首先，Linux中国祝贺读者 2015羊年春节快乐，万事如意！ 。下面开始这个新年版审计工具的介绍。 安全防护是首先要考虑的问题。为了避免别人盗取我们的数据，我们需要时刻关注它。安全防护包括很多东西，审计是其中之一。 我们知道Linux系统上有一个叫 auditd 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。那么auditd 是什么？该如何使用呢？下面我们开始介绍。  什么是auditd？ auditd（或 auditd 守护进程）是Linux审计系统中用户空间的一个组件，其负责将审计记录写入磁盘。  安装 auditd Ubuntu系统中，我们可以使用 waj

首先，Linux中国祝贺读者 **2015羊年春节快乐，万事如意！** 。下面开始这个新年版审计工具的介绍。

安全防护是首先要考虑的问题。为了避免别人盗取我们的数据，我们需要时刻关注它。安全防护包括很多东西，审计是其中之一。

我们知道Linux系统上有一个叫 **auditd** 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。那么auditd 是什么？该如何使用呢？下面我们开始介绍。

![](/data/attachment/album/201502/18/160818v0spjr4um8l0ld0q.png)

### 什么是auditd？

auditd（或 auditd 守护进程）是Linux审计系统中用户空间的一个组件，其负责将审计记录写入磁盘。

![](/data/attachment/album/201502/18/160821b94l34ltx9d7l4tq.png)

### 安装 auditd

Ubuntu系统中，我们可以使用 [wajig](http://linoxide.com/tools/wajig-package-management-debian/) 工具或者 **apt-get 工具** 安装auditd。

![](/data/attachment/album/201502/18/160822bpwrpaj64qva6q0i.png)

按照下面的说明安装auditd，安装完毕后将自动安装以下auditd和相关的工具：

* **auditctl :** 即时控制审计守护进程的行为的工具，比如如添加规则等等。
* **/etc/audit/audit.rules :** 记录审计规则的文件。
* **aureport :** 查看和生成审计报告的工具。
* **ausearch :** 查找审计事件的工具
* **auditspd :** 转发事件通知给其他应用程序，而不是写入到审计日志文件中。
* **autrace :** 一个用于跟踪进程的命令。
* **/etc/audit/auditd.conf :** auditd工具的配置文件。

首次安装 **auditd** 后, 审计规则是空的。

可以使用以下命令查看：

```
$ sudo auditctl -l

```

![](/data/attachment/album/201502/18/160823vk11xklr9r88xl18.png)

以下我们介绍如何给auditd添加审计规则。

### 如何使用auditd

#### Audit 文件和目录访问审计

我们使用审计工具的一个基本的需求是监控文件和目录的更改。使用auditd工具，我们可通过如下命令来配置(注意，以下命令需要root权限)。

**文件审计**

```
$ sudo auditctl -w /etc/passwd -p rwxa

```

![](/data/attachment/album/201502/18/160824paz6rx64ttnear8v.png)

**选项 :**

* **-w path :** 指定要监控的路径，上面的命令指定了监控的文件路径 /etc/passwd
* **-p :** 指定触发审计的文件/目录的访问权限
* **rwxa ：** 指定的触发条件，r 读取权限，w 写入权限，x 执行权限，a 属性（attr）

#### 目录审计

使用类似的命令来对目录进行审计，如下：

```
$ sudo auditctl -w /production/

```

![](/data/attachment/album/201502/18/160825me5le3eg2qqy2geo.png)

以上命令将监控对 **/production 目录** 的所有访问。

现在，运行 **auditctl -l** 命令即可查看所有已配置的规则。

![](/data/attachment/album/201502/18/160825fzwzbvjtvzbwjnhq.png)

下面开始介绍审计日志。

### 查看审计日志

添加规则后，我们可以查看 auditd 的日志。使用 **ausearch** 工具可以查看auditd日志。

我们已经添加规则监控 /etc/passwd 文件。现在可以使用 **ausearch** 工具的以下命令来查看审计日志了。

```
$ sudo ausearch -f /etc/passwd

```

* **-f** 设定ausearch 调出 /etc/passwd文件的审计内容

下面是输出 ：

>
> **time**->Mon Dec 22 09:39:16 2014
>
>
> type=PATH msg=audit(1419215956.471:194): item=0 **name="/etc/passwd"** inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
>
>
> type=CWD msg=audit(1419215956.471:194): **cwd="/home/pungki"**
>
>
> type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 **syscall=5** success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 **auid=4294967295 uid=1000 gid=1000** euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 **comm="sudo" exe="/usr/bin/sudo"** key=(null)
>
>
>

下面开始解读输出结果。

* **time :** 审计时间。
* **name :** 审计对象
* **cwd :** 当前路径
* **syscall :** 相关的系统调用
* **auid :** 审计用户ID
* **uid 和 gid :** 访问文件的用户ID和用户组ID
* **comm :** 用户访问文件的命令
* **exe :** 上面命令的可执行文件路径

以上审计日志显示文件未被改动。

以下我们将要添加一个用户，看看auditd如何记录文件 /etc/passwd的改动的。

>
> **time->**Mon Dec 22 11:25:23 2014
>
>
> type=PATH msg=audit(1419222323.628:510): item=1 **name="/etc/passwd.lock"** inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE
>
>
> type=PATH msg=audit(1419222323.628:510): item=0 **name="/etc/"** inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
>
>
> type=CWD msg=audit(1419222323.628:510): **cwd="/root"**
>
>
> type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 **syscall=10** success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="chfn" exe="/usr/bin/chfn"** key=(null)
>
>
>

我们可以看到，在指定的时间，**/etc/passwd \*\* 被root用户(uid =0, gid=0)在/root目录下修改。/etc/passwd 文件是使用**/usr/bin/chfn\*\* 访问的。

键入 **man chfn** 可以查看有关chfn更多的信息。

![](/data/attachment/album/201502/18/160826btfvfv51ovzw0aw7.png)

下面我们看另外一个例子。

我们已经配置auditd去监控目录 /production/ 了。这是个新目录。所以我们用ausearch去查看日志的时候会发现什么都没有。

![](/data/attachment/album/201502/18/160828ft4iq65cn9dcl9dp.png)

下一步，使用root账户的ls命令列出 /production/ 下的文件信息。再次使用ausearch后，将会显示一些信息。

![](/data/attachment/album/201502/18/160829tnwk55kwsuqqbsrt.png)

>
> **time->**Mon Dec 22 14:18:28 2014 type=PATH msg=audit(1419232708.344:527): item=0 **name="/production/"** inode=797104 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1419232708.344:527): cwd="/root" type=SYSCALL msg=audit(1419232708.344:527): arch=40000003 syscall=295 success=yes exit=3 a0=ffffff9c a1=95761e8 a2=98800 a3=0 items=1 ppid=3033 pid=3444 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="ls" exe="/bin/ls"** key=(null)
>
>
>

和上一个一样，可以得出root账户使用ls命令访问了/production/目录，ls命令的文件目录是 /bin/ls

### 查看审计报告

一旦定义审计规则后，它会自动运行。过一段时间后，我们可以看看auditd是如何帮我们跟踪审计的。

Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到， **aureport** 是使用系统审计日志生成简要报告的工具。

我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后，audit.log 文件就创建出来了。

生成审计报告，我们可以使用aureport工具。不带参数运行的话，可以生成审计活动的概述。

```
$ sudo aureport

```

![](/data/attachment/album/201502/18/160830wvpyempylmyp9liy.png)

如上，报告包含了大多数重要区域的信息。

上图可以看出有 **3 次授权失败**。 使用aureport，我们可以深入查看这些信息。

使用以下命令查看授权失败的详细信息：

```
$ sudo aureport -au

```

![](/data/attachment/album/201502/18/160831fpcbh9tt9bh5zhr0.png)

从上图可以看出，由两个用户在特定的时间授权失败。

如果我们想看所有账户修改相关的事件，可以使用-m参数。

```
$ sudo aureport -m

```

![](/data/attachment/album/201502/18/160832hzrcuuruzd0ucy8h.png)

### Auditd 配置文件

我们已经添加如下规则：

* $ sudo auditctl -w /etc/passwd -p rwxa
* $ sudo auditctl -w /production/

现在，如果确信这些规则可以正常工作，我们可以将其添加到**/etc/audit/audit.rules**中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。

![](/data/attachment/album/201502/18/160833svo3xc2u55iomtvh.png)

**最后，别忘了重启auditd守护程序**

```
# /etc/init.d/auditd restart

```

或

```
# service auditd restart

```

![](/data/attachment/album/201502/18/160834eozjhoms1555jsyq.png)

### 总结

Auditd是Linux上的一个审计工具。你可以阅读auidtd文档获取更多使用auditd和工具的细节。例如，输入 **man auditd** 去看auditd的详细说明，或者键入 **man ausearch** 去看有关 ausearch 工具的详细说明。

**请谨慎创建规则**。太多规则会使得日志文件急剧增大！

---

via: <http://linoxide.com/how-tos/auditd-tool-security-auditing/>

作者：[Pungki Arianto](http://linoxide.com/author/pungki/) 译者：[shipsw](https://github.com/shipsw) 校对：[wxy](https://github.com/wxy)

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


LinuxQuestions 问卷调查揭晓最佳开源项目

Summary: 在Linux用户社区中, 很多人每年都会期待来自 LinuxQuestions.org 细致可靠的年度问卷调查报告。如同Susan在她的报告中指出的那样, 今年的结果着重于调查网站读者心中最棒的开源项目。 这份报告目前已经完成。 在LinuxQuestions的大多数人都是专家级的用户, 他们经常在网站上在线回答Linux新手们的提问。  在Susan所作的报告的附加内容里， 你可以看到由专家们对开源世界的关注点分布。 你也可以在这里找到一份较为精美的调查问卷总结图.这里呈现了网站投票得出的最佳Linux发行版, 可以看到Mint和Slackwaer平分了半壁江山：  而下图则是网

Slackwaer拼错了

谢谢，马上修改。

Slackware 还占这么高比例，惊精！

slackware竟然这么叼

居然出现了ｄｅｅｐｉｎ，虽然比例很低

在Linux用户社区中, 很多人每年都会期待来自 LinuxQuestions.org 细致可靠的年度问卷调查报告。如同[Susan在她的报告](http://ostatic.com/blog/lq-members-choice-award-winners-announced)中指出的那样, 今年的[结果](http://www.linuxquestions.org/questions/linux-news-59/2014-linuxquestions-org-members-choice-award-winners-4175532948/)着重于调查网站读者心中最棒的开源项目。 这份报告目前已经完成。 在LinuxQuestions的大多数人都是“专家级”的用户, 他们经常在网站上在线回答Linux新手们的提问。

![](/data/attachment/album/201502/19/224303cspodm7oenu7simc.jpg)

在Susan所作的报告的附加内容里， 你可以看到由“专家”们对开源世界的关注点分布。

你也可以在[这里](http://www.linuxquestions.org/questions/2014mca.php)找到一份较为精美的调查问卷总结图.这里呈现了网站投票得出的最佳Linux发行版, 可以看到Mint和Slackware平分了半壁江山：

![](/data/attachment/album/201502/19/224305uemed3176z1mp3de.png)

而下图则是网站票选出的得出的最佳云项目。值得注意的是， LinuxQuestions的用户群体给予了ownCloud项目极高的评价。 你一定得亲自去看看调查结果的详情， 也看看 [Susan 关于各项目“赢家”](http://ostatic.com/blog/lq-members-choice-award-winners-announced)的总结， 还有[一堆精美的图表](http://www.linuxquestions.org/questions/2014mca.php)。

![](/data/attachment/album/201502/19/224306e99x4q9se8a6l9fs.png)

---

via: <http://ostatic.com/blog/linuxquestions-survey-results-surface-top-open-source-projects>

作者：[Sam Dean](http://ostatic.com/member/samdean) 译者：[jerryling315](https://github.com/jerryling315) 校对：[wxy](https://github.com/wxy)

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


如果使用32位整型会溢出，那么是否可以使用一个40位结构体代替64位长整型？

Summary: 问题： 假如说，使用32位的整型会溢出，在不考虑使用长整型的情况下，如果我们只需要表示2的40次方范围内的数，是否可以利用某些40位长的数据类型来表示呢？这样的话，每个整型数就可以节省24位的空间。 如果可以，该怎么做？ 需求是：我现在必须处理数以亿计的数字，所以在存储空间上受到了很大的限制。  回答： 可以是可以，但是 这种方法的确可行，但这么做通常没什么意义（因为几乎没有程序需要处理多达十亿的数字）： #include stdint.h // 不要考虑使用long long类型 struct bad_idea { uint64_t var : 40; };  在这里，变量var占据

我想到了一个问题：求100亿以内所有质数的和

好像很厉害的样子

Repost

叠上个内存条[笑cry]，增加偏移内存条，加寄存器，cpu哭了，，，，[笑cry]

对不齐……囧

基本上，这种操作就是把数据取回来，然后把多余位屏蔽掉，然后该怎么算怎么算，最后再把该屏蔽的位屏蔽了再放回去~就是多出几个位屏蔽操作~效率低是一回事。考虑一下代码量和数据量的平恒。每算一次就会多出几条指令~

位段通常情况下会用来对应位图运算，或者直接操作寄存器。哪来当正常数据操作并大量使用~~我觉得还是掂量掂量吧

@保存到为知笔记

事实证明，瞎折腾通常得不偿失…

### 问题：

假如说，使用32位的整型会溢出，在不考虑使用长整型的情况下，如果我们只需要表示2的40次方范围内的数，是否可以利用某些40位长的数据类型来表示呢？这样的话，每个整型数就可以节省24位的空间。

如果可以，该怎么做？

需求是：我现在必须处理数以亿计的数字，所以在存储空间上受到了很大的限制。

![](/data/attachment/album/201502/19/231057gbya8lnlz8flrnty.png)

### 回答：

可以是可以，但是……

这种方法的确可行，但这么做通常没什么意义（因为几乎没有程序需要处理多达十亿的数字）：

```
#include <stdint.h> // 不要考虑使用long long类型
struct bad_idea
{
    uint64_t var : 40;
};

```

在这里，变量var占据40位大小，但是这是以生成代码时拥有非常低的运行效率来换取的（事实证明“非常”二字言过其实了——测试中程序开销仅仅增加了1%到2%，正如下面的测试时间所示），而且这么做通常没什么用。除非你还需要保存一个24位的值（或者是8位、16位的值），这样你皆可以它们放到同一个结构中。不然的话，因为对齐内存地址产生的开销会抵消这么做带来的好处。

在任何情况下，除非你是真的需要保存数以亿计的数字，否则这样做给内存消耗带来的好处是可以忽略不计的（但是为了处理这些位字段的额外代码量是不可忽略的！）。

### 说明：

在此期间，这个问题已经被更新了，是为了说明实际上确实有需要处理数以亿计数字的情况。假设，采取某些措施来防止因为结构体对齐和填充抵消好处（比如在后24位中存储其它的内容，或者使用多个8位来存储40位），那么这么做就变得有意义了。

如果有十亿个数，每个数都节省三个字节的空间，那么这么做就非常有用了。因为使用更小的空间存储要求更少的内存页，也就会产生更少的cache和TLB不命中和内存缺页（单个缺页会产生数以千万计的指令 [译者注：直译是这样，但语义说不通！]）。

尽管上面提到的情况不足以充分利用到剩余的24位（它仅仅使用了40位部分），如果确实在剩余位中放入了有用的数据，那么使用类似下面的方法会使得这种思路就管理内存而言显得非常有用。

```
struct using_gaps
{
    uint64_t var           : 40;
    uint64_t useful_uint16 : 16;
    uint64_t char_or_bool  : 8;
};

```

结构体大小和对齐长度等于64位整型的大小，所以只要使用得当就不会浪费空间，比如对一个保存10亿个数的数组使用这个结构（不考虑使用指定编译器的扩展）。如果你不会用到一个8位的值，那么你可以使用一个48位和16位的值（giving a bigger overflow margin）。

或者以牺牲可用性为代价，把8个64位的值放入这样的结构体中（或者使用40和64的组合使得其和满足320）。当然，在这种情况下，通过代码去访问数组结构体中的元素会变得非常麻烦（尽管一种方法是实现一个operator[]在功能上还原线性数组，隐藏结构体的复杂性）。

### 更新：

我写了一个快速测试工具，只是为了获得位字段的开销（以及伴随位字段引用的重载操作）。由于长度限制将代码发布在gcc.godbolt.org上，在本人64位Win7上的测试结果如下：

```
运行测试的数组大小为1048576
what       alloc   seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      2       1       35       35       1
uint64_t    0      3       3       35       35       1
bad40_t     0      5       3       35       35       1
packed40_t  0      7       4       48       49       1

运行测试的数组大小为16777216
what        alloc  seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      38      14      560      555      8
uint64_t    0      81      22      565      554      17
bad40_t     0      85      25      565      561      16
packed40_t  0      151     75      765      774      16

运行测试的数组大小为134177228
what        alloc  seq(w)  seq(r)  rand(w)  rand(r)  free
-----------------------------------------------------------
uint32_t    0      312     100     4480     4441     65
uint64_t    0      648     172     4482     4490     130
bad40_t     0      682     193     4573     4492     130
packed40_t  0      1164    552     6181     6176     130

```

我们看到，位字段的额外开销是微不足道的，但是当以友好的方式线性访问数据时伴随位字段引用的操作符重载产生的开销则相当显著（大概有3倍）。在另一方面，随机访问产生的开销则无足轻重。

这些时间表明简单的使用64位整型会更好，因为它们在整体性能上要比位字段好（尽管占用更多的内存），但是显然它们并没有考虑随着数据集增大带来的缺页开销。一旦程序内存超过RAM大小，结果可能就不一样了（未亲自考证）。

---

via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562)

作者：[Damon](http://stackoverflow.com/users/572743/damon)[Michael Kohne](http://stackoverflow.com/users/5801/michael-kohne) 译者：[KayGuoWhu](https://github.com/KayGuoWhu) 校对：[wxy](https://github.com/wxy)

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


CrunchBang Linux 已死！！！

Summary: 是的，你没看错。极简 Linux 发行版CrunchBang Linux 已经消失了。 CrunchBang Linux，被大家所熟知的缩写标志#！，其基于Debian和Openbox窗口管理器。这个黑色主题的 Linux 发行版是许多资深 Linux用户的选择。 CrunchBang 因为 不再有继续下去的价值 而消失了 其公告称，CrunchBang将不在继续开发，项目的领头人Philip Newborough说他在开始这个项目的时候，Linux 世界和现在不同。他指出那时在这种发行版还没有竞争，但是随着Linux发行版的进步，如Lubuntu，Crunchbang这样的发行版就不具备原来的价值了。  对于任何十年前使用Linux的

最小的？

怎么死的？最小的不是Linux From Scratch吗？

_(:з」∠)_ 之前还在用

The day of desktop Linux will never come. //@TimeCompass:_(:з」∠)_ 之前还在用

[伤心]

如果Linux只有一个发行版，即使再烂估计也成功了。

mark 要下一个珍藏着

抓紧下载

翻译错误，是极简

Mark

抱歉，翻译错误，应该是“极简 Linux 发行版”。//@爱开源魅影: 应该不是最小的，却是最易用的Debian发行版。现在有了Chrunchbang Plus Plus了

[最右][最右][最右][最右]

擦卡赛哟

纳尼！？

lubuntu不要死就好。。。

@李智_amulet7 @otakuWR

用过一段时间，非常棒的发行版。可惜我不是很了解Debian的哲学//@爱开源魅影:应该不是最小的，却是最易用的Debian发行版。现在有了Chrunchbang Plus Plus了

死的时候我还不知道有这个系统

曾经用过，但很快就放弃了，好吧，我承认，我就是听说有个openbox桌面很个性才想尝试一下的，结果发现这个桌面太个性，我适应不了。不过那是前两年的事情了，那时我大概80%的操作要在桌面中完成。现在我已经不太在意桌面了，

如果Linux只有一个发行版，即使再烂估计也成功了。

![](/data/attachment/album/201502/20/210634maa2ycnf0dyyefcg.jpeg)

是的，你没看错。极简 Linux 发行版**CrunchBang Linux 已经消失了**。

CrunchBang Linux，被大家所熟知的缩写标志“#！”，其基于Debian和[Openbox](http://en.wikipedia.org/wiki/Openbox)窗口管理器。这个黑色主题的 Linux 发行版是许多资深 Linux用户的选择。

### CrunchBang 因为 “不再有继续下去的价值” 而消失了

其[公告](http://crunchbang.org/forums/viewtopic.php?id=38916)称，CrunchBang将不在继续开发，项目的领头人Philip Newborough说他在开始这个项目的时候，Linux 世界和现在不同。他指出那时在这种发行版还没有‘竞争’，但是随着Linux发行版的进步，如Lubuntu，Crunchbang这样的发行版就不具备原来的价值了。

>
> 对于任何十年前使用Linux的人而言，我想他们都会看到事物在不断发展。虽然一些事情一直保持不变，还有一些的变化超出了认知。这称之为进步。对于大部分事物而言，进步是一件好事。也就是说当进步发生时，一些事物落后了。对于我而言，CrunchBang就是我需要抛弃的东西。我抛弃它的原因是我真的认为它不再具有任何价值了，虽然我还可以因为一些多愁善感的原因把它留下来，但是我不认为那些使用原生Debian用户还有兴趣了。
>
>
>

### CrunchBang消失之后会怎么样？

就像[Pear OS](http://itsfoss.com/pear-os-history/)那样，CrunchBang论坛仍将在线。现在仍可以下载但是不久的将来就会停止。Philip对他即将面对的新的项目和工作感到很激动。我希望他今后工作顺利。很难过见到一个像CrunchBang这样好的Linux发行版的消失。

---

via: <http://itsfoss.com/crunchbang-linux-dead/>

作者：[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/) 荣誉推出


OpenJDK 7的漏洞已经在Ubuntu 14.04 和Ubuntu 14.10中解决了

Summary: 建议用户尽快升级 Canonical发布新 OpenJDK 7 的安全公告，它已经提交到Ubuntu 14.04 LTS和Ubuntu 14.10 的仓库中。该更新修复了大量的问题和漏洞。 Ubuntu维护者已经升级了仓库中的OpenJDK包，并且含有大量的修复。这是一个重要的更新，其涵盖了少量的库。 安全公告中说OpenJDK JRE中发现了一些信息泄露、数据完整性和可用性的漏洞。攻击者可以利用这些通过网络执行拒绝服务或者泄露信息。 同样，OpenJDK JRE中发现了关于信息泄露和完整性的漏洞。攻击者可以利用这点通过网络泄露敏感信息。 这里有几个漏洞被开发者确认，并且由维护人员

[泪]

![](/data/attachment/album/201502/20/212436oqppmu0pe3mqvz55.jpeg)

*建议用户尽快升级*

**Canonical发布新 OpenJDK 7 的安全公告，它已经提交到Ubuntu 14.04 LTS和Ubuntu 14.10 的仓库中。该更新修复了大量的问题和漏洞。**

Ubuntu维护者已经升级了仓库中的OpenJDK包，并且含有大量的修复。这是一个重要的更新，其涵盖了少量的库。

安全公告中说“OpenJDK JRE中发现了一些信息泄露、数据完整性和可用性的漏洞。攻击者可以利用这些通过网络执行拒绝服务或者泄露信息。”

同样，“OpenJDK JRE中发现了关于信息泄露和完整性的漏洞。攻击者可以利用这点通过网络泄露敏感信息。”

这里有几个漏洞被开发者确认，并且由维护人员解决。关于该问题的详细描述，你可以参考Canonical的安全通告。建议用户尽快升级系统。

这个漏洞只要你升级到最新的openjdk 7相关的包就可以修复。要应用该补丁，用户需要运行升级管理程序。通常上，一个标准系统更新就会安装必要的更新。所有java相关的程序需要重新启动。

---

via: <http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml>

本文发布时间:29 Jan 2015, 16:53 GMT

作者：[Silviu Stahie](http://news.softpedia.com/editors/browse/silviu-stahie) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


Linux 下的四大下载管理器，你喜欢哪个？

Summary: 改善你的网页下载，以便更好的管理文件镜像、批量下载还是仅仅希望更好的管理你的文件。 下载管理器现在似乎已经不新鲜了，但是他们仍然非常有用。我们来比较一下Linux上排名前四的下载管理器。 uGet 如同很多其他的Linux应用一样，uGet把体积轻巧和功能全面作为宣传亮点。它能处理多线程下载，支持过滤器，还能与任何网络浏览器进行整合。它从当初的UrlGet开始，如今已经经过了十年。它还能在Windows上运行。  uGet的功能其实非常全面，有很多先进的BT下载客户端所拥有的功能 界面 uGet让我们想起了许多BT下载客户端的界面：有着活跃、结

喜欢DownloadThemAll!和uGet。但是uGet貌似不支持BT种子。

downthemall

不知道为什么火狐偏偏不做下载任务数的限制，不管多少下载都是同时进行，DownThemAll正好弥补一下。

浏览器上的插件，Windows上一样用[哼][怒]

Repost

我用uget上传资料，显示目录不支持，怎么办

这个可以用@lichar

@我的印象笔记

迅雷远程下载

感觉aria2更好用些

mark

回去试试

谁说不支持BT种子的？

我不太会用。就算装了aria2也不行。

uget只是aria2的一个前端界面而已

感觉uget下载有时比较慢，相同的东西downthemall要快很多。

**改善你的网页下载，以便更好的管理文件镜像、批量下载还是仅仅希望更好的管理你的文件。**

下载管理器现在似乎已经不新鲜了，但是他们仍然非常有用。我们来比较一下Linux上排名前四的下载管理器。

### [uGet](http://bit.ly/1mx4Uwz)

如同很多其他的Linux应用一样，uGet把体积轻巧和功能全面作为宣传亮点。它能处理多线程下载，支持过滤器，还能与任何网络浏览器进行整合。它从当初的UrlGet开始，如今已经经过了十年。它还能在Windows上运行。

![uGet is actually very full-featured, with a lot of the kind of functions that advanced torrent clients use](/data/attachment/album/201502/20/222849gqyrosdvxvkmqqxk.png)

*uGet的功能其实非常全面，有很多先进的BT下载客户端所拥有的功能*

#### 界面

uGet让我们想起了许多BT下载客户端的界面：有着活跃、结束、暂停等等对于不同下载任务的分类。尽管有很多的信息，但是他们都以非常简单明确的方式展现出来。旁边伴有高级选项的主下载控制非常易于使用。

#### 集成

它能查看到剪贴板里的URL，但uGet并没有在本地集成到Chromium和Firefox这些浏览器中。尽管如此，这两种浏览器还是能通过一些扩展程序连到uGet上：Firefox可以用Flashgot，Chromium则有专用的插件。虽然不是很理想，但是已经足够好了。

#### 功能

成熟的uGet完备了各种功能，包括按计划启动和终止下载任务的高级功能，通过剪贴板批量下载，还能改变它在剪贴板里查找的文件的类型。虽然有插件选项，但不多。

#### 可获得性

虽然在多数主要的发行版的软件库中都能得到它，但uGet网站上有着定期更新的适用于各种流行的发行版的二进制安装文件，还能轻易获得源代码。它的运行基于GTK 3+的图形库，所以它在某些桌面环境上的封装要比其他的小，然而我们得说，在KDE或其他Qt桌面上值得为此添加额外的依赖库。

#### 总体评价

8/10

我们非常喜欢uGet——它种类繁多的功能和极高的人气，让它成为了能与Linux浏览器优雅结合的万能下载管理器。

### [KGet](http://bit.ly/1lilqU9)

KDE自家的下载管理器貌似原本是设计成与KDE的网页浏览器 Konqueror 一同工作的。它带来了我们这次测试中所期待的功能：多下载控制和对下载完成的文件计算校验和的能力。

![You need to manually activate the ability to keep an eye on the clipboard for links](/data/attachment/album/201502/20/222852fjx2xcbpfoto5poj.png)

*你需要手动激活查看剪贴板中下载链接的功能*

#### 界面

作为一个备受期待的KDE应用软件，KGet采用一贯的图标和线条，与桌面环境的审美风格完美融合。它的设计也相当简洁，在主工具栏里只显示最必要的功能，当前下载也以最小界面显示。

#### 集成

KGet会集成到本地的KDE的Konqueror浏览器里，虽然它并不是最流行的浏览器。Firefox对KGet的支持是一如既往的是通过FlashGot完成的，但是在Chromium里并没有任何一种方法能真正的将它集成进去。你可以打开一个“询问你是否想下载已复制好的URL”的功能，然而KGet对于剪贴板的分析并不是很好，有的时候会把文本下载下来。

#### 功能

能够选择的功能并不多。没有计划任务，没有批量下载，基本上没有什么特色的下载功能。剪贴板扫描功能，想法很不错就是有点问题。设置菜单看起来有点怪怪的，因为它看起来应该设计有更多的功能。

#### 可获得性

虽然它不会随着KDE默认安装，但可以在任何支持KDE的发行版里得到它。虽然它的运行需要几个KDE库，找到它的源代码也很困难。除了少数几个发行版之外也没有什么二进制安装文件。

#### 总体评价

6/10

KGet并没有真正的给予用户比大多数主流浏览器内置下载管理器更强大的下载管理功能，但是，你可以在浏览器关闭的情况下使用它。

### [DownThemAll!](http://bit.ly/1lilqU9)

经由Firefox的附属组件进入Linux的DownThemAll从某种程度上可以说是跨平台。这让它只能通过Firefox使用，然而作为世界上最流行的浏览器之一，它这更加紧凑的集成也许正是某些人对下载管理器所期望的。

![There are actually a whole lot of options available for DownThemAll! that make it very flexible](/data/attachment/album/201502/20/222856rfradnbnfrn7dd33.png)

*其实在DownThemALL！上有很多选项可以设置，这让它非常的灵活*

#### 界面

与Firefox的集成使得DownThemAll！的风格符合浏览器的审美标准，右键单击可以唤出普通下载和DownThemAll选项。额外的对话框菜单通常和Firefox的主题风格一致，然而主下载窗口则非常整洁并采用了它自己的设计。

#### 集成

它并不是系统级集成，但是它伪装在Firefox中的能力让它看起来就像是原本浏览器的附加部分。如果你想，它就可以和普通下载器一同工作，在一点点手动过滤的帮助下，他还能找到网页上特定类型的链接，无需复制粘贴。

#### 功能

拥有着能同时控制多个下载任务的能力，限制而不浪费带宽以及先进的自动或手动过滤功能，DownThemAll！有着一大堆有助于大规模下载的优秀功能。“一键”功能还让它能非常迅速的启动预定文件夹的下载。这比普通下载功能快多了。

#### 可获得性

Firefox几乎能在所有的发行版和Linux以外的操作系统中获得。这让DownThemAll!也和它一样多能。不幸的是，这是一把双刃剑，因为Firefox可能不是你喜欢的浏览器。它还给浏览器增加了一些负担，让它的启动不再那么轻松。

#### 总体评价

7/10

DownThemAll!是很优秀的，如果你使用Firefox你也许就不再需要用任何其他的下载器了。然而并不是每个人都喜欢用Firefox浏览器，而且管理器需要在浏览器开启的情况下才能启动。

### [Steadyflow](http://bit.ly/1lilymS)

Steadyflow很容易在Ubuntu和一些基于Debian的发行版中获得，获取它的方式可能受到了一些制约，但它在某些圈子里一直被认为是你能得到的任何发行版里最好的管理器。它能查找剪贴板里的URL，使用GNOME的预设代理，还有许多其他的功能。

![The settings in Steady flow are extremely limiting and somewhat difficult to access](/data/attachment/album/201502/20/222915w1m1i6s2t8gnbg1b.png)

*Steady flow里的设置非常少，而且有点难以使用。*

#### 界面

Steadyflow的形象相当简洁，令人愉悦的、干净的界面并没有让下载窗口变得混乱。添加下载任务的对话框足够简洁，只有基本的选项来设置下载任务，设置文件位置。真没什么可抱怨的，虽然它的确让我们觉得它的功能有点少。

#### 集成

查看复制的URL是标准配备，还有个让Chromium集成这个功能的插件。同样的，如果你喜欢用Firefox你可以通过Flashgot把它连到Firefox上。你并不能真正的编辑它从剪贴板里分析出的链接，它也不能像uGet和DownThemAll!一样批量下载。

#### 功能

极度缺少功能，选项菜单也受到很大限制。暂停和恢复功能看起来也不怎么好使——这是任何浏览器文件下载功能的最基本的部分。文件下载结束的通知和默认行为是可以设置的，还可以选择在文件下载完成之后运行脚本。

#### 可获得性

只能在Ubuntu上获取，还不容易得到这个应用的源代码。这意味着虽然在所有基于Ubuntu的发行版中都能很容易的得到它，但也仅限于这些发行版。由于它不是Linux上能得到的最好的下载管理器，所以也不用想太多。

#### 总体评价

5/10

坦白说，没那么好。只有非常基本的选项，还只能在Ubuntu上使用，Steadyflow要想从你能选择的浏览器自带的标准下载选项中脱颖而出，它做的还不够。

### 那么获奖者是……

#### uGet

在此次测试中，我们已经证明了现代电脑中还是有下载管理器的一席之地的，即便它们中的佼佼者们从BT下载客户端中抄袭了某些功能，貌似侵犯了他们的权益。对于某些人来说BT下载可能是个更有效率的方式，随着ISP们对待BT流量越来越机智，一些人可能用一个好的下载管理器就得到更好的效果。大多数主流ISP不仅仅强加了数据传输限额，在高峰时段他们中的一些甚至开始减慢或封掉BT流量——甚至连发行版的ISO文件和其他免费软件的合法数据流都被限制了。

对于这类问题Steadyflow看起来是非常受欢迎的解决方式，但我们的使用和测试显示出，它是一个未完成的简陋的产品。更加古老的uGet则是这场表演的明星，有着惊人数量的可选功能，这些功能既能在下载单一文件中有所帮助，还能在整个网页里过滤出相关元素进行抓取。DownThemAll！与之类似，优秀的Firefox有加分，但它也离不开Firefox，有着几乎同级别的功能，但集成效果更好。

如果你要在这两个里面选一个，那就得谈谈你喜欢哪个浏览器还有你是否需要昼夜下载或上传文件。DownThemAll!需要Firefox一直运行，然而uGet可以单独运行，为处理器节省了很多资源和电力——这显然让uGet在24小时数据传输上显得更有前途，而且对于它来说，设置一大批下载任务或只是从你的浏览器中获取下载信息，都不是什么难事。

再给下载管理器一个机会。结果绝不会让你失望。

---

via: <http://www.linuxuser.co.uk/reviews/top-4-linux-download-managers>

作者：Rob Zwetsloot 译者：[H-mudcup](https://github.com/H-mudcup) 校对：[wxy](https://github.com/wxy)

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


如何在 Ubuntu 14.04 中安装 Winusb

Summary: WinUSB是一款即简单又有用的工具，可以让你从 Windows ISO 镜像或者 DVD 中创建 USB 安装盘（LCTT译注：支持将 Windows Vista/7/8/PE 制作成 USB 安装盘）。它支持 GUI 和命令行，你可以根据你的喜好决定使用哪种。 在本文中我们会展示如何在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB。 在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB 在 Ubuntu 13.10 之前, WinUSB 一直都在积极开发，且在官方 PPA 中可以找到。但这个 PPA 还没有为 Ubuntu 14.04 和 14.10 更新，不过其二进制文件仍旧可在更新版本的 Ubuntu 和 Lin

dd万岁

这个要试

[good]

这个不错，有空试试！

Win U SB

@有道云笔记收藏

Repost

我记得ubuntu以前支持从windows安装，后来这个再也没了

Mark

@有道云笔记收藏

dd总失败，这下就方便了。

大家去官方网站看，这软件自从2012-05-03之后就没再更新过了……<br />
大家实际去用一下这软件，真的能用吗？

建议@Linux把这文章删了……

我倒是确实没试用过，这篇也是来自译稿。不过从2012后就没更新，确实堪忧，那就不建议使用了。

谢谢 kashu。

我记得ubuntu以前支持从windows安装，后来这个再也没了

是的。不知何故取消了。不过这个和winusb无关。

>
> 编者注：据 @kashu 反馈，本软件自从2012年之后就没有继续维护了，也有很多反馈说不能使用/不能安装等等。本文仅供参考，不鼓励使用。
>
>
>

![](/data/attachment/album/201502/21/223947cf24465i0564fis5.jpeg)

[WinUSB](http://en.congelli.eu/prog_info_winusb.html)是一款即简单又有用的工具，可以让你从 Windows ISO 镜像或者 DVD 中创建 USB 安装盘（LCTT译注：支持将 Windows Vista/7/8/PE 制作成 USB 安装盘）。它支持 GUI 和命令行，你可以根据你的喜好决定使用哪种。

在本文中我们会展示**如何在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB**。

### 在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB

在 Ubuntu 13.10 之前, WinUSB 一直都在积极开发，且在官方 PPA 中可以找到。但这个 PPA 还没有为 Ubuntu 14.04 和 14.10 更新，不过其二进制文件仍旧可在更新版本的 Ubuntu 和 Linux Mint 中运行。基于[你使用的系统是32位还是64位](http://itsfoss.com/how-to-know-ubuntu-unity-version/)，使用下面的命令来下载二进制文件：

打开终端，32位的系统下使用下面的命令：

```
wget https://launchpad.net/~colingille/+archive/freshlight/+files/winusb_1.0.11+saucy1_i386.deb

```

对于64位的系统，使用下面的命令：

```
wget https://launchpad.net/~colingille/+archive/freshlight/+files/winusb_1.0.11+saucy1_amd64.deb

```

当你下载了正确的二进制包，你可以用下面的命令安装WinUSB：

```
sudo dpkg -i winusb*

```

不要担心在你安装WinUSB时看到的错误。使用这条命令修复依赖错误：

```
sudo apt-get -f install

```

之后，你就可以在 Unity Dash 中查找 WinUSB 并且用它在 Ubuntu 14.04 中创建 Windows 的 live USB 了。

![](/data/attachment/album/201502/21/223948pisja6v9pvpoovap.png)

我希望这篇文章能够帮助你**在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB**。

---

via: <http://itsfoss.com/install-winusb-in-ubuntu-14-04/>

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

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


删除重复文件的神器：dupeGuru

Summary: 最近，我需要清理我父亲的文件和文件夹。有一个难题是，里面存在很多不正确的名字的重复文件。有移动硬盘的备份，同时还为同一个文件编辑了多个版本，甚至改变的目录结构，同一个文件被复制了好几次，名字改变，位置改变等，这些文件挤满了磁盘空间。追踪每一个文件成了一个最大的问题。万幸的是，有一个小巧的软件可以帮助你省下很多时间来找到删除你系统中重复的文件：dupeGuru。它用Python写成，这个去重软件几个小时前切换到了GPLv3许可证。因此是时候用它来清理你的文件了！  dupeGuru的安装 在Ubuntu上， 你可以加入如下硬编码的软

@我的印象笔记

[馋嘴]

好东西。收着。[哈哈]

好东西

待会试一试

Repost

给力。

//@双字晨:转发微博

好东西<br />
值得一试

大问题！

我在Ubuntu 14.04.2 LTS x86_64系统上安装成功后根本打不开，卸载重新安装后仍然打不开，不知道什么情况……

你们有碰到这种情况吗？

我在Ubuntu 14.04.2 LTS里安装后打不开<br />
你安装后能用吗？

最近，我需要清理我父亲的文件和文件夹。有一个难题是，里面存在很多不正确的名字的重复文件。有移动硬盘的备份，同时还为同一个文件编辑了多个版本，甚至改变的目录结构，同一个文件被复制了好几次，名字改变，位置改变等，这些文件挤满了磁盘空间。追踪每一个文件成了一个最大的问题。万幸的是，有一个小巧的软件可以帮助你省下很多时间来找到删除你系统中重复的文件：[dupeGuru](http://www.hardcoded.net/dupeguru/)。它用Python写成，这个去重软件几个小时前切换到了GPLv3许可证。因此是时候用它来清理你的文件了！

![](/data/attachment/album/201502/21/230553ho4kveh8weiamxgv.png)

### dupeGuru的安装

在Ubuntu上， 你可以加入如下硬编码的软件PPA：

```
$ sudo apt-add-repository ppa:hsoft/ppa
$ sudo apt-get update

```

接着用下面的命令安装：

```
$ sudo apt-get install dupeguru-se

```

在ArchLinux中，这个包在[AUR](https://aur.archlinux.org/packages/dupeguru-se/)中。

如果你想自己编译，源码在[GitHub](https://github.com/hsoft/dupeguru)上。

### dupeGuru的基本使用

DupeGuru的构想是既快又安全。这意味着程序不会在你的系统上疯狂地运行。它很少会删除你不想要删除的文件。然而，既然在讨论文件删除，保持谨慎和小心总是好的：备份总是需要的。

你看完注意事项后，你可以用下面的命令运行duprGuru了：

```
$ dupeguru_se

```

你应该看到要你选择文件夹的欢迎界面，在这里加入你你想要扫描的重复文件夹。

![](/data/attachment/album/201502/21/230558msg2gyjrr992zqf9.jpg)

一旦你选择完文件夹并启动扫描后，dupeFuru会以列表的形式显示重复文件的组：

![](/data/attachment/album/201502/21/230600gi7hj4qn447wlzqt.jpg)

注意的是默认上dupeGuru基于文件的内容匹配，而不是他们的名字。为了防止意外地删除了重要的文件，匹配列列出了其使用的匹配算法。在这里，你可以选择你想要删除的匹配文件，并按下“Action” 按钮来看到可用的操作。

![](/data/attachment/album/201502/21/230605xcl25e2e7x44lxe2.jpg)

可用的选项相当广泛。简而言之，你可以删除重复、移动到另外的位置、忽略它们、打开它们、重命名它们甚至用自定义命令运行它们。如果你希望删除重复文件，你可能会像我一样非常意外竟然有这么多种删除方式。

![](/data/attachment/album/201502/21/230607zeerk34em96m23f6.jpg)

你不仅可以将删除的文件移到垃圾箱或者永久删除，还可以选择留下指向原文件的链接（软链接或者硬链接）。也就是说，重复文件将会删除文件存储，但是会保留下一个指向原文件的链接。这将会省下大量的磁盘空间。如果你将这些文件导入到工作空间或者它们有一些依赖时很有用。

还有一个奇特的选项：你可以用HTML或者CSV文件导出结果。我不确定你会不会需要这么做，但是我假设你想追踪重复文件而不是想让dupeGuru处理它们时会有用。

最后但并不是最不重要的是，偏好菜单可以让你按照你的想法来操作去重这件事。

![](/data/attachment/album/201502/21/230609ig10dumv0z0fub3g.jpg)

这里你可以选择扫描的标准，基于内容还是基于名字，并且有一个阈值来控制结果的数量。这里同样可以定义自定义在执行中可以选择的命令。混在其他那些小的选项中，要注意的是dupeGuru默认忽略小于10KB的文件。

要了解更多的信息，我建议你到[官方网站](http://www.hardcoded.net/dupeguru/)看下，这里有很多文档、论坛支持和其他好东西。

总结一下，dupeGuru是我无论何时准备备份或者释放空间时所想到的软件。我发现这对高级用户而言也足够强大了，对新人而言也很直观。锦上添花的是：dupeGuru是跨平台的，这意味着你可以在Mac或者在Windows PC上都可以使用。如果你有特定的需求，想要清理音乐或者图片。这里有两个变种：[dupeguru-me](http://www.hardcoded.net/dupeguru_me/)和 [dupeguru-pe](http://www.hardcoded.net/dupeguru_pe/)， 相应地可以清理音频和图片文件。与常规版本的不同是它不仅比较文件格式还比较特定的媒体数据像质量和码率。

你觉得dupeGuru怎么样？你会考虑使用它么？或者你有任何可以替代的软件的建议么？让我在评论区知道你们的想法。

---

via: <http://xmodulo.com/dupeguru-deduplicate-files-linux.html>

作者：[Adrien Brochard](http://xmodulo.com/author/adrien) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


通过 SaltStack 管理服务器配置

Summary: 我在搜索Puppet的替代品时，偶然间碰到了Salt。我喜欢puppet，但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单，当然这只是一家之言，你大可不必介怀。另外一个爱上Salt的理由是，它可以让你从命令行管理服务器配置，比如： 要通过Salt来更新所有服务器，你只需运行以下命令即可 salt '*' pkg.upgrade  安装SaltStack到Linux上 如果你是在CentOS 6/7上安装的话，那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户，你可以从这里添加Salt仓库。Salt是基于python的，所以你也可以使用pip来安装，但是你得用yum-

唉，前不久培训的Chef忘光光了[泪]

配置文件简单太吸引人了…

@我的印象笔记

学习

mark

mark

![](/data/attachment/album/201502/21/234425me50754gj7lc8fgw.png)

我在搜索[Puppet](http://linux.cn/article-3959-1.html)的替代品时，偶然间碰到了Salt。我喜欢puppet，但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单，当然这只是一家之言，你大可不必介怀。另外一个爱上Salt的理由是，它可以让你从命令行管理服务器配置，比如：

要通过Salt来更新所有服务器，你只需运行以下命令即可

```
salt '*' pkg.upgrade

```

安装SaltStack到Linux上
------------------

如果你是在CentOS 6/7上安装的话，那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户，你可以从[这里](http://docs.saltstack.com/en/latest/topics/installation/index.html)添加Salt仓库。Salt是基于python的，所以你也可以使用‘pip’来安装，但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。

Salt采用服务器-客户端模式，服务器端称为领主，而客户端则称为下属。

### 安装并配置Salt领主

```
[root@salt-master~]# yum install salt-master

```

Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用，但我还是建议你将日志配置得更详细点，以方便日后排除故障。

```
[root@salt-master ~]# vim /etc/salt/master
# 默认是warning，修改如下
log_level: debug
log_level_logfile: debug

[root@salt-master ~]# systemctl start salt-master

```

### 安装并配置Salt下属

```
[root@salt-minion~]#yum install salt-minion

# 添加你的Salt领主的主机名
[root@salt-minion~]#vim /etc/salt/minion
master: salt-master.com
# 启动下属
[root@salt-minion~] systemctl start salt-minion

```

在启动时，下属客户机会生成一个密钥和一个id。然后，它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前，必须接受下属的密钥。

### 在Salt领主服务器上列出并接受密钥

```
# 列出所有密钥
[root@salt-master~] salt-key -L
Accepted Keys:
Unaccepted Keys:
minion.com
Rejected Keys:

# 使用id 'minion.com'命令接受密钥
[root@salt-master~]salt-key -a minion.com

[root@salt-master~] salt-key -L
Accepted Keys:
minion.com
Unaccepted Keys:
Rejected Keys:

```

在接受下属客户机的密钥后，你可以使用‘salt’命令来立即获取信息。

Salt命令行实例
---------

```
# 检查下属是否启动并运行
[root@salt-master~]  salt 'minion.com' test.ping
minion.com:
    True
# 在下属客户机上运行shell命令
 [root@salt-master~]#  salt 'minion.com' cmd.run 'ls -l'
minion.com:
    total 2988
    -rw-r--r--. 1 root root 1024 Jul 31 08:24 1g.img
    -rw-------. 1 root root     940 Jul 14 15:04 anaconda-ks.cfg
    -rw-r--r--. 1 root root 1024  Aug 14 17:21 test
# 安装/更新所有服务器上的软件
[root@salt-master ~]# salt '*' pkg.install git

```

salt命令需要一些组件来发送信息，其中之一是下属客户机的id，而另一个是下属客户机上要调用的函数。

在第一个实例中，我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping，它仅仅是在下属客户机作出回应时返回‘真’。

‘cmd.run’用于执行远程命令，而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。

### 颗粒实例

Salt使用一个名为**颗粒（Grains）**的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。

```
[root@vps4544 ~]# salt -G 'os:Centos' test.ping
minion:
    True

```

更多颗粒实例，请访问<http://docs.saltstack.com/en/latest/topics/targeting/grains.html>。

通过状态文件系统进行包管理
-------------

为了使软件配置自动化，你需要使用状态系统，并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍，这将有助于你更好地理解它的配置。

### VIM状态文件实例

```
[root@salt-master~]# vim /srv/salt/vim.sls
vim-enhanced:
  pkg.installed
/etc/vimrc:
  file.managed:
    - source: salt://vimrc
    - user: root
    - group: root
    - mode: 644

```

该文件的第一和第三行称为状态id，它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明，‘pkg’和‘file’是状态声明，而‘installed’和‘managed’是函数声明。函数接受参数，用户、组、模式和源都是函数‘managed’的参数。

要将该配置应用到下属客户端，请移动你的‘vimrc’文件到‘/src/salt’，然后运行以下命令。

```
[root@salt-master~]# salt 'minion.com' state.sls vim
minion.com:
----------
          ID: vim-enhanced
    Function: pkg.installed
      Result: True
     Comment: The following packages were installed/updated: vim-enhanced.
     Started: 09:36:23.438571
    Duration: 94045.954 ms
     Changes:
              ----------
              vim-enhanced:
                  ----------
                  new:
                      7.4.160-1.el7
                  old:

Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

```

你也可以添加依赖关系到你的配置中。

```
[root@salt-master~]# vim /srv/salt/ssh.sls
openssh-server:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://ssh/sshd_config

sshd:
  service.running:
    - require:
      - pkg: openssh-server

```

这里的‘require’声明是必须的，它在‘service’和‘pkg’状态之间创建依赖关系。该声明将首先检查包是否安装，然后运行服务。

但是，我更偏向于使用‘watch’声明，因为它也可以检查文件是否修改和重启服务。

```
[root@salt-master~]# vim /srv/salt/ssh.sls
openssh-server:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://sshd_config

sshd:
  service.running:
    - watch:
      - pkg: openssh-server
      - file: /etc/ssh/sshd_config

[root@vps4544 ssh]# salt 'minion.com' state.sls ssh
seven.leog.in:
     Changes:
----------
          ID: openssh-server
    Function: pkg.installed
      Result: True
     Comment: Package openssh-server is already installed.
     Started: 13:01:55.824367
    Duration: 1.156 ms
     Changes:
----------
          ID: /etc/ssh/sshd_config
    Function: file.managed
      Result: True
     Comment: File /etc/ssh/sshd_config updated
     Started: 13:01:55.825731
    Duration: 334.539 ms
     Changes:
              ----------
              diff:
                  ---
                  +++
                  @@ -14,7 +14,7 @@
                   # SELinux about this change.
                   # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
                   #
                  -Port 22
                  +Port 422
                   #AddressFamily any
                   #ListenAddress 0.0.0.0
                   #ListenAddress ::

----------
          ID: sshd
    Function: service.running
      Result: True
     Comment: Service restarted
     Started: 13:01:56.473121
    Duration: 407.214 ms
     Changes:
              ----------
              sshd:
                  True

Summary
------------
Succeeded: 4 (changed=2)
Failed:    0
------------
Total states run:     4

```

在单一目录中维护所有的配置文件是一项复杂的大工程，因此，你可以创建子目录并在其中添加配置文件init.sls文件。

```
[root@salt-master~]# mkdir /srv/salt/ssh
[root@salt-master~]# vim /srv/salt/ssh/init.sls
openssh-server:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://ssh/sshd_config

sshd:
  service.running:
    - watch:
      - pkg: openssh-server
      - file: /etc/ssh/sshd_config

[root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/
[root@vps4544 ssh]# salt 'minion.com' state.sls ssh

```

### Top文件和环境

top文件（top.sls）是用来定义你的环境的文件，它允许你映射下属客户机到包，默认环境是‘base’。你需要定义在基本环境下，哪个包会被安装到哪台服务器。

如果对于一台特定的下属客户机而言，有多个环境，并且有多于一个的定义，那么默认情况下，基本环境将取代其它环境。

要定义环境，你需要将它添加到领主配置文件的‘file\_roots’指针。

```
[root@salt-master ~]# vim /etc/salt/master
file_roots:
  base:
    - /srv/salt
  dev:
    - /srv/salt/dev

```

现在，添加一个top.sls文件到/src/salt。

```
[root@salt-master ~]# vim /srv/salt/top.sls
base:
  '*':
    - vim
  'minion.com':
     - ssh

```

应用top文件配置

```
[root@salt-master~]# salt '*' state.highstate
minion.com:
----------
          ID: vim-enhanced
    Function: pkg.installed
      Result: True
     Comment: Package vim-enhanced is already installed.
     Started: 13:10:55
    Duration: 1678.779 ms
     Changes:
----------
          ID: openssh-server
    Function: pkg.installed
      Result: True
     Comment: Package openssh-server is already installed.
     Started: 13:10:55.
    Duration: 2.156 ms

```

下属客户机将下载top文件并搜索用于它的配置，领主服务器也会将配置应用到所有下属客户机。

---

这仅仅是一个Salt的简明教程，如果你想要深入学习并理解，你可以访问下面的链接。如果你已经在使用Salt，那么请告诉我你的建议和意见吧。

更新： [Foreman](http://techarena51.com/index.php/using-foreman-opensource-frontend-puppet/) 已经通过[插件](https://github.com/theforeman/foreman_salt/wiki)支持salt。

阅读链接

* <http://docs.saltstack.com/en/latest/ref/states/top.html#how-top-files-are-compiled>
* <http://docs.saltstack.com/en/latest/topics/tutorials/states_pt1.html>
* <http://docs.saltstack.com/en/latest/ref/states/highstate.html#state-declaration>

颗粒

* <http://docs.saltstack.com/en/latest/topics/targeting/grains.html>

Salt和Puppet的充分比较

* <https://mywushublog.com/2013/03/configuration-management-with-salt-stack/>

内建执行模块的完全列表

* <http://docs.saltstack.com/en/latest/ref/modules/all/>

---

via: <http://techarena51.com/index.php/getting-started-with-saltstack/>

作者：[Leo G](http://techarena51.com/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)

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


使用Mate Tweak配置Mate桌面

Summary: 在Ubuntu中安装Mate桌面是一码事但是你或许想要知道如何配置Mate桌面？ 大多数桌面环境都有它们自己的调整工具。比如Unity有Unity Tweak，Gnome有Gnome Tweak，Elementary OS有 Elementary OS Teweak。好消息是Mate桌面也有它自己的调整工具，叫Mate Tweak]2。 Mate Tweak是mintDesktop的克隆分支，那是一款Linux Mint的配置工具。 安装Mate Tweak来配置Mate桌面 Mate Tweak可以通过官方的PPA很简单地在Ubuntu和基于Ubuntu的系统中安装。打开终端，输入下面的命令： sudo add-apt-repository ppa:ubuntu-mate-dev/ppa sudo apt-get update

这个有点粗糙啊

Elementary OS Tweak是不是拼错了？

XD

mark

![](/data/attachment/album/201502/21/235119t3n6nc644334g632.jpeg)

[在Ubuntu中安装Mate桌面](http://itsfoss.com/install-mate-desktop-ubuntu-14-04/)是一码事但是你或许想要知道如何**配置Mate桌面**？ 大多数桌面环境都有它们自己的调整工具。比如Unity有Unity Tweak，Gnome有Gnome Tweak，Elementary OS有 Elementary OS Teweak。好消息是Mate桌面也有它自己的调整工具，叫Mate Tweak][2](https://bitbucket.org/flexiondotorg/mate-tweak)。

Mate Tweak是[mintDesktop](https://github.com/linuxmint/mintdesktop)的克隆分支，那是一款Linux Mint的配置工具。

### 安装Mate Tweak来配置Mate桌面

Mate Tweak可以通过官方的PPA很简单地在Ubuntu和基于Ubuntu的系统中安装。打开终端，输入下面的命令：

```
sudo add-apt-repository ppa:ubuntu-mate-dev/ppa
sudo apt-get update
sudo apt-get install mate-tweak

```

你可以控制桌面的显示、按钮的布局和其他界面微调和窗口行为。与Unity和Gnome的调整工具比起来，Mate Tweak没有提供太多的调整选项。比如你还不能用它[改变主题](http://itsfoss.com/how-to-install-themes-in-ubuntu-13-10/)，但是至少它提供了一个简单的方法来改变一些配置。我希望它可以在不久的将来提供更多的特性。

---

via: <http://itsfoss.com/configure-mate-desktop-mate-tweak/>

作者：[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/) 荣誉推出


Linux 有问必答： 如何在Linux中加入cron任务

Summary: 提问： 我想在我的Linux中安排一个计划任务，该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务？  cron是Linux中默认的计划任务。使用cron，你可以安排一个计划（比如：命令或者shell脚本）周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的，比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。  （题图来自 eagleapex.com） 从命令行中添加cron任务 要添加cron任务，你可以使用称为crontab的命令行工具。 输入下面的命令会创建一个以当前用户运

@有道云笔记收藏

Repost

这个表不错[酷]

简单而实用的命令。

mark

@我的印象笔记

非常好

@保存到为知笔记

Repost

简单而实用的命令。

@我的印象笔记

>
> **提问**： 我想在我的Linux中安排一个计划任务，该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务？
>
>
>

cron是Linux中默认的计划任务。使用cron，你可以安排一个计划（比如：命令或者shell脚本）周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的，比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。

![](/data/attachment/album/201502/22/212422mcrpccvfcflpdrsp.jpg)

（题图来自 eagleapex.com）

### 从命令行中添加cron任务

要添加cron任务，你可以使用称为crontab的命令行工具。

输入下面的命令会创建一个以当前用户运行的新cron任务。

```
$ crontab -e

```

如果你想要以其他用户运行cron任务，输入下面的命令。

```
$ sudo crontab -u <username> -e

```

你将会看见一个文本编辑窗口，这里你可以添加或者编辑cron任务。默认使用nono编辑器。

![](/data/attachment/album/201502/22/212508thotfu3zchthht1o.jpg)

每个cron任务的格式如下。

```
<分钟> <小时> <日> <月> <星期> <命令>

```

前5个元素定义了任务的计划，最后一个元素是命令或者脚本的完整路径。

![](/data/attachment/album/201502/22/212511ay72o1x2lo22sox0.jpg)

下面是一些cron任务示例。

* **\* \* \* \* \* /home/dan/bin/script.sh**: 每分钟运行。
* **0 \* \* \* \* /home/dan/bin/script.sh**: 每小时运行。
* **0 0 \* \* \* /home/dan/bin/script.sh**: 每天零点运行。
* **0 9,18 \* \* \* /home/dan/bin/script.sh**: 在每天的9AM和6PM运行。
* **0 9-18 \* \* \* /home/dan/bin/script.sh**: 在9AM到6PM的每个小时运行。
* **0 9-18 \* \* 1-5 /home/dan/bin/script.sh**: 周一到周五的9AM到6PM每小时运行。
* **\*/10 \* \* \* \* /home/dan/bin/script.sh**: 每10分钟运行。

一旦完成上面的设置步骤后，按下Ctrl+X来保存并退出编辑器。此时，新增的计划任务应该已经激活了。

要查看存在的计划任务，使用下面的命令：

```
$ crontab -l

```

### 从GUI添加计划任务

如果你在Linux桌面环境中，你可以使用crontab的更加友好的GUI前端来添加或者添加一个cron任务。

在Gnome桌面中，有一个Gnome Schedule（gnome-schedule包）。

![](/data/attachment/album/201502/22/212514t6c00r71k0l3frcr.jpg)

在KDE桌面中，有一个Task Scheduler（kcron包）。

![](/data/attachment/album/201502/22/212517u5eez3n3bbqwllm3.jpg)

---

via: <http://ask.xmodulo.com/add-cron-job-linux.html>

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

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


如何在RedHat/CentOS 7.x中使用nmcli管理网络

Summary: Red Hat Enterprise Linux 7和CentOS 7的一个新特性是默认的网络服务由NetworkManager提供，这是一个动态的网络控制和配置守护进程，它在网络设备和连接可用时保持链接正常，同时也提供了典型的ifcfg类型的配置文件。NetworkManager可以用于下面这些连接：Ethernet、 VLANs、桥接、Bonds、Teams、 Wi-Fi、 移动宽带 (比如 3G)和IP-over-InfiniBand(IPoIB)。 NetworkManager可以由命令行工具nmcli控制。  nmcli的通常用法 nmcli的通常语法是： # nmcli  OBJECT { COMMAND | help }  一件很酷的事情是你可以使用tab键来补全操作，这样你在何

mark

[哼]

ubuntu下networkmanager启动以后再配置interface就没有效果了

mark

@我的印象笔记

[**Red Hat Enterprise Linux 7**](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.0_Release_Notes/)和**CentOS 7**的一个新特性是默认的网络服务由**NetworkManager**提供，这是一个动态的网络控制和配置守护进程，它在网络设备和连接可用时保持链接正常，同时也提供了典型的ifcfg类型的配置文件。NetworkManager可以用于下面这些连接：Ethernet、 VLANs、桥接、Bonds、Teams、 Wi-Fi、 移动宽带 (比如 3G)和IP-over-InfiniBand(IPoIB)。

NetworkManager可以由命令行工具**nmcli**控制。

![](/data/attachment/album/201502/22/220239kpgjgdipg2np3p32.png)

### nmcli的通常用法

nmcli的通常语法是：

```
# nmcli [ OPTIONS ] OBJECT { COMMAND | help }

```

一件很酷的事情是你可以使用tab键来补全操作，这样你在何时忘记了语法你都可以按下tab来看到可用的选项了。

![nmcli tab](/data/attachment/album/201502/22/220243z4qzyhe22gfr4elf.jpg)

nmcli通常用法的一些例子：

```
# nmcli general status

```

会显示NetworkManager的整体状态。

```
# nmcli connection show

```

会显示所有的连接

```
# nmcli connection show -a

```

仅显示活跃的连接

```
# nmcli device status

```

显示NetworkManager识别的设备列表和它们当前的状态。

![nmcli general](/data/attachment/album/201502/22/220245tysrpteu7ypu0c3t.jpg)

### 启动/停止网络设备

你可以使用nmcli从命令行启动或者停止网络设备，这等同于ifconfig中的up和down。

停止网络设备使用下面的语法：

```
# nmcli device disconnect eno16777736

```

要启动它使用下面的语法：

```
# nmcli device connect eno16777736

```

### 添加一个使用静态IP的以太网连接

要用静态IP添加一个以太网连接可以使用下面的命令：

```
# nmcli connection add type ethernet con-name NAME_OF_CONNECTION ifname INTERFACE-NAME ip4 IP_ADDRESS gw4 GW_ADDRESS

```

将NAME*OF*CONNECTION替换成新的连接名（LCTT 译注：这个名字以后可以用来对其操作，可以使用任何简单明了的名称），INTERFACE-NAME 替换成你的接口名，IP*ADDRESS替换成你要的IP地址，GW*ADDRESS替换成你使用的网关地址（如果你并不使用网关，你可以忽略这部分）。

```
# nmcli connection add type ethernet con-name NEW_STATIC ifname eno16777736 ip4 192.168.1.141 gw4 192.168.1.1

```

要设置这个连接所使用的DNS服务器使用下面的命令：

```
# nmcli connection modify NEW_STATIC ipv4.dns "8.8.8.8 8.8.4.4"

```

要启用新的以太网连接，使用下面的命令：

```
# nmcli connection up NEW_STATIC ifname eno16777736

```

要查看新配置连接的详细信息，使用下面的命令：

```
# nmcli -p connection show NEW_STATIC

```

![nmcli add static](/data/attachment/album/201502/22/220246b3wcgjuqmgtkqxcu.jpg)

### 添加一个使用DHCP的连接

如果你想要添加一个使用DHCP来配置接口IP地址、网关地址和dns服务器地址的新的连接，你要做的就是忽略上述命令中的ip/gw部分，NetworkManager会自动使用DHCP来获取配置细节。

比如，要创建一个新的叫NEW\_DHCP的DHCP连接，在设备eno16777736上你可以使用下面的命令：

```
# nmcli connection add type ethernet con-name NEW_DHCP ifname eno16777736

```

---

via: <http://linoxide.com/linux-command/nmcli-tool-red-hat-centos-7/>

作者：[Adrian Dinu](http://linoxide.com/author/adriand/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


使用 APT-mirror 四步配置 Ubuntu 本地软件仓库

mark

按理说应该可以根据官方镜像制作本地源

get

@我的印象笔记

mark

Repost

@我的印象笔记

我用这种方法，下载下来，在客户端执行apt-get update就报错。

好像用apt-get安装的时候，找的是dists目录下的安装包，但是咱们下载的是pool目录下的所有文件。

请问各位按照这种方法都可行吗？

确实用软连接 连接一下

你的问题解决了吗  我的也是报错

今天，我们将向你展示如何在你的 Ubuntu 个人电脑或 Ubuntu 服务器中，直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件 、安全升级和修复补丁，那么配置一个本地软件仓库是一个做这些事情的高效方法。因为，所有需要安装的软件包都可以通过快速的局域网连接从你的本地服务器中下载，这样可以节省你的网络带宽，降低互联网接入的年度开支 ...

你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库，但在本教程中，我们将为你介绍 APT-Mirror。这里，我们将把默认的镜像包镜像到我们本地的服务器或个人电脑中，并且在你的本地或外置硬盘中，我们至少需要 **120 GB** 或更多的可用空间才行。 我们可以通过配置一个 **HTTP** 或 **FTP** 服务器来与本地系统客户端共享这个软件仓库。

![](/data/attachment/album/201502/22/222342ybiibj1mj1jdrbam.png)

我们需要安装 Apache 网络服务器和 APT-Mirror 来使得我们的工作得以开始。下面是配置一个可工作的本地软件仓库的步骤：

### 1. 安装需要的软件包

我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包，然后在我们本地的 Ubuntu 服务器硬盘中保存它们。

首先我们安装一个Web 服务器来承载我们的本地软件仓库。这里我们将安装 Apache Web 服务器，但你可以安装任何你中意的 Web 服务器。对于 http 协议，Web 服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议，你还可以再分别额外安装 FTP 服务器，如 proftpd, vsftpd 等等 和 Rsync 。

```
$ sudo apt-get install apache2

```

然后我们需要安装 apt-mirror:

```
$ sudo apt-get install apt-mirror

```

![apt-mirror-installation](/data/attachment/album/201502/22/222345kfzfsdrdyrq0dbbr.png)

**注: 正如我先前提到的，我们需要至少 120 GB 的可用空间来使得所有的软件包被镜像或下载。**

### 2. 配置 APT-Mirror

现在，在你的硬盘上创建一个目录来保存所有的软件包。例如，我们创建一个名为 /linoxide的目录，我们将在这个目录中保存所有的软件包：

```
 $ sudo mkdir /linoxide
```

现在，打开文件 **/etc/apt/mirror.list** :

```
 $ sudo nano /etc/apt/mirror.list
```

复制下面的命令行配置到 mirror.list文件中并按照你的需求进行修改：

```
############# config ##################
#
set base_path    /linoxide
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse

deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse

clean http://archive.ubuntu.com/ubuntu
```

**注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址，可以通过访问 [Ubuntu Mirror Server](https://launchpad.net/ubuntu/+archivemirrors)来找到这些服务器地址。假如你并不太在意镜像完成的时间，你可以沿用默认的官方镜像服务器网址。**

这里，我们将要镜像最新和最大的 Ubuntu LTS 发行版 --- 即 Ubuntu 14.04 LTS (Trusty Tahr) --- 的软件包仓库，所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本，请修改上面的 trusy 为相应的代号。

现在，我们必须运行 apt-mirror 来下载或镜像官方仓库中的所有软件包。

```
sudo apt-mirror

```

从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于你和镜像服务器之间的网络连接速率和性能。这里我中断了下载，因为我已经下载好了 ...

![downloading-packages](/data/attachment/album/201502/22/222346n1bcve3ytotgjct5.png)

### 3.配置网络服务器

为了使得其他的电脑能够访问这个软件仓库，你需要一个Web服务器。你也可以通过 ftp 来完成这件事，但我选择使用一个Web服务器因为在上面的步骤 1 中我提及到使用Web服务器。因此，我们现在要对 Apache 服务器进行配置:

我们将为我们本地的软件仓库目录 建立一个到 Apache 托管目录 --- 即 /var/www/ubuntu --- 的符号链接。

```
$ sudo ln -s /linoxide /var/www/ubuntu
$ sudo service apache2 start
```

上面的命令将允许我们从本地主机(localhost) --- 即 [http://127.0.0.1(默认情况下)](http://127.0.0.1(%E9%BB%98%E8%AE%A4%E6%83%85%E5%86%B5%E4%B8%8B)) --- 浏览我们的镜像软件仓库。

### 4. 配置客户端

最后，我们需要在其他的电脑中添加软件源，来使得它们可以从我们的电脑中取得软件包或软件仓库。为达到此目的，我们需要编辑 /etc/apt/sources.list 文件并添加下面的命令：

```
$ sudo nano /etc/apt/sources.list

```

添加下面的一行到/etc/apt/sources.list中并保存。

```
deb http://192.168.0.100/ubuntu/ trusty main restricted universe

```

**注: 这里的 192.168.0.100 是我们的服务器电脑的局域网 IP 地址，你需要替换为你的服务器电脑的局域网 IP 地址**

```
$ sudo apt-get update

```

最终，我们完成了任务。现在，你可以使用sudo apt-get install packagename 命令来从你的本地 Ubuntu 软件仓库中安装所需的软件包，这将会是高速的且消耗很少的带宽。

---

via: <http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[wxy](https://github.com/wxy)

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


如何在Ubuntu Server 14.04 LTS(Trusty) 上安装Ghost

Summary: 今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost。 Ghost是一款设计优美的发布平台，很容易使用且对任何人都免费。它是免费的开源软件（FOSS），它的源码在Github上。截至2015年1月（LCTT 译注：原文为2014，应为2015），它的界面很简单还有分析面板。编辑使用的是很便利的分屏显示。  因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程： 1. 升级Ubuntu 第一步是运行Ubuntu软件升级并安装一系列需要的额外包。 sudo apt-get update sudo apt-get upgrade -y sudo aptitude install -y build-essential zi

只看标题已吓尿

wordpress大法好

好吧 我以为是赛门铁克的那个。。。。。。。

一键ghost

博客

@我的印象笔记

此ghost非彼ghost

ghost？

今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost。

Ghost是一款设计优美的发布平台，很容易使用且对任何人都免费。它是免费的开源软件（FOSS），它的源码在Github上。截至2015年1月（LCTT 译注：原文为2014，应为2015），它的界面很简单还有分析面板。编辑使用的是很便利的分屏显示。

![](/data/attachment/album/201502/24/214346i8120myy026am1yy.png)

因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程：

### 1. 升级Ubuntu

第一步是运行Ubuntu软件升级并安装一系列需要的额外包。

```
sudo apt-get update
sudo apt-get upgrade -y
sudo aptitude install -y build-essential zip vim wget

```

### 2. 下载并安装 Node.js 源码

```
wget http://nodejs.org/dist/node-latest.tar.gz
tar -xzf node-latest.tar.gz
cd node-v*

```

现在，我们使用下面的命令安装Node.js：

```
./configure
make
sudo make install

```

### 3. 下载并安装Ghost

```
sudo mkdir -p /var/www/
cd /var/www/
sudo wget https://ghost.org/zip/ghost-latest.zip
sudo unzip -d ghost ghost-latest.zip
cd ghost/
sudo npm install --production

```

### 4. 配置Ghost

```
sudo nano config.example.js

```

在“Production”字段，将：

```
host: '127.0.0.1',

```

修改成

```
host: '0.0.0.0',

```

#### 创建Ghost用户

```
sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
sudo chown -R ghost:ghost /var/www/ghost/

```

现在启动Ghost，你需要以“ghost”用户登录。

```
su - ghost
cd /var/www/ghost/

```

现在，你已经以“ghost”用户登录，并可启动Ghost：

```
npm start --production

```

---

via: <http://linoxide.com/ubuntu-how-to/install-ghost-ubuntu-server-14-04/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


apt-get 和 apt-cache 命令实例展示

Summary: apt-get和apt-cache是Ubuntu Linux中的命令行下的包管理工具。 apt-get的GUI版本是Synaptic包管理器。本篇中我们会展示apt-get和apt-cache命令的15个不同例子。  示例：1 列出所有可用包 linuxtechi@localhost:~$ apt-cache pkgnames account-plugin-yahoojp ceph-fuse dvd+rw-tools e3 gnome-commander-data grub-gfxpayload-lists gweled .......................................  示例：2 用关键字搜索包 这个命令在你不确定包名时很有用，只要在apt-cache（LCTT 译注：这里原文是apt-get，应为笔误）后面输入与包相关的关键字即可。

mark

收藏

这图标。。//@LR机器学习计算机视觉:转发微博

@有道云笔记收藏

马克

mark

老师用Ubuntu?

@mark

good

@印象笔记

收藏

学习

//@LR机器学习计算机视觉:转发微博

@罩骁MI 这才是官方的

回复@木木小基友:哦了

apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具。 apt-get的GUI版本是Synaptic包管理器。本篇中我们会展示apt-get和apt-cache命令的15个不同例子。

![](/data/attachment/album/201502/24/220223sgmr8mpxopz4u44x.jpg)

### 示例：1 列出所有可用包

```
linuxtechi@localhost:~$ apt-cache pkgnames
account-plugin-yahoojp
ceph-fuse
dvd+rw-tools
e3
gnome-commander-data
grub-gfxpayload-lists
gweled
.......................................

```

### 示例：2 用关键字搜索包

这个命令在你不确定包名时很有用，只要在apt-cache（LCTT 译注：这里原文是apt-get，应为笔误）后面输入与包相关的关键字即可。

```
linuxtechi@localhost:~$ apt-cache search "web server"
apache2 - Apache HTTP Server
apache2-bin - Apache HTTP Server (binary files and modules)
apache2-data - Apache HTTP Server (common files)
apache2-dbg - Apache debugging symbols
apache2-dev - Apache HTTP Server (development headers)
apache2-doc - Apache HTTP Server (on-site documentation)
apache2-utils - Apache HTTP Server (utility programs for web servers)
......................................................................

```

**注意**： 如果你安装了“**apt-file**”包，我们就可以像下面那样用配置文件搜索包。

```
linuxtechi@localhost:~$ apt-file search nagios.cfg
ganglia-nagios-bridge: /usr/share/doc/ganglia-nagios-bridge/nagios.cfg
nagios3-common: /etc/nagios3/nagios.cfg
nagios3-common: /usr/share/doc/nagios3-common/examples/nagios.cfg.gz
pnp4nagios-bin: /etc/pnp4nagios/nagios.cfg
pnp4nagios-bin: /usr/share/doc/pnp4nagios/examples/nagios.cfg

```

### 示例：3 显示特定包的基本信息

```
linuxtechi@localhost:~$ apt-cache show postfix
Package: postfix
Priority: optional
Section: mail
Installed-Size: 3524
Maintainer: LaMont Jones <lamont@debian.org>
Architecture: amd64
Version: 2.11.1-1
Replaces: mail-transport-agent
Provides: default-mta, mail-transport-agent
.....................................................

```

### 示例：4 列出包的依赖

```
linuxtechi@localhost:~$ apt-cache depends postfix
postfix
 Depends: libc6
 Depends: libdb5.3
 Depends: libsasl2-2
 Depends: libsqlite3-0
 Depends: libssl1.0.0
 |Depends: debconf
 Depends: <debconf-2.0>
 cdebconf
 debconf
 Depends: netbase
 Depends: adduser
 Depends: dpkg
............................................

```

### 示例：5 使用apt-cache显示缓存统计

```
linuxtechi@localhost:~$ apt-cache stats
Total package names: 60877 (1,218 k)
Total package structures: 102824 (5,758 k)
 Normal packages: 71285
 Pure virtual packages: 1102
 Single virtual packages: 9151
 Mixed virtual packages: 1827
 Missing: 19459
Total distinct versions: 74913 (5,394 k)
Total distinct descriptions: 93792 (2,251 k)
Total dependencies: 573443 (16.1 M)
Total ver/file relations: 78007 (1,872 k)
Total Desc/File relations: 93792 (2,251 k)
Total Provides mappings: 16583 (332 k)
Total globbed strings: 171 (2,263 )
Total dependency version space: 2,665 k
Total slack space: 37.3 k
Total space accounted for: 29.5 M

```

### 示例：6 使用 “apt-get update” 更新仓库

使用命令“apt-get update”, 我们可以重新从源仓库中同步文件索引。包的索引从“/etc/apt/sources.list”中检索。

```
linuxtechi@localhost:~$ sudo apt-get update
 Ign http://extras.ubuntu.com utopic InRelease
 Hit http://extras.ubuntu.com utopic Release.gpg
 Hit http://extras.ubuntu.com utopic Release
 Hit http://extras.ubuntu.com utopic/main Sources
 Hit http://extras.ubuntu.com utopic/main amd64 Packages
 Hit http://extras.ubuntu.com utopic/main i386 Packages
 Ign http://in.archive.ubuntu.com utopic InRelease
 Ign http://in.archive.ubuntu.com utopic-updates InRelease
 Ign http://in.archive.ubuntu.com utopic-backports InRelease
 ................................................................

```

### 示例：7 使用apt-get安装包

```
linuxtechi@localhost:~$ sudo apt-get install icinga

```

上面的命令会安装叫“icinga”的包。

### 示例：8 升级所有已安装的包

```
linuxtechi@localhost:~$ sudo apt-get upgrade

```

### 示例：9 更新特定的包

在apt-get命令中的“install”选项后面接上“-only-upgrade”用来更新一个特定的包，如下所示：

```
linuxtechi@localhost:~$ sudo apt-get install filezilla --only-upgrade

```

### 示例：10 使用apt-get卸载包

```
linuxtechi@localhost:~$ sudo apt-get remove skype

```

上面的命令只会删除skype包，如果你想要删除它的配置文件，在apt-get命令中使用“purge”选项。如下所示：

```
linuxtechi@localhost:~$ sudo apt-get purge skype

```

我们可以结合使用上面的两个命令：

```
linuxtechi@localhost:~$ sudo apt-get remove --purge skype

```

### 示例：11 在当前的目录中下载包

```
linuxtechi@localhost:~$ sudo apt-get download icinga
Get:1 http://in.archive.ubuntu.com/ubuntu/ utopic/universe icinga amd64 1.11.6-1build1 [1,474 B]
Fetched 1,474 B in 1s (1,363 B/s)

```

上面的目录会把icinga包下载到你的当前工作目录。

### 示例：12 清理本地包占用的磁盘空间

```
linuxtechi@localhost:~$ sudo apt-get clean

```

上面的命令会清空apt-get所下载的包占用的磁盘空间。

我们也可以使用“**autoclean**”选项来代替“**clean**”，两者之间主要的区别是autoclean清理不再使用且没用的下载。

```
linuxtechi@localhost:~$ sudo apt-get autoclean
Reading package lists... Done
Building dependency tree
Reading state information... Done

```

### 示例：13 使用“autoremove”删除包

当在apt-get命令中使用“autoremove”时，它会删除为了满足依赖而安装且现在没用的包。

```
linuxtechi@localhost:~$ sudo apt-get autoremove icinga

```

### 示例：14 显示包的更新日志

```
linuxtechi@localhost:~$ sudo apt-get changelog apache2
Get:1 Changelog for apache2 (http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.4.10-1ubuntu1/changelog) [195 kB]
Fetched 195 kB in 3s (60.9 kB/s)

```

上面的命令会下载apache2的更新日志，并在你屏幕上分页显示。

### 示例：15 使用 “check” 选项显示损坏的依赖关系

```
linuxtechi@localhost:~$ sudo apt-get check
Reading package lists... Done
Building dependency tree
Reading state information... Done

```

---

via: <http://www.linuxtechi.com/ubuntu-apt-get-apt-cache-commands-examples/>

作者：[Pradeep Kumar](http://www.linuxtechi.com/author/pradeep/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


在CentOS/RHEL/Scientific Linux 6 & 7 上安装Telnet

Summary: 声明： 在安装和使用Telnet之前，需要记住以下几点。  在公网(WAN)中使用Telnet是非常不好的想法。它会以明文的格式传输登入数据。每个人都可以看到明文。 如果你还是需要Telnet，强烈建议你只在局域网内部使用。 你可以使用SSH作为替代方法。但是确保不要用root用户登录。   Telnet是什么？ Telnet 是用于通过TCP/IP网络远程登录计算机的协议。一旦与远程计算机建立了连接，它就会成为一个虚拟终端且允许你与远程计算机通信。 在本篇教程中，我们会展示如何安装Telnet并且如何通过Telnet访问远程系统。 安装 打开终端并输入下面的命令来

@有道云笔记收藏

@我的印象笔记

#### 声明：

在安装和使用Telnet之前，需要记住以下几点。

* 在公网(WAN)中使用Telnet是非常不好的想法。它会以明文的格式传输登入数据。每个人都可以看到明文。
* 如果你还是需要Telnet，强烈建议你只在局域网内部使用。
* 你可以使用**SSH**作为替代方法。但是确保不要用root用户登录。

![](/data/attachment/album/201502/24/223754ptwuudt0tpt2uu2w.png)

### Telnet是什么？

[Telnet](http://en.wikipedia.org/wiki/Telnet) 是用于通过TCP/IP网络远程登录计算机的协议。一旦与远程计算机建立了连接，它就会成为一个虚拟终端且允许你与远程计算机通信。

在本篇教程中，我们会展示如何安装Telnet并且如何通过Telnet访问远程系统。

### 安装

打开终端并输入下面的命令来安装telnet：

```
yum install telnet telnet-server -y

```

现在telnet已经安装在你的服务器上了。接下来编辑文件**/etc/xinetd.d/telnet**：

```
vi /etc/xinetd.d/telnet

```

设置 **disable = no**:

```
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

```

保存并退出文件。记住我们不必在CentOS 7做这步。

接下来使用下面的命令重启telnet服务：

在CentOS 6.x 系统中：

```
service xinetd start

```

让这个服务在每次重启时都会启动：

在CentOS 6上：

```
chkconfig telnet on
chkconfig xinetd on

```

在CentOS 7上：

```
systemctl start telnet.socket
systemctl enable telnet.socket

```

让telnet的默认端口**23**可以通过防火墙和路由器。要让telnet端口可以通过防火墙，在CentOS 6.x系统中编辑下面的文件：

```
vi /etc/sysconfig/iptables

```

加入如下行“-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT”：

```
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

```

保存并退出文件。重启iptables服务：

```
service iptables restart

```

在CentOS 7中，运行下面的命令让telnet服务可以通过防火墙。

```
firewall-cmd --permanent --add-port=23/tcp
firewall-cmd --reload

```

就是这样。现在telnet服务就可以使用了。

#### 创建用户

创建一个测试用户，比如用户名是“**sk**”，密码是“**centos**“:

```
useradd sk
passwd sk

```

#### 客户端配置

安装telnet包：

```
yum install telnet

```

在基于DEB的系统中：

```
sudo apt-get install telnet

```

现在，打开终端，尝试访问你的服务器（远程主机）。

如果你的客户端是Linux系统，打开终端并输入下面的命令来连接到telnet服务器上。

```
telnet 192.168.1.150

```

输入服务器上已经创建的用户名和密码：

示例输出:

```
Trying 192.168.1.150...
Connected to 192.168.1.150.
Escape character is '^]'.

Kernel 3.10.0-123.13.2.el7.x86_64 on an x86_64
server1 login: sk
Password:
[sk@server1 ~]$

```

如你所见，已经成功从本地访问远程主机了。

如果你的系统是windows，进入**开始 -> 运行 -> 命令提示符**。

在命令提示符中，输入命令：

```
telnet 192.168.1.150

```

**192.168.1.150**是远程主机IP地址。

现在你就可以连接到你的服务器上了。

就是这样。

干杯！

---

via: <http://www.unixmen.com/installing-telnet-centosrhelscientific-linux-6-7/>

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

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


如何在CentOS 7中禁止IPv6

Summary: 最近，我的一位朋友问我该如何禁止IPv6。在搜索了一番之后，我找到了下面的方案。下面就是在我的CentOS 7 迷你服务器禁止IPv6的方法。  你可以用两个方法做到这个。 方法 1 编辑文件/etc/sysctl.conf， vi /etc/sysctl.conf  添加下面的行： net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1  如果你想要为特定的网卡禁止IPv6，比如，对于enp0s3，添加下面的行。 net.ipv6.conf.enp0s3.disable_ipv6 = 1  保存并退出文件。 执行下面的命令来使设置生效。 sysctl -p  方法 2 要在运行的系统中禁止IPv6，依次输

@我的印象笔记

正需要这个呢！！！！

@我的印象笔记

正需要这个呢！！！！

禁用IPV6的原因是什么呢？ 即使它是启用的，我们不用它不就可以了？还需要禁用吗？

我也不知道为啥。。。

为什么重新开机之后，又有了

奈斯

最近，我的一位朋友问我该如何禁止IPv6。在搜索了一番之后，我找到了下面的方案。下面就是在我的CentOS 7 迷你服务器禁止IPv6的方法。

![](/data/attachment/album/201502/24/224745fkdfeg972z7rwett.jpg)

你可以用两个方法做到这个。

### 方法 1

编辑文件**/etc/sysctl.conf**，

```
vi /etc/sysctl.conf

```

添加下面的行：

```
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

```

如果你想要为特定的网卡禁止IPv6，比如，对于enp0s3，添加下面的行。

```
net.ipv6.conf.enp0s3.disable_ipv6 = 1

```

保存并退出文件。

执行下面的命令来使设置生效。

```
sysctl -p

```

### 方法 2

要在运行的系统中禁止IPv6，依次输入下面的命令：

```
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

```

或者，

```
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

```

就是这样。现在IPv6已经禁止了。

### 我在禁止IPv6后遇到问题怎么办

你可能在禁止IPv6后遇到一些问题

#### 问题1：

如果你在禁止IPv6后SSH遇到问题，按照下面的做。

编辑 **/etc/ssh/sshd\_config** 文件

vi /etc/ssh/sshd\_config

找到下面的行：

```
#AddressFamily any

```

把它改成：

```
AddressFamily inet

```

或者，在这行的前面去掉注释**(#)**：

```
#ListenAddress 0.0.0.0

```

接着重启ssh来使改变生效。

```
systemctl restart sshd

```

#### 问题2：

如果你在禁止Ipv6后启动postfix遇到问题，编辑**/etc/postfix/main.cf**：

```
vi /etc/postfix/main.cf

```

注释掉配置中的localhost部分，并且使用ipv4回环。

```
#inet_interfaces = localhost
inet_interfaces = 127.0.0.1

```

就是这样，干杯！

---

via: <http://www.unixmen.com/disable-ipv6-centos-7/>

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

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


如何在 Ubuntu 14.04 里面配置 chroot 环境

Summary: 你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式，而在 linux 中，一个典型的方式就是 chroot 环境。 在这份教程中，我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目，以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行。 学会快速搭建一个简单的 chroot 环境是一项非常实用的技能，绝大多数系统管理员都能从中受益。 Chroot 环境 一个 chroot 环境就是通过系统调用，将一个本地目录临时变成根

[good]

@mark

配图好看，就是挤了点

回复@Linux中国:刚刚还在盘算着自己建一栋这样的房子住要花多少钱，照你这么说，不用花钱就能住啊[花心]//@Linux中国:哈哈，监狱还要啥好条件~~//@库库尔族:配图好看，就是挤了点

Chroot

chroot隔离环境

你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式，而在 linux 中，一个典型的方式就是 chroot 环境。

在这份教程中，我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目，以下这些步骤都在 **Ubuntu 14.04** 虚拟专用服务器(VPS)上执行。

学会快速搭建一个简单的 chroot 环境是一项非常实用的技能，绝大多数系统管理员都能从中受益。

### Chroot 环境

一个 chroot 环境就是通过系统调用，将一个本地目录临时变成根目录。一般所说的系统根目录就是挂载点"/"，然而使用 chroot 命令后，你可以使用其它目录作为根目录。

![](/data/attachment/album/201502/24/230540fbha1a16bj0vmz16.png)

原则上，任何运行在 chroot 环境内的应用都不能访问系统中其他信息（LCTT译注：使用 chroot 把一个目录变成根目录，在里面运行的应用只能访问本目录内的文件，无法访问到目录外的文件。然而，运行在 chroot 环境的应用可以通过 sysfs 文件系统访问到环境外的信息，所以，这里有个“原则上”的修饰语）。

### Chroot 环境的用处

>
> * 测试一个不稳定的应用服务不会影响到整个主机系统。
> * 就算使用 root 权限做了些不当的操作，把 chroot 环境搞得一塌糊涂，也不会影响到主机系统。
> * 可以在你的系统中运行另外一个操作系统。
>
>
>

举个例子，你可以在 chroot 环境中编译、安装、测试软件，而不去动真实的系统。你也可以**在64位环境下使用 chroot 创建一个32位环境，然后运行一个32位的程序**（LCTT泽注：如果你的真实环境是32位的，那就不能 chroot 一个64位的环境了）。

但是为了安全考虑，chroot 环境为非特权用户设立了非常严格的限制，而不是提供完整的安全策略。如果你需要的是有完善的安全策略的隔离方案，可以考虑下 LXC、Docker、vservers等等。

### Debootstrap 和 Schroot

使用 chroot 环境需要安装 **debootstrap** 和 **schroot**，这两个软件都在 Ubuntu 的镜像源中。其中 schroot 用于创建 chroot 环境。

**Debootstrap** 可以让你通过镜像源安装任何 Debian（或基于 Debian 的）系统，装好的系统会包含最基本的命令。

**Schroot** 命令允许用户使用相同的机制去创建 chroot 环境，但在访问 chroot 环境时会做些权限检查，并且会允许用户做些额外的自动设置，比如挂载一些文件系统。

在 Ubuntu 14.04 LTS 上，我们可以通过两步来实现这个功能：

### 1. 安装软件包

第一步，在Ubuntu 14.04 LTS 主机系统上安装 debootstrap 和 schroot：

```
$ sudo apt-get install debootstrap
$ sudo apt-get install schroot

```

### 2. 配置 Schroot

现在我们有工具在手，需要指定一个目录作为我们的 chroot 环境。这里创建一个目录先：

```
sudo mkdir /linoxide

```

编辑 schroot 的配置文件：

```
sudo nano /etc/schroot/schroot.conf

```

再提醒一下，我们现在是在 Ubuntu 14.04 LTS 系统上。如果我们想测试一个软件包能不能在 Ubuntu 13.10（代号是“Saucy Salamander”） 上运行，就可以在配置文件中添加下面的内容：

```
[saucy]
description=Ubuntu Saucy
location=/linoxide
priority=3
users=arun
root-groups=root

```

![](/data/attachment/album/201502/24/230709b1qzbtq3bp740yzt.png)

根据你的系统要求，调整上面的配置信息。

### 3. 使用 debootstrap 安装32位 Ubuntu 系统

Debootstrap 命令会在你的 **chroot 环境**里面下载安装一个最小系统。只要你能访问镜像源，你就可以安装任何基于 Debian 的系统版本。

前面我们已经创建了 **/linoxide** 目录用于放置 chroot 环境，现在我们可以在这个目录里面运行 debootstrap 了：

```
cd /linoxide
sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/
sudo chroot /linoxide /debootstrap/debootstrap --second-stage

```

你可以将 --arch 的参数换成 i386 或其他架构，只要存在这种架构的镜像源。你也可以把镜像源 <http://archive.ubuntu.com/ubuntu/> 换成离你最近的镜像源，具体可参考 [Ubuntu 官方镜像主页](https://launchpad.net/ubuntu/+archivemirrors)。

**注意：如果你是在64位系统中创建32位系统，你需要在上面第3行命令中加入 --foreign 选项，就像下面的命令：**

```
sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

```

下载需要一段时间，看你网络带宽性能。最小系统大概有500M。

### 4. 完成 chroot 环境

安装完系统后，我们需要做一些收尾工作，确保系统运行正常。首先，保证主机的 fstab 程序能意识到 chroot 环境的存在：

```
sudo nano /etc/fstab

```

在文件最后面添加下面的配置：

```
proc /linoxide/proc proc defaults 0 0
sysfs /linoxide/sys sysfs defaults 0 0

```

保存并关闭文件。

挂载一些文件系统到 chroot 环境：

```
$ sudo mount proc /linoxide/proc -t proc
$ sudo mount sysfs /linoxide/sys -t sysfs

```

复制 /etc/hosts 文件到 chroot 环境，这样 chroot 环境就可以使用网络了：

```
$ sudo cp /etc/hosts /linoxide/etc/hosts

```

最后使用 schroot -l 命令列出系统上所有的 chroot 环境：

```
$ schroot -l

```

使用下面的命令进入 chroot 环境：

```
$ sudo chroot /linoxide/ /bin/bash

```

测试安装的版本：

```
# lsb_release -a
# uname -a

```

为了在 chroot 环境中使用图形界面，你需要设置 DISPLAY 环境变量：

```
$ DISPLAY=:0.0 ./apps

```

目前为止，我已经成功地在 Ubuntu 14.04 LTS 上安装了 Ubuntu 13.10。

退出 chroot 环境：

```
# exit

```

清理一下，卸载文件系统：

```
$ sudo umount /test/proc
$ sudo umount /test/sys

```

---

via: <http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04/>

作者：[Arun Pyasi](http://linoxide.com/author/arunp/) 译者：[bazz2](https://github.com/bazz2) 校对：[wxy](https://github.com/wxy)

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


怎样在 Linux 系统中恢复已删除文件

Summary: 当用户意外地删除了一个仍然需要的文件时，大多数情况下，是没有简便的方法可以重新找回或重建这个文件。不过，幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件，该文件并没有消失，只是被隐藏了一段时间。 这里将解释它是如何工作的。在一个文件系统中，有一个叫做 文件分配表 的东西，这个表跟踪文件在存储单元（如硬盘， MicroSD 卡，闪存驱动器等等）中的位置。当一个文件被删除，文件系统将会在文件分配表中执行以下两个任务之一：这个文件在文件分配表上的条目被标记为 自由空间 或删除文件分配表里这个文件的条目，且

[思考]

Repost

难道不是从回收站里找？

@我的印象笔记

mark

diskgenius

好东西！

mark

命令界面没有回收站。

@我的印象笔记

Repost

mark

需要。

存

get get get ！

【好文分享】testdisk是一款非常优秀的软件

原来这也是

学习

@我的印象笔记

@我的印象笔记

讲解非常详细，关键的地方万字描述清晰，而且配有关键步骤的截图，大赞！！！对着做了以便，能看到已删除的文件，但因为我在恢复前新创建文件了，而且恢复是目录选错了，导致只能恢复一部分......但此文绝对是实用且大好的文章，已收藏，感谢作者

您的赞赏，是我们的骄傲！

mark

当用户意外地删除了一个仍然需要的文件时，大多数情况下，是没有简便的方法可以重新找回或重建这个文件。不过，幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件，该文件并没有消失，只是被隐藏了一段时间。

这里将解释它是如何工作的。在一个文件系统中，有一个叫做 文件分配表 的东西，这个表跟踪文件在存储单元（如硬盘， MicroSD 卡，闪存驱动器等等）中的位置。当一个文件被删除，文件系统将会在文件分配表中执行以下两个任务之一：这个文件在文件分配表上的条目被标记为 “自由空间” 或删除文件分配表里这个文件的条目，且将相应的空间被标记为自由空间 。现在，如果有一个新的文件需要被放置在一个存储单元上，操作系统将会把这个文件放置到标记为空位的地方。在新文件被写入到这个空位后，被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时，用户绝对不能再对任何文件进行操作，因为假如该文件对应的“空位”被占用，这个文件就永远也不能恢复了。

![](/data/attachment/album/201502/25/105434g7z0wrwdh76fdw3d.jpg)

### 恢复软件是如何工作的？

大多数的文件系统（在删除文件时）只是标记空间为空白。在这些文件系统下，恢复软件查看文件分配表这个文件，然后复制被删除的文件到另外的存储单元中。假如该文件被复制到其它需要恢复的被删除的存储单元中，那么用户将有可能会失去那个所需的删除文件。

文件系统很少会擦除文件分配表中的条目。假如文件系统真的这样做了， 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头，所有文件都拥有一个特殊的编码字符串，它们位于文件的最前面，也被叫做 魔法数字。例如，一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以，假如要恢复该类型的文件，恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件，则恢复软件将会查找十六进制的魔法数字 “25504446”，这恰恰是 ASCII 编码中的 “%PDF”。恢复软件将会查找所有的魔法数字，然后用户可以选择恢复哪个已删除的文件。

假如一个文件的部分被覆写了，则整个文件就会被损坏。通常这个文件可以被恢复，但是其中的内容可能已经没有什么用处。例如，恢复一个已损坏的 JPEG 文件将会是无意义的，因为图片查看器不能从这个损坏的文件产生一幅图片。因此，即使用户拥有了这个文件，该文件也将毫无用处。

### 设备的位置：

在我们继续之前，下面的一些信息将会对指引恢复软件找到正确的存储单元起到一定的帮助。所有的设备均挂载在 /dev/ 目录下。操作系统赋予每个设备的名称（并不是管理员给予每个分区或设备的名称）遵循一定的命名规律。

第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型，在这里指的是 SATA，但字母 “s” 也可能指的是 SCSI、 FireWire（火线端口）或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数，即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。没有分区数字的设备名代表该设置的所有分区。对于上面的例子，对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ，这对应 PATA 硬盘（IDE）。

以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘（sda），这个设备有 4 个分区- sda1、 sda2、 sda3 和 sda4 。该用户删除了第三个分区，但直到格式化第四个分区之前，第四个分区名 sda4 都将保留不变。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡（sdb），又增加了一个带有一个分区 -hda1- 的 IDE 硬盘 ，接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡（sdb）。现在，SCSI 硬盘的名称仍然为 sdc，但如果这个 SCSI 被移除接着再被插入，则它的名称将变为 sdb。虽然还有其他的存储设备存在， 那个 IDE 硬盘的名称仍会有一个 “a”， 因为它是第一个 IDE 硬盘，IDE 设备的命名与 SCSI、 SATA、 FireWire 和 USB 设备要分开计数。

### 使用 TestDisk 进行恢复：

每个恢复软件有其不同的功能，特征及支持的不同文件系统。下面是一些关于 使用 TestDisk 在各种文件系统中恢复文件的指南。

#### FAT16、 FAT32、 exFAT (FAT64)、 NTFS 以及 ext2/3/4：

TestDisk 是一个运行在 Linux、 \*BSD、 SunOS、 Mac OS X、 DOS 和 Windows 等操作系统下的开源的自由软件。 TestDisk 可以从下面的链接中找到 ：<http://www.cgsecurity.org/wiki/TestDisk>。TestDisk 也可以通过键入 sudo apt-get install testdisk 来安装。TestDisk 有着许多的功能，但这篇文章将只关注恢复文件这个功能。

使用 root 权限从终端中打开 TestDisk 可以通过键入 sudo testdisk 命令。

现在， TestDisk 命令行应用将会被执行。终端的显示将会改变。TestDisk 询问用户它是否可以保留日志，这完全由用户决定。假如一个用户正从系统存储中恢复文件，则不必保留日志。可选择的选项有“生成”、 “追加” 和 “无日志”。假如用户想保留日志，则日志将会保留在该用户的主目录。

![](/data/attachment/album/201502/25/105436uwecycts99wwsy9c.jpg)

在接着的屏幕中，存储设备以 /dev/\*的方式被罗列出来。对于我的系统，系统的存储单元为 /dev/sda，这意味着我的存储单元为 一个 SATA硬盘（sd）且它是第一个硬盘（a）。每个存储单元的容量以 Gigabyte（千兆字节）为单位显示的。使用上下键来选择一个存储设备然后点击进入。

![](/data/attachment/album/201502/25/105439itbspn7drs6san5r.jpg)

下一屏显示出一个列有分区表（也叫做分区映射表）的清单。正如文件有文件配置表，分区有着分区表。分区是存储设备上的分段。例如在几乎所有的 Linux 系统中，至少存在两种分区类型 - EXT3/4 和 Swap 。每一个分区表将会在下面被简要地描述。TestDisk 并不支持所有类型的分区表，所以这并不是完整的列表。

![](/data/attachment/album/201502/25/105441pakd3jd7fihfdaxj.jpg)

* **Intel** - 这类分区表在 Windows 系统和许多的 Linux 系统中非常普遍，它也常常称作 MBR 分区表。
* **EFI GPT** - 这种类型的分区表通常用在 Linux 系统中。对于 Linux 系统，这种分区表是最为推荐的， 因为逻辑分区或扩展分区的概念并不适用于 GPT (GUID Partition Table) 分区表。 这意味着，如果每个分区中有一个 Linux 系统，一个 Linux 用户可以从多种类型的 Linux 系统中进行多重启动。当然使用 GPT 分区表还有其他的优势，但那些已超出了本文的讨论范围。
* **Humax** - Humax 分区映射表适用于韩国公司 Humax 生产的设备。
* **Mac** - Apple 分区映射表 (APM) 适用于 Apple 的设备。
* **None** - 某些设备并没有分区表。例如，许多 Subor 游戏控制台不使用分区映射表。如果一个用户试图以其它分区表类型从这类设备中恢复文件，用户就会困扰 TestDisk 为何找卟到任何的文件系统或者文件。
* **Sun** - Sun 分区表适用于 Sun 系统。
* **Xbox** -Xbox 适用于使用 Xbox 分区映射表的存储设备。

假如用户选择了 “Xbox” ，尽管他的系统使用了 GPT 分区表， 那么 TestDisk 将不能找到任何分区或文件系统。假如 TestDisk 按照用户的选择执行，则它可能猜测错误。（下面的图片显示的是当分区表类型错误时的输出）

![](/data/attachment/album/201502/25/105443izh5h604yhqe6e5d.jpg)

当用户为他们的设备选择了正确的选项，则在下一屏中，选择 “高级” 选项。

![](/data/attachment/album/201502/25/105445a6ld97gdq99sz5g7.jpg)

现在，用户将看到一个列有用户存储设备中所有的文件系统或分区的列表。假如用户选择了错误的分区映射表，则在这一步中用户就将会知道他们做出了错误的选择。假如没有错误，通过移动文字光标来高亮选择含有被删除文件的分区。使用 左右键来高亮位于终端底部的 “列表”。接着，按下回车确认。

![](/data/attachment/album/201502/25/105447ovkm1kvmzp2mx5cg.jpg)

新的一屏便会呈现出列有文件和目录的列表。那些白色的文件名就是未被删除的文件，而红色的文件名是那些已被删除的文件。最右边的一列是文件的名称，从右到左方向的接着一列是文件的创建日期，再往左的一列是文件的大小（以 byte/ 比特为单位），最左边带有“-”，“d” ,“r”, “w” 和"x"的一列则代表的是文件的权限情况。“d” 表示该文件为一个目录，其他的权限术语与本文关系不大。在列表的最顶端以“.”代表的一项表示当前目录，第二行以".."代表的一项表示当前目录的上级目录，所以用户可以通过选择目录所在行到达该目录。

![](/data/attachment/album/201502/25/105454tz8xhlx1hh10plhx.jpg)

举个例子，我想进入"Xaiml\_Dataset" 目录，该目录基本上由被删除的文件组成。通过按键盘上的 "c"键，我将恢复文件 "computers.xaiml"，接着我被询问选择一个目标目录，当然，我应该放置该文件到另一个分区中。现在，当我在我的家目录时，按下了“c”键。（选择目标目录时）哪个目录被高亮并没有什么影响，当前目录就是目标目录，在屏幕的上方，将会显示“复制完成”的消息。在我的家目录中便会有一个名为"Xaiml\_Dataset"的目录，里面里有一个 Xaiml 文件。 假如我在更多的已删除文件上按“c” 键，则这些文件将会被放置到新的文件夹中而无需再向我询问目标目录。

![](/data/attachment/album/201502/25/105458r4d1dt34tq6h264j.jpg)

![](/data/attachment/album/201502/25/105502w2eaueg8bgoa828t.jpg)

当这些步骤完成后，重复按“q”键直到看到正常的终端模样。目录"Xaiml\_Dataset" 只能被 root 用户访问。为了解决这个问题，使用 root 权限改变该目录及其子目录的权限。做完这些后，文件便被恢复了且用户可以访问它们。

### 特别的 ReiserFS：

为了从 ReiserFS 文件系统中恢复一个文件，首先需将分区中的所有文件做一个备份。因为如果发生某些错误， 这个方法可能会引起文件丢失。接着执行下面的命令，其中 DEVICE指的是那些以 sda2 形式命名的设备。一些文件将被放入 lost+found 目录而其他则会保存到原先被删除的位置。

```
reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE

```

### 恢复被某个程序打开的删除文件：

假设用户意外地删除了一个文件，且该文件被某个程序打开。虽然在硬盘中该文件被删除了，但这个程序正使用着位于 RAM 中的该文件的副本。幸好，我们有两种简单的解决方法来恢复该文件。

假如这个软件有保存功能，如文本编辑器，则用户可以重新保存该文件，这样，文本编辑器可以将该文件写入硬盘中。

假设在音乐播放器中有一个 MP3 文件，而该音乐播放器并不能保存该 MP3 文件，则这种情形下需要比先前花更多的时间来恢复文件。不幸的是，这种方法并不能保证在所有的系统和应用中有效。首先，键入下面的命令。

```
lsof -c smplayer | grep mp3

```

上面的命令会列出所有由 smplayer 使用的文件，这个列表由 grep 命令通过管道搜索 mp3 。命令的输入类似于下面：

```
smplayer  10037 collier  mp3    169r      8,1  676376  1704294 /usr/bin/smplayer

```

现在，键入下面的命令来直接从 RAM（在 Linux 系统中，/proc/映射到 RAM）中恢复文件，并复制该文件到选定的文件夹中。其中 cp 指的是复制命令，输出中的数字 10037 来自于进程数，输出中的数字 169 指的是文件描述符，"~/Music/"为目标目录，最后的 "music.mp3" 为用户想恢复的文件的名称。

```
cp /proc/10037/fd/169 ~/Music/music.mp3

```

### 真正的删除：

为确保一个文件不能被恢复，可以使用一个命令来 “擦除” 硬盘。擦除硬盘实际上是向硬盘中写入无意义的数据。例如，许多擦除程序向硬盘中写入零，随机字母或随机数据。不会有空间被占用或丢失，擦除程序只是对空位进行重写覆盖。假如存储单元被文件占满而没有空余空间，则所有先前被删除的文件将会消失而不能恢复。

擦除硬盘的目的是确保隐私数据不被他人看见。举个例子，一个公司可能预订了一些新的电脑，总经理决定将旧的电脑卖掉，然而，新的电脑拥有者可能会看到公司的一些机密或诸如信用卡号码，地址等顾客信息。幸好，公司的电脑技术人员可以在卖掉这些旧电脑之前，擦除这些硬盘。

为了安装擦除程序 secure-delete，键入 sudo apt-get install secure-delete，这个命令将会安装一个包含 4 个程序的程序集，用以确保被删除的文件不能被恢复。

* srm - 永久删除一个文件。使用方法： srm -f ./secret\_file.txt
* sfill - 擦除空白空间。使用方法: sfill -f /mount/point/of/partition
* sswap - 擦除 swap 空间。使用方法: sswap -f /dev/SWAP\_DEVICE

假如电脑实际去清除那些删除的文件，那么就需要花费更长的时间去执行删除任务。将某些空间标记为空位是快速且容易的，但使得文件永远消失需要花费一定的时间。例如，擦除一个存储单元，可能需要花费几个小时的时间（根据磁盘容量大小）。总之，现在的系统工作的就挺好，因为即便用户清空了垃圾箱，他们仍然有另一次机会来改变他们当初的想法（或错误）。

---

via: <http://www.linux.org/threads/undelete-files-on-linux-systems.4316/>

作者：[DevynCJohnson](http://www.linux.org/members/devyncjohnson.4843/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[wxy](https://github.com/wxy)

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


认识Vivaldi——一款为高手级用户定制的全新网页浏览器

Summary:
一款为了满足高手级用户的需要而定制的全新网页浏览器已然来临—而且它已经可以在Linux上使用了。

Vivaldi就是这个新浏览器的名字，而且它还面向64位Linux、Windows 和 Mac 机发布了技术预览版（注解：无责任测试版）。它是建立在已测试过的Chromium开源框架，Blink和Google的开源V8 JavaScript引擎（以及其他项目）的基础上。

ubuntu左边拦  chrome下面邮箱下面的那个小鸟图标是啥？

ubuntu什么主题，好帅

难道又一个颠覆浏览器现状的力作？

下了 用了一下 发现很卡 外观不错

坐等vivaldi实用以弃用桌面opera。。。

感觉好不通顺啊。

不是Twitter，就是愤怒的小鸟。其他的我是想不出来了。

应该是那个第三方的社交客户端...

ubuntu左边拦 chrome下面邮箱下面的那个小鸟图标是啥？

Ubuntu下装了Vivaldi，感觉还在发展期，可定制的东西还不算多。

linux版还没有中文，目前能在错误页面啊 flag页面看到的中文好像都是Chrome内核提供的吧？

设置页面打开后竟然不能关闭，普通页面很容易出现载入之后崩溃的情况，Vivaldi还要加油啊。

Firefox、Edge、Chrome都可以QQ一键快捷登陆，只有Opera和Vivaldi检测不到PC端的QQ登陆状态，只显示一个二维码，无法一键登录；而且注册账号，显示“这个邮箱已经关联到其他账号。”通过邮箱找回账号，又显示“找不到具有此电子邮件地址的用户。”

[![](/5a45dacd3b550e7f800ae69fcc02312db58697f0/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f53637265656e2d53686f742d323031352d30312d32372d61742d31372e33362e6a7067)](https://camo.githubusercontent.com/5a45dacd3b550e7f800ae69fcc02312db58697f0/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f53637265656e2d53686f742d323031352d30312d32372d61742d31372e33362e6a7067)

**一款为了满足高手级用户的需要而定制的全新网页浏览器已然来临—而且它已经可以在Linux上使用了。**

Vivaldi就是这个新浏览器的名字，而且它还面向64位Linux、Windows 和 Mac 机发布了技术预览版（注解：无责任测试版）。它是建立在已测试过的Chromium开源框架，Blink和Google的开源V8 JavaScript引擎（以及其他项目）的基础上。

这个世界真的还需要一个浏览器吗？Opera软件前首席执行官Jon S.von Tetzchner的构想——Vivaldi不怎么关注所要，更关注所需。

Vivaldi被制造成带有着偏向于键盘操作的tab键痴迷者所需的那种功能。并没有为那些认为Firefox复杂或是批评Chrome改动了书签按钮的用户而进行修改。

这也并不是什么俗气的营销噱头。尽管它带有‘技术预览版’标签，Vivaldi已经有了明显偏向于高手级用户们的功能。

相当多的人觉得自己被其他软件公司所生产的简化的，配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会，可以打败其他产品。

### Vivaldi功能

以下是几个Vivaldi已展示过的关键功能:

[![](/2664f756ed7a124635e8b35323270f82700ebf70/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f717569636b2e6a7067)](https://camo.githubusercontent.com/2664f756ed7a124635e8b35323270f82700ebf70/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f717569636b2e6a7067)

**快捷命令** (Ctrl + Q)是个内置的HUD应用，它可以让你快速过滤设置、选项和功能，用它打开一个书签或是隐藏状态栏，只需用你的键盘，无需鼠标点击。

**标签堆** 让你可以通过把多个不同标签分到一组来清理你的工作区，然后可以通过键盘命令或者可预览标签选择器在标签组之间进行切换。

[![](/bd1232f8bfa58d811ccbd9bb9a534b64c4660ac4/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f7461622d737461636b732e6a7067)](https://camo.githubusercontent.com/bd1232f8bfa58d811ccbd9bb9a534b64c4660ac4/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f7461622d737461636b732e6a7067)

一个可折叠的**侧边栏**藏有额外功能（就像旧Opera）包括一个（目前还不能工作的）邮箱客户端，链接，书签浏览器和可以让你截屏并做注释的笔记专区。

还提供了一大堆其他的功能，包括设置键盘快捷键，一个可以被设置在浏览器任何一个边（或完全隐藏）的标签栏，隐私选项和一个快速打开文件夹的功能。

### Opera二代的印记

[![](/9b2c2b0daaf8af29d36cbbf222714854690c588d/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f766976616c64692d73657474696e67732d696e2d7562756e74752d373530783433342e6a7067)](https://camo.githubusercontent.com/9b2c2b0daaf8af29d36cbbf222714854690c588d/687474703a2f2f7777772e6f6d677562756e74752e636f2e756b2f77702d636f6e74656e742f75706c6f6164732f323031352f30312f766976616c64692d73657474696e67732d696e2d7562756e74752d373530783433342e6a7067)

把Vivaldi当作Opera post-Presto（Opera拥有版权的旧引擎）的真正继承者并不是什么值得惊奇的事。当Opera（今天也推出了一个小更新）追求一个更轻、更好管理的一套功能时，已经剔除了它很多“高手级用户”功能。

Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮它抓住什么预期的市场份额，但是它吸引了高手级用户的眼球。他们大多数无疑已经在使用Linux了。

### 下载

有兴趣尝尝鲜？完全可以。Vivaldi可以下载到Windows，Mac以及64位Linux版本。不久的将来你还能选择Debian或RPM安装器。

请记住，它还没有完成，而且更多的功能（包括扩展、同步等等）正计划着在将来加入。

* [Download Vivaldi Tech Preview for Linux](https://vivaldi.com/#Download)

---

via: <http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users>

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

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


Linux有问必答:如何修复Chrome的"Your profile could not be opened correctly"

Summary: 提问：当我在linux打开Google Chrome 浏览器时，我已经几次收到弹出窗口，提示我的配置文件没有被正确打开（Your profile could not be opened correctly.）。每次我打开Chrome都要弹出来，我应该如何修复这个问题？  当你在你的Chrome上看见"Your profile could not be opened correctly"错误信息时，从某种程度上讲，那是因为你的Chrome配置文件数据已经损坏。这个问题经常发生在手动升级Google Chrome的时候。  修复取决于到底哪个文件损坏，你可以试试下面的几个方法。 方法一 关掉所有Chrome窗口和标签页。 进入~/.config/google-chr

Windows下遇到过，前两种方法无效，忍了一段时间，卸载删除，扫注册表，几天后再安装，好了。

win下也有这个问题。

删除当前用户，然后重新登录同步不是更简单吗

>
> **提问**：当我在linux打开Google Chrome 浏览器时，我已经几次收到弹出窗口，提示我的配置文件没有被正确打开（Your profile could not be opened correctly.）。每次我打开Chrome都要弹出来，我应该如何修复这个问题？
>
>
>

当你在你的Chrome上看见"Your profile could not be opened correctly"错误信息时，从某种程度上讲，那是因为你的Chrome配置文件数据已经损坏。这个问题经常发生在手动升级Google Chrome的时候。

[![](/c85db7fb0bdff14c0e89b0dbab0a4f9a3ca14dda/68747470733a2f2f6661726d382e737461746963666c69636b722e636f6d2f373432382f31363233383530323733375f323762646461363638355f6f2e706e67)](https://camo.githubusercontent.com/c85db7fb0bdff14c0e89b0dbab0a4f9a3ca14dda/68747470733a2f2f6661726d382e737461746963666c69636b722e636f6d2f373432382f31363233383530323733375f323762646461363638355f6f2e706e67)

修复取决于到底哪个文件损坏，你可以试试下面的几个方法。

### 方法一

关掉所有Chrome窗口和标签页。

进入~/.config/google-chrome/Default，移除或者重命名"Web Data"文件。

```
$ cd ~/.config/google-chrome/Default
$ rm "Web Data"

```

再次开打Google Chrome浏览器。

### 方法二

关掉所有Chrome窗口和标签页。

进入~/.config/google-chrome/"Profile 1"，并重命名"History"文件。

```
$ cd ~/.config/google-chrome/"Profile 1"
$ mv History History.bak

```

再次开打Google Chrome浏览器。

### 方法三

如果依然没有解决，你可以试试移除所有默认配置文件夹（~/.config/google-chrome/Default）。注意:如果这样做，你将会遗失所有之前打开的Google标签、导入的书签，浏览记录和登录数据等。

在移除之前，先关掉所有Chrome窗口和标签页

```
$ rm -rf ~/.config/google-chrome/Default

```

之后重启Google Chrome，文件夹~/.config/google-chrome/Default会自动生成。

---

via: <http://ask.xmodulo.com/your-profile-could-not-be-opened-correctly-google-chrome.html>

译者：[VicYu/Vic020](http://vicyu.net/) 校对：[Caroline](https://github.com/carolinewuyan)

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


Linux版EPUB阅读器

Summary: 如果说用平板电脑看书尚属主流的话，那么在电脑上读书就非常少见了。专注阅读16世纪的书是非常困难的了，没人希望后台蹦出QQ聊天窗口。但是如果你非要在电脑上打开电子书的话，那么你需要一个电子书阅读软件。大多数出版物支持使用EPUB格式的电子书（电子出版物）。幸运的是，linux上从不缺乏EPUB阅读器类的软件。以下是一些Linux上不错的EPUB阅读软件。 1. Calibre  先从列表中最有名的软件开始： Calibre。Calibre 不仅仅是个阅读器，它还是个电子图书馆。软件支持几乎所有的格式，集成了阅读器、管理器、一个可以从互联网下载书籍封面

这不仅可以阅读，还能连接Kindle设备，超级方便。

calibre好评！

推荐calibre，有兴趣的同学可以试试。

pc看书真是没感觉

在用

如果说用平板电脑看书尚属主流的话，那么在电脑上读书就非常少见了。专注阅读16世纪的书是非常困难的了，没人希望后台蹦出QQ聊天窗口。但是如果你非要在电脑上打开电子书的话，那么你需要一个电子书阅读软件。大多数出版物支持使用EPUB格式的电子书（电子出版物）。幸运的是，linux上从不缺乏EPUB阅读器类的软件。以下是一些Linux上不错的EPUB阅读软件。

### 1. Calibre

![](/data/attachment/album/201502/26/100945l4tdp3w32tf3rs4f.jpg)

先从列表中最有名的软件开始： [Calibre](http://calibre-ebook.com/)。Calibre 不仅仅是个阅读器，它还是个电子图书馆。软件支持几乎所有的格式，集成了阅读器、管理器、一个可以从互联网下载书籍封面的元数据编辑器、一个EPUB编辑器、新闻阅读器和一个用来下载电子书的搜索引擎。可喜的是，界面丝毫不逊色专业的阅读软件。唯一的缺点是如果你只想要一个EPUB阅读器的话，这个软件还是太大了。

### 2. FBReader

![](/data/attachment/album/201502/26/100946hiem7a9zgz55noaq.jpg)

[FBReader](http://fbreader.org/) 也是一个图书馆管理软件，但是比Calibre小。界面简洁分为两个部分：左边是文件管理、元数据编辑和下载新书等功能；右边是阅读区。如果你喜欢简洁，这个软件挺不错。我个人非常喜欢这类直观标记书籍和分类的做法。

### 3. Cool Reader

![](/data/attachment/album/201502/26/100948voih4a4hgem5jhlx.jpg)

对于那些只想想看EPUB书内容的用户，我推荐 [Cool Reader](http://crengine.sourceforge.net/)。遵循Linux应用程序的文化，Cool Reader 做了优化，每次只打开一个EPUB文件，可以使用简单的快捷键进行阅读和导航。由于程序书基于Qt开发的，所以他也遵循Qt的风格，需要大量的设置项。

### 4. Okular

![](/data/attachment/album/201502/26/100950zzj6h3tmytnfnnzm.jpg)

除了Qt应用程序，如果安装了EPUB库的话，KDE的文档阅读器[Okular](http://okular.kde.org/) 也能打开EPUB文件。尽管如此，如果你不是个KDE用户的话，不推荐这个软件。

### 5. pPub

![](/data/attachment/album/201502/26/100953khsav36bcxa8khsb.jpg)

[pPub](https://github.com/sakisds/pPub)是个老项目，Github上可以找到这个项目，它最后的更新已经是在两年前了。尽管如此，这个软件还是值得使用的，pPub是用Python编写的，基于GTK3和WebKit，是个简单轻量的软件。界面可能需要一些更新，不够简洁，但是内部却非常好。软件支持JavaScript。所以，谁来捡起这个项目呢？

### 6. epub

![](/data/attachment/album/201502/26/100955x486zmd322t833zt.jpg)

如果你只是想快速简单的查看EPUB文件的内容，不关心任何图形化界面功能的话，最好使用命令行模式打开EPUB。[epub](https://github.com/rupa/epub) 是一个用Python编写的阅读器，可以在终端环境读取EPUB文件的内容。软件可以在章节、页面间切换，没有其他的功能。这是最简洁的EPUB阅读器了。

### 7. Sigil

![](/data/attachment/album/201502/26/100957cd2dm3xf53h3f3dm.jpg)

最后介绍的这个实际上不是个EPUB阅读器，应该是个独立的编辑器。[Sigil](https://github.com/user-none/Sigil) 可以提取EPUB文件的内容并将其分离成其他格式：xhtml文本、图像、css，及其他的内容比如音频等。界面比基本的阅读器复杂，但是功能还是比较丰富的。我很喜它的标签体系，如果你对网页比较熟悉的话，这个软件是很好使用的。

总结，有很多的开源的EPUB阅读器，有一些只有最基本的功能， 另外一些功能却太多了。一般来说，我建议你选择一个最合适的使用。如果你有更好的EPUB阅读器，请在评论里告诉我们！

---

via: <http://xmodulo.com/2014/08/good-epub-reader-linux.html>

作者：[Adrien Brochard](http://xmodulo.com/author/adrien) 译者：[shipsw](https://github.com/shipsw) 校对：[wxy](https://github.com/wxy)

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