蚊章汇 - 2017年4月
type: channel
link: https://linuxcn.bwsl.wang/2017/04/
description: Linux中国社区镜像站，没有大保镖。
items: 史上最全的使用 gnome-screenshot 获取屏幕快照指南
items: pyDash：一个基于 web 的 Linux 性能监测工具
items: 十分钟带你看遍 DockerCon 2017
items: 如何在 CentOS 7 上安装 Elastic Stack
items: 在 PC 上尝试树莓派的 PIXEL OS
items: 在 Linux 上使用 Meld 比较文件夹
items: Linux 下网络协议分析器 Wireshark 使用基础
items: 用 NTP 把控时间（一）：使用概览
items: 如何在现有的 Linux 系统上添加新的磁盘
items: 关于 Linux 进程你所需要知道的一切

史上最全的使用 gnome-screenshot 获取屏幕快照指南
type: item
date: 2017-04-30T15:36:00+08:00
description: 在应用市场中有好几种屏幕截图工具，但其中大多数都是基于 GUI 的。如果你经常在 linux 命令行上工作，而且正在寻找一款优秀的功能丰富的基于命令行的屏幕截图工具，你可能会想尝试 gnome-screenshot。在本教程中，我将使用易于理解的例子来解释这个实用程序。请注意，本教程中提到的所有例子已经在 Ubuntu 16.04 LTS 上测试过，测试所使用的 gonme-screenshot 版本是 3.18.0。关于 Gnome-screenshotGnome-screenshot 是一款 GNOME 工具，顾名思义，它是一款用来对整个屏幕、一个特定的窗口或者用户所定义一些其他区域进行捕获的工具。该工具提供了几个其他的功能，包括对所捕获的截图的边界进行美化的功能。Gnome-screenshot 安装Ubuntu 系统上已经预安装了 gnome-screeshot 工具，但是如果你出于某些原因需要重新安装这款软件程序，你可以使用下面的命令来进行安装：sudo apt-get install gnome-screeshot 一旦软件安装完成后，你可以使用下面的命令来启动它：gnome-screenshot Gnome-screenshot 用法/特点在这部分，我们将讨论如何使用 gnome-screenshot ，以及它提供的所有功能。默认情况下，使用该工具且不带任何命令行选项时，就会抓取整个屏幕。捕获当前活动窗口如何你需要的话，你可以使用 -w 选项限制到只对当前活动窗口截图。gnome-screenshot -w 窗口边框默认情况下，这个程序会将它捕获的窗口的边框包含在内，尽管还有一个明确的命令行选项 -b 可以启用此功能（以防你在某处想使用它）。以下是如何使用这个程序的：gnome-screenshot -wb 当然，你需要同时使用 -w 选项和 -b 选项，以便捕获的是当前活动的窗口（否则，-b 将没有作用）。更重要的是，如果你需要的话，你也可以移除窗口的边框。可以使用 -B 选项来完成。下面是你可以如何使用这个选项的一个例子：gnome-screenshot -wB 下面是例子的截图：添加效果到窗口边框在 gnome-screenshot 工具的帮助下，您还可以向窗口边框添加各种效果。这可以使用 --border-effect 选项来做到。你可以添加这款程序所提供的任何效果，比如 shadow 效果（在窗口添加阴影）、bordor 效果（在屏幕截图周围添加矩形区域）和 vintage 效果（使截图略微淡化，着色并在其周围添加矩形区域）。gnome-screenshot --border-effect=[EFFECT] 例如，运行下面的命令添加 shadow 效果：gnome-screenshot –border-effect=shadow 以下是 shadow 效果的示例快照：请注意，上述屏幕截图主要集中在终端的一个角落，以便您清楚地看到阴影效果。对特定区域的截图如何你需要，你还可以使用 gnome-screenshot 程序对你电脑屏幕的某一特定区域进行截图。这可以通过使用 -a 选项来完成。gnome-screenshot -a当上面的命令被运行后，你的鼠标指针将会变成 '+' 这个符号。在这种模式下，你可以按住鼠标左键移动鼠标来对某个特定区域截图。这是一个示例截图，裁剪了我的终端窗口的一小部分。在截图中包含鼠标指针默认情况下，每当你使用这个工具截图的时候，截的图中并不会包含鼠标指针。然而，这个程序是可以让你把指针包括进去的，你可以使用 -p 命令行选项做到。gnome-screenshot -p 这是一个示例截图:延时截图截图时你还可以引入时间延迟。要做到这，你不需要给 --delay 选项赋予一个以秒为单位的值。gnome-screenshot –delay=[SECONDS] 例如：gnome-screenshot --delay=5 示例截图如下：以交互模式运行这个工具这个工具还允许你使用一个单独的 -i 选项来访问其所有功能。使用这个命令行选项，用户可以在运行这个命令时使用这个工具的一个或多个功能。gnome-screenshot -i 示例截图如下：你可以从上面的截图中看到，-i 选项提供了对很多功能的访问，比如截取整个屏幕、截取当前窗口、选择一个区域进行截图、延时选项和特效选项等都在交互模式里。直接保存你的截图如果你需要的话，你可以直接将你截的图片从终端中保存到你当前的工作目录，这意味着，在这个程序运行后，它并不要求你为截取的图片输入一个文件名。这个功能可以使用 --file 命令行选项来获取，很明显，需要给它传递一个文件名。gnome-screenshot –file=[FILENAME] 例…

