2015年6月

这里有一些很酷的Linux终端彩蛋,其中的每一个看上去并没有实际用途,但很有趣。

只工作不玩耍……

当我们使用命令行工作时,Linux是功能和实用性最好的操作系统之一。想要执行一个特殊任务?可能一个程序或者脚本就可以帮你搞定。但就像一本书中说到的,只工作不玩耍聪明的孩子也会变傻。下边是我最喜欢的可以在终端做的没有实际用途的、傻傻的、恼人的、可笑的事情。

让终端成为一个有态度的人

  • 第一步)敲入sudo visudo
  • 第二步)在“Defaults”末尾(文件的前半部分)添加一行“Defaults insults”。
  • 第三步)保存文件。

“我刚才对电脑做了什么?”你可能这样问自己。一定是美妙的事情吧。现在,在sudo命令提示提示下输出错误的口令,你的电脑就会指责你。我最喜欢的一句:“听好了,煎饼一样的脑子,我没有时间听你胡说八道了。”

apt-get moo

你看过这张截图?那就是运行apt-get moo(在基于Debian的系统)的结果。对,就是它了。不要对它抱太多幻想,你会失望的,我不骗你。但是这是Linux世界最被人熟知的彩蛋之一。所以我把它包含进来,并且放在前排,然后我也就不会收到5千封邮件,指责我把它遗漏了。

aptitude moo

更有趣的是将moo应用到aptitude上。敲入aptitude moo(在Ubuntu及其衍生版),你对moo可以做什么事情的看法会有所变化。你还还会知道更多事情,尝试重新输入这条命令,但这次添加一个-v参数。这还没有结束,试着添加更多v,一次添加一个,直到抓狂的aptitude给了你想要的东西。

Arch: 将吃豆人放入pacman

这里有一个只为Arch爱好者准备的彩蛋。Pacman包管理工具已经很棒了,但我们可以让它变得更棒。

  • 第一步)打开“/etc/pacman.conf”文件。
  • 第二步)在“# Misc options”部分,去掉“Color”前的“#”。
  • 第三步)添加“ILoveCandy”。

现在我们使用pacman安装新软件包时,进度条里会出现一个小吃豆人。真应该默认就这样的。

Cowsay!

aptitude moo的输出格式很漂亮,但我想你苦于不能自由自在地使用。输入cowsay,它会做到你想做的事情。你可以让牛说任何你喜欢的东西。而且不只可以用牛,还可以用Calvin、Beavis和Ghostbusters logo的ASCII的艺术,输入cowsay -l可以得到所有可用的参数。它是Linux世界的强大工具。像很多其他命令一样,你可以使用管道把其他程序的输出输送给它,比如fortune | cowsay,让这头牛变成哲学家。

变成3l33t h@x0r

nmap并不是我们平时经常使用的基本命令。但如果你想蹂躏nmap的话,比如像人一样看起来像l33t。在任何nmap命令后添加-oS(比如nmap -oS - google.com)。现在你的nmap已经处于标准叫法是“脚本玩具模式”的模式了。Angelina Jolie和Keanu Reeves会为此骄傲的。

获得所有的Discordian日期

如果你们曾经坐在一起思考,“嗨!我想使用无用但异想天开的方式来书写今天的日期……”试试运行ddate。结果类似于“Today is Setting Orange, the 72nd day of Discord in the YOLD 3181”,这会让你的服务树日志平添不少趣味。

注意:在技术层面,确实有一个Discordian Calendar,理论上被Discordianism追随者所使用。这意味着我可能得罪某些人。或者不会,我不确定。不管怎样,ddate是一个方便的工具。

我可以在任何地方看到颜色!

厌倦了老旧的文本?想向世界展示出自己的个性?使用lolcat。安装它,然后在任何地方使用。它可以接收任何文本,然后将其转换成美轮美奂的彩虹效果。可以使用fortune | lolcat体验。

蒸汽机车

在你的终端显示蒸汽机车的ASCII图形。如果你需要它,安装并运行sl命令。sl -l可以看到一个袖珍版本的。或者,如果你真想在上边花费更多时间,运行sl -h。这会显示一个完整的或者,还包括乘客车厢。

将任何文本逆序输出

