在应用市场中有好几种屏幕截图工具，但其中大多数都是基于 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] 例如：gnome-screenshot --file=ashish 示例截图如下：复制到剪切板gnome-screenshot 也允许你把你截的图复制到剪切板。这可以通过使用 -c 命令行选项做到。gnome-screenshot -c 在这个模式下，例如，你可以把复制的图直接粘贴到你的任何一个图片编辑器中（比如 GIMP）。多显示器情形下的截图如果有多个显示器连接到你的系统，你想对某一个进行截图，那么你可以使用 --then 命令行选项。需要给这个选项一个显示器设备 ID 的值（需要被截图的显示器的 ID）。gnome-screenshot --display=[DISPLAY] 例如：gnome-screenshot --display=VGA-0 在上面的例子中，VAG-0 是我正试图对其进行截图的显示器的 ID。为了找到你想对其进行截图的显示器的 ID，你可以使用下面的命令：xrandr --query 为了让你明白一些，在我的例子中这个命令产生了下面的输出：$ xrandr --query Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 VGA-0 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1366x768 59.8*+ 1024x768 75.1 75.0 60.0 832x624 74.6 800x600 75.0 60.3 56.2 640x480 75.0 60.0 720x400 70.1 HDMI-0 disconnected (normal left inverted right x axis y axis)自动化屏幕截图过程正如我们之前讨论的，-a 命令行选项可以帮助我们对屏幕的某一个特定区域进行截图。然而，我们需要用鼠标手动选取这个区域。如果你想的话，你可以使用 gnome-screenshot 来自动化完成这个过程，但是在那种情形下，你将需要使用一个名为 xdotol 的工具，它可以模仿敲打键盘甚至是点击鼠标这些事件。例如：(gnome-screenshot -a &); sleep 0.1 && xdotool mousemove 100 100 mousedown 1 mousemove 400 400 mouseup 1 mousemove 子命令自动把鼠标指针定位到明确的 X 坐标和 Y 坐标的位置（上面例子中是 100 和 100）。mousedown 子命令触发一个与点击执行相同操作的事件（因为我们想左击，所以我们使用了参数 1），然而 mouseup 子命令触发一个执行用户释放鼠标按钮的任务的事件。所以总而言之，上面所示的 xdotool 命令做了一项本来需要使用鼠标手动执行对同一区域进行截图的工作。特别说明，该命令把鼠标指针定位到屏幕上坐标为 100,100 的位置并选择封闭区域，直到指针到达屏幕上坐标为 400,400 的位置。所选择的区域随之被 gnome-screenshot 捕获。这是上述命令的截图：这是输出的结果：想获取更多关于 xdotool 的信息，请到这来。获取帮助如果你有疑问或者你正面临一个与该命令行的其中某个选项有关的问题，那么你可以使用 --help、-？ 或者 -h 选项来获取相关信息。gnome-screenshot -h 总结我推荐你至少使用一次这个程序，因为它不仅对初学者来说比较简单，而且还提供功能丰富的高级用法体验。动起手来，尝试一下吧。via: https://www.howtoforge.com/tutorial/taking-screenshots-in-linux-using-gnome-screenshot/作者：Himanshu Arora 译者：zhousiyu325 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出
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 主页面以后，你将会可以看到监测系统的基本信息，包括 CPU、内存和硬盘使用量以及系统平均负载。向下滚动便可查看更多部分的信息。pydash 服务器性能概述12、下一个屏幕截图显示的是一段 pydash 的跟踪界面，包括 IP 地址、互联网流量、硬盘读/写、在线用户以及 netstats 。pyDash 网络概述13、下一个 pydash 主页面的截图显示了一部分系统中被监视的活跃进程。pyDash 监视活跃 Linux 进程如果想了解更多信息，请在 GitHub 上查看 pydash：https://github.com/k3oni/pydash这就是全部内容了。在这篇文章中，我们展示了在 Linux 中如何安装 pyDash 并测试它的主要特性。如果你有什么想法，可以通过下面的反馈部分联系我们；如果你知道任何有用或类似的工具，也可以在评论中告知我们。作者简介：我叫 Ravi Saive，是 TecMint 的原创作者，是一个喜欢在网上分享技巧和知识的计算机极客和 Linux Guru。我的大多数服务器都运行在 Linux 开源平台上。请关注我：Twitter、Facebook 以及 Google+ 。via: http://www.tecmint.com/pydash-a-web-based-linux-performance-monitoring-tool/作者：Ravi Saive 译者：ucasFL 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出
在刚刚过去的 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 (Enterprise Edition) 正式走上台前。相比于 Docker CE（Community Edition），Docker EE 强化了其安全特性，为企业提供更加安全和可靠的容器服务，提供了一系列的安全组件和认证设施，更加满足企业的安全需求。并通过认证生态系统，笼络了大量的能够为用户提供服务的企业。此外，Docker 的 CEO Ben 在大会上宣布 Docker 将会在阿里云平台的飞天敏捷版（Apsara Stack Agility）中落地，这是国内第一个支持 Docker 官方企业版（Enterprise Edition，EE）的容器类产品，可以部署在企业自有数据中心环境内，特别适用于企业专有云及混合云场景。飞天敏捷版深度整合了 Docker 商业版套件和阿里的容器服务，成为国内唯一具有全商业版支持能力的容器云平台，可以部署在客户自有数据中心，包含从容器的创建到运行以及镜像的全生命周期管理。Ben 在演讲中还提及阿里巴巴电商平台已经全面容器化，能够部署和管控超过几十万容器规模，在双 11 狂欢节稳定支撑了每秒 175000 次的订单交易。并重点并强调说阿里云不但是 Docker 的业务伙伴，同时也将为 Docker 带来大规模容器应用的实践经验。编辑点评Docker EE 的出现，虽然说导致了 Docker 项目的更名，但是对于 Docker 公司来说，有了盈利的可能和机会。一个能够盈利、并且活下来的公司，显然更加容易为整个世界作出更大的贡献。而阿里云成为国内首家支持 Docker EE 的产品，也为 Docker 在国内的商业应用打下了坚实的基础。如果对 Reddit 上关于 Docker EE 和 Docker CE 的讨论有兴趣，可以看看 https://www.reddit.com/r/docker/comments/5x3os0/docker_announces_enterprise_community_editions/微软为 Docker 站台，提供 Windows 下的 Docker 原生支持在过去的三年中，Docker 公司和微软公司合作，开发了多款产品。如今，Windows 开发者也可以在 Windows 基于 Hyper-V 的内核原生地运行 Linux 内核容器。微软通过 Hyper-V 来支持了 Linux 容器在 Windows 下的运行，给开发者以更好的体验。用户可以选择使用主流的Linux 的操作系统和 Linux Kit 来运行自己需要的容器。编辑点评虽然微软已经不再是曾经那个叱咤风云的微软了，但依旧强大，近些年来，微软在开源社区动作频频，不断的开放、自我改变。相信 Docker 会在微软的帮助下，能够变得更加的完善。小结随着 Docker 的不断演进，我们不断的看到更多新的特性被释放出来，但是同样的，随着商业化的不断进行，Docker 公司也开始走上类似红帽公司的道路。从长远的角度来说，商业化是必然的，只有不断的获取盈利，Docker 才能够不断的走下去，持续为我们提供服务。
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: true 在 Network 块中，取消注释 network.host 和 http.port 行。network.host: localhost http.port: 9200 保存文件并退出编辑器。现在编辑 elasticsearch.service 文件的内存锁配置。vim /usr/lib/systemd/system/elasticsearch.service 去掉第 60 行的注释，确保该值为 unlimited。MAX_LOCKED_MEMORY=unlimited 保存并退出。Elasticsearch 配置到此结束。Elasticsearch 将在本机的 9200 端口运行，我们通过在 CentOS 服务器上启用 mlockall 来禁用内存交换。重新加载 systemd，将 Elasticsearch 置为开机启动，然后启动服务。sudo systemctl daemon-reload sudo systemctl enable elasticsearch sudo systemctl start elasticsearch 等待 Eelasticsearch 启动成功，然后检查服务器上打开的端口，确保 9200 端口的状态是 LISTEN。netstat -plntu 然后检查内存锁以确保启用 mlockall，并使用以下命令检查 Elasticsearch 是否正在运行。curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty' curl -XGET 'localhost:9200/?pretty' 会看到如下结果。步骤 4 - 安装和配置 Kibana 和 Nginx在这一步，我们将在 Nginx Web 服务器上安装并配置 Kibana。 Kibana 监听在 localhost 上，而 Nginx 作为 Kibana 的反向代理。用 wget 下载 Kibana 5.1，然后使用 rpm 命令安装：wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm rpm -ivh kibana-5.1.1-x86_64.rpm 编辑 Kibana 配置文件。vim /etc/kibana/kibana.yml 去掉配置文件中 server.port、server.host 和 elasticsearch.url 这三行的注释。server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200" 保存并退出。将 Kibana 设为开机启动，并且启动 Kibana 。sudo systemctl enable kibana sudo systemctl start kibana Kibana 将作为 node 应用程序运行在端口 5601 上。netstat -plntu Kibana 安装到此结束。 现在我们需要安装 Nginx 并将其配置为反向代理，以便能够从公共 IP 地址访问 Kibana。Nginx 在 Epel 资源库中可以找到，用 yum 安装 epel-release。yum -y install epel-release 然后安装 Nginx 和 httpd-tools 这两个包。yum -y install nginx httpd-tools httpd-tools 软件包包含 Web 服务器的工具，可以为 Kibana 添加 htpasswd 基础认证。编辑 Nginx 配置文件并删除 server {} 块，这样我们可以添加一个新的虚拟主机配置。cd /etc/nginx/ vim nginx.conf 删除 server { } 块。保存并退出。现在我们需要在 conf.d 目录中创建一个新的虚拟主机配置文件。 用 vim 创建新文件 kibana.conf。vim /etc/nginx/conf.d/kibana.conf 复制下面的配置。server { listen 80; server_name elk-stack.co; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.kibana-user; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } 保存并退出。然后使用 htpasswd 命令创建一个新的基本认证文件。sudo htpasswd -c /etc/nginx/.kibana-user admin “输入你的密码” 测试 Nginx 配置，确保没有错误。 然后设定 Nginx 开机启动并启动 Nginx。nginx -t systemctl enable nginx systemctl start nginx 步骤 5 - 安装和配置 Logstash在此步骤中，我们将安装 Logstash，并将其配置为：从配置了 filebeat 的 logstash 客户端里集中化服务器的日志，然后过滤和转换 Syslog 数据，并将其移动到存储中心（Elasticsearch）中。下载 Logstash 并使用 rpm 进行安装。wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm rpm -ivh logstash-5.1.1.rpm 生成新的 SSL 证书文件，以便客户端可以识别 elastic 服务端。进入 tls 目录并编辑 openssl.cnf 文件。cd /etc/pki/tls vim openssl.cnf 在 [v3_ca] 部分添加服务器标识。[ v3_ca ] # Server IP Address subjectAltName = IP: 10.0.15.10 保存并退出。使用 openssl 命令生成证书文件。openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt 证书文件可以在 /etc/pki/tls/certs/ 和 /etc/pki/tls/private/ 目录中找到。接下来，我们会为 Logstash 创建新的配置文件。创建一个新的 filebeat-input.conf 文件来为 filebeat 配置日志源，然后创建一个 syslog-filter.conf 配置文件来处理 syslog，再创建一个 output-elasticsearch.conf 文件来定义输出日志数据到 Elasticsearch。转到 logstash 配置目录，并在 conf.d 子目录中创建新的配置文件。cd /etc/logstash/ vim conf.d/filebeat-input.conf 输入配置，粘贴以下配置：input { beats { port => 5443 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } } 保存并退出。创建 syslog-filter.conf 文件。vim conf.d/syslog-filter.conf 粘贴以下配置：filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } 我们使用名为 grok 的过滤器插件来解析 syslog 文件。保存并退出。创建输出配置文件 output-elasticsearch.conf。vim conf.d/output-elasticsearch.conf 粘贴以下配置：output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } } 保存并退出。最后，将 logstash 设定为开机启动并且启动服务。sudo systemctl enable logstash sudo systemctl start logstash 步骤 6 - 在 CentOS 客户端上安装并配置 FilebeatBeat 作为数据发送人的角色，是一种可以安装在客户端节点上的轻量级代理，将大量数据从客户机发送到 Logstash 或 Elasticsearch 服务器。有 4 种 beat，Filebeat 用于发送“日志文件”，Metricbeat 用于发送“指标”，Packetbeat 用于发送“网络数据”，Winlogbeat 用于发送 Windows 客户端的“事件日志”。在本教程中，我将向您展示如何安装和配置 Filebeat，通过 SSL 连接将数据日志文件传输到 Logstash 服务器。登录到客户端1的服务器上。 然后将证书文件从 elastic 服务器复制到客户端1的服务器上。ssh root@client1IP 使用 scp 命令拷贝证书文件。scp root@elk-serverIP:~/logstash-forwarder.crt . 输入 elk-server 的密码 创建一个新的目录，将证书移动到这个目录中。sudo mkdir -p /etc/pki/tls/certs/ mv ~/logstash-forwarder.crt /etc/pki/tls/certs/ 接下来，在客户端 1 服务器上导入 elastic 密钥。rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 下载 Filebeat 并且用 rpm 命令安装。wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm rpm -ivh filebeat-5.1.1-x86_64.rpm Filebeat 已经安装好了，请转到配置目录并编辑 filebeat.yml 文件。cd /etc/filebeat/ vim filebeat.yml 在第 21 行的路径部分，添加新的日志文件。 我们将创建两个文件，记录 ssh 活动的 /var/log/secure 文件 ，以及服务器日志 /var/log/messages 。 paths: - /var/log/secure - /var/log/messages 在第 26 行添加一个新配置来定义 syslog 类型的文件。 document-type: syslog Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中，我们将其更改为 Logshtash。 在 83 行和 85 行添加注释来禁用 Elasticsearch 输出。禁用 Elasticsearch 输出：#-------------------------- Elasticsearch output ------------------------------ #output.elasticsearch: # Array of hosts to connect to. # hosts: ["localhost:9200"] 现在添加新的 logstash 输出配置。 去掉 logstash 输出配置的注释，并将所有值更改为下面配置中的值。output.logstash: # The Logstash hosts hosts: ["10.0.15.10:5443"] bulk_max_size: 1024 ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false 保存文件并退出 vim。将 Filebeat 设定为开机启动并启动。sudo systemctl enable filebeat sudo systemctl start filebeat 步骤 7 - 在 Ubuntu 客户端上安装并配置 Filebeat使用 ssh 连接到服务器。ssh root@ubuntu-clientIP 使用 scp 命令拷贝证书文件。scp root@elk-serverIP:~/logstash-forwarder.crt . 创建一个新的目录，将证书移动到这个目录中。sudo mkdir -p /etc/pki/tls/certs/ mv ~/logstash-forwarder.crt /etc/pki/tls/certs/ 在服务器上导入 elastic 密钥。wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 下载 Filebeat .deb 包并且使用 dpkg 命令进行安装。wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb dpkg -i filebeat-5.1.1-amd64.deb 转到配置目录并编辑 filebeat.yml 文件。cd /etc/filebeat/ vim filebeat.yml 在路径配置部分添加新的日志文件路径。 paths: - /var/log/auth.log - /var/log/syslog 设定文档类型为 syslog 。 document-type: syslog 将下列几行注释掉，禁用输出到 Elasticsearch。#-------------------------- Elasticsearch output ------------------------------ #output.elasticsearch: # Array of hosts to connect to. # hosts: ["localhost:9200"] 启用 logstash 输出，去掉以下配置的注释并且按照如下所示更改值。output.logstash: # The Logstash hosts hosts: ["10.0.15.10:5443"] bulk_max_size: 1024 ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false 保存并退出 vim。将 Filebeat 设定为开机启动并启动。sudo systemctl enable filebeat sudo systemctl start filebeat 检查服务状态：systemctl status filebeat 步骤 8 - 测试打开您的网络浏览器，并访问您在 Nginx 中配置的 elastic stack 域名，我的是“elk-stack.co”。 使用管理员密码登录，然后按 Enter 键登录 Kibana 仪表盘。创建一个新的默认索引 filebeat-*，然后点击“创建”按钮。默认索引已创建。 如果 elastic stack 上有多个 beat，您可以在“星形”按钮上点击一下即可配置默认 beat。转到 “发现” 菜单，您就可以看到 elk-client1 和 elk-client2 服务器上的所有日志文件。来自 elk-client1 服务器日志中的无效 ssh 登录的 JSON 输出示例。使用其他的选项，你可以使用 Kibana 仪表盘做更多的事情。Elastic Stack 已安装在 CentOS 7 服务器上。 Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。via: https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/作者：Muhammad Arul 译者：Flowsnow 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在过去四年中，树莓派基金会非常努力地针对树莓派的硬件优化了 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 的话所有需要的软件都是开箱即用的。参见 Josh 的博文，并参考我的 gist 了解更多信息。更多指南MagPi 的第 53 期提供了一些试用和安装 PIXEL 的指南，包括使用带持久驱动的 Live 光盘来维护你的文件和应用程序。你可以购买一份，或免费下载 PDF 来了解更多。（图片版权：树莓派基金会， CC BY-SA）作者简介：Ben Nuttall - Ben Nuttall 是一名树莓派社区管理员。他除了为树莓派基金会工作外，他还对自由软件、数学、皮划艇、GitHub、Adventure Time 和 Futurama 等感兴趣。在 Twitter @ben\_nuttall 上关注 Ben。via: https://opensource.com/article/17/1/try-raspberry-pis-pixel-os-your-pc作者：Ben Nuttall 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
我们已经从一个新手的角度了解了 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 比较三个文件夹。想要比较三个文件夹时，你可以通过单击 三向比较 3-way comparison 复选框。今天，我们不介绍怎么比较三个文件夹，但它肯定会出现在后续的教程中。via: https://www.howtoforge.com/tutorial/how-to-perform-directory-comparison-using-meld/作者：Ansh 译者：vim-kakali 校对：jasminepeng本文由 LCTT 原创编译，Linux中国 荣誉推出
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 的核心功能。监控和记录特定网络上的流量就是它最初产生的目的。使用它最基本的方式来作这个抓包的工作是相当简单方便的。当然，越多的配置和选项就越可以充分利用 Wireshark 的力量。这里的介绍的关注点依然还是它最基本的记录方式。按下那个看起来像蓝色鲨鱼鳍的新建实时抓包按钮就可以开始抓包了。（LCTT 译注：在我的 Debian 上它是绿色的）在抓包的过程中，Wireshark 会收集所有它能收集到的包的数据并且记录下来。如果没有更改过相关设置的话，在抓包的过程中你会看见不断的有新的包进入到“包列表”面板中。你可以实时的查看你认为有趣的包，或者就让 Wireshark 运行着，同时你可以做一些其它的事情。当你完成了，按下红色的正方形“停止”按钮就可以了。现在，你可以选择是否要保存这些所抓取的数据了。要保存的话，你可以使用“文件”菜单下的“保存”或者是“另存为”选项。读取数据Wireshark 的目标是向你提供你所需要的所有数据。这样做时，它会在它监控的网络上收集大量的与网络包相关的数据。它使用可折叠的标签来展示这些数据，使得这些数据看起来没有那么吓人。每一个标签都对应于网络包中一部分的请求数据。这些标签是按照从最底层到最高层一层层堆起来的。顶部标签总是包含数据包中包含的字节数据。最下方的标签可能会是多种多样的。在下图的例子中是一个 HTTP 请求，它会包含 HTTP 的信息。您遇到的大多数数据包将是 TCP 数据，它将展示在底层的标签中。每一个标签页都包含了抓取包中对应部分的相关数据。一个 HTTP 包可能会包含与请求类型相关的信息，如所使用的网络浏览器，服务器的 IP 地址，语言，编码方式等的数据。一个 TCP 包会包含服务器与客户端使用的端口信息和 TCP 三次握手过程中的标志位信息。在上方的其它标签中包含了一些大多数用户都感兴趣的少量信息。其中一个标签中包含了数据包是否是通过 IPv4 或者 IPv6 传输的，以及客户端和服务器端的 IP 地址。另一个标签中包含了客户端和接入因特网的路由器或网关的设备的 MAC 地址信息。结语即使只使用这些基础选项与配置，你依然可以发现 Wireshark 会是一个多么强大的工具。监控你的网络流量可以帮助你识别、终止网络攻击或者提升连接速度。它也可以帮你找到问题应用。下一篇 Wireshark 指南我们将会一起探索 Wireshark 的包过滤选项。via: https://linuxconfig.org/basic-of-network-protocol-analyzer-wireshark-on-linux作者：Nick Congleton 译者：wcnnbdk1 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这系列共三部分，首先，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 地址空间也能重新分配，并且可引入简单的负载均衡（具有一定程度的弹性）。请别忘了我们也需要考虑呈指数增长的物联网（IoT），这最终将包括数以亿万计的新装置，意味着这些设备都需要保持正确时间。硬件卖家无意（或有意）设置他们的设备只能与一个提供者的（甚至一个） NTP 服务器连接终将成为过去，这是一个非常麻烦的问题。你可能会想象，随着买入和上线更多的硬件单元，NTP 基础设施的拥有者大概不会为相关的费用而感到高兴，因为他们正被没有实际收入所困扰。这种情形并非杞人忧天。头疼的问题多呢 -- 由于 NTP 流量导致基础架构不堪重负 -- 这在过去几年里已发生过多次。在下面两篇文章里，我将着重于一些重要的 NTP 安全配置选项和描述服务器的搭建。via: https://www.linux.com/learn/arrive-time-ntp-part-1-usage-overview作者：CHRIS BINNIE 译者：XYenChi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在现有的 Linux 系统上添加新的磁盘
作为一个系统管理员，我们会有这样的一些需求：作为升级服务器容量的一部分，或者有时出现磁盘故障时更换磁盘，我们需要将新的硬盘配置到现有服务器。在这篇文章中，我会向你逐步介绍添加新硬盘到现有 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 进程。 进程 （ 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 和 top 命令：1. ps 命令它显示被选中的系统中活跃进程的信息，如下图所示：# ps # ps -e | head 列出 Linux 活跃进程2. top - 系统监控工具top 是一个强大的工具，它能给你提供 运行系统的动态实时视图，如下面截图所示：# top 列出 Linux 正在运行的程序阅读这篇文章获取更多 top 使用事例：Linux 中 12 个 top 命令实例3. glances - 系统监控工具glances 是一个相对比较新的系统监控工具，它有一些比较高级的功能：# glances Glances – Linux 进程监控要获取完整使用指南，请阅读：Glances - Linux 的一个高级实时系统监控工具还有很多你可以用来列出活跃进程的其它有用的 Linux 系统监视工具，打开下面的链接了解更多关于它们的信息：监控 Linux 性能的 20 个命令行工具13 个有用的 Linux 监控工具如何在 Linux 中控制进程Linux 也有一些命令用于控制进程，例如 kill、pkill、pgrep 和 killall，下面是一些如何使用它们的基本事例：$ pgrep -u tecmint top $ kill 2308 $ pgrep -u tecmint top $ pgrep -u tecmint glances $ pkill glances $ pgrep -u tecmint glances 控制 Linux 进程想要深入了解如何使用这些命令，在 Linux 中杀死/终止活跃进程，可以点击下面的链接：终止 Linux 进程的 Kill、Pkill 和 Killall 命令指南如何在 Linux 中查找并杀死进程注意当你系统 僵死 （ freeze ） 时你可以使用它们杀死 Linux 中的不响应程序。给进程发送信号Linux 中控制进程的基本方法是给它们发送信号。你可以发送很多信号给一个进程，运行下面的命令可以查看所有信号：$ kill -l 列出所有 Linux 信号要给一个进程发送信号，可以使用我们之前提到的 kill、pkill 或 pgrep 命令。但只有被编程为能识别这些信号时程序才能响应这些信号。大部分信号都是系统内部使用，或者给程序员编写代码时使用。下面是一些对系统用户非常有用的信号：SIGHUP 1 - 当控制它的终端被被关闭时给进程发送该信号。SIGINT 2 - 当用户使用 Ctrl+C 中断进程时控制它的终端给进程发送这个信号。SIGQUIT 3 - 当用户发送退出信号 Ctrl+D 时给进程发送该信号。SIGKILL 9 - 这个信号会马上中断（杀死）进程，进程不会进行清理操作。SIGTERM 15 - 这是一个程序终止信号（kill 默认发送这个信号）。SIGTSTP 20 - 它的控制终端发送这个信号给进程要求它停止（终端停止）；通过用户按 Ctrl+Z 触发。下面是当 Firefox 应用程序僵死时通过它的 PID 杀死它的 kill 命令事例：$ pidof firefox $ kill 9 2687 或 $ kill -KILL 2687 或 $ kill -SIGKILL 2687 使用它的名称杀死应用，可以像下面这样使用 pkill 或 killall：$ pkill firefox $ killall firefox 更改 Linux 进程优先级在 Linux 系统中，所有活跃进程都有一个优先级以及 nice 值。有比点优先级进程有更高优先级的进程一般会获得更多的 CPU 时间。但是，有 root 权限的系统用户可以使用 nice 和 renice 命令影响（更改）优先级。在 top 命令的输出中， NI 显示了进程的 nice 值：$ top 列出 Linux 正在运行的进程使用 nice 命令为一个进程设置 nice 值。记住一个普通用户可以给他拥有的进程设置 0 到 20 的 nice 值。只有 root 用户可以使用负的 nice 值。要重新设置一个进程的优先级，像下面这样使用 renice 命令：$ renice +8 2687 $ renice +8 2103 阅读我们其它如何管理和控制 Linux 进程的有用文章。Linux 进程管理：启动、停止以及中间过程使用 ‘top’ 命令 Batch 模式查找内存使用最高的 15 个进程在 Linux 中查找内存和 CPU 使用率最高的进程在 Linux 中如何使用进程 ID 查找进程名称就是这些！如果你有任何问题或者想法，通过下面的反馈框和我们分享吧。（题图：Pixabay，CC0）作者简介：Aaron Kili 是一个 Linux 和 F.O.S.S（Free and Open-Source Software） 爱好者，一个 Linux 系统管理员、web 开发员，现在也是 TecMint 的内容创建者，他喜欢和电脑一起工作，他相信知识共享。via: http://www.tecmint.com/linux-process-management/作者：Aaron Kili 译者：ictlyh 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出