pyDash：一个基于 web 的 Linux 性能监测工具
type: item
date: 2017-04-30T15:09:00+08:00
description: pyDash 是一个轻量且基于 web 的 Linux 性能监测工具，它是用 Python 和 Django 加上 Chart.js 来写的。经测试，在下面这些主流 Linux 发行版上可运行：CentOS、Fedora、Ubuntu、Debian、Raspbian 以及 Pidora 。你可以使用这个工具来监视你的 Linux 个人电脑/服务器资源，比如 CPU、内存、网络统计，包括在线用户的进程以及更多。仪表盘完全由主要的 Python 发行版本所提供的 Python 库开发，因此它的依赖关系很少，你不需要安装许多包或库来运行它。在这篇文章中，我将展示如何安装 pyDash 来监测 Linux 服务器性能。如何在 Linux 系统下安装 pyDash1、首先，像下面这样安装需要的软件包 git 和 Python pip：-------------- 在 Debian/Ubuntu 上 -------------- $ sudo apt-get install git python-pip -------------- 在 CentOS/RHEL 上 -------------- # yum install epel-release # yum install git python-pip -------------- 在 Fedora 22+ 上 -------------- # dnf install git python-pip 2、如果安装好了 git 和 Python pip，那么接下来，像下面这样安装 virtualenv，它有助于处理针对 Python 项目的依赖关系：# pip install virtualenv 或 $ sudo pip install virtualenv 3、现在，像下面这样使用 git 命令，把 pyDash 仓库克隆到 home 目录中：# git clone https://github.com/k3oni/pydash.git # cd pydash 4、下一步，使用下面的 virtualenv 命令为项目创建一个叫做 pydashtest 虚拟环境：$ virtualenv pydashtest #give a name for your virtual environment like pydashtest 创建虚拟环境重要：请注意，上面的屏幕截图中，虚拟环境的 bin 目录被高亮显示，你的可能和这不一样，取决于你把 pyDash 目录克隆到什么位置。5、创建好虚拟环境（pydashtest）以后，你需要在使用前像下面这样激活它：$ source /home/aaronkilik/pydash/pydashtest/bin/activate 激活虚拟环境从上面的屏幕截图中，你可以注意到，提示字符串 1（PS1）已经发生改变，这表明虚拟环境已经被激活，而且可以开始使用。6、现在，安装 pydash 项目 requirements；如何你好奇的话，可以使用 cat 命令查看 requirements.txt 的内容，然后像下面所示那样进行安装：$ cat requirements.txt $ pip install -r requirements.txt 7、现在，进入 pydash 目录，里面包含一个名为 settings.py 的文件，也可直接运行下面的命令打开这个文件，然后把 SECRET_KEY 改为一个特定值：$ vi pydash/settings.py 设置密匙保存文件然后退出。8、之后，运行下面的命令来创建一个项目数据库和安装 Django 的身份验证系统，并创建一个项目的超级用户：$ python manage.py syncdb 根据你的情况回答下面的问题：Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): admin Email address: aaronkilik@gmail.com Password: ########### Password (again): ############ 创建项目数据库9、这个时候，一切都设置好了，然后，运行下面的命令来启用 Django 开发服务器：$ python manage.py runserver 10、接下来，打开你的 web 浏览器，输入网址：http://127.0.0.1:8000/ 进入 web 控制台登录界面，输入你在第 8 步中创建数据库和安装 Django 身份验证系统时创建的超级用户名和密码，然后点击登录。pyDash 登录界面11、登录到 pydash 主页面以后，你将会…