将任何文本使用管道输送给rev命令,它就会将文本内容逆序输出。fortune | rev会给你好运。当然,这不意味着rev会将幸运(fortune)转换成不幸。

Matrix依然很酷,不是吗?

想让你的终端显示滚动的文字、l33t和Matrix电影中的坠落数码?cmatrix是你的朋友。你甚至可以用它输出不同的颜色,非常华丽。使用man cmatrix学习使用方法。或者使用更好的方法,“man cmatrix | lolcat”。这确实是你在Linux终端可以做的最没实际用途却又精彩的事情了。

以上就是全部内容了。


via: http://www.networkworld.com/article/2926630/linux/11-pointless-but-awesome-linux-terminal-tricks.html

作者:Bryan Lunduke 译者:goreliu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题: 我经常需要在桌面版 Ubuntu 中更改系统代理设置,但我不想通过繁琐的 GUI 菜单点击:"系统设置" -> "网络" -> "网络代理"。在命令行中有更方便的方法更改桌面版的代理设置吗?

在桌面版 Ubuntu 中,它的桌面环境设置,包括系统代理设置,都存储在 DConf 数据库,这是简单的键值对存储。如果你想通过系统设置菜单修改桌面属性,更改会持久保存在后端的 DConf 数据库。在 Ubuntu 中更改 DConf 数据库有基于图像用户界面和非图形用户界面的两种方式。系统设置或者 dconf-editor 是访问 DConf 数据库的图形方法,而 gsettingsdconf 就是能更改数据库的命令行工具。

下面介绍如何用 gsettings 从命令行更改系统代理设置。

gsettings 读写特定 Dconf 设置的基本用法如下:

更改 DConf 设置:

$ gsettings set <schema> <key> <value> 

读取 DConf 设置:

$ gsettings get <schema> <key> 

通过命令行更改系统代理设置为手动

桌面版 Ubuntu 中下面的命令会更改 HTTP 代理设置为 "my.proxy.com:8000"。

$ gsettings set org.gnome.system.proxy.http host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.http port 8000
$ gsettings set org.gnome.system.proxy mode 'manual' 

如果你还想更改 HTTPS/FTP 代理为手动,用这些命令:

$ gsettings set org.gnome.system.proxy.https host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.https port 8000
$ gsettings set org.gnome.system.proxy.ftp host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.ftp port 8000 

更改套接字主机设置为手动:

$ gsettings set org.gnome.system.proxy.socks host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.socks port 8000 

上面的更改都只适用于当前的桌面用户。如果你想在系统范围内使用代理设置更改,在 gsettings 命令面前添加 sudo。例如:

$ sudo gsettings set org.gnome.system.proxy.http host 'my.proxy.com'
$ sudo gsettings set org.gnome.system.proxy.http port 8000
$ sudo gsettings set org.gnome.system.proxy mode 'manual' 

在命令行中更改系统代理设置为自动

如果你正在使用 自动配置代理 (proxy auto configuration,PAC),输入以下命令更改为 PAC。

$ gsettings set org.gnome.system.proxy mode 'auto'
$ gsettings set org.gnome.system.proxy autoconfig-url http://my.proxy.com/autoproxy.pac

在命令行中清除系统代理设置

最后,清除所有“手动/自动”代理设置,还原为无代理设置:

$ gsettings set org.gnome.system.proxy mode 'none' 

via: http://ask.xmodulo.com/change-system-proxy-settings-command-line-ubuntu-desktop.html

作者:Dan Nanni 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在这篇文章中我们将了解关于 Percona 服务器,一个开源的MySQL,MariaDB的替代品。InnoDB的数据库引擎使得Percona 服务器非常有吸引力,如果你需要的高性能,高可靠性和高性价比的解决方案,它将是一个很好的选择。

在下文中将介绍在CentOS 7上 Percona 服务器的安装,以及备份当前数据,配置的步骤和如何恢复备份。

1.什么是Percona,为什么使用它

Percona是一个MySQL,MariaDB数据库的开源替代品,它是MySQL的一个分支,相当多的改进和独特的功能使得它比MYSQL更可靠,性能更强,速度更快,它与MYSQL完全兼容,你甚至可以在Oracle的MySQL与Percona之间使用复制。

在Percona中独具特色的功能

  • 分区适应哈希搜索
  • 快速校验算法
  • 缓冲池预加载
  • 支持FlashCache

MySQL企业版和Percona中的特有功能

  • 从不同的服务器导入表
  • PAM认证
  • 审计日志
  • 线程池

现在,你肯定很兴奋地看到这些好的东西整合在一起,我们将告诉你如何安装和对Percona Server做基本配置。

2. 备份你的数据库

接下来,在命令行下使用SQL命令创建一个mydatabases.sql文件,来重建或恢复salesdb和employeedb数据库,根据你的设置替换数据库名称,如果没有安装MySQL则跳过此步:

mysqldump -u root -p --databases employeedb salesdb > mydatabases.sql

复制当前的配置文件,如果你没有安装MYSQL也可跳过:

cp my.cnf my.cnf.bkp

3.删除之前的SQL服务器

停止MYSQL/MariaDB,如果它们还在运行:

systemctl stop mysql.service

卸载MariaDB和MYSQL:

yum remove MariaDB-server MariaDB-client MariaDB-shared mysql mysql-server

移动重命名放在/var/lib/mysql当中的MariaDB文件。这比仅仅只是移除更为安全快速,这就像2级即时备份。:)

mv /var/lib/mysql /var/lib/mysql_mariadb

4.使用二进制包安装Percona

你可以在众多Percona安装方法中选择,在CentOS中使用Yum或者RPM包安装通常是更好的主意,所以这些是本文介绍的方式,下载源文件编译后安装在本文中并没有介绍。

从Yum仓库中安装:

首先,你需要设置Percona的Yum库:

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

接下来安装Percona:

yum install Percona-Server-client-56 Percona-Server-server-56

上面的命令安装Percona的服务器和客户端、共享库,可能需要Perl和Perl模块,以及其他依赖的需要,如DBI::MySQL。如果这些尚未安装,可能需要安装更多的依赖包。

使用RPM包安装:

我们可以使用wget命令下载所有的rpm包:

wget -r -l 1 -nd -A rpm -R "*devel*,*debuginfo*" \
http://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-5.5.42-37.1/binary/redhat/7/x86_64/

使用rpm工具,一次性安装所有的rpm包:

rpm -ivh Percona-Server-server-55-5.5.42-rel37.1.el7.x86_64.rpm \
Percona-Server-client-55-5.5.42-rel37.1.el7.x86_64.rpm \
Percona-Server-shared-55-5.5.42-rel37.1.el7.x86_64.rpm

注意在上面命令语句中最后的反斜杠'\'(只是为了换行方便)。如果您安装单独的软件包,记住要解决依赖关系,在安装客户端之前要先安装共享包,在安装服务器之前请先安装客户端。

5.配置Percona服务器

恢复之前的配置

当我们从MariaDB迁移过来时,你可以将之前的my.cnf的备份文件恢复回来。

cp /etc/my.cnf.bkp /etc/my.cnf

创建一个新的my.cnf文件

如果你需要一个适合你需求的新的配置文件或者你并没有备份配置文件,你可以使用以下方法,通过简单的几步生成新的配置文件。

下面是Percona-server软件包自带的my.cnf文件

# Percona Server template configuration

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

根据你的需要配置好my.cnf后,就可以启动该服务了:

systemctl restart mysql.service

如果一切顺利的话,它已经准备好执行SQL命令了,你可以用以下命令检查它是否已经正常启动:

mysql -u root -p -e 'SHOW VARIABLES LIKE "version_comment"'

如果你不能够正常启动它,你可以在/var/log/mysql/mysqld.log中查找原因,该文件可在my.cnf的[mysql\_safe]的log-error中设置。

tail /var/log/mysql/mysqld.log

你也可以在/var/lib/mysql/文件夹下查找格式为[主机名].err的文件,就像下面这个例子:

tail /var/lib/mysql/centos7.err

如果还是没找出原因,你可以试试strace:

yum install strace && systemctl stop mysql.service && strace -f -f mysqld_safe

上面的命令挺长的,输出的结果也相对简单,但绝大多数时候你都能找到无法启动的原因。

6.保护你的数据