十分钟带你看遍 DockerCon 2017
type: item
date: 2017-04-29T21:44:00+08:00
description: 在刚刚过去的 4 月 20 日，Docker 公司在德克萨斯州的奥斯汀市召开了 DockerCon 2017 大会。作为当下最受关注的容器公司，我们来看看他们在 DockerCon 2017 上都说了些什么。快速阅读Docker 公司将 Docker 项目改名为 Moby Project，Docker 这个名称保留用作其产品名Docker 公司发布 Linux Kit，这是一个快速构建、安全可移植系统的工具集Docker 企业版发布，阿里云飞天敏捷版为国内唯一具有全商业版支持能力的容器云平台微软为 Docker 站台，为 LinuxKit 提供基于 Hyper-V 的原生支持Docker 变成了 Moby ？在本次 DockerCon 上最大的新闻莫过于 Solomon Hykes 宣布 Moby Project 了，这在网上引起了轩然大波，毕竟作为 Docker 这种顶级开源项目，一举一动都会引起人们的关注，更何况是更名？简单的来说，Docker 公司出于某些考虑，决定将软件产品 “Docker” 和开源项目 “Docker” 区分开来，而 Moby Project 项目将作为开源项目的新名称。Moby 将由开源社区的开发者共同维护。而 Docker 公司会基于 Moby 构建 Docker 社区版 (CE) 和企业版 (EE) 等软件产品。Moby 和 Docker 在逻辑上就像我们所熟知的 Fedora 开源项目和 Red Hat Enterprise Linux 的关系。经过此次更名，Docker 公司将限制 “Docker” 名称的使用范围，Docker 作为 Docker 公司的注册商标，只能被用于 Docker 的产品（比如社区版、企业版、Docker Hub、Docker Store 等）。项目开源代码的地址也将变为 https://github.com/moby/moby。编辑点评更名这么重大的事情在没有充分沟通的情况下进行，导致了不少开发者的不满；Docker 名称的使用范围限制对于 Docker 公司来说，是一个不错的选择，但是对于整个开源项目来说，或许是由盛转衰的开始。从 Docker 到 Moby ，大量的普通用户可能因此而丢失，开发者也可能选择不再对该项目贡献。但反过来说，Docker 公司将继续推动Docker 技术的组件化和开放性，从向 Linux 和 CNCF 基金会贡献 runc 到 containerd，到今天将 Moby Project 交给开发者社区主导。一个初创公司已经为容器开源社区做出了众多贡献，预见的是更多有创意的容器应用可以从开放的社区中孕育出来。至于项目最终如何，我们将拭目以待。点击链接，前往 Github 查看开发者们对于 Moby Project 更名的讨论：https://github.com/moby/moby/pull/32691国内也有相应的讨论：对于 Docker 改名 Moby ，大家怎么看？ https://www.zhihu.com/question/58805021LinuxKit在本次大会上，还有一个值得大家关注的重磅消息，便是 LinuxKit 的开源发布。LinuxKit 是一个用来构建安全、可移植、精益的专门为容器服务的操作系统的工具集。它可以构建一个所有的系统服务都是基于容器的非常轻量的操作系统，这样的操作系统最小可以达到 35 MB！LinuxKit 打包出来的新的操作系统，相比于现在的 Linux 发行版，具有更强的安全型性和易用性，其设计也使其拥有了更强的拓展性。同时，其可移植性也更高。借助 LinuxKit，可以在 Windows 上原生运行 Docker 容器。其本身虽然不是 OS ，但是其产生的产品却实实在在的成为了 CoreOS 之类面向容器的操作系统的竞品。编辑点评LinuxKit 作为一个工具，给用户更大的安全防护和选择自由，用户可以根据自己的需要，构建适合自己的 Linux 的最小镜像，借助这样的最小镜像， 最大程度的利用好数据中心和硬件资源。Docker 开始发觉标准的 Linux 发行版的不足。借助于 Moby 和 LinuxKit ，Docker 可以像 CoreOS 一样，掌控底层，但是又不完全和 CoreOS 的路线相同。国外知名科技媒体 ZDNet 对于此事也有报道，有兴趣的可以去看看：http://www.zdnet.com/article/docker-linuxkit-secure-linux-containers-for-windows-macos-and-clouds/Docker EE 的发布 和阿里飞天敏捷版支持 Docker 企业版在 Moby 项目出现的同时，也就意味着 Docker EE (E…

如何在 CentOS 7 上安装 Elastic Stack
type: item
date: 2017-04-29T18:36:00+08:00
description: Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎。它提供了一个分布式、多租户的全文搜索引擎（LCTT 译注：多租户是指多租户技术，是一种软件架构技术，用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件，并且仍可确保各用户间数据的隔离性。），并带有 HTTP 仪表盘的 Web 界面（Kibana）。数据会被 Elasticsearch 查询、检索，并且使用 JSON 文档方案存储。Elasticsearch 是一个可扩展的搜索引擎，可用于搜索所有类型的文本文档，包括日志文件。Elasticsearch 是 Elastic Stack 的核心，Elastic Stack 也被称为 ELK Stack。Logstash 是用于管理事件和日志的开源工具。它为数据收集提供实时传递途径。 Logstash 将收集您的日志数据，将数据转换为 JSON 文档，并将其存储在 Elasticsearch 中。Kibana 是 Elasticsearch 的开源数据可视化工具。Kibana 提供了一个漂亮的仪表盘 Web 界面。 你可以用它来管理和可视化来自 Elasticsearch 的数据。 它不仅美丽，而且强大。在本教程中，我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。 然后，我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装 “Elastic beats”。前提条件64 位的 CentOS 7，4 GB 内存 - elk 主控机64 位的 CentOS 7 ，1 GB 内存 - 客户端 164 位的 Ubuntu 16 ，1 GB 内存 - 客户端 2步骤 1 - 准备操作系统在本教程中，我们将禁用 CentOS 7 服务器上的 SELinux。 编辑 SELinux 配置文件。vim /etc/sysconfig/selinux 将 SELINUX 的值从 enforcing 改成 disabled 。SELINUX=disabled 然后重启服务器：reboot 再次登录服务器并检查 SELinux 状态。getenforce 确保结果是 disabled。步骤 2 - 安装 Java部署 Elastic stack 依赖于Java，Elasticsearch 需要 Java 8 版本，推荐使用 Oracle JDK 1.8 。我将从官方的 Oracle rpm 包安装 Java 8。使用 wget 命令下载 Java 8 的 JDK。wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm" 然后使用 rpm 命令安装：rpm -ivh jdk-8u77-linux-x64.rpm 最后，检查 java JDK 版本，确保它正常工作。java -version 您将看到服务器的 Java 版本。步骤 3 - 安装和配置 Elasticsearch在此步骤中，我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch，并将其配置运行在 localhost 上（以确保该程序安全，而且不能从外部访问）。在安装 Elasticsearch 之前，将 elastic.co 的密钥添加到服务器。rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 接下来，使用 wget 下载 Elasticsearch 5.1，然后安装它。wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm rpm -ivh elasticsearch-5.1.1.rpm Elasticsearch 已经安装好了。 现在进入配置目录编辑 elasticsaerch.yml 配置文件。cd /etc/elasticsearch/ vim elasticsearch.yml 去掉第 40 行的注释，启用 Elasticsearch 的内存锁。这将禁用 Elasticsearch 的内存交换。bootstrap.memory_lock…