好了,你的关系数据库管理系统已经准备好接收SQL查询,但是把你宝贵的数据放在没有最起码安全保护的服务器上并不可取,为了更为安全最好使用mysqlsecureinstall来安装,这个工具可以帮助你删除未使用的默认功能,并设置root的密码,限制使用此用户进行访问。只需要在shell中执行该命令,并参照屏幕上的说明操作。

mysql_secure_install

7.还原备份

如果您参照之前的设置,现在你可以恢复数据库,只需再用mysqldump一次。

mysqldump -u root -p < mydatabases.sql

恭喜你,你刚刚已经在你的CentOS上成功安装了Percona,你的服务器已经可以正式投入使用;你可以像使用MySQL一样使用它,你的服务器与它完全兼容。

总结

为了获得更强的性能你需要对配置文件做大量的修改,但这里也有一些简单的选项来提高机器的性能。当使用InnoDB引擎时,将innodbfileper\_table设置为on,它将在一个文件中为每个表创建索引表,这意味着每个表都有它自己的索引文件,它使系统更强大和更容易维修。

可以修改innodbbufferpool\_size选项,InnoDB应该有足够的缓存池来应对你的数据集,大小应该为当前可用内存的70%到80%。

将innodb-flush-method设置为O\_DIRECT,关闭写入高速缓存,如果你使用了RAID,这可以提升性能,因为在底层已经完成了缓存操作。

如果你的数据并不是十分关键并且并不需要对数据库事务正确执行的四个基本要素完全兼容,可以将innodbflushlogattrx\_commit设置为2,这也能提升系统的性能。


via: http://linoxide.com/linux-how-to/percona-server-centos-7/

作者:Carlos Alberto 译者:FatJoe123 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

曾经的‘丑小鸭工程’已经转变为一个互联网巨头,感谢灵活、务实和充满活力的开发者社区。

当Rasmus Lerdorf发布“一个用C写的小型紧凑的CGI可执行程序集合”时, 他没有想到他的创造会对网络发展产生多大的影响。今年在Miami举行的SunshinePHP大会上,Lerdorf做了开场演讲,他自嘲到,“在1995年的时候,我以为我已经在 Web 上解除了C API的束缚。显然,事情并非那样,我们全成了C程序员了。”

题图来自: Steve Jurvetson via Flickr

实际上,当Lerdorf发布个人主页工具(Personal Home Page Tools,即 PHP 名字的来源)的1.0版本时,那时的网络还是如此的年轻。直到那年的十一月份HTML 2.0还没有公布,而且HTTP/1.0也是次年的五月份才出现。那时,NCSA HTTPd是使用最广泛的网络服务器,而网景的Navigator则是最流行的网络浏览器,八月份的时候,IE1.0才刚刚出现。换句话说,PHP的开端刚好撞上了浏览器战争的前夜。

早些时候,我们谈论了一大堆关于PHP对网络发展的影响。回到那时候,当说到用于网络应用的服务器端处理,我们的选择是有限的。PHP满足了我们对于一种工具的需求,这就是可以使得我们在网络上做一些动态的事情。它的实用的灵活性只受限于我们的想像力,PHP从那时起便与网络共同成长。现在,PHP占据了网络语言的超过80%的份额,已经是成熟的脚本语言,特别适合解决网络问题。她独一无二的血统讲述了一个故事,实用高于理论,解决问题高于纯正。

把我们钩住的网络魔力

PHP一开始并不是一门编程语言,从她的设计就很明显不是 -- 或者她本来就缺乏相关特性,正如那些贬低者指出的那样。最初,她是作为一种API帮助网络开发者能够接入底层的C语言封装库。第一个版本是一组小的CGI可执行程序,提供表单处理功能,可以访问查询参数和mSQL数据库。而且她可以如此容易地处理一个网络应用的数据库,证明了其在激发我们对于PHP的兴趣和PHP后来的支配地位的关键作用。

到了第二版 -- 即 PHP/FI -- 数据库的支持已经扩展到包括PostgreSQL、MySQL、Oracle、Sybase等等。她通过封装他们的C语言库来支持各种数据库,将他们作为PHP库的一部分。PHP/FI也封装了GD库,可以创建并管理GIF图像。她可以作为一个Apache模块运行,或者编译进FastCGI支持,并且她引入的 PHP 编程语言支持变量、数组、语言结构和函数。对于那个时候大多数在网络这块工作的人来说,PHP是我们一直在寻求的那款“胶水”。

当PHP吸纳越来越多的编程语言功能,演变为第三版和之后的版本时,她从来没有失去这种黏合的特性。通过仓库如PECL(PHP Extension Community Library),PHP可以把各种库都连在一起,将他们的函数引入到PHP层面。这种将组件结合在一起的能力,成为PHP之美的一个重要方面,使之不会受限于其源代码上。

网络,一个码农们的社区

PHP在网络发展上的持续影响并不局限于能用这种语言干什么。PHP如何完成工作,谁参与进来 -- 这些都是PHP传奇中很重要的部分。

早在1997年,PHP的用户群体开始形成。其中最早的是美国中西部PHP用户组(后来叫做 Chiago PHP),并1997年二月份的时候举行了第一次聚会。这是一个充满生气、饱含激情的开发者社区形成的开端,聚合成一种吸引力 -- 在网络上的一个小工具就可以帮助他们解决问题。PHP这种普遍存在的特性使得她成为网络开发一个很自然的选择。在分享主导的世界里,她开始盛行,而且低入的门槛对于许多早期的网络开发者来说是十分有吸引力的。

伴随着社区的成长,为开发者带来了一堆工具和资源。这一年是2000年,出现了PHP的一个转折点,它见证了第一次PHP开发者大会,聚集了编程语言的核心开发者,他们在Tel Aviv见面,讨论即将到来的4.0版本的发布。PHP扩展和应用仓库(PEAR)也于2000年发起,它提供了高质量的用户代码包,依据标准和最佳操作。第一届PHP大会PHP Kongress不久之后在德国举行。PHPDeveloper.org也随后上线,直到今天,这都是PHP社区里最权威的新闻资源。

这个社区的势头表明了接下来几年里PHP成长的关键所在。随着网络开发产业的爆发,PHP也获得发展。PHP开始为更多、更大的网站提供动力。越来越多的用户群在世界各地开花。邮件列表、在线论坛、IRC、大会,以及如php[architect]、德国PHP杂志、国际PHP杂志等商业杂志 -- PHP社区的活力在完成网络工作的方式上有极其重要的影响:共同地,开放地,倡导代码共享。

然后,在10年前,PHP 5发布后不久,在网络发展史上一个有趣地事情发生了,它导致了PHP社区如何构建库和应用的转变:Ruby on Rails发布了。

框架的异军突起

用于Ruby编程语言的Ruby on Rails框架在MVC(模型-视图-控制)架构模型上获得了不断增长的焦点与关注。Mojavi PHP框架几年前已经使用MVC模型了,但是Ruby on Rails的高明之处在于巩固了MVC。框架引爆了PHP社区,并且框架已经改变了开发者构建PHP应用程序的方式。

许多重要的项目和发展已经发端,这归功于PHP社区框架的生长。PHP框架互用性组织成立于2009年,致力于在框架间建立编码标准,命名约定与最佳操作。编纂这些标准和操作帮助为开发者在使用成员项目的代码时提供了越来越多的互用性软件。互用性意味着每个框架可以拆分为组块和独立的库,也可以作为整体的框架在一起使用。互用性带来了另一个重要的里程碑:Composer项目于2011年诞生了。

从Node.js的NPM和Ruby的Bundler获得灵感,Composer开辟了PHP应用开发的新纪元,创造了一次PHP“文艺复兴”。它激发了包互用性、标准命名约定、编码标准的采用、覆盖测试的提升。它是任何现代PHP应用中的一个基本工具。

加速和创新的需要

如今,PHP社区有一个生机勃勃应用和库的生态系统,有一些被广泛安装的PHP应用包括WordPress,Drupal,Joomla和MediaWiki。从小型的夫妻店站点到whitehouse.gov和Wikipeida,这些应用支撑了各种不同规模的业务的网站。在Alexa前十的站点中,有6个使用PHP,在一天内为数十亿的页面访问提供服务。因此,PHP应用已成为需要加速的首选,并且许多创新也加入到PHP的核心来提升性能。