在 PC 上尝试树莓派的 PIXEL OS
type: item
date: 2017-04-29T17:39:00+08:00
description: 在过去四年中，树莓派基金会非常努力地针对树莓派的硬件优化了 Debian 的移植版 Raspbian，包括创建新的教育软件、编程工具和更美观的桌面。在（去年） 9 月份，我们发布了一个更新，介绍了树莓派新的桌面环境 PIXEL（Pi Improved Xwindows Environment，轻量级）。在圣诞节之前，我们发布了一个在 x86 PC 上运行的操作系统版本，所以现在可以将它安装在 PC、Mac 或笔记本电脑上。当然，像许多支持良好的 Linux 发行版一样，操作系统在旧的硬件上也能正常运行。 Raspbian 是让你几年前就丢弃的旧式 Windows 机器焕发新生的好方法。PIXEL ISO 可从树莓派网站上下载，在 “MagPi” 杂志封面上也有赠送可启动的 Live DVD 。为了消除想要学习计算机的人们的入门障碍，我们发布了树莓派的个人电脑操作系统。它比购买一块树莓派更便宜，因为它是免费的，你可以在现有的计算机上使用它。PIXEL 是我们一直想要的 Linux 桌面，我们希望它可供所有人使用。由 Debian 提供支持不构建在 Debian 之上的话，Raspbian 或 x86 PIXEL 发行版就都不会存在。 Debian 拥有庞大的可以从一个 apt 仓库中获得的免费开源软件、程序、游戏和其他工具。在树莓派中，你仅限运行为 ARM 芯片编译的软件包。然而，在 PC 镜像中，你可以在机器上运行的软件包的范围更广，因为 PC 中的 Intel 芯片有更多的支持。 repository")PIXEL 包含什么带有 PIXEL 的 Raspbian 和带有 PIXEL 的 Debian 都捆绑了大量的软件。Raspbian 自带：Python、Java、Scratch、Sonic Pi、Mathematica*、Node-RED 和 Sense HAT 仿真器的编程环境LibreOffice 办公套件Chromium（包含 Flash）和 Epiphany 网络浏览器Minecraft：树莓派版（包括 Python API）*各种工具和实用程序*由于许可证限制，本列表中唯一没有包含在 x86 版本中的程序是 Mathematica 和 Minecraft。创建一个 PIXEL Live 盘你可以下载 PIXEL ISO 并将其写入空白 DVD 或 USB 记忆棒中。 然后，你就可以从盘中启动你的电脑，这样你可以立刻看到 PIXEL 桌面。你可以浏览网页、打开编程环境或使用办公套件，而无需在计算机上安装任何内容。完成后，只需拿出 DVD 或 USB 驱动器，关闭计算机，再次重新启动计算机时，将会像以前一样重新启动到你平常的操作系统。在虚拟机中运行 PIXEL另外一种尝试 PIXEL 的方法是在像 VirtualBox 这样的虚拟机中安装它。这允许你体验镜像而不用安装它，也可以在主操作系统里面的窗口中运行它，并访问 PIXEL 中的软件和工具。这也意味着你的会话会一直存在，而不是每次重新启动时从头开始，就像使用 Live 盘一样。在 PC 中安装 PIXEL如果你真的准备开始，你可以擦除旧的操作系统并将 PIXEL 安装在硬盘上。如果你想使用旧的闲置的笔记本电脑，这可能是个好主意。用于教育的 PIXEL许多学校在所有电脑上使用 Windows，并且对它们可以安装的软件进行严格的控制。这使得教师难以使用必要的软件工具和 IDE（集成开发环境）来教授编程技能。即使在线编程计划（如 Scratch 2）也可能被过于谨慎的网络过滤器阻止。在某些情况下，安装像 Python 这样的东西根本是不可能的。树莓派硬件通过提供包含教育软件的 SD 卡引导的小型廉价计算机来解决这个问题，学生可以连接到现有 PC 的显示器、鼠标和键盘上。然而，PIXEL Live 光盘允许教师引导到装有能立即使用的编程语言和工具的系统中，所有这些都不需要安装权限。在课程结束时，他们可以安全关闭，使计算机恢复原状。这也是 Code Clubs、CoderDojos、青年俱乐部、Raspberry Jams 等等的一个方便的解决方案。远程 GPIO树莓派与传统台式 PC 区别的功能之一是 GPIO 引脚（通用输入/输出）引脚的存在，它允许你将现实世界中的电子元件和附加板连接设备上，这将开放一个新的世界，如业余项目、家庭自动化、连接的设备和物联网。GPIO Zero Python 库的一个很棒的功能是通过在 PC 上写入一些简单的代码，然后在网络上控制树莓派的 GPIO 引脚。远程 GPIO 可以从一台树莓派连接到另一台树莓派，或者从运行任何系统的 OS 的 PC 连接到树莓派上，但是，使用 PIXEL x86 的话所有需要的软件都是开箱即用的。参见 Jos…