在2010年,Facebook公开了其用作PHP源对源的编译器的HipHop,可以翻译PHP代码为C++代码,并且编译为一个单独的可执行二进制应用。Facebook的规模和成长需要从标准互用的PHP代码迁移到更快、最佳的可执行的代码。尽管如此,由于PHP的易用和快速开发周期,Facebook还想继续使用PHP。HipHop后来进化为HHVM,这是一个针对PHP的JIT(just-in-time)编译基础的执行引擎,其包含一个基于PHP的新的语言:Hack

Facebook的创新以及其他的VM项目是在引擎水平上的比较,其引起了关于Zend引擎未来的讨论。Zend引擎依然是PHP的内核和语言规范。在2014年,它创建了一个语言规范项目,“提供一个完整的,简明的语句定义,和PHP语言的语义学”,使得对编译器项目来说,创建互用的PHP实现成为可能。

下一个PHP的主要版本成为了激烈争论的话题,他们提出了一个叫做phpng(下一代)的项目,来清理,重构,优化和改进PHP代码基础,这也展示了对实际应用的性能的实质提升。由于之前有一个未发布的PHP 6.0版本,因此在决定命名下一个主要版本叫做“PHP 7”后,就合并了phpng分支,并制定了开发PHP 7的计划,以增加很多语言中拥有的功能,如scalar和返回类型提示。

随着今天第一版PHP 7 alpha发布,基准检测程序显示她在许多方面与HHVM的一样好或者拥有更好的性能,PHP正与现代网络开发需求保持一致的步伐。同样地,PHP-FIG继续创新和推动框架与库的协作 -- 最近由于PSR-7的采纳,这将会改变PHP项目处理HTTP的方式。用户组、会议、公众和如PHPMentoring.org这样的布道者继续在PHP开发者社区提倡最好的操作、编码标准和测试。

PHP从各个方面见证了网络的成熟,而且PHP自己也成熟了。曾经一个简单的低级C语言库的API封装,PHP以她自己的方式,已经成为一个羽翼丰满的编程语言。她的开发者社区是一个充满生气、乐于助人、在实用方面引以为傲,并且欢迎新人的地方。PHP已经经受了20年的考验,而且目前在语言与社区里的活跃性,会保证她在接下来的几年里将会是一个密切相关的、积极有用的的语言。

在Rasmus Lerdorf的SunshinePHP的演讲中,他回忆到,“我会想到我会在20年之后讨论当初做的这个愚蠢的小项目吗?没有。”

这里向Lerdorf和PHP社区的其他人致敬,感谢他们把这个“愚蠢的小项目”变成了一个如今网络上持久、强大的组件。


via: http://www.infoworld.com/article/2933858/php/php-at-20-from-pet-project-to-powerhouse.html

作者:Ben Ramsey 译者:wi-cuckoo 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

当今世界,人们的计算机都相互连接,互联互通。小到你的家庭局域网(LAN),大到最大的一个被我们称为互联网。当你管理一台联网的计算机时,你就是在管理最关键的组件之一。由于大多数开发出的应用程序都基于网络,网络就连接起了这些关键点。

这就是为什么我们需要网络监控工具。ntop 是最好的网络监控工具之一。来自维基百科的知识“ntop是一个网络探测器,它以与top显示进程般类似的方式显示网络使用率。在交互模式中,它显示了用户终端上的网络状态。在网页模式中,它作为网络服务器,创建网络状态的HTML转储文件。它支持NetFlow/sFlowemitter/collector,这是一个基于HTTP的客户端界面,用于创建ntop为中心的监控应用,并使用RRD来持续存储通信数据”。

15年后的今天,你将见到ntopng——下一代ntop。

ntopng是什么

Ntopng是一个基于网页的高速通信分析器和流量收集器。Ntopng基于ntop,它运行于所有Unix平台、MacOS X和Windows。

特性

ntopng网站上,我们可以看到他们说它有众多的特性。这里列出了其中一些:

  • 按各种协议对网络通信排序
  • 显示网络通信和IPv4/v6的激活主机
  • 持续不断以RRD格式存储定位主机的通信数据到磁盘
  • 通过nDPI,ntop的DPI框架,发现应用协议
  • 显示各种协议间的IP通信分布
  • 分析IP通信,并根据源/目的地址进行排序
  • 显示IP通信子网的矩阵(谁在和谁通信?)
  • 报告按协议类型排序的IP协议使用率
  • 生成HTML5/AJAX网络通信数据