在 Linux 上使用 Meld 比较文件夹
type: item
date: 2017-04-29T16:12:00+08:00
description: 我们已经从一个新手的角度了解了 Meld （包括 Meld 的安装），我们也提及了一些 Meld 中级用户常用的小技巧。如果你有印象，在新手教程中，我们说过 Meld 可以比较文件和文件夹。已经讨论过怎么比较文件，今天，我们来看看 Meld 怎么比较文件夹。需要指出的是，本教程中的所有命令和例子都是在 Ubuntu 14.04 上测试的，使用的 Meld 版本为 3.14.2。用 Meld 比较文件夹打开 Meld 工具，然后选择 比较文件夹 Directory comparison 选项来比较两个文件夹。选择你要比较的文件夹：然后单击 比较 Compare 按钮，你会看到 Meld 像图中这样分成两栏比较目录，就像文件比较一样。分栏会树形显示这些文件夹。你可以在上图中看到 —— 区别之处，不论是新建的还是被修改过的文件 —— 都会以不同的颜色高亮显示。根据 Meld 的官方文档可以知道，在窗口中看到的每个不同的文件或文件夹都会被突出显示。这样就很容易看出这个文件/文件夹与另一个分栏中对应位置的文件/文件夹的区别。下表是 Meld 网站上列出的在比较文件夹时突出显示的不同字体大小/颜色/背景等代表的含义。状态表现含义相同正常字体比较的文件夹中所有文件/文件夹相同。过滤后相同斜体文件夹中文件不同，但使用文本过滤器的话，文件是相同的。修改过蓝色粗体比较的文件夹中这些文件不同。新建绿色粗体该文件/文件夹在这个目录中存在，但其它目录中没有。缺失置灰文本，删除线该文件/文件夹在这个目录中不存在，在在其它某个目录中存在。错误黄色背景的红色粗体比较文件时发生错误，最常见错误原因是文件权限（例如，Meld 无法打开该文件）和文件名编码错误。Meld 默认会列出比较文件夹中的所有内容，即使这些内容没有任何不同。当然，你也可以在工具栏中单击 相同 Same 按钮设置 Meld 不显示这些相同的文件/文件夹 —— 单击这个按钮使其不可用。 下面是单击 相同 Same 按钮使其不可用的截图：这样你会看到只显示了两个文件夹中不同的文件（新建的和修改过的）。同样，如果你单击 新建 New 按钮使其不可用，那么 Meld 就只会列出修改过的文件。所以，在比较文件夹时可以通过这些按钮自定义要显示的内容。你可以使用工具窗口显示区的上下箭头来切换选择是显示新建的文件还是修改过的文件。要打开两个文件进行分栏比较，可以双击文件，或者单击箭头旁边的 比较 Compare 按钮。提示 1：如果你仔细观察，就会看到 Meld 窗口的左边和右边有一些小条。这些条的目的是提供“简单的用颜色区分的比较结果”。对每个不同的文件/文件夹，条上就有一个小的颜色块。你可以单击每一个这样的小块跳到它对应的文件/文件夹。提示 2：你总可以分栏比较文件，然后以你的方式合并不同的文件，假如你想要合并所有不同的文件/文件夹（就是说你想要一个特定的文件/文件夹与另一个完全相同），那么你可以用 复制到左边 Copy Left 和 复制到右边 Copy Right 按钮：比如，你可以在左边的分栏中选择一个文件或文件夹，然后单击 复制到右边 Copy Right 按钮，使右边对应条目完全一样。现在，在窗口的下拉菜单中找到 过滤 Filters 按钮，它就在 相同 Same 、 新建 New 和 修改的 Modified 这三个按钮下面。这里你可以选择或取消文件的类型，告知 Meld 在比较文件夹时是否显示这种类型的文件/文件夹。官方文档解释说菜单中的这个条目表示“执行文件夹比较时该类文件名不会被查看。”该列表中条目包括备份文件，操作系统元数据，版本控制文件、二进制文件和多媒体文件。前面提到的条目也可以通过这样的方式找到：浏览->文件过滤。你可以通过 编辑->首选项->文件过滤 为这个条目增加新元素（也可以删除已经存在的元素）。要新建一个过滤条件，你需要使用一组 shell 符号，下表列出了 Meld 支持的 shell 符号：通配符匹配*任何字符 (例如，零个或多个字符)?一个字符[abc]所列字符中的任何一个[!abc]不在所列字符中的任何一个{cat,dog}“cat” 或 “dog” 中的一个最重要的一点是 Meld 的文件名默认大小写敏感。也就是说，Meld 认为 readme 和 ReadMe 与 README 是不一样的文件。幸运的是，你可以关掉 Meld 的大小写敏感。只需要打开 浏览 菜单然后选择 忽略文件名大小写 Ignore Filename Case 选项。 结论你是否觉得使用 Meld 比较文件夹很容易呢 —— 事实上，我认为它相当容易。只有新建一个文件过滤器会花点时间，但是这不意味着你没必要学习创建过滤器。显然，这取决于你的需求。另外，你甚至可以用 Meld 比较三个文件夹。想…

Linux 下网络协议分析器 Wireshark 使用基础
type: item
date: 2017-04-28T17:00:00+08:00
description: Wireshark 是 Kali 中预置的众多有价值工具中的一种。与其它工具一样，它可以被用于正面用途，同样也可以被用于不良目的。当然，本文将会介绍如何追踪你自己的网络流量来发现潜在的非正常活动。Wireshark 相当的强大，当你第一次见到它的时候可能会被它吓到，但是它的目的始终就只有一个，那就是追踪网络流量，并且它所实现的所有选项都只为了加强它追踪流量的能力。安装Kali 中预置了 Wireshark 。不过，wireshark-gtk 包提供了一个更好的界面使你在使用 Wireshark 的时候会有更友好的体验。因此，在使用 Wireshark 前的第一步是安装 wireshark-gtk 这个包。# apt install wireshark-gtk 如果你的 Kali 是从 live 介质上运行的也不需要担心，依然有效。基础配置在你使用 Wireshark 之前，将它设置成你使用起来最舒适的状态可能是最好的。Wireshark 提供了许多不同的布局方案和选项来配置程序的行为。尽管数量很多，但是使用起来是相当直接明确的。从启动 Wireshark-gtk 开始。需要确定启动的是 GTK 版本的。在 Kali 中它们是被分别列出的。布局默认情况下，Wireshark 的信息展示分为三块内容，每一块都叠在另一块上方。（LCTT 译注：这里的三部分指的是展示抓包信息的时候的那三块内容，本段配图没有展示，配图 4、5、6 的设置不是默认设置，与这里的描述不符）最上方的一块是所抓包的列表。中间的一块是包的详细信息。最下面那块中包含的是包的原始字节信息。通常来说，上面的两块中的信息比最下面的那块有用的多，但是对于资深用户来说这块内容仍然是重要信息。每一块都是可以缩放的，可并不是每一个人都必须使用这样叠起来的布局方式。你可以在 Wireshark 的“ 选项 （ Preferences ） ”菜单中进行更改。点击“ 编辑 （ Edit ） ”菜单，最下方就是的“ 选项 （ Preferences ） ”菜单。这个选项会打开一个有更多选项的新窗口。单击侧边菜单中“ 用户界面 （ User Interface ） ”下的“ 布局 （ Layout ） ”选项。你将会看到一些不同的布局方案。上方的图示可以让你选择不同的面板位置布局方案，下面的单选框可以让你选择不同面板中的数据内容。下面那个标记为“ 列 （ Columns ） ”的标签可以让你选择展示所抓取包的哪些信息。选择那些你需要的数据信息，或者全部展示。工具条对于 Wireshark 的工具条能做的设置不是太多，但是如果你想设置的话，你依然在前文中提到的“布局”菜单中的窗口管理工具下方找到一些有用的设置选项。那些能让你配置工具条和工具条中条目的选项就在窗口选项下方。你还可以在“ 视图 （ View ） ”菜单下勾选来配置工具条的显示内容。功能主要的用来控制 Wireshark 抓包的控制选项基本都集中在“ 捕捉 （ Capture ） ”菜单下的“ 选项 （ Options ） ”选项中。在开启的窗口中最上方的“ 捕捉 （ Capture ） ”部分可以让你选择 Wireshark 要监控的某个具体的网络接口。这部分可能会由于你系统的配置不同而会有相当大的不同。要记得勾选正确的选择框才能获得正确的数据。虚拟机和伴随它们一起的网络接口也同样会在这个列表里显示。同样也会有多种不同的选项对应这多种不同的网络接口。在网络接口列表的下方是两个选项。其中一个选项是全选所有的接口。另一个选项用来选择是否开启混杂模式。这个选项可以使你的计算机监控到所选网络上的所有的计算机。（LCTT 译注：混杂模式可以在 HUB 中或监听模式的交换机接口上捕获那些由于 MAC 地址非本机而会被自动丢弃的数据包）如果你想监控你所在的整个网络，这个选项是你所需要的。注意: 在一个不属于你或者不拥有权限的网络上使用混杂模式来监控是非法的！在窗口下方的右侧是“ 显示选项 （ Display Options ） ”和“ 名称解析 （ Name Resolution ） ”选项块。对于“ 显示选项 （ Display Options ） ”来说，三个选项全选可能就是一个很好的选择了。当然你也可以取消选择，但是最好还是保留选择“实时更新抓包列表”。在“ 名称解析 （ Name Resolution ） ”中你也可以设置你的偏好。这里的选项会产生附加的请求因此选得越多就会有越多的请求产生使你的抓取的包列表显得杂乱。把 MAC 解析选项选上是个好主意，那样就可以知道所使用的网络硬件的品牌了。这可以帮助你来确定你是在与哪台设备上的哪个接口进行交互。抓包抓包是 Wireshark 的核心功能。监控和记录特定网络上的流量就是它最初产生的目…