安装的先决条件

Ntop为CentOS和基于64位Ubuntu预编译好了包,你可以在它们的下载页面找到这些包。对于32位操作系统,你必须从源代码编译。本文在CentOS 6.4 32位版本上测试过。但是,它也可以在其它基于CentOS/RedHat的Linux版本上工作。让我们开始吧。

开发工具

你必须确保你安装了编译ntopng所需的所有开发工具,要安装开发工具,你可以使用yum命令:

# yum groupinstall ‘Development Tools’

安装TCL

# yum install tcl

安装libpcap

# yum install libpcap libpcap-devel

安装Redis

# wget http://redis.googlecode.com/files/redis-2.6.13.tar.gz
# tar zxfv redis-2.6.13.tar.gz
# cd redis-2.6.13
# make 32bit
# make test
# make install

安装ntopng

方法 1 :

# wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
# tar zxfv ntopng-1.1_6932.tgz
# cd ntopng-1.1_6932
# ./configure
# make
# make install 

方法 2 :

在我的CentOS 6.4上,我使用方法 1时收到了一个错误消息,错误消息内容如下:

./third-party/LuaJIT-2.0.2/src/libluajit.a : could not read symbols : File in wrong format

所以,我切换到了SVN来安装。对于此方法,需要联网,步骤如下:

# svn co https://svn.ntop.org/svn/ntop/trunk/ntopng/
# ./autogen.sh
# ./configure
# make
# make install

由于ntopng是一个基于网页的应用,你的系统必须安装有工作良好的 Web 服务器

为ntopng创建配置文件

如果一切都已安装完毕,那么我们该来运行它了。默认情况下,如果我们在./configure这一步没有明确修改安装文件夹的话,redis和ntopng将安装到/usr/local/文件夹。接下来,我们需要为ntopng创建配置文件。在本文中,我们使用vi作为文本编辑器。你也可以使用你所中意的文本编辑器来创建ntopng的配置文件。

# cd /usr/local/etc
# mkdir ntopng
# cd ntopng
# vi ntopng.start

放入这些行:

--local-network "10.0.2.0/24"
--interface 1

# vi ntopng.pid

放入该行:

-G=/var/run/ntopng.pid

保存这些文件,然后继续下一步。

运行ntopng

我们假定你已正确安装了网络服务器,那么下一步就是运行redis服务器。

# /usr/local/bin/redis-server

Starting Redis Server

然后,运行ntopng

# /usr/local/bin/ntopng

Starting Ntopng

测试ntopng

现在,你可以通过访问http://yourserver.name:3000来测试ntopng应用,你将会看到ntopng登录页面。首次登录,你可以使用用户‘admin’和密码‘admin’。

Ntop Login page

仪表盘相当简洁。当你登入后,你将看到关于最高流量通信者页面。

Ntopng Flow Talker

如果你点击右侧顶部的流量菜单,ntopng将会显示活动流量的更多细节。

Ntopng Flows

主机菜单上,你可以看到连接到流的所有主机。

Ntopng Hosts List

如果你点击主机 > 交互,ntop将显示一个漂亮的主机间的交互信息图表。

Ntopng Hosts Interaction

仪表盘菜单组成部分:

顶级主机(发送+接收)

Ntopng Hosts

顶级应用协议

Ntopng Apps

界面菜单将引领你进入更多内部菜单。包菜单将给你显示包的大小分布。

Ntopng packets

协议菜单将为你显示使用了多少协议及其使用百分比。

Ntopng protocol

Ntopng protocols - detail

你也可以通过使用历史活跃度菜单查看活跃度。

Ntopng Historical Activity

Ntopng Historical Activity detail

最后一项要点是,你也可以通过顶部右侧区域的设置菜单(齿轮图标的那一个)管理哪些用户可以访问ntopng。

Ntopng Users

Ntopng为你提供了一个范围宽广的时间线,从5分钟到1年都可以。你只需要点击你想要显示的时间线。图表本身是可以点击的,你可以点击它来进行缩放。