用 NTP 把控时间（一）：使用概览
type: item
date: 2017-04-28T16:45:00+08:00
description: 这系列共三部分，首先，Chirs Binnie 探讨了在一个合理的架构中 NTP 服务的重要性。鲜有互联网上的服务能如时间服务一样重要。影响你系统计时的小问题可能需要一两天才能被发现，而这些不期而遇的问题所带来的连锁反应几乎总是让人伤脑筋的。设想你的备份服务器与网络时间协议（NTP）服务器断开连接，过了几天，引起了几小时的时间偏差。你的同事照常九点上班，发现需要大量带宽的备份服务器消耗了所有网络资源，这也就意味着他们在备份完成之前几乎不能登录工作台开始他们的日常工作。这系列共三部分，首先，我将提供简要介绍 NTP 来防止这种困境的发生。从邮件的时间戳到记录你工作的进展，NTP 服务对于一个合理的架构是如此的重要。可以把如此重要的 NTP 服务器（其他的服务器从此获取时钟数据）看做是倒置金字塔的底部，它被称之为 一层 Stratum 1 服务器（也被称为“ 主 primary ”服务器）。这些服务器与国家级时间服务（称为 零层 Stratum 0 ，通常这些设备是是原子钟和 GPS 钟之类的装置）直接交互。与之安全通讯的方法很多，例如通过卫星或者无线电。令人惊讶的是，几乎所有的大型企业都会连接 二层 Stratum 2 服务器（或“ 次级 secondary ”服务器）而是不是主服务器。如你所料，二层服务器和一层直接同步。如果你觉得大公司可能有自己的本地 NTP 服务器（至少两个，通常三个，为了灾难恢复之用），这些就是三层服务器。这样，三层服务器将连接上层预定义的次级服务器，负责任地传递时间给客户端和服务器，精确地反馈当前时间。由简单设计而构成的 NTP 可以工作的前提是——多亏了通过互联网跨越了大范围的地理距离——在确认时间完全准确之前，来回时间（包什么时候发出和多少秒后被收到）都会被清楚记录。设置电脑的时间的背后要比你想象的复杂得多，如果你不相信，那这神奇的网页值得一看。再次重提一遍，为了确保你的架构如预期般工作，NTP 是如此的关键，你的 NTP 与层次服务器之间的连接必须是完全可信赖并且能提供额外的冗余，才能保持你的内部时钟同步。在 NTP 主站有一个有用的一层服务器列表。正如你在列表所见，一些 NTP 一层服务器以 “ClosedAccount” 状态运行；这些服务器需要事先接受才可以使用。但是只要你完全按照他们的使用引导做，“OpenAccess” 服务器是可以用于轮询使用的。而 “RestrictedAccess” 服务器有时候会因为大量客户端访问或者轮询间隙太小而受限。另外有时候也有一些专供某种类型的组织使用，例如学术界。尊重我的权威在公共 NTP 服务器上，你可能发现遵从某些规则的使用规范。现在让我们看看其中一些。“iburst” 选项作用是如果在一个标准的轮询间隔内没有应答，客户端会发送一定数量的包（八个包而不是通常的一个）给 NTP 服务器。如果在短时间内呼叫 NTP 服务器几次，没有出现可辨识的应答，那么本地时间将不会变化。不像 “iburst” ，按照 NTP 服务器的通用规则， “burst” 选项一般不允许使用（所以不要用它！）。这个选项不仅在轮询间隔发送大量包（明显又是八个），而且也会在服务器能正常使用时这样做。如果你在高层服务器持续发送包，甚至是它们在正常应答时，你可能会因为使用 “burst” 选项而被拉黑。显然，你连接服务器的频率造成了它的负载差异（和少量的带宽占用）。使用 “minpoll” 和 “maxpoll” 选项可以本地设置频率。然而，根据连接 NTP 服务器的规则，你不应该分别修改其默认的 64 秒和 1024 秒。此外，需要提出的是客户应该重视那些请求时间的服务器发出的“ 亲一下就死（死亡之吻） Kiss-Of-Death ” （KOD）消息。如果 NTP 服务器不想响应某个特定的请求，就像路由和防火墙技术那样，那么它最有可能的就是简单地遗弃或吞没任何相关的包。换句话说，接受到这些数据的服务器并不需要特别处理这些包，简单地丢弃这些它认为这不值得回应的包即可。你可以想象，这并不是特别好的做法，有时候礼貌地问客户是否中止或停止比忽略请求更为有效。因此，这种特别的包类型叫做 KOD 包。如果一个客户端被发送了这种不受欢迎的 KOD 包，它应该记住这个发回了拒绝访问标志的服务器。如果从该服务器收到不止一个 KOD 包，客户端会猜想服务器上发生了流量限速的情况（或类似的）。这种情况下，客户端一般会写入本地日志，提示与该服务器的交流不太顺利，以备将来排错之用。牢记，出于显而易见的原因，关键在于 NTP 服务器的架构应该是动态的。因此，不要给你的 NTP 配置硬编码 IP 地址是非常重要的。通过使用 DNS 域名，个别服务器断开网络时服务仍能继续进行，而 IP 地址空间也能重新分配，并且可引…

如何在现有的 Linux 系统上添加新的磁盘
type: item
date: 2017-04-28T02:26:10+08:00
description: 作为一个系统管理员，我们会有这样的一些需求：作为升级服务器容量的一部分，或者有时出现磁盘故障时更换磁盘，我们需要将新的硬盘配置到现有服务器。在这篇文章中，我会向你逐步介绍添加新硬盘到现有 RHEL/CentOS 或者 Debian/Ubuntu Linux 系统的步骤。推荐阅读： 如何将超过 2TB 的新硬盘添加到现有 Linux。重要：请注意这篇文章的目的只是告诉你如何创建新的分区，而不包括分区扩展或者其它选项。我使用 fdisk 工具 完成这些配置。我已经添加了一块 20GB 容量的硬盘，挂载到了 /data 分区。fdisk 是一个在 Linux 系统上用于显示和管理硬盘和分区命令行工具。# fdisk -l 这个命令会列出当前分区和配置。查看 Linux 分区详情添加了 20GB 容量的硬盘后，fdisk -l 的输出像下面这样。# fdisk -l 查看新分区详情新添加的磁盘显示为 /dev/xvdc。如果我们添加的是物理磁盘，基于磁盘类型它会显示为类似 /dev/sda。这里我使用的是虚拟磁盘。要在特定硬盘上分区，例如 /dev/xvdc。# fdisk /dev/xvdc 常用的 fdisk 命令。n - 创建分区p - 打印分区表d - 删除一个分区q - 不保存更改退出w - 保存更改并退出这里既然我们是要创建一个分区，就用 n 选项。在 Linux 上创建新分区创建主分区或者扩展分区。默认情况下我们最多可以有 4 个主分区。创建主分区按需求输入分区编号。推荐使用默认的值 1。分配分区编号输入第一个扇区的大小。如果是一个新的磁盘，通常选择默认值。如果你是在同一个磁盘上创建第二个分区，我们需要在前一个分区的最后一个扇区的基础上加 1。为分区分配扇区输入最后一个扇区或者分区大小的值。通常推荐输入分区的大小。总是添加前缀 + 以防止值超出范围错误。分配分区大小保存更改并退出。保存分区更改现在使用 mkfs 命令格式化磁盘。# mkfs.ext4 /dev/xvdc1 格式化新分区格式化完成后，按照下面的命令挂载分区。# mount /dev/xvdc1 /data 在 /etc/fstab 文件中添加条目以便永久启动时自动挂载。/dev/xvdc1 /data ext4 defaults 0 0 总结现在你知道如何使用 fdisk 命令 在新磁盘上创建分区并挂载了。当处理分区、尤其是编辑已配置磁盘的时候，我们需要格外的小心。请分享你的反馈和建议吧。（题图：Pixabay，CC0）作者简介：我的工作内容包括 IBM-AIX、Solaris、HP-UX 多种平台以及存储技术 ONTAP 和 OneFS，并具有 Oracle 数据库的经验。via: http://www.tecmint.com/add-new-disk-to-an-existing-linux/作者：Lakshmi Dhandapani 译者：ictlyh 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出