当然,ntopng能做的事比上面图片中展示的还要多得多。你也可以将定位和电子地图服务整合进来。在ntopng自己的网站上,有已付费的模块可供使用,如nprobe可以扩展ntopng可以提供给你的信息。更多关于ntopng的信息,你可以访问ntopng网站


via: http://linoxide.com/monitoring-2/ntopng-network-monitoring-tool/

作者:Pungki Arianto 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

wxWidgets

wxWidgets是一个程序开发框架/库, 允许你在Windows、Mac、Linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl、Ruby。

本教程中我将向你展示如何在基于Debian的linux中如Ubuntu和Linux Mint中编译wxwidgets 3.0+。

从源码编译wxWidgets并不困难,仅仅需要几分钟。库可以按不同的方式来编译,比如静态或者动态库。

1. 下载 wxWidgets

第一步你需要从wxwidgets.org下载wxWidgets源码文件。

做完后,解压到目录。

2. 设置编译环境

要编译wxwidgets,我们需要一些工具包括C++编译器,在Linux上是g++。所有这些可以通过apt-get工具从仓库中安装。

我们还需要wxWidgets依赖的GTK开发库。

$ sudo apt-get install libgtk-3-dev build-essential checkinstall
这个叫做checkinstall的工具允许我们为wxwidgets创建一个安装包,这样之后就可以轻松的使用包管理器来卸载。

3. 编译 wxWidgets

进入到wxWidgets解压后的目录。为了保持清洁,创建一个编译用的目录。

$ mkdir gtk-build
$ cd gtk-build/

现在运行configure和make命令。每个将花费一些时间来完成。

$ ../configure --disable-shared --enable-unicode
$ make

"--disable-shared"选项将会编译静态库而不是动态库。

make命令完成后,编译就成功了。是时候安装wxWidgets到正确的目录。

更多信息请参考install.txt和readme.txt,这可在wxwidgets中的/docs/gtk/目录下找到。

4. 安装 checkinstall

现在我们不使用"make install"命令,我们使用checkinstall命令来创建一个wxwidgets的deb安装包。运行命令:

$ sudo checkinstall

checkinstall会询问几个问题,请保证在提问后提供一个版本号,否则将会失败。

完成这一切后,wxWidgets就安装好了,deb文件也会创建在相同的目录下。

5. 追踪安装的文件

如果你想要检查文件安装的位置,使用dpkg命令后面跟上checkinstall提供的包名。

$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a

6. 编译示例

编译wxWidgets完成后就可以马上编译示例程序了。在相同的目录下,一个新的sample目录已经创建了。

进入它并运行下面的命令

$ compile samples
$ cd samples/
$ make

make命令完成后,进入sample 子目录,这里就有一个可以马上运行的Demo程序了。

7. 编译你的第一个程序

你完成编译demo程序后,可以写你自己的程序来编译了。这个也很简单。

假设你用的是C++,这样的话你还可以使用编辑器的高亮特性。比如gedit、kate、kwrite等等。或者用全功能的IDE像Geany、Codelite、Codeblocks等等。

然而你的第一个程序只需要用一个文本编辑器来快速完成。

如下:

#include <wx/wx.h>

class Simple : public wxFrame
{
public:
    Simple(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
    {
        Centre();
    }
};

class MyApp : public wxApp
{
public:
    bool OnInit()
    {
        Simple *simple = new Simple(wxT("Simple"));
        simple->Show(true);
        return true;
    }
};

wxIMPLEMENT_APP(MyApp);

现在保存并用下面的命令编译。

# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std` -o program

# run
$ ./program

和非标准的库一起编译

面展示的wx-config命令默认只支持标准的库。如果你使用的是Aui库,那么你需要指定额外用到的库。

$ g++ code.cpp `wx-config --cxxflags --libs std,aui` -o program

更多的信息参考这里这里

资源

下载wxWidgets的源码和帮助 https://www.wxwidgets.org/downloads/

wxWidgets编译的wiki页面 https://wiki.wxwidgets.org/Compilingandgetting\_started

使用wxWidgets最新版本(3.0+)的事项 https://wiki.wxwidgets.org/UpdatingtotheLatestVersionofwxWidgets


via: http://www.binarytides.com/install-wxwidgets-ubuntu/

作者:Silver Moon 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出