关于 Linux 进程你所需要知道的一切
type: item
date: 2017-04-27T17:30:00+08:00
description: 在这篇指南中，我们会逐步对进程做基本的了解，然后简要看看如何用特定命令管理 Linux 进程。 进程 （ process ） 是指正在执行的程序；是程序正在运行的一个实例。它由程序指令，和从文件、其它程序中读取的数据或系统用户的输入组成。进程的类型在 Linux 中主要有两种类型的进程：前台进程（也称为交互式进程） - 这些进程由终端会话初始化和控制。换句话说，需要有一个连接到系统中的用户来启动这样的进程；它们不是作为系统功能/服务的一部分自动启动。后台进程（也称为非交互式/自动进程） - 这些进程没有连接到终端；它们不需要任何用户输入。什么是 守护进程 （ daemon ） 这是后台进程的特殊类型，它们在系统启动时启动，并作为服务一直运行；它们不会死亡。它们自发地作为系统任务启动（作为服务运行）。但是，它们能被用户通过 init 进程控制。 Linux 进程状态在 Linux 中创建进程当现有的进程在内存中完全拷贝一份自身的时候就会创建出一个新的进程。子进程会有和父进程一样的环境，只有进程 ID 不同。在 Linx 中有两种常规方式创建进程：使用 system() 函数 - 这个方法相对简单，但是比较低效而且具有明显的安全隐患。使用 fork() 和 exec() 函数 - 这个技巧比较高级但提供更好的灵活性、速度以及安全性。Linux 如何识别进程？由于 Linux 是一个多用户系统，意味着不同的用户可以在系统上运行各种各样的程序，内核必须唯一标识程序运行的每个实例。程序由它的进程 ID（PID）和它父进程的进程 ID（PPID）识别，因此进程可以被分类为：父进程 - 这些是在运行时创建其它进程的进程。子进程 - 这些是在运行时由其它进程创建的进程。init 进程init 进程是系统中所有进程的父进程，它是启动 Linux 系统后第一个运行的程序；它管理着系统上的所有其它进程。它由内核自身启动，因此理论上说它没有父进程。init 进程的进程 ID 总是为 1。它是所有孤儿进程的收养父母。（它会收养所有孤儿进程）。查找进程 ID你可以用 pidof 命令查找某个进程的进程 ID：# pidof systemd # pidof top # pidof httpd 查找 Linux 进程 ID要查找当前 shell 的进程 ID 以及它父进程的进程 ID，可以运行：$ echo $$ $ echo $PPID 查找 Linux 父进程 ID在 Linux 中启动进程每次你运行一个命令或程序（例如 cloudcmd - CloudCommander），它就会在系统中启动一个进程。你可以按照下面的方式启动一个前台（交互式）进程，它会被连接到终端，用户可以发送输入给它：# cloudcmd 启动 Linux 交互进程Linux 后台任务要在后台（非交互式）启动一个进程，使用 & 符号，此时，该进程不会从用户中读取输入，直到它被移到前台。# cloudcmd & # jobs 在后台启动 Linux 进程你也可以使用 Ctrl + Z 暂停执行一个程序并把它发送到后台，它会给进程发送 SIGSTOP 信号，从而暂停它的执行；它就会变为空闲：# tar -cf backup.tar /backups/* ### 按下 Ctrl+Z # jobs 要在后台继续运行上面被暂停的命令，使用 bg 命令：# bg 要把后台进程发送到前台，使用 fg 命令以及任务的 ID，类似：# jobs # fg %1 Linux 后台进程任务你也可能想要阅读：如何在后台启动 Linux 命令以及在终端分离（Detach）进程Linux 中进程的状态在执行过程中，取决于它的环境一个进程会从一个状态转变到另一个状态。在 Linux 中，一个进程有下面的可能状态：Running - 此时它正在运行（它是系统中的当前进程）或准备运行（它正在等待分配 CPU 单元）。Waiting - 在这个状态，进程正在等待某个事件的发生或者系统资源。另外，内核也会区分两种不同类型的等待进程； 可中断等待进程 （ interruptible waiting processes ） - 可以被信号中断，以及 不可中断等待进程 （ uninterruptible waiting processes ） - 正在等待硬件条件，不能被任何事件/信号中断。Stopped - 在这个状态，进程已经被停止了，通常是由于收到了一个信号。例如，正在被调试的进程。Zombie - 该进程已经死亡，它已经停止了但是 进程表 （ process table ） 中仍然有它的条目。如何在 Linux 中查看活跃进程有很多 Linux 工具可以用于查看/列出系统中正在运行的进程，两个传统众所周知的是 ps 和…