归档 201411

This commit is contained in:
wxy
2014-12-01 10:21:44 +08:00
parent db57f2d755
commit c55d124ffb
63 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
7个Linux桌面需要改进之处
======================================
在过去的15年内Linux桌面从一个还算凑合的边缘化解决方案集合发展为一个独特的创新来源和选择之一。它的标准特点中有许多是要么不适用于Windows系统要么就只适合作为一个专有的扩展软件。因此使用Linux愈发变得不仅是一个原则问题也是一种偏好。
然而尽管Linux桌面不停在进步但是仍然存在差距。一些特点正在丢失而一些已经丢失了还有一些令人惊喜的附加功能可以轻易地提升桌面体验而不用挑战用户的容忍度。
比如说以下是7个有利于Linux桌面发展的改善建议
### 7. 简单的Email加密技术
如今各种Email阅读器从Alpine到Thunderbird再到Kmail都带有Email加密技术。然而关于它们的文档手册通常是不存在或者非常简陋。
但是,即使你了解加密理论,但是使用起来仍然很困难。这些控件通常分散在配置菜单和选项卡中,需要为所有你需要和想要的设置进行一次彻底的搜索才行。如果你未能进行适当的加密设置,通常你找不到任何有用的反馈。
易用性方面最接近的是 [Enigmail][1] 它是一个带有面向初学者的设置向导的Thunderbird扩展。但是你一定要知道怎么用Enigmail新的加密设置菜单埋藏在撰写窗口里一级菜单下和其他选项混在一起这让日常用户很迷惑。
不管是那种桌面环境,如你所知的,你应该对邮件加密,今天对安全和隐私的媒体不断报道让你知道加密有多重要。
### 6. 虚拟工作空间缩略图
不需要额外的显示器虚拟工作空间提供了更多桌面空间。然而尽管它们很实用但是虚拟工作空间的管理并没有在过去十年发生改变。在大多数桌面上你能通过每个工作空间上的pager程序一个提供很少指示除了它的名字和数字的简单矩形框来控制它们 -- 或者在Ubuntu的Unity 环境中,可以指出哪个工作空间是当前激活的。
确实GNOME和Cinnamon能提供出不错的视图但是它们的实用性受限于它们需要显示屏大小的事实。而 KDE 写出内容列表则和主流的图形桌面不太协调。
一个比较不错的解决方案应该是鼠标悬停在足够大的缩略图上来获取正常的视图,这样就精确地查看每个工作空间上的东西了。
### 5. 一个合用的菜单
现代型桌面很久之前就已经舍弃了级联子菜单铺满整个桌面的经典型菜单了。如今,一般的电脑都有太多的应用程序以至于不能适应这样的模式。
糟糕的是,没有什么主要的替代品能与经典型菜单一样方便。把菜单根植于一个单一的窗口,其效果是不理想的,因为你要么必须截掉子菜单要么就用鼠标不断地调整窗口大小。
但是全屏幕菜单的产品还要差,这意味着你甚至要在开始工作之前就调整屏幕,并且哪个搜索框其实只在你已经知道什么应用程序可用的情况下才有用 -- 这种情况下你还不如直接用命令行。
坦白地说我不知道拿什么来解决这个问题OS X下的spinner racks吗我可以肯定地说所有现代型菜单产品在桌面上呈现出一个个精心构造的图标似乎更是一个合理的选择。
### 4. 一个专业的、实惠的视频编辑器
多年来Linux已经慢慢地填充了软件生产力上的空白。然而即便如此它仍然缺少价格合理的视频编辑软件。
问题不在于没有这样的自由软件。[Maya][2] 是动画产业的标准之一,但是问题在于这样的软件的售价达数千美金。
另一边比如Pitivi或者是Blender这样的免费软件, 它们的功能性 -- 尽管它们的开发者足够的努力 -- 只能保证基本功能。虽然取得了进步,但还是和用户们所期望的相去甚远。
尽管我听说一些非主流的厂家使用的是原生态Linux视频编辑器原因通常是因为他们抱怨其它编辑器不好但其余的人更愿意减少麻烦从而在其它操作系统上对视频进行编辑。
### 3. 一个文档处理器
有一个极端是那些需要进行文字处理的用户Google Docs就让他们满意了而另一个极端是对于那些排版设计的专家来说Scribus是唯一比较可行的应用。
这两种极端之间还有一层是那些比如那些写作很长的文本的文件的出版商和作家。这类用户有些是由基于Windows的 [Adobe FrameMaker][3] 来服务, 有些则由基于Linux的LibreOffice Writer来服务。
不幸的是这些用户显然不会优先考虑LibreOfficeCalligra Words AbiWord或者是任何其它的办公套件。应该提供给用户的办公套件的特色功能包括
- 为每个文件建立引用书目数据库。
- 表格的样式能和段落与字符保持一致。
- 除了页眉和页脚,带有持续性内容的页面样式,在每次使用样式时都一样。
- 交叉引用存储格式,以便不需要每次都手动创建。
无论是LibreOffice还是其它同类应用提供这些特色功能与它们是否可用是并不相干的。但是没有它们Linux桌面对于一群潜在的用户来说就是个不完善的东西。
### 2.彩色标题栏
浏览器的扩展软件向我们展示了彩色编码标签对于工作空间的作用。打开了八九个标签后,它的标题栏就看不全了,所以颜色通常是最快区分标签关系的方法。
同样的系统也能用到桌面上。更好的是,彩色编码也许可以按会话保存,允许用户同时打开某个任务所需的所有应用。到目前为止,我知道没有任何一个桌面有这个特点。
### 1. 图标栏
多年以来Stardock公司一直销售着一个名叫 [Fences][4] 的扩展软件,它用来分类和组织桌面上的图标,你能用它给每个组取名并且可以把每个图标都放在一起。另外,你可以指定不同的文件类型自动加入到一个组里,并且按个人需要来隐藏和整理。
换句话说fences让用户整天在桌面上干的事情自动有序地分组排列。然而除了一两个小功能与KDE的文件夹视图类似之外fences的功能仍然没有出现在Linux桌面上。这也许是因为开发人员把注意力放到移动设备上作为灵感来源而使用fences无疑是传统工作站桌面的一大特征。
### 我个人的列表
我做了这种列表之后,让我震惊的是这些不多的改进都是普适性的,其中几项改进将会吸引大量特定的用户,只有一个是来自专有软件的移植,其中一个至少是修饰性的而不是功能性的。
这一观察表明对于普通用户来说Linux能添加的功能已经所剩无几了。作为一个通用的桌面Linux从几年前到现在都很多元化到今天用户能从超过半打的主流桌面中选择出一个来使用。
当然这不意味着,一些专家就不会有其它意见。另外,没有人会关心不断变化的需求会不会使改进令人满意。但是它意味着这份充斥着改进建议的名单上的许多项目将会高度个人化。
所有这些都是为了抛砖引玉:你认为还有什么其它的对桌面有益的建议吗?
--------------------------------------------------------------------------------
via: http://www.datamation.com/open-source/7-improvements-the-linux-desktop-needs-1.html
译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:https://addons.mozilla.org/en-US/thunderbird/addon/enigmail/
[2]:http://en.wikipedia.org/wiki/Autodesk_Maya
[3]:http://www.adobe.com/products/framemaker.html
[4]:http://www.stardock.com/products/fences/

View File

@@ -0,0 +1,49 @@
一个 Linux 支持者:从 16 岁开始在 Linux 上 hacking
================================================================================
![](http://www.linux.com/images/stories/41373/Yitao-Li.png)
>翻译文章中是称主人公为 Yitao Li还是李逸韬他似乎是美国人“李逸韬”是看的他的个人主页上的。
在软件开发者 [Yitao Li (李逸韬) 的 GitHub 仓库][1]中,几乎所有的项目都是在他的 Linux 机器上开发完成的。它们没有一个是必须特定需要 Linux 的,但李逸韬说他使用 Linux 来做“任何事情”。
举些例子:“编码/脚本设计,网页浏览,网站托管,任何云相关的,发送/接收 PGP 签名的邮件,调整防火墙规则,将 OpenWrt 镜像刷入路由器,运行某版本的 Linux kernel 的同时编译另一个版本,从事研究,完成功课(例如,用 Tex 输入数学公式),以及其他许多......” Li 在邮件里如是说。
在李逸韬的 GitHub 仓库里所有项目中他的最爱是一个学校项目,调用 libpthread 和 libfuse 库,使用 C++ 开发,用来理解和正确执行基于 PAXOS 的分布式加锁,键值对服务,最终实现一个分布式文件系统。他使用若干测试脚本分别在单核和多核的机器上对这个项目进行测试。
"可以借助正确地实现或者至少大部分正确PAXOS 协议,并且通过了所有测试,来学习关于分布式共识协议的知识,"他说,“当然一旦这完成了,他就可以获得一些炫耀的权利。除此之外,一个分布式文件系统在其他许多编程项目中也可以很有用。”
Li 是在 16 岁的时候第一次开始使用 Linux或是者说大约 7.47 年之前,他说,通过使用网站 [linuxfromscratch.org][2] ,从 Scratch book 中获得的免费可下载的 Linux 中学习了大量知识。那么他为什么会使用 Linux
"1. Linux 是黑客的天才工具,所以我没看到任何不用它的理由,"他写道“2. 大脑的前额叶皮质可能在我16岁时正变得很发达。”
[![](http://www.linux.com/images/stories/41373/ldc_peop_linux.png)][3]
他现在为 eBay工作主要进行 Java 编程但有时也使用 Hadoop, Pig, Zookeeper, Cassandra, MongoDB以及其他一些需要 POSIX 兼容平台的软件来工作。他主要通过给 Wikipedia 页面和 Linux 相关的论坛做贡献来支持 Linux 社区,另外当然还成为了 Linux 基金会的个人会员。
他紧跟最新的 Linux 发展动态,最近还对 GCC 4.9 及之后版本新增的 “-fstack-protector-strong” 选项印象深刻。
"虽然这并不与我的任何项目直接相关,但它对于安全和性能问题十分重要。"他说,“这个选项比 -fstack-protector-all 更高效的多,却在安全上几乎没有影响,同时比 -fstack-protector 选项提供了更好的栈溢出防护覆盖。”
欢迎来到 Linux 基金会Yitao !
了解更多关于成为 [Linux 基金会个人会员][3]的内容。基金会将为每位 6 月份期间的新个人会员捐赠 $25 给 Code.org。
----------
![](http://www.linux.com/community/forums/avatar/41373/catid/200-libby-clark/thumbnail/large/cache/1331753338)
[Libby Clark][4]
--------------------------------------------------------------------------------
via: http://www.linux.com/news/featured-blogs/200-libby-clark/778559-the-people-who-support-linux-hacking-on-linux-since-age-16
译者:[jabirus](https://github.com/jabirus) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:https://github.com/yl790
[2]:http://linuxfromscratch.org/
[3]:https://www.linuxfoundation.org/about/join/individual
[4]:http://www.linux.com/community/forums/person/41373/catid/200-libby-clark

View File

@@ -0,0 +1,135 @@
不要害怕命令行——Mac OS 篇
================================================================================
![](http://a4.files.readwrite.com/image/upload/c_fill,h_900,q_70,w_1600/MTE5NTU2MzIyNTM0NTg5OTYz.jpg)
> 接纳你电脑上最有用的工具。
你应该在电影中见到过,尽管从没在自己电脑上调出来:一个空白屏幕,带有一些简单文字提示和一个光标,等着你去输入几个神秘的命令,就会听你的吩咐。
这就是命令行。它是基于字符的接口它比现在人们都熟悉的主流操作系统包括Windows到Mac OS X和Linux上的窗口图标和`瓦片 tiles`都要早。
命令行是一个使用你电脑基本功能的超级强大的工具。对于大多数人来说,它也是一个让人困惑的,难以理解的,看上去无关紧要的东西。但是其实不是这样的。
### 在你的命令控制下的电脑 ###
输入字符指令再敲下回车来让电脑做点事情和在移动设备的触摸界面上滑动点击比较听起来像是退了一大步。即使是刚学走路的小孩都可以用iPad对吧不过如果你知道怎么用的话命令可以节省你的时间减少烦恼。
如果你很认真想学习编程-或者想理解计算机技术-你完全有必要掌握命令行。
深入到命令行里,将教会你很多关于电脑如何工作以及管理信息的。你也许会发现有些平常使用鼠标操作的功能,当改为敲一两个命令后,实际上会更快。
更重要的是,你会更容易理解[像Python那样的编程语言][1]和[像Git那样的软件][2],需要有一点命令行基础。在熟悉了命令行以后,你就可以打破过去阻止你学习编程的障碍了。
所以在这里介绍一点关于命令行的快速的、基础的指导。它**主要专注于Mac OS X的类Unix环境**只是因为这是我比较熟悉的。Linux用户应该已经很熟悉命令行了不过新手也许还是会觉得这些小窍门有点用。如果你用的是ChromebookGoogle对如何打开它自带的[命令行工具][3]已经给出了有用的指导它和Mac或Linux系统有点类似。对于Windows用户很不幸受限于从MS-DOS衍生出的命令语言它和Unix只有一点点交集所以这篇指导对你没什么用不过可以去看下[dosprompt.info网站里的资料][4]。
### 如何开始 ###
你需要做的第一件事是搞清楚如何进入命令行通常这是通过一个叫“shell”的软件来做的。在任意一台运行OS X的Mac上需要启动终端应用。你可以通过Finder来打开它是在应用程序下的实用工具目录里或者点击屏幕右上角的放大镜然后输入“terminal”然后在下拉列表里选择。
![](http://a4.files.readwrite.com/image/upload/c_fit,w_630/MTE4MDAzNDE2ODYxMjc5NzU4.png)
你进来了,但是所有你看到的只是一个有输入空间的空白盒子。这就是命令行!让我们来更好地了解一下这个窗口。
输入`pwd`它的意思是打印当前工作目录。在计算机语言里“打印”什么和纸没一点关系。它实际上只是意味着吐点东西到屏幕上。这个命令运行的结果是让计算机返回你当前正处在的目录路径。LCTT 译注,“打印”源于早期计算机的输出设备不是显示器,而是行式打印机,所以输出就是“打印”;在后期,有了显示器之后,在哑终端上操作远程主机时,输出才是“回显 echo”
![](http://a4.files.readwrite.com/image/upload/c_fit,w_630/MTIyMzk5Mjg5MDMzMjYyNjA0.png)
实际上,`/Users/laurenorsini`是我的主目录。高级提示:你可以使用波浪符(~)作为自己主目录的简写 - 它和`/Users/你的用户名`是一样的。比如,你可以像`~/Downloads`这样引用你的下载目录。(如果你仔细看前面的命令提示,你会发现那里有一个波浪符。这说明我当前正在自己的主目录下。)
我们肯定不希望我们的命令行试验把自己的主目录弄的一团糟,所以让我通过`mkdir`命令来创建一个新目录。这和在桌面操作系统里创建一个新目录是一样的。让我们把它叫做“experiments”
![](http://a4.files.readwrite.com/image/upload/c_fit,w_630/MTE5NDg0MDYxMTMwODUxODU1.png)
现在我们有一个新目录了。如果使用图形界面的话我们可以用自己的眼睛判断我们已经创建了一个新目录。当然如果我打开Finder然后进入我的主目录用一个小房子图标标记的就会看到一个叫“experiments”的目录。我通过命令行实现的反过来你可以在桌面系统里建立一个文件夹然后在命令行下去查看。这只是同一套系统的两种不同表现方式。
![](http://a5.files.readwrite.com/image/upload/c_fit,w_630/MTE5NTU2MzIyNTM0MzI3ODE5.png)
现在我需要通过**cd**(改变路径)命令改变路径进入到`~/experiments`目录中
![](http://a5.files.readwrite.com/image/upload/c_fit,w_630/MTE5NDg0MDYxMTMxMTEzOTk5.png)
我的命令提示是系统默认设定所以它自动显示我当前的工作目录。但是如果你的看起来不一样的话这样可以让你确定“experiments”是当前工作目录再一次输入**pwd**。它应该会告诉你当前工作目录是“experiments”。
### 建立存档 ###
在写代码的每一天里我都通过命令行创建和编辑文件。它比使用图形用户界面更快是因为我可以在编辑完后马上就在命令行里测试我的程序。如果我正好同时需要推送到[GitHub][5]的话,好吧,那就更方便了。
现在你有一个新目录(也可以叫做仓库或文件夹)在你电脑上用来折腾。让我们从创建一个包含“你好世界”这句话的文件开始吧。有[很多种方式][6],在这里我用了**echo**命令。
![](http://a2.files.readwrite.com/image/upload/c_fit,w_630/MTE5NDg0MDYxMjQxMjgwMDE1.png)
哦不我拼错“newfile”了。这经常会碰到。让我们用两个步骤来改正它。首先我将创建一个拼写正确的文件...LCTT 译注:完全不必创建新文件,直接 mv 即可,相当于改名。)
![](http://a3.files.readwrite.com/image/upload/c_fit,w_630/MTIxNDI3Mjk0MjA5ODAzNzg5.png)
然后,我讲使用**mv**(移动)命令把拼写错误的就文件替换成我的新文件。通常都是这样,“**mv 旧文件 新文件**”。
![](http://a1.files.readwrite.com/image/upload/c_fit,w_630/MTIxNDI3Mjk0MjA5NzM4MjUz.png)
关于**mv**要注意的:跟大多数命令一样,它是一个容易误导的强大命令。当我们“移动”`newfil.txt``newfile.txt`的时候实际上会把第一个文件完全覆盖到第二个文件上。这样我写到newfile.txt里的内容将彻底消失替换成我写到newfil.txt里的内容。
为了证明我的目录下只有一个文件,可以使用**ls**,清单命令,来获得目录下的所有文件清单。
![](http://a1.files.readwrite.com/image/upload/c_fit,w_630/MTIxNDI3Mjk0MTA3NTAyMDkz.png)
看到了没?只有一个。然后如果我在图形界面下看下这个目录的话,也可以看到这个文件。
![](http://a3.files.readwrite.com/image/upload/c_fit,w_630/MTIyMzk5Mjg5MDM4OTY0MjM2.png)
但是它只是个空白文本文件LCTT 译注不是空白的其内容是“Hello World”。让我们用文本编辑器来输入点内容进去。在命令行下我喜欢用`nano`编辑器因为它很简单而且几乎在所有类型电脑上都可以使用。LCTT 译注,作为 Linux 党,那肯定是要用 vi 的,不过 vi 对于初学者来说有一点点难。)
这会在你的命令行窗口中马上打开编辑屏幕。一些基本的命令都为你列出来了。
![](http://a3.files.readwrite.com/image/upload/c_fit,w_630/MTIyMzk5Mjg5MDM5NjE5NTk2.png)
写下你想说的话然后通过CTRL + X退出。在它问你是否保存的时候当然键入"Y"。
![](http://a4.files.readwrite.com/image/upload/c_fit,w_630/MTIxNDI3Mjk0MTA4MDkxOTE3.png)
你也许已经猜到了也可以在操作系统中用鼠标找到newfile.txt文件看到这些改动。这里你可以用任意喜欢的文本编辑器打开编辑这个你创建的文件。
如果你想永远删除这个文件,可以用**rm**(移除)命令:
![](http://a2.files.readwrite.com/image/upload/c_fit,w_630/MTE5NTU2MzIyNTQxMzQwMTcx.png)
注意一下,**rm**命令非常强大!在黑客论坛里有个[常用伎俩][7]就是说服一个命令行新手输入**rm -rf /**,然后他就把自己整个电脑上的所有文件都删掉了。命令里的“/”意思是电脑的最高级根目录-所有一切都在它之下。千万不要输入那行命令LCTT 译注:希望你在看完这句话之前没有真的输入了 rm -rf / !!!
### 延伸阅读 ###
这只是无限可能的命令行的一个开始。你可以使用这个工具控制电脑的每一个方面,这也使得它强大的同时也很危险。保证在使用它们之前先看一下命令行提示,然后永远不要盲目输入任何陌生人推荐给你的语句。
我已经大概介绍了平时敲代码时常用的几个命令,但是有比这更多的理由去掌握命令行。如果你想更彻底地了解,也许可以试试:
[命令行速成教程][8]。一套免费的扩展课程,涵盖了命令行应用的基础。
[命令行初学者启蒙][9]。Lifehacker收藏的一些适合初学者的很有用的命令。
[Mac OS X 命令行入门][10]。在线教育网站Treehouse极尽详细地介绍了命令行的基础。
现在文章看完了你就更容易理解我之前写的那些代码教程了因为如果不敲几个命令根本没法完成。如果你准备好了我建议你去看看ReadWrite的[Git教程][11],它使用命令行来向你介绍协同编程。计算与你同在!
*题图来自[Jason Scott][12]其他屏幕截图由Lauren Orsini提供给ReadWrite*
--------------------------------------------------------------------------------
via: http://readwrite.com/2014/07/18/command-line-tutorial-intro
作者:[Lauren Orsini][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://readwrite.com/author/lauren-orsini
[1]:http://readwrite.com/2014/07/08/what-makes-python-easy-to-learn
[2]:http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1
[3]:http://www.chromium.org/chromium-os/poking-around-your-chrome-os-device
[4]:http://dosprompt.info/
[5]:http://www.github.com/
[6]:http://www.cyberciti.biz/faq/unix-create-file-from-terminal-window-shell-prompt/
[7]:http://www.urbandictionary.com/define.php?term=rm+-rf+%2F
[8]:http://cli.learncodethehardway.org/book/
[9]:http://lifehacker.com/5633909/who-needs-a-mouse-learn-to-use-the-command-line-for-almost-anything
[10]:http://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line
[11]:http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1
[12]:http://en.wikipedia.org/wiki/Computer_terminal#mediaviewer/File:DEC_VT100_terminal.jpg

View File

@@ -0,0 +1,174 @@
在Debian上设置USB网络打印机和扫描仪服务器
================================================================================
假定你想要在你的家庭/办公网络中设置一台Linux打印服务器而你手头上却只有USB打印机可用因为他们比那些有着内建网络接口或无线模块的打印机要便宜得多。此外如果这些设备中有一台是一体化的而你也想要通过网络共享其整合的扫描仪这该怎么办在本文中我将介绍怎样安装并共享一台USB一体机Epson CX3900喷墨打印机和扫描仪一台USB激光打印机Samsung ML-1640以及作为锦上添花配置一台PDF打印机。所有这一切我们都将在GNU/Linux Debian 7.2 [Wheezy]服务器中实现。
尽管这些打印机看起来有点老旧了我是在2007年买的Epson一体机2009年买的激光打印机但我仍然相信我从安装过程中学到的东西也一样能应用到该品牌的新产品和其它品牌中去有一些预编译的.deb包驱动可用而其它驱动可以从仓库中直接安装。毕竟它是重要的基本原则。
### 先决条件 ###
要设置网络打印机和扫描仪,我们将使用[CUPS][1]它是一个用于Linux/UNIX/OSX的开源打印系统。
# aptitude install cups cups-pdf
**排障提示**根据你的系统状况这个问题很可能在手动安装包失败后或者缺少依赖包的时候会发生在安装cups和cups-pdf前端包管理系统可能会提示你卸载许多包以尝试解决当前依赖问题。如果这种情况真的发生你只有两个选择
1通过另外一个前端包管理系统安装包如apt-get。注意并不建议进行这样的处理因为它不会解决当前的问题。
2运行以下命令aptitude update && aptitude upgrade。该命令会修复此问题并同时更新包到最新版本。
### 配置CUPS ###
为了能够访问CUPS的网页接口我们需要至少对cupsd.conf文件用于CUPS的服务器配置文件进行一次最低限度的修改。在进行修改前让我们为cupsd.conf做个备份副本
# cp cupsd.conf cupsd.conf.bkp
然后,编辑原始文件(下面只显示了最为有关联的部分):
- **Listen**:监听指定的地址和端口,或者域套接口路径。
- **Location /path**:为该名字所代表的位置指定访问控制。
- **Order**指定HTTP访问控制顺序allow,deny或deny,allow。Order allow,deny是说允许规则先于并且优先处理拒绝规则。
- **DefaultAuthType** (也可以用**AuthType**) 指定默认使用的认证类型。Basic是指使用/etc/passwd文件来认证CUPS中的用户。
- **DefaultEncryption**:指定认证请求所使用的加密类型。
- **WebInterface**:指定是否启用网页接口。
---
# Listen for connections from the local machine
Listen 192.168.0.15:631
# Restrict access to the server
<Location />
Order allow,deny
Allow 192.168.0.0/24
</Location>
# Default authentication type, when authentication is required
DefaultAuthType Basic
DefaultEncryption IfRequested
# Web interface setting
WebInterface Yes
# Restrict access to the admin pages
<Location /admin>
Order allow,deny
Allow 192.168.0.0/24
</Location>
现在让我们重启CUPS来应用修改
# service cups restart
为了允许另外一个用户除了root之外修改打印机设置我们必须像下面这样添加他/她到lp授权对打印机硬件的访问并启用用户管理打印任务和lpadmin拥有打印优先组。如果在你当前网络设置没有必要或不需要该设置你可以不用理会该步骤。
# adduser xmodulo lp
# adduser xmodulo lpadmin
![](https://farm4.staticflickr.com/3873/14705919960_9a25101098_o.png)
### 通过网页接口配置网络打印机 ###
1、 启动网页浏览器并打开CUPS接口http://<Server IP>:Port这里在我们的例子中是http://192.168.0.15:631
![](https://farm4.staticflickr.com/3878/14889544591_284015bcb5_z.jpg)
2、 转到**管理**标签,然后点击*添加打印机*
![](https://farm4.staticflickr.com/3910/14705919940_fe0a08a8f7_o.png)
3、 选择你的打印机;在本例中,**EPSON Stylus CX3900 @ debian (Inkjet Inkjet Printer)**,然后点击**继续**
![](https://farm6.staticflickr.com/5567/14706059067_233fcf9791_z.jpg)
4、 是时候为打印机取个名字,并指定我们是否想要从当前工作站共享它:
![](https://farm6.staticflickr.com/5570/14705957499_67ea16d941_z.jpg)
5、 安装驱动——选择品牌并点击**继续**。
![](https://farm6.staticflickr.com/5579/14889544531_77f9f1258c_o.png)
6、 如果打印机如果不被CUPS支持没有在下一页中列出来我们必须从生产厂家的网站上下载驱动如[http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX][2]),安装完后回到该页。
![](https://farm4.staticflickr.com/3896/14706058997_e2a2214338_z.jpg)
![](https://farm4.staticflickr.com/3874/14706000928_c9dc74c80e_z.jpg)
![](https://farm4.staticflickr.com/3837/14706058977_e494433068_o.png)
7、 注意,预编译的.deb文件必须从我们使用的机器上发送例如通过sftp或scp到打印服务器当然如果我们有一个直接的下载链接就更加简单了而不用下载按钮了
![](https://farm6.staticflickr.com/5581/14706000878_f202497d0a_z.jpg)
8、 在将.deb文件放到服务器上后我们就可以安装了
# dpkg -i epson-inkjet-printer-escpr_1.4.1-1lsb3.2_i386.deb
**排障提示**如果lsb包一个第三方Linux应用编写者可以依赖标准核心系统没有安装那么驱动会无法安装
![](https://farm4.staticflickr.com/3840/14705919770_87e5803f95_z.jpg)
我们将安装lsb然后尝试再次安装打印机驱动
# aptitude install lsb
# dpkg -i epson-inkjet-printer-escpr_1.4.1-1lsb3.2_i386.deb
9、 现在,我们可以返回到第五步并安装打印机:
![](https://farm6.staticflickr.com/5569/14705957349_3acdc26f91_z.jpg)
### 配置网络扫描仪 ###
现在,我们将继续配置打印机服务器来共享扫描仪。首先,安装[xsane][3],这是[SANE][4]——扫描仪快捷访问的前端:
# aptitude install xsane
接下来,让我们编辑/etc/default/saned文件以启用saned服务
# Set to yes to start saned
RUN=yes
最后我们将检查saned是否已经在运行了很可能不在运行哦——那么我们将启动服务并再来检查
# ps -ef | grep saned | grep -v grep
# service saned start
### 配置另一台网络打印机 ###
通过CUPS你可以配置多台网络打印机。让我们通过CUPS配置一台额外的打印机Samsung ML-1640它是一台USB打印机。
splix包包含了单色ML-15xx, ML-16xx, ML-17xx, ML-2xxx和彩色CLP-5xx, CLP-6xxSamsung打印机驱动。此外此包的详细信息中指出一些新命名的Samsung打印机如Xerox Phaser 6100也适用此驱动。
# aptitude install splix
然后我们将使用CUPS网页接口来安装打印机就像前面一样
![](https://farm4.staticflickr.com/3872/14705957329_4f38a94867_o.png)
### 安装PDF打印机 ###
接下来让我们在打印服务器上配置一台PDF打印机。这样你就可以将来自客户计算机的文档转换成PDF格式了。
由于我们已经安装了cups-pdf包PDF打印机就已经自动安装好了可以通过网页接口验证
![](https://farm6.staticflickr.com/5558/14705919650_bc1a1e0b43_z.jpg)
当选定PDF打印机后文档将被写入可配置目录默认是~/PDF或者也可以通过后续处理命令进行复制。
在下一篇文章中,我们将配置桌面客户端来通过网络访问打印机和扫描仪。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/08/usb-network-printer-and-scanner-server-debian.html
作者:[Gabriel Cánepa][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.gabrielcanepa.com.ar/
[1]:https://www.cups.org/
[2]:http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX
[3]:http://www.xsane.org/
[4]:http://www.sane-project.org/

View File

@@ -0,0 +1,214 @@
在 LVM中 录制逻辑卷快照并恢复(第三部分)
================================================================================
**LVM快照**是以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大快照卷同样也会产生这样大的改变。因而对于空间有效利用的最佳途径就是总是进行小的修改。如果快照将存储空间消耗殆尽我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小可以使用lvreduce。
![Take Snapshot in LVM](http://www.tecmint.com/wp-content/uploads/2014/08/Take-Snapshot-in-LVM.jpg)
*在LVM中录制快照*
如果我们在创建快照后意外地删除了无论什么文件,我们没有必要担心,因为快照里包含了我们所删除的文件的原始文件。创建快照时,很有可能文件已经存在了。不要改变快照卷,保持创建时的样子,因为它用于快速恢复。
快照不可以用于备份选项。备份是某些数据的基础副本,因此我们不能使用快照作为备份的一个选择。
#### 前置阅读 ####
- [在Linux中使用LVM构建灵活的磁盘存储第一部分][1]
- [在Linux中扩展/缩减LVM第二部分][2]
### 我的服务器设置 ###
- 操作系统 — 安装有LVM的CentOS 6.5
- 服务器IP — 192.168.0.200
#### 步骤1 创建LVM快照 ####
首先,使用‘**vgs**’命令检查卷组中的空闲空间以创建新的快照。
# vgs
# lvs
![Check LVM Disk Space](http://www.tecmint.com/wp-content/uploads/2014/08/Check-LVM-Disk-Space.jpg)
*检查LVM磁盘空间*
正如你所见,在**vgs**命令输出中我们可以看到有8GB的剩余空闲空间。所以让我们为我的名为**tecmint_datas**的卷创建快照。处于演示的目的我将会使用以下命令来创建1GB的快照卷。
# lvcreate -L 1GB -s -n tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas
或者
# lvcreate --size 1G --snapshot --name tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas
上面的两个命令都是干得同一件事:
- **-s** 创建快照
- **-n** 为快照命名
![Create LVM Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Create-LVM-Snapshot.jpg)
*创建LVM快照*
此处,是对上面高亮要点的说明。
1. 我在此创建的快照的大小。
2. 创建快照。
3. 创建快照名。
4. 新的快照名。
5. 要创建快照的卷。
如果你想要移除快照,可以使用‘**lvremove**’命令。
# lvremove /dev/vg_tecmint_extra/tecmint_datas_snap
![Remove LVM Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Remove-LVM-Snapshot.jpg)
*移除LVM快照*
现在,使用以下命令列出新创建的快照。
# lvs
![Verify LVM Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Verify-LVM-Snapshot.jpg)
*验证LVM快照*
上面的你看到了吧,成功创建了一个快照。上面我用箭头标出了快照创建的源,它就是**tecmint_datas**。是的,因为我已经为**tecmint_datas l-volume**创建了一个快照。
![Check LVM Snapshot Space](http://www.tecmint.com/wp-content/uploads/2014/08/Check-LVM-Snapshot-Space.jpg)
*检查LVM快照空间*
让我们添加一些新文件到**tecmint_datas**里头。现在卷里大概有650MB左右的数据而我我们的快照有1GB大。因此有足够的空间在快照卷里备份我们的修改。这里我们可以使用下面的命令来查看到我们的快照当前的状态。
# lvs
![Check Snapshot Status](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Snapshot-Status.jpg)
*检查快照状态*
你看到了,现在已经用掉了**51%**的快照卷,你要对你的文件作更多的修改都没有问题。使用下面的命令来查看更多详细信息。
# lvdisplay vg_tecmint_extra/tecmint_data_snap
![View Snapshot Information](http://www.tecmint.com/wp-content/uploads/2014/08/Snapshot-Information.jpg)
*查看快照信息*
再来对上面图片中高亮的要点作个清楚的说明。
1. 快照逻辑卷名称。
2. 当前使用的卷组名。
3. 读写模式下的快照卷,我们甚至可以挂载并使用该卷。
4. 快照创建时间。这个很重要,因为快照将跟踪此时间之后的每个改变。
5. 该快照属于tecmint_datas逻辑卷。
6. 逻辑卷在线并可用。
7. 我们录制快照的源卷大小。
8. 写时复制表大小Cow = copy on Write这是说对tecmint_data卷所作的任何改变都会写入此快照。
9. 当前使用的快照大小我们的tecmint_data有10GB而我们的快照大小是1GB这就意味着我们的数据大概有650MB。所以如果tecmint_datas中的文件增长到2GB现在的51%中的内容将增加到超过所分配的快照的大小,当然,我们在创建快照时会出现问题。这就意味着我们需要扩展逻辑卷大小(快照逻辑卷)
10. 给出快照组块的大小。
现在让我们复制超过1GB的文件到**tecmint_datas**。让我们看看会发生什么。如果你那么做了,你将会见到‘**Input/output error**’这样的错误信息,它告诉你快照超出空间大小了。
![Add Files to Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Add-Files-to-Snapshot.jpg)
*添加文件到快照*
如果该逻辑卷满了,它就会自动丢失新的数据,我们就不能再使用了,就算我们去扩展快照卷的大小也不行。最好的方法就是在创建快照时,创建一个和源一样大小的快照卷。**tecmint_datas**的大小是10GB如果我们创建一个10GB大小的快照它就永远都不会像上面那样超载因为它有足够的空间来录制你的逻辑卷的快照。
#### 步骤2 在LVM中扩展快照 ####
如果我们需要在超过容量前扩展快照卷的大小,我们可以使用以下命令来完成此项任务。
# lvextend -L +1G /dev/vg_tecmint_extra/tecmint_data_snap
现在那里有总计2GB大小的快照空间。
![Extend LVM Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Extend-LVM-Snapshot.jpg)
*扩展LVM快照*
接下来,使用以下命令来验证新的大小和写时复制表。
# lvdisplay /dev/vg_tecmint_extra/tecmint_data_snap
要知道快照卷的大小使用**%**。
# lvs
![Check Size of Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Size-of-Snapshot.jpg)
*检查快照大小*
然而,如果你的快照大小和源卷一样,我们就没有必要担心这些问题了。
#### 步骤3 恢复快照或合并 ####
要恢复快照,我们首先需要卸载文件系统。
# unmount /mnt/tecmint_datas/
![Un-mount File System](http://www.tecmint.com/wp-content/uploads/2014/08/Unmount-File-System.jpg)
*卸载文件系统*
只想检查挂载点是否卸载成功,可以使用下面的命令。
# df -h
![Check File System Mount Points](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Mount-Points.jpg)
*检查文件系统挂载点*
这里,我们的挂载已经被卸载,所以我们可以继续恢复快照。要恢复快照,可以使用**lvconvert**命令。
# lvconvert --merge /dev/vg_tecmint_extra/tecmint_data_snap
![Restore LVM Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Restore-Snapshot.jpg)
*恢复LVM快照*
在合并完成后,快照卷将被自动移除。现在我们可以使用**df**命令来查看分区大小。
# df -Th
![Check Size of Snapshot](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Snapshot-Space.jpg)
在快照卷自动移除后,你可以用下面的命令查看逻辑卷大小。
# lvs
![Check Size of Logical Volume](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Size-of-LV.jpg)
*检查逻辑卷大小*
**重要**要自动扩展快照我们可以通过修改配置文件来进行。对于手动扩展我们可以使用lvextend。
使用你喜欢的编辑器打开lvm配置文件。
# vim /etc/lvm/lvm.conf
搜索单词autoextend。默认情况下该值和下图中的类似。
![LVM Configuration](http://www.tecmint.com/wp-content/uploads/2014/08/LVM-Configuration.jpg)
*LVM配置*
修改此处的**100**为**75**,这样自动扩展的起始点就是**75**而自动扩展百分比为20它将自动扩容**百分之20**。
如果快照卷达到**75%**,它会自动为快照卷扩容**20%**。这样,我们可以自动扩容了。使用**wq!**来保存并退出。
这将把快照从超载导致下线事故中拯救出来这也会帮助你节省更多时间。LVM是我们扩容以及获得其它众多特性如精简资源调配、拆卸、虚拟卷和使用精简池的唯一方法让我们在下一个话题中来讨论吧。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/take-snapshot-of-logical-volume-and-restore-in-lvm/
作者:[Babin Lonston][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/babinlonston/
[1]:http://linux.cn/article-3965-1.html
[2]:http://linux.cn/article-3974-1.html

View File

@@ -0,0 +1,135 @@
给那些怀旧的游戏骨灰粉丝们:自制一台树莓派街机
================================================================================
**利用当代神奇设备来重温80年代的黄金记忆。**
### 你需要以下硬件 ###
- 一台树莓派以及一张4GBSD卡
- 一台支持HDMI的LCD显示屏
- 游戏手柄或者...
- 一个JAMMA街机游戏机外壳机箱
- J-Pac或者I-Pac
80年代有太多难忘的记忆冷战结束Quatro碳酸饮料Korg Polysix合成器以及Commodore 64家用电脑。但对于某些年轻人来说这些都没有街机游戏机那样有说服力或那种甜蜜的叛逆。笼罩着烟味和此起彼伏的8比特音效它们就是在挤出来的时间里去探索的洞穴50分钱和一个游戏币能让你消耗整个午餐时间在这些游戏上磨练着你的技能小蜜蜂城市大金刚蜈蚣行星射击吃豆小姐火凤凰R-Rype大金刚雷霆计划铁手套街头霸王超越赛车防卫者争战...噢,这个列表太长了。
这些游戏以及玩这些游戏的街机机器仍然像30年前那样有吸引力。不像年轻时候那样现在可以不用装一兜零钱就能玩了最终让你超越那些有钱的孩子以及他们无休止的继续游戏。所以是时候打造一个你自己的基于Linux的街机游戏机了然后挑战一下过去的最高分。
我们将会包括所有的步骤来将一个便宜的街机游戏机器外壳变成一台Linux驱动的多平台复古游戏系统。但是这并不意味着你就一定要搭建一个同样的系统。比如说你可以放弃那个又大又重还有潜在致癌性外壳的箱子本身而是将内部控制核心装进一个旧游戏主机或同等大小的盒子里。或者说你也可以简单地放弃小巧的树莓派而将系统的大脑换成一台更强劲的Linux主机。举个例子它可以作为运行SteamOS的一个理想平台用来玩那些更优秀的现代街机游戏。
在之后的几个页面里我们将搭建一台基于树莓派的街机游戏机你应该也能从其中发现很多点子应用到你自己的项目上即使它们和我们这个项目不太一样。然后因为我们是用无比强大的MAME来做这件事情你几乎可以让它在任意平台上运行。
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade3.png)
*我们是在B+型号出来以前完成的这个项目。它应该也可以同样工作在更新的主板上你应该不用一个带电源的USB Hub也可以*
### 声明 ###
强调一下我们捣腾的电子器件可能会让你受到电击。请确保你做的任何改动都是有资质的电子工程师帮你检查过的。我们也不会深入讨论如何获取游戏但是有很多合法的资源例如基于MAME模拟器的老游戏以及较新的商业游戏。
#### 第一步:街机机柜 ####
街机机柜本身就是最大的挑战。我们在eBay上淘了个二手的90年代初的双人泡泡龙游戏机。然后花了£220装在一台旅行车后面送过来。类似这种机柜的价格并不确定。我们看到过很多在£100以内的。而另一方面还有很多人愿意花数千块钱去买原版侧面贴纸完整的机器。
决定买一个街机机柜主要有两个考虑。第一个是它的体积这东西又大又重。又占地方而且需要至少两个人才能搬动。如果你不缺钱的话还可以买DIY机柜或者全新的小一点的例如适合摆在桌子上的那种。然后酒柜也能很合适。
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade4.jpg)
*这种机柜可能很便宜,但是他们都很重。不要一个人去搬。一些更古老的机器可能还会需要一点小关怀,例如重新喷个漆以及一些修理工作*
除了获得更加真实的游戏体验以外购买原版的街机机柜的一个绝佳理由是可以使用原版的控制器。从eBay上买到的大多数机器都支持两个人同时玩有两个摇杆以及每个玩家各自的一些按钮再加上玩家一和玩家二的选择按钮。为了兼容更多游戏我们建议您找一台每个玩家都有6个按键的型号这个是通用配置。也许你还想看看支持超过两位玩家的控制台或者有空间放其他游戏控制器的比如说街机轨迹球类似疯狂弹珠这种游戏需要的或者一个旋钮打砖块。这些待会都可以轻松装上去因为有现成的现代USB设备。
控制器是第二考虑的而且我们认为是最重要的因为要通过它把你的摇动和拍打转变成游戏里的动作。当你准备买一个机柜时需要考虑一种叫JAMMA的东西它是日本娱乐机械制造商协会Japan Amusement Machinery Manufacturers Association的缩写。JAMMA是街机游戏机里的行业标准定义了包含游戏芯片的电路板和游戏控制器的连接方式以及投币机制。它是一个连接两个玩家的摇杆和按钮的所有线缆的接口电路把它们统一到一个标准的连接头。JAMMA就是这个连接头的大小以及引脚定义这就意味着不管你安装的主板是什么按钮和控制器都将会连接到相同功能接口所以街机的主人只需要再更换下机柜上的外观图片就可以招揽新玩家了。
但是首先提醒一下JAMMA连接头上带有12V电压供电通常由大多数街机里都有的电源模块供给。为了避免意外短路或是不小心掉个螺丝刀什么的造成损坏我们完全切断了这个供电。在本教程后面的任何阶段我们也不会用到这个连接头上的任何电源脚。
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade2.png)
#### 第二步J-PAC ####
有一点非常方便你可以买到这样一种设备连接街机机柜里的JAMMA接头和电脑的USB端口将机柜上的摇杆和按键动作都转换成可配置的键盘命令它们可以在Linux里用来控制任何想玩的游戏。这个设备就叫J-Pac[www.ultimarc.com/jpac.html][1] 大概£54
它最大的特点不是它的连接性而是它处理和转换输入信号的方式因为它比标准的USB手柄强太多太多了。每一个输入都有自己独立的中断而且没有限制同时按下或按住的按钮或摇杆方向的数量。这对于类似街头霸王的游戏来说非常关键因为他们依赖于同时迅速按下的组合键而且用来对那些发飙后按下自己所有按键的不良对手发出致命一击时也必不可少。许多其他控制器特别是那些生成键盘输入的受到了他们所采用的USB控制器的同时六个输入的限制以及一堆的AltShift和Ctrl键的特殊处理的限制。J-Pac还可以接入倾角传感器甚至某些投币装置不用预先配置就可以在Linux下工作了。
另外的选择是一个类似的叫I-Pac的设备。它做了和J-Pac相同的事情只不过不支持JAMMA接头。这意味着你不能把JAMMA控制器接上去但同时也就是说你可以设计你自己的控制器布局再把每个控制接到I-Pac上去。这对第一个项目来说也许有点小难但是这却是许多街机迷们选择的方式特别是他们想设计一个支持四个玩家的控制板的时候或者是一个整合许多不同类型控制的面板的时候。我们采用的方式并不是我们推荐必须要做的我们改造了一个输入有问题的二手X-Arcade Tankstick控制面板换上了新的摇杆和按钮再接到新的JAMMA接口这样有一个非常好的地方就是可以用便宜的价格£8买到所有用到的线材包括电路板边缘插头。
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade5.jpg)
*上图是我们已经装到机柜上的J-Pac。右边的蓝色和红色导线接到我们的机柜上额外的1号和2号玩家按钮*
不管你选择的是I-Pac或是J-Pac它们产生的按键都是MAME的默认值。也就是说运行模拟器之后不需要手动调整输入。例如玩家1会默认将键盘方向键映射成上下左右以及将左边的Ctrl左边的ALT空格和左边的Shift键映射到按钮1-4。但是真正实用的功能是对于我们来说是双键快捷方式。当按下并按住玩家1按钮后就可以通过把玩家1的摇杆拉到下的位置发出用来暂停游戏的P按键推到上的位置调整音量以及推到右的位置来进入MAME自己的设置界面。这些特殊组合键设计的很巧妙不会对正常玩游戏带来任何干扰因为他们只有在按住玩家1按钮后才会生效然后可以让你正在运行游戏的时候也能做任何需要的事情。例如你可以完全地重新配置MAME使用它自己的菜单在玩游戏的时候改变输入绑定和灵敏度。
最后按住玩家1按钮然后按下玩家2按钮就可以退出MAME如果你使用了启动菜单或MAME管理器的话就很有用了因为他们会自动启动游戏然后你就可以用最快的速度开始玩另一个游戏了。
对于显示屏我们采取了比较保守的方式拿掉了街机原装的笨重的而且已经坏掉的CRT换成一个低成本的LCD显示器。这样做有很多好处。首先这个显示器有HDMI接口这样他就可以轻易地直接连接到树莓派或是现代的显卡上。第二你也不用去设定驱动街机屏幕所需要的低频率刷新模式也不需要驱动它的专用图形硬件。第三这也是最安全的方式因为街机屏幕往往在机身背后没有保护措施让很高的电压离你的手只有几英寸的距离。也不是说你完全不能用CRT如果那就是你追求的体验的话 这也是获得所追求的游戏体验的最真实的方式但是我们在软件里充分细调了CRT模拟部分我们对输出已经很满意了而且不需要用那个古老的CRT更是让我们高兴。
你也许还需要考虑用一个老式的4:3长宽比的LCD而不是那种宽屏的现代产品因为4:3模式用来玩竖屏或横屏的游戏更实用。比如说玩竖屏的射击游戏例如雷电如果使用宽屏显示器的话会在屏幕两边都有一个黑条。这些黑条一般会用来显示一些游戏指引或者你也可以把屏幕翻转90度这样就可以用上每个像素了但这却不实用除非你只玩竖屏游戏或者有一个容易操作的旋转支座。
装载显示屏也很重要。如果你拿掉了CRT的话没有现成的地方安装LCD。我们的方式是买了一些中密度纤维板(MDF)并切割成适合原来摆放CRT的地方。固定以好我们把一个便宜的VESA支座放在中间。VESA底座可以用来挂载大多数屏幕大的或小的。最后因为我们的机柜前面有烟玻璃我们必须保证亮度和对比度都设置的足够高。
### 第三步:装配 ###
现在几个硬件大件都选好了,而且也基本上确定了最终街机机柜要摆放的地方,把这几个配件装到一起并没有太大难度。我们安全地把机柜后面的电源输入部分拆开,然后在背后的空间接了一个符合插座。接在了电源开关之后的电线上。
几乎所有的街机机柜右上角都有个电源开关,但通常在机柜靠下一点的地方有大量的导线铰接在它上面,也就是说我们的设备可以使用普通的电源连接头。我们的机柜上还有一个荧光管,用做机器上边灯罩的背光,之前是直接连接到电源上的,我们可以用一个普通插头让它保持和电源连接。当你打开机柜上的电源开关的时候,电流会流入机柜里的各个部件 - 你的树莓派和显示屏都会开机,所有一切就都准备好了。
J-Pac模块直接插到JAMMA接口上但你可能还需要一点手动调整。标准的JAMMA只支持每个玩家最多三个按键尽管许多非正式的支持四个而J-Pac可以支持六个。为了连接额外的按钮你需要把按钮开关的一端接到J-Pac的GND上另一端接到J-Pac板边有螺丝固定的输入上。它们被标记成1SW41SW51SW62SW42SW5和2SW6。J-Pac也有声音的直通连接但是我们发现杂音太多没法用。改成把机柜上的喇叭连接到一个二手的SoundBlaster功放上再接到树莓派的音频输出端口。声音不一定要纯正但音量一定要足够大。
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade6.jpg)
*我们的树莓派已经接到J-Pac左边也已经连接了显示屏和USB hub*
然后把J-Pac或I-Pac模块通过PS2转USB连接线接到你的PC或树莓派也可以直接接到PC的PS2接口。要用旧的PS2接头的话额外还有个要求你的电脑得足够古老还有这个但是我们测试发现用USB性能是一样的。当然这个不能用于不带PS2的树莓派而且别忘了树莓派也需要供电。我们一般建议使用一个带电源的USB hub因为没有供电是树莓派不工作最常见的错误。你还需要保证树莓派的网络正常要么通过以太网也许使用一个藏到机柜里的电力线适配器或者通过无线USB设备。网络很关键是因为在树莓派被藏到机柜里后你还可以重新配置它不用接键盘或鼠标就可以让你调整设置以及执行管理任务。
> ### 投币装置 ###
> 在街机模拟社区里让投币装置工作在模拟器上工作就会和商业产品太接近了。这就意味着你有潜在的可能对使用你机器的人收取费用。这不仅仅只是不正当考虑到运行在你自己街机上的那些游戏的来源这将会是非法的。这很显然违背了模拟的精神。不过我们和其他热爱者觉得一个能工作的投币装置更进一步地靠近了街机的真实而且值得付出努力来营造对那个过去街机的怀念。丢个10便士硬币到投币口然后再听到机器发出增加点数的声音没有什么比得上这种感受了。
> 实际上难度也不大。取决于你街机上的投币装置以及它如何发信号通知投了几个币。大多数投币装置分为两个部分。较大的一部分是硬币接收和验证装置。这是投币过程的物理部分用于检测硬币是否真实以及确定它的价值。这是通过一个游戏点数逻辑电路板来实现的通常用一个排线连接上边还带有很多DIP开关。这些开关用来决定接受哪种硬币以及一个硬币能产生多少点数。然后就是简单地找到输出开关每个点数都会触发它一次然后把它接到JAMMA连接头的投币输入上或者直接接到J-Pac。我们的投币装置型号是Mars MS111在90年代早期的英国很常见网上有大量关于每个DIP开关作用的信息也有如何重新编程控制器来接受新硬币的方法。我们还能在这个装置的12V上接个小灯用来照亮投币孔。
#### 第四步:软件 ####
MAME是这种规模项目唯一可行的模拟器它如今支持运行在数不清的不同平台上的各种各样的游戏从第一代街机到一些最近的机器。从这个项目中还孕育出了MESS一个多模拟器的超级系统针对的平台是80到90年代的家庭电脑以及电视游戏机。
如何配置MAME本身都可以写上六页的文章了。它是一个复杂的无序的伟大的软件程序模拟了如此之多的CPU声卡芯片控制器以及那么多的选项就像MythTV你都永远不能真正配置好它。
但是也有个相对省事的方式一个特别为树莓派构建的版本。它叫PiMAME。它是一个可下载的发布版和脚本基于Raspbian这是树莓派的默认发布版。它不仅仅会把MAME装到树莓派上这很有用因为没有哪个默认仓库里有这个还会安装其他一些精选出来的模拟器并通过一个前端来管理他们。MAME举个例子是一个有数十个参数的命令行应用。但是PiMAME还有一个妙招 - 它安装了一个简单的网页服务器可以在连接上网络后让你通过浏览器来安装新游戏。这是一个很好的优点因为把游戏文件放到正确的目录下是使用MAME的困难之一这还能让你连接到树莓派的存储设备得到最优使用。还有PiMAME会通过用来安装它的脚本更新自己所以保持最新版本就太简单了。目前来说这个非常有用因为在编写这个项目的时候正好在0.8版这样一个重大更新发布的时间点上。我们在三月份早期时发现有一些轻微的不稳定,但是我们确定在你读到这篇文章的时候一切都会解决。
安装PiMAME最好的方式就是先装Raspbian。你可以通过NOOBS安装使用电脑上的图形工具或者通过dd命令把Raspbian的内容直接写入到你的SD卡中。就像我们上个月的BrewPi教程里曾提到的这个过程在之前已经被记录过很多次所以就不再浪费口水了。想简单点就装一下NOOBS参照树莓派网站上的指引。在装好Raspbian并跑起来以后请确保使用配置工具来释放SD卡上的空间以及确保系统已经更新到最新`sudo apt-get update; sudo apt-get upgrade`。然后再确保已经安装好了git工具包。当前任意Raspbian版本都会自带git不过你仍然可以通过命令`sudo apt-get install git`检查一下。
然后再在终端里输入下面的命令把PiMAME安装器从项目的GitHub仓库克隆到本地
git clone https://github.com/ssilverm/pimame_installer
之后,如果命令工作正常的话你应该能看到如下的反馈输出:
Cloning into pimame_installer...
remote: Reusing existing pack: 2306, done.
remote: Total 2306 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2306/2306), 4.61 MiB | 11 KiB/s, done.
Resolving deltas: 100% (823/823), done.
这个命令会创建一个叫pimame_installer的新目录然后下一步就是进入这个目录再执行它里面的脚本
cd pimame_installer/
sudo ./install.sh
这个命令会安装和配置很多软件。所需的时间长短也取决于你的因特网速度因为需要下载大量的包。我们那个简陋的树莓派加15Mb因特网连接用了差不多45分钟来执行完这个脚本在这之后你会收到重启机器的提示。你现在可以安全的通过输入`sudo shutdown -r`来重启了因为这个命令会自动处理剩下的SD卡写入操作。
这就是安装的全部事情了。在重启树莓派后就会自动登录然后会出现PiMAME启动菜单。在0.8版本里这是个非常漂亮的界面有每个支持平台的图片还有红色图标提示已经安装了多少个游戏。现在应该可以用控制器来操作了。如果需要检查控制器是否正确连接可以用SSH连接到树莓派然后检查一下文件**/dev/input/by-id/usb-Ultimarc_I-PAC_Ultimarc_I-PAC-event-kbd**是否存在。
默认的按键配置就可以让你选择要在你的街机上运行哪个模拟器。我们最感兴趣的就是第一个名字叫AdvMAME不过你也许会很惊讶看到还有一个MAME可选的MAME4ALL。MAME4ALL是特别为树莓派构建的使用了旧版的MAME源代码所以它所支持的ROMS的性能也是最佳的。这是很合理的因为你的树莓派不可能玩那些要求很高的游戏所以没有理由苛求模拟器的没必要的兼容性。现在剩下的事情就是找些游戏装到你的系统里参考下面的方法然后尽情享受吧
![](http://www.linuxvoice.com/wp-content/uploads/2014/08/picade1.png)
--------------------------------------------------------------------------------
via: http://www.linuxvoice.com/arcade-machine/
作者:[Ben Everard][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.linuxvoice.com/author/ben_everard/
[1]:http://www.ultimarc.com/jpac.html

View File

@@ -0,0 +1,229 @@
如何在ubuntu桌面配置一个网络打印机和扫描仪
================================================================================
在[之前的文章中][1], 我们讨论过如何在Linux服务器安装各种各样的打印机当然也包括网络扫描仪。今天我们将来处理另一端如何通过桌面客户端来访问网络打印机/扫描仪。
### 网络环境 ###
在这个安装教程中我们的服务器Debian Wheezy 7.2版本的IP地址是192.168.0.10,我们的客户端(Ubuntu 12.04版本)的IP地址是192.168.0.105.注意这两台机器是在同一个网段192.168.0.0/24).如果我们想允许打印机访问其它网段我们需要在服务器上修改cupsd.conf文件的以下部分
<Location />
Order allow,deny
Allow localhost
Allow from XXX.YYY.ZZZ.*
</Location>
在上述例子中我们授予打印机从本地或者任何系统能够访问打印机这些系统的IPv4地址以XXX.YYY.ZZZ开始。
为了验证哪些打印机可以在我们的服务器上适用我们也可以在服务器上使用lpstat命令或者浏览网页https://192.168.0.10:631/printers page.
root@debian:~# lpstat -a
----------
EPSON_Stylus_CX3900 accepting requests since Mon 18 Aug 2014 10:49:33 AM WARST
PDF accepting requests since Mon 06 May 2013 04:46:11 PM WARST
SamsungML1640Series accepting requests since Wed 13 Aug 2014 10:13:47 PM WARST
![](https://farm4.staticflickr.com/3903/14777969919_7b7b25a4a4_z.jpg)
### 在Ubuntu桌面安装网络打印机 ###
在我们的Ubuntu 12.04的客户端,我们将打开"Printing"菜单(Dash -> Printing).你会注意到在其它发行版中,这个名字也许会有一点差别(例如会叫做"Printers" 或者 "Print & Fax":
![](https://farm4.staticflickr.com/3837/14964314992_d8bd0c0d04_o.png)
还没有打印机添加到我们的客户端:
![](https://farm4.staticflickr.com/3887/14941655516_80430529b5_o.png)
下面是在Ubuntu桌面客户端安装一台网络打印机的一些步骤。
**1)** “Add”按钮将弹出 "New Printer" 菜单。我们将选择"Network printer" -> "Find Network Printer"并输入我们服务器的IP地址接着点击"Find":
![](https://farm6.staticflickr.com/5581/14777977730_74c29a99b2_z.jpg)
**2)** 在最下面我们将会看到可使用的打印机的名称。我们来选择这台三星打印机并按"Forward":
![](https://farm6.staticflickr.com/5585/14941655566_c1539a3ea0.jpg)
**3)** 我们将会被要求填写一些关于我们打印机的信息。当我们输入完成时,将点击 "Apply"按钮。
![](https://farm4.staticflickr.com/3908/14941655526_0982628fc9_z.jpg)
**4)** 我们接下来将被询问是否打印一张测试页。让我们点击"Print test page"吧:
![](https://farm4.staticflickr.com/3853/14964651435_cc83bb35aa.jpg)
这个打印任务将被创建为本地id 2
![](https://farm6.staticflickr.com/5562/14777977760_b01c5338f2.jpg)
5)适用我们服务器上的CUPS网络借口我们可以观察到打印任务已经提交成功了打印机 -> SamsungML1640系列 -> 显示完成任务):
![](https://farm4.staticflickr.com/3887/14778110127_359009cbbc_z.jpg)
我们也可以通过在打印机服务器上运行以下命令显示同样信息:
root@debian:~# cat /var/log/cups/page_log | grep -i samsung
----------
SamsungML1640Series root 27 [13/Aug/2014:22:15:34 -0300] 1 1 - localhost Test Page - -
SamsungML1640Series gacanepa 28 [18/Aug/2014:11:28:50 -0300] 1 1 - 192.168.0.105 Test Page - -
SamsungML1640Series gacanepa 29 [18/Aug/2014:11:45:57 -0300] 1 1 - 192.168.0.105 Test Page - -
这个page_log日志显示每一页被打印过的信息只包括哪些用户发送这些打印任务打印日期&时间以及客户端的IPv4地址。
要安装Epson喷墨和PDF打印机我们只需重复第1-5的步骤即可并每一次选择左边的打印队列。例如在下图中选择PDF打印机
![](https://farm4.staticflickr.com/3926/14778046648_c094c8422c_o.png)
然而,请注意到根据[CUPS-PDF 文档中][2],根据默认:
>PDF文件将会被放置在打印作业的所有者命名的子目录内。在这个案例中打印作业的所有者不能被识别i.e.不会存在服务器中)输出的内容被放置在匿名操作的文件中。
这些默认的文件夹可以通过改变在/etc/cups/cups-pdf目录中的**Out**值和**AnonDirName**变量来修改。这里,${HOME}被扩展到用户的家目录中:
Out ${HOME}/PDF
AnonDirName /var/spool/cups-pdf/ANONYMOUS
### 网络打印实例 ###
#### 实例 #1 ####
从Ubuntu12.04中打印通常在本地用gacanepa具有相同名字存在打印机服务器上
![](https://farm4.staticflickr.com/3845/14778046698_57b6e552f3_z.jpg)
打印到PDF打印机之后让我们来检查打印机服务器上的/home/gacanepa/PDF目录下的内容
root@debian:~# ls -l /home/gacanepa/PDF
----------
total 368
-rw------- 1 gacanepa gacanepa 279176 Aug 18 13:49 Test_Page.pdf
-rw------- 1 gacanepa gacanepa 7994 Aug 18 13:50 Untitled1.pdf
-rw------- 1 gacanepa gacanepa 74911 Aug 18 14:36 Welcome_to_Conference_-_Thomas_S__Monson.pdf
这个PDF文件被创建时的权限已经设置为600(-rw-------),这意味着只有打印任务的所有者(在这个例子中是gacanepa )可以访问它们。我们可以通过修改the /etc/cups/cups-pdf.conf文件**UserUMask**变量的值来改变这种行为。例如0033的umask值将可以使PDF打印者以及其它所有者拥有创建文件的权限但是只读权限也会赋予给其它所有者。
root@debian:~# grep -i UserUMask /etc/cups/cups-pdf.conf
----------
### Key: UserUMask
UserUMask 0033
对于那些不熟悉umask有名用户文件创建模式掩码它作为一组可以用于控制那些为新文件创建时修改默认权限。给予特定的umask值在计算最终文件的许可权限时在文件基本权限(0666)和umask的单项按位补码之间进行按位布尔 AND 运算。因此如果设置一个umask值为0033那么新文件默认的权限将不是0033AND 0666 = 644的值文件拥有者具有读/写/执行的权限,其他人拥有只读权限)。
### 实例 #2 ###
在Ubuntu12.04执行打印本地登录用户为jdoe同样的帐号名称但是服务器上是不存在的
![](https://farm4.staticflickr.com/3907/14964315142_a71d8a8aef_z.jpg)
root@debian:~# ls -l /var/spool/cups-pdf/ANONYMOUS
----------
total 5428
-rw-rw-rw- 1 nobody nogroup 5543070 Aug 18 15:57 Linux_-_Wikipedia__the_free_encyclopedia.pdf
这个PDF被创建时赋予的权限是666(-rw-rw-rw-),这意味着每个人都可以访问它们。我们可以通过编辑在/etc/cups/cups-pdf.conf文件中的**AnonUMask**值来改变这种行为。
在这一点上你也许会疑惑为什么同样安装一台网络打印机大多数当然不是全部当前的Linux桌面发行版都会内置一个"打印到文件"的功能来允许用户动态创建PDF文件
使用一台网络PDF打印机有以下好处
- 一个网络打印机(任何类型的)允许你直接从命令行直接打印,无需首先打开文件。
- 在其它操作系统上安装一个网络客户端一个PDF网络打印机备件于是系统管理员不必再单独需要安装PDF创建者实用程序也避免了最终用户安装这些工具存在的风险
- 网络PDF打印机允许通过配置权限直接打印一个网络共享如我们所见的例子。
### 在Ubuntu桌面安装一个网络扫描仪 ###
这里是通过Ubuntu桌面客户端安装和访问一台网络扫描仪的一些步骤。假设网络扫描仪服务器已经启动并运行所述[here][3].
**1)**让我们第一步来检查在我们的Ubuntu客户端主机上是否存在一台可用的扫描仪。没有先前的安装你将会看到信息提示"没有识别到扫描仪."
$ scanimage -L
![](https://farm4.staticflickr.com/3906/14777977850_1ec7994324_z.jpg)
**2)** 现在我们需要启用saned进程用来预装Ubuntu桌面。要启用它我们需要编辑/etc/default/saned文件并设置RUN变量为yes
$ sudo vim /etc/default/saned
----------
# Set to yes to start saned
RUN=yes
**3)** 让我们编辑/etc/sane.d/net.conf文件并在扫描仪安装后添加服务器IP地址
![](https://farm6.staticflickr.com/5581/14777977880_c865b0df95_z.jpg)
**4)** 重启saned进程
$ sudo service saned restart
**5)** 现在让我们来看看扫描仪是否可用:
![](https://farm4.staticflickr.com/3839/14964651605_241482f856_z.jpg)
现在我们可以打开"Simple Scan"(或者其它扫描工具)并开始扫描文件。我们可以旋转,修剪,和保存生成的图片:
![](https://farm6.staticflickr.com/5589/14777970169_73dd0e98e3_z.jpg)
### 总结 ###
拥有一或多台网络打印机或扫描仪在任何办公和家庭网络中都是非常方便适用的,并同时提供了许多好处。例举如下:
- 多用户(从不同的平台/地方)都能够向打印机发送打印作业的队列。
- 由于硬件共享达到了节约成本和维护的作用。
我希望这篇文章可以帮助你更充分地利用这些有点。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/08/configure-network-printer-scanner-ubuntu-desktop.html
作者:[Gabriel Cánepa][a]
译者:[disylee](https://github.com/disylee)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/gabriel
[1]:http://linux.cn/article-4139-1.html
[2]:http://www.cups-pdf.de/documentation.shtml
[3]:http://xmodulo.com/2014/08/usb-network-printer-and-scanner-server-debian.html#scanner

View File

@@ -0,0 +1,464 @@
Ansible 一个配置管理和IT自动化工具
================================================================================
![](http://s0.cyberciti.org/uploads/cms/2014/08/ansible_core_circle.png)
今天我来谈谈 ansible一个由 Python 编写的强大的配置管理解决方案。尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁。让 ansible 在主流的配置管理系统中与众不同的一点便是,它并不需要你在想要配置的每个节点上安装自己的组件。同时提供的一个优点在于,如果需要的话,你可以在不止一个地方控制你的整个基础架构。最后一点是它的正确性,或许这里有些争议,但是我认为在大多数时候这仍然可以作为它的一个优点。说得足够多了,让我们来着手在 RHEL/CentOS 和基于 Debian/Ubuntu 的系统中安装和配置 Ansible。
### 准备工作 ####
1. 发行版RHEL/CentOS/Debian/Ubuntu Linux
1. Jinja2Python 的一个对设计师友好的现代模板语言
1. PyYAMLPython 的一个 YAML 编码/反编码函数库
1. paramiko纯 Python 编写的 SSHv2 协议函数库 (译者注:原文对函数库名有拼写错误)
1. httplib2一个功能全面的 HTTP 客户端函数库
1. 本文中列出的绝大部分操作已经假设你将在 bash 或者其他任何现代的 shell 中以 root 用户执行。
### Ansible 如何工作 ###
Ansible 工具并不使用守护进程,它也不需要任何额外的自定义安全架构,因此它的部署可以说是十分容易。你需要的全部东西便是 SSH 客户端和服务器了。
+-----------------+ +---------------+
|安装了 Ansible 的| SSH | 文件服务器1 |
|Linux/Unix 工作站|<------------------>| 数据库服务器2 | 在本地或远程
+-----------------+ 模块 | 代理服务器3 | 数据中心的
192.168.1.100 +---------------+ Unix/Linux 服务器
其中:
1. 192.168.1.100 - 在你本地的工作站或服务器上安装 Ansible。
1. 文件服务器1到代理服务器3 - 使用 192.168.1.100 和 Ansible 来自动管理所有的服务器。
1. SSH - 在 192.168.1.100 和本地/远程的服务器之间设置 SSH 密钥。
### Ansible 安装教程 ###
ansible 的安装轻而易举,许多发行版的第三方软件仓库中都有现成的软件包,可以直接安装。其他简单的安装方法包括使用 pip 安装它,或者从 github 里获取最新的版本。若想使用你的软件包管理器安装,在[基于 RHEL/CentOS Linux 的系统里你很可能需要 EPEL 仓库][1]。
#### 在基于 RHEL/CentOS Linux 的系统中安装 ansible ####
输入如下 [yum 命令][2]:
$ sudo yum install ansible
#### 在基于 Debian/Ubuntu Linux 的系统中安装 ansible ####
输入如下 [apt-get 命令][3]:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
#### 使用 pip 安装 ansible ####
[pip 命令是一个安装和管理 Python 软件包的工具][4],比如它能管理 Python Package Index 中的那些软件包。如下方式在 Linux 和类 Unix 系统中通用:
$ sudo pip install ansible
#### 从源代码安装最新版本的 ansible ####
你可以通过如下命令从 github 中安装最新版本:
$ cd ~
$ git clone git://github.com/ansible/ansible.git
$ cd ./ansible
$ source ./hacking/env-setup
当你从一个 git checkout 中运行 ansible 的时候,请记住你每次用它之前都需要设置你的环境,或者你可以把这个设置过程加入你的 bash rc 文件中:
# 加入 BASH RC
$ echo "export ANSIBLE_HOSTS=~/ansible_hosts" >> ~/.bashrc
$ echo "source ~/ansible/hacking/env-setup" >> ~/.bashrc
ansible 的 hosts 文件包括了一系列它能操作的主机。默认情况下 ansible 通过路径 /etc/ansible/hosts 查找 hosts 文件,不过这个行为也是可以更改的,这样当你想操作不止一个 ansible 或者针对不同的数据中心的不同客户操作的时候也是很方便的。你可以通过命令行参数 -i 指定 hosts 文件:
$ ansible all -m shell -a "hostname" --ask-pass -i /etc/some/other/dir/ansible_hosts
不过我更倾向于使用一个环境变量,这可以在你想要通过 source 一个不同的文件来切换工作目标的时候起到作用。这里的环境变量是 $ANSIBLE_HOSTS可以这样设置
$ export ANSIBLE_HOSTS=~/ansible_hosts
一旦所有需要的组件都已经安装完毕,而且你也准备好了你的 hosts 文件,你就可以来试一试它了。为了快速测试,这里我把 127.0.0.1 写到了 ansible 的 hosts 文件里:
$ echo "127.0.0.1" > ~/ansible_hosts
现在来测试一个简单的 ping
$ ansible all -m ping
或者提示 ssh 密码:
$ ansible all -m ping --ask-pass
我在刚开始的设置中遇到过几次问题,因此这里强烈推荐为 ansible 设置 SSH 公钥认证。不过在刚刚的测试中我们使用了 --ask-pass在一些机器上你会需要[安装 sshpass][5] 或者像这样指定 -c paramiko
$ ansible all -m ping --ask-pass -c paramiko
当然你也可以[安装 sshpass][6],然而 sshpass 并不总是在标准的仓库中提供,因此 paramiko 可能更为简单。
### 设置 SSH 公钥认证 ###
于是我们有了一份配置以及一些基础的其他东西。现在让我们来做一些实用的事情。ansible 的强大很大程度上体现在 playbooks 上,后者基本上就是一些写好的 ansible 脚本(大部分来说),不过在制作一个 playbook 之前,我们将先从一些一句话脚本开始。现在让我们创建和配置 SSH 公钥认证,以便省去 -c 和 --ask-pass 选项:
$ ssh-keygen -t rsa
样例输出:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mike/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mike/.ssh/id_rsa.
Your public key has been saved in /home/mike/.ssh/id_rsa.pub.
The key fingerprint is:
94:a0:19:02:ba:25:23:7f:ee:6c:fb:e8:38:b4:f2:42 mike@ultrabook.linuxdork.com
The key's randomart image is:
+--[ RSA 2048]----+
|... . . |
|. . + . . |
|= . o o |
|.* . |
|. . . S |
| E.o |
|.. .. |
|o o+.. |
| +o+*o. |
+-----------------+
现在显然有很多种方式来把它放到远程主机上应该的位置。不过既然我们正在使用 ansible就用它来完成这个操作吧
$ ansible all -m copy -a "src=/home/mike/.ssh/id_rsa.pub dest=/tmp/id_rsa.pub" --ask-pass -c paramiko
样例输出:
SSH password:
127.0.0.1 | success >> {
"changed": true,
"dest": "/tmp/id_rsa.pub",
"gid": 100,
"group": "users",
"md5sum": "bafd3fce6b8a33cf1de415af432774b4",
"mode": "0644",
"owner": "mike",
"size": 410,
"src": "/home/mike/.ansible/tmp/ansible-tmp-1407008170.46-208759459189201/source",
"state": "file",
"uid": 1000
}
下一步,把公钥文件添加到远程服务器里。输入:
$ ansible all -m shell -a "cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys" --ask-pass -c paramiko
样例输出:
SSH password:
127.0.0.1 | FAILED | rc=1 >>
/bin/sh: /root/.ssh/authorized_keys: Permission denied
矮油,我们需要用 root 来执行这个命令,所以还是加上一个 -u 参数吧:
$ ansible all -m shell -a "cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys" --ask-pass -c paramiko -u root
样例输出:
SSH password:
127.0.0.1 | success | rc=0 >>
请注意,我刚才这是想要演示通过 ansible 来传输文件的操作。事实上 ansible 有一个更加方便的内置 SSH 密钥管理支持:
$ ansible all -m authorized_key -a "user=mike key='{{ lookup('file', '/home/mike/.ssh/id_rsa.pub') }}' path=/home/mike/.ssh/authorized_keys manage_dir=no" --ask-pass -c paramiko
样例输出:
SSH password:
127.0.0.1 | success >> {
"changed": true,
"gid": 100,
"group": "users",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq+Z8/usprXk0aCAPyP0TGylm2MKbmEsHePUOd7p5DO1QQTHak+9gwdoJJavy0yoUdi+C+autKjvuuS+vGb8+I+8mFNu5CvKiZzIpMjZvrZMhHRdNud7GuEanusTEJfi1pUd3NA2iXhl4a6S9a/4G2mKyf7QQSzI4Z5ddudUXd9yHmo9Yt48/ASOJLHIcYfSsswOm8ux1UnyeHqgpdIVONVFsKKuSNSvZBVl3bXzhkhjxz8RMiBGIubJDBuKwZqNSJkOlPWYN76btxMCDVm07O7vNChpf0cmWEfM3pXKPBq/UBxyG2MgoCGkIRGOtJ8UjC/daadBUuxg92/u01VNEB mike@ultrabook.linuxdork.com",
"key_options": null,
"keyfile": "/home/mike/.ssh/authorized_keys",
"manage_dir": false,
"mode": "0600",
"owner": "mike",
"path": "/home/mike/.ssh/authorized_keys",
"size": 410,
"state": "file",
"uid": 1000,
"unique": false,
"user": "mike"
}
现在这些密钥已经设置好了。我们来试着随便跑一个命令,比如 hostname希望我们不会被提示要输入密码
$ ansible all -m shell -a "hostname" -u root
样例输出:
127.0.0.1 | success | rc=0 >>
成功!!!现在我们可以用 root 来执行命令,并且不会被输入密码的提示干扰了。我们现在可以轻易地配置任何在 ansible hosts 文件中的主机了。让我们把 /tmp 中的公钥文件删除:
$ ansible all -m file -a "dest=/tmp/id_rsa.pub state=absent" -u root
样例输出:
127.0.0.1 | success >> {
"changed": true,
"path": "/tmp/id_rsa.pub",
"state": "absent"
}
下面我们来做一些更复杂的事情,我要确定一些软件包已经安装了,并且已经是最新的版本:
$ ansible all -m zypper -a "name=apache2 state=latest" -u root
样例输出:
127.0.0.1 | success >> {
"changed": false,
"name": "apache2",
"state": "latest"
}
很好,我们刚才放在 /tmp 中的公钥文件已经消失了,而且我们已经安装好了最新版的 apache。下面我们来看看前面命令中的 -m zypper一个让 ansible 非常灵活,并且给了 playbooks 更多能力的功能。如果你不使用 openSuse 或者 Suse enterprise 你可能还不熟悉 zypper, 它基本上就是 suse 世界中相当于 yum 的存在。在上面所有的例子中,我的 hosts 文件中都只有一台机器。除了最后一个命令外,其他所有命令都应该在任何标准的 *nix 系统和标准的 ssh 配置中使用,这造成了一个问题。如果我们想要同时管理多种不同的机器呢?这便是 playbooks 和 ansible 的可配置性闪闪发光的地方了。首先我们来少许修改一下我们的 hosts 文件:
$ cat ~/ansible_hosts
样例输出:
[RHELBased]
10.50.1.33
10.50.1.47
[SUSEBased]
127.0.0.1
首先,我们创建了一些分组的服务器,并且给了他们一些有意义的标签。然后我们来创建一个为不同类型的服务器执行不同操作的 playbook。你可能已经发现这个 yaml 的数据结构和我们之前运行的命令行语句中的相似性了。简单来说,-m 是一个模块,而 -a 用来提供模块参数。在 YAML 表示中你可以先指定模块,然后插入一个冒号 :,最后指定参数。
---
- hosts: SUSEBased
remote_user: root
tasks:
- zypper: name=apache2 state=latest
- hosts: RHELBased
remote_user: root
tasks:
- yum: name=httpd state=latest
现在我们有一个简单的 playbook 了,我们可以这样运行它:
$ ansible-playbook testPlaybook.yaml -f 10
样例输出:
PLAY [SUSEBased] **************************************************************
GATHERING FACTS ***************************************************************
ok: [127.0.0.1]
TASK: [zypper name=apache2 state=latest] **************************************
ok: [127.0.0.1]
PLAY [RHELBased] **************************************************************
GATHERING FACTS ***************************************************************
ok: [10.50.1.33]
ok: [10.50.1.47]
TASK: [yum name=httpd state=latest] *******************************************
changed: [10.50.1.33]
changed: [10.50.1.47]
PLAY RECAP ********************************************************************
10.50.1.33 : ok=2 changed=1 unreachable=0 failed=0
10.50.1.47 : ok=2 changed=1 unreachable=0 failed=0
127.0.0.1 : ok=2 changed=0 unreachable=0 failed=0
注意,你会看到 ansible 联系到的每一台机器的输出。-f 参数让 ansible 在多台主机上同时运行指令。除了指定全部主机,或者一个主机分组的名字以外,你还可以把导入 ssh 公钥的操作从命令行里转移到 playbook 中,这将在设置新主机的时候提供很大的方便,甚至让新主机直接可以运行一个 playbook。为了演示我们把我们之前的公钥例子放进一个 playbook 里:
---
- hosts: SUSEBased
remote_user: mike
sudo: yes
tasks:
- authorized_key: user=root key="{{ lookup('file', '/home/mike/.ssh/id_rsa.pub') }}" path=/root/.ssh/authorized_keys manage_dir=no
- hosts: RHELBased
remote_user: mdonlon
sudo: yes
tasks:
- authorized_key: user=root key="{{ lookup('file', '/home/mike/.ssh/id_rsa.pub') }}" path=/root/.ssh/authorized_keys manage_dir=no
除此之外还有很多可以做的事情,比如在启动的时候把公钥配置好,或者引入其他的流程来让你按需配置一些机器。不过只要 SSH 被配置成接受密码登陆,这些几乎可以用在所有的流程中。在你准备开始写太多 playbook 之前,另一个值得考虑的事情是,代码管理可以有效节省你的时间。机器需要不断变化,然而你并不需要在每次机器发生变化时都重新写一个 playbook只需要更新相关的部分并提交这些修改。与此相关的另一个好处是如同我之前所述你可以从不同的地方管理你的整个基础结构。你只需要将你的 playbook 仓库 git clone 到新的机器上,就完成了管理所有东西的全部设置流程。
#### 现实中的 ansible 例子 ####
我知道很多用户经常使用 pastebin 这样的服务,以及很多公司基于显而易见的理由配置了他们内部使用的类似东西。最近,我遇到了一个叫做 showterm 的程序,巧合之下我被一个客户要求配置它用于内部使用。这里我不打算赘述这个应用程序的细节,不过如果你感兴趣的话,你可以使用 Google 搜索 showterm。作为一个合理的现实中的例子我将会试图配置一个 showterm 服务器,并且配置使用它所需要的客户端应用程序。在这个过程中我们还需要一个数据库服务器。现在我们从配置客户端开始:
---
- hosts: showtermClients
remote_user: root
tasks:
- yum: name=rubygems state=latest
- yum: name=ruby-devel state=latest
- yum: name=gcc state=latest
- gem: name=showterm state=latest user_install=no
这部分很简单。下面是主服务器:
---
- hosts: showtermServers
remote_user: root
tasks:
- name: ensure packages are installed
yum: name={{item}} state=latest
with_items:
- postgresql
- postgresql-server
- postgresql-devel
- python-psycopg2
- git
- ruby21
- ruby21-passenger
- name: showterm server from github
git: repo=https://github.com/ConradIrwin/showterm.io dest=/root/showterm
- name: Initdb
command: service postgresql initdb
creates=/var/lib/pgsql/data/postgresql.conf
- name: Start PostgreSQL and enable at boot
service: name=postgresql
enabled=yes
state=started
- gem: name=pg state=latest user_install=no
handlers:
- name: restart postgresql
service: name=postgresql state=restarted
- hosts: showtermServers
remote_user: root
sudo: yes
sudo_user: postgres
vars:
dbname: showterm
dbuser: showterm
dbpassword: showtermpassword
tasks:
- name: create db
postgresql_db: name={{dbname}}
- name: create user with ALL priv
postgresql_user: db={{dbname}} name={{dbuser}} password={{dbpassword}} priv=ALL
- hosts: showtermServers
remote_user: root
tasks:
- name: database.yml
template: src=database.yml dest=/root/showterm/config/database.yml
- hosts: showtermServers
remote_user: root
tasks:
- name: run bundle install
shell: bundle install
args:
chdir: /root/showterm
- hosts: showtermServers
remote_user: root
tasks:
- name: run rake db tasks
shell: 'bundle exec rake db:create db:migrate db:seed'
args:
chdir: /root/showterm
- hosts: showtermServers
remote_user: root
tasks:
- name: apache config
template: src=showterm.conf dest=/etc/httpd/conf.d/showterm.conf
还凑合。请注意从某种意义上来说这是一个任意选择的程序然而我们现在已经可以持续地在任意数量的机器上部署它了这便是配置管理的好处。此外在大多数情况下这里的定义语法几乎是不言而喻的wiki 页面也就不需要加入太多细节了。当然在我的观点里,一个有太多细节的 wiki 页面绝不会是一件坏事。
### 扩展配置 ###
我们并没有涉及到这里所有的细节。Ansible 有许多选项可以用来配置你的系统。你可以在你的 hosts 文件中内嵌变量,而 ansible 将会把它们应用到远程节点。如:
[RHELBased]
10.50.1.33 http_port=443
10.50.1.47 http_port=80 ansible_ssh_user=mdonlon
[SUSEBased]
127.0.0.1 http_port=443
尽管这对于快速配置来说已经非常方便,你还可以将变量分成存放在 yaml 格式的多个文件中。在你的 hosts 文件路径里,你可以创建两个子目录 group_vars 和 host_vars。在这些路径里放置的任何文件只要能对得上一个主机分组的名字或者你的 hosts 文件中的一个主机名,它们都会在运行时被插入进来。所以前面的一个例子将会变成这样:
ultrabook:/etc/ansible # pwd
/etc/ansible
ultrabook:/etc/ansible # tree
.
├── group_vars
│ ├── RHELBased
│ └── SUSEBased
├── hosts
└── host_vars
├── 10.50.1.33
└── 10.50.1.47
----------
2 directories, 5 files
ultrabook:/etc/ansible # cat hosts
[RHELBased]
10.50.1.33
10.50.1.47
----------
[SUSEBased]
127.0.0.1
ultrabook:/etc/ansible # cat group_vars/RHELBased
ultrabook:/etc/ansible # cat group_vars/SUSEBased
---
http_port: 443
ultrabook:/etc/ansible # cat host_vars/10.50.1.33
---
http_port: 443
ultrabook:/etc/ansible # cat host_vars/10.50.1.47
---
http_port:80
ansible_ssh_user: mdonlon
### 改善 Playbooks ###
组织 playbooks 也已经有很多种现成的方式。在前面的例子中我们用了一个单独的文件,因此这方面被大幅地简化了。组织这些文件的一个常用方式是创建角色。简单来说,你将一个主文件加载为你的 playbook而它将会从其它文件中导入所有的数据这些其他的文件便是角色。举例来说如果你有了一个 wordpress 网站,你需要一个 web 前端和一个数据库。web 前端将包括一个 web 服务器,应用程序代码,以及任何需要的模块。数据库有时候运行在同一台主机上,有时候运行在远程的主机上,这时候角色就可以派上用场了。你创建一个目录,并对每个角色创建对应的小 playbook。在这个例子中我们需要一个 apache 角色mysql 角色wordpress 角色mod_php以及 php 角色。最大的好处是并不是每个角色都必须被应用到同一台机器上。在这个例子中mysql 可以被应用到一台单独的机器。这同样为代码重用提供了可能,比如你的 apache 角色还可以被用在 python 和其他相似的 php 应用程序中。展示这些已经有些超出了本文的范畴,而且做一件事总是有很多不同的方式,我建议搜索一些 ansible 的 playbook 例子。有很多人在 github 上贡献代码,当然还有其他一些网站。
### 模块 ###
在 ansible 中对于所有完成的工作幕后的工作都是由模块主导的。Ansible 有一个非常丰富的内置模块仓库其中包括软件包安装文件传输以及我们在本文中做的所有事情。但是对一部分人来说这些并不能满足他们的配置需求ansible 也提供了方法让你添加自己的模块。Ansible 的 API 有一个非常棒的事情是,它并没有限制模块也必须用编写它的语言 Python 来编写也就是说你可以用任何语言来编写模块。Ansible 模块通过传递 JSON 数据来工作,因此你只需要用想用的语言生成一段 JSON 数据。我很确定任何脚本语言都可以做到这一点,因此你现在就可以开始写点什么了。在 Ansible 的网站上有很多的文档,包括模块的接口是如何工作的,以及 Github 上也有很多模块的例子。注意一些小众的语言可能没有很好的支持,不过那只可能是因为没有多少人在用这种语言贡献代码。试着写点什么,然后把你的结果发布出来吧!
### 总结 ###
总的来说,虽然在配置管理方面已经有很多解决方案,我希望本文能显示出 ansible 简单的设置过程,在我看来这是它最重要的一个要点。请注意,因为我试图展示做一件事的不同方式,所以并不是前文中所有的例子都是适用于你的个别环境或者对于普遍情况的最佳实践。这里有一些链接能让你对 ansible 的了解进入下一个层次:
- [Ansible 项目][7]主页.
- [Ansible 项目文档][8].
- [多级环境与 Ansible][9].
--------------------------------------------------------------------------------
via: http://www.cyberciti.biz/python-tutorials/linux-tutorial-install-ansible-configuration-management-and-it-automation-tool/
作者:[Nix Craft][a]
译者:[felixonmars](https://github.com/felixonmars)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.cyberciti.biz/tips/about-us
[1]:http://www.cyberciti.biz/faq/fedora-sl-centos-redhat6-enable-epel-repo/
[2]:http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto/
[3]:http://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html
[4]:http://www.cyberciti.biz/faq/debian-ubuntu-centos-rhel-linux-install-pipclient/
[5]:http://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
[6]:http://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
[7]:http://www.ansible.com/
[8]:http://docs.ansible.com/
[9]:http://rosstuck.com/multistage-environments-with-ansible/

View File

@@ -0,0 +1,83 @@
关于Linux的趣事
================================================================================
2014年8月25日是Linux的第23个生日。1991年8月25日一位21岁的赫尔辛基大学的学生发布了举世闻名的[新闻组][1](Usenet post)标志着现在世界著名的Linux正式诞生。
23年以后的现在Linux已经无处不在不仅仅被安装于终端用户的桌面系统[智能手机][2]和嵌入式系统,甚至也被[龙头企业][3]用于他们的关键系统,比如[美国海军的核潜艇][4]US Navy's nuclear submarines和[联邦航空局的空中管制系统][5](FAA's air traffic control)。Linux进入了无处不在的云计算时代在云计算平台方面仍然保持着它的优势。
今天,让我来告诉大家**一些你们可能不知道的Linux趣事和Linux历史**。如果有什么要补充的请在评论中分享出来。在这篇文章里我将会用“linux”、“kernel”和“Linux kernel”来表示同一个意思。
1.关于linux是否是一个开源的操作系统这种争论一直是无休无止的。事实上“Linux”操作系统的核心组件参照的是Linux kernel内核。而反派认为Linux不是一个纯粹的操作系统因为他们认为仅仅一个内核kernel并不是一个操作系统自由软件的推崇者认为最大的操作系统应叫做“[GNU/Linux][7]”,把功劳归于应得的人。(比如:[GNU project][8]。另一方面一些Linux的开发者和程序员认为Linux拥有成为一个操作系统的资格因为它实现了[POSIX标准][9]。
2.从openhub网站的统计来看绝大部分95%的Linux是用C语言写的。第二2.8%受欢迎的是汇编语言。毫无疑问C语言比C++ 的更受欢迎也表明了Linus对C++的立场。下面是Linus编程语言的分类。
![](https://farm4.staticflickr.com/3845/15025332121_055cfe3a2c_z.jpg)
3.在全世界Linux已经被[13,036个贡献者][10]创建和修改。当然贡献最多的还是Linus Torvalds自己。从Linux创建至今他提交了20,000次以上的代码。下图显示了总提交次数最多的前十位Linux贡献者。
![](https://farm4.staticflickr.com/3837/14841786838_7a50625f9d_b.jpg)
4.Linux的代码行SLOC超过了1700万行。估计整个代码库的花费大概是5,526人年或者是超过300M1M=10*1000万亿美元[基于模型的基本估算法][11]basic COCOMO model
5.企业并不是单纯的Linux消费者。他们的员工也在[积极参与][12]Linux的开发。下图显示了参与Linux内核开发的企业员工2013年提交次数总和的前十位。他们包括Linux商业版发行者(Red Hat,SUSE),芯片/嵌入式系统制造商IntelTexas Instrumentwolfson非盈利性组织Linaro和其它的IT公司IBMSamsungGoogle
![](https://farm6.staticflickr.com/5573/14841856427_a5a1828245_o.png)
6.Linux的官方吉祥物是一个非常可爱的小企鹅“Tux”。[第一次提出][13]并决定用小企鹅作为Linux吉祥物/标志这个想法的是Linus自己。为什么是小企鹅呢因为Linus本人很喜欢企鹅尽管他曾经被一只凶猛的企鹅咬伤过还导致他得了一场病。
7.一个Linux“发行版”包括Linux内核、支持GUN的组件和库、和一些第三方的应用。根据[distrowatch网站][14]的报告现在总共有286个活跃的Linux发行版。其中最老的一个版本叫[Slackware][15],它是从1993年正式发布出来的一个可用的版本。
8.Kernel.org是一个Linux源码的主要仓库曾经在2011年8月被一个匿名的攻击者[攻陷][16],攻击者打算篡改kernel.org的服务器。为了加强Linux内核访问策略的安全性Linux基金会最近在Linux内核的Git官方托管的仓库上[开启了][17]双重认证。
9.Linux在500强超级计算机中的优势还在[增加][18]。截至2014年6月世界范围内运算速度最快的计算机97%都是运行在Linux上面的。
10.太空监视spacewatch是亚利桑那大学月球与行星实验室的一个研究项目在GNU/Linux和它的创造者们出现之后用他们名字命名了几颗小行星[小行星9793 Torvalds][19],[小行星9882 Stallman][20][小行星9885 Linux][21][小行星9965 GUN][22]),以表彰他们把开源操作系统用于他们的小行星调查活动。
11.纵观Linux内核发展的近代史版本从2.6到3.0有一个很大的跳跃。这个[重编的版本号3][23]实际上并不是意味着Linux内核有什么重大的构建但却标志着Linux 20周年的一个里程碑。
12.在2000年的时候乔帮主还在苹果。他当时就[尝试雇佣][24]Linus Torvalds让他放弃Linux的开发转而为“Unix最大的用户群工作”这个项目后面发展成了MAC OS X。当时Linus拒绝了乔帮主的邀请。
13.Linux 内核的重启函数[reboot()][25]需要两个神奇的数字而这第二个数字来自Linus Torvalds和他3个女儿的出生日期。
14.虽然全世界都有Linux的很多粉丝但是也仍然存在很多对Linux的批评主要是针对桌面系统如缺乏硬件支持缺乏标准化由于很短的升级和发布周期导致系统的不稳定等等。2014年Linux内核小组在LinuxCon大会上当Linus被问及Linux的未来将何去何从他表示“I still want the desktop”(我仍然希望桌面化)。
如果你还知道一些关于Linux的趣事请在评论中与我们分享。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/08/interesting-facts-linux.html
作者:[Dan Nanni][a]
译者:[barney-ro](https://github.com/barney-ro)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:https://groups.google.com/forum/message/raw?msg=comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ
[2]:http://developer.android.com/about/index.html
[3]:http://fortune.com/2013/05/06/how-linux-conquered-the-fortune-500/
[4]:http://www.linuxjournal.com/article/7789
[5]:http://fcw.com/Articles/2006/05/01/FAA-manages-air-traffic-with-Linux.aspx
[6]:http://thecloudmarket.com/stats
[7]:http://www.gnu.org/gnu/why-gnu-linux.html
[8]:http://www.gnu.org/gnu/gnu-history.html
[9]:http://en.wikipedia.org/wiki/POSIX
[10]:https://www.openhub.net/p/linux/contributors/summary
[11]:https://www.openhub.net/p/linux/estimated_cost
[12]:http://www.linuxfoundation.org/publications/linux-foundation/who-writes-linux-2013
[13]:http://www.sjbaker.org/wiki/index.php?title=The_History_of_Tux_the_Linux_Penguin
[14]:http://distrowatch.com/search.php?ostype=All&category=All&origin=All&basedon=All&notbasedon=None&desktop=All&architecture=All&status=Active
[15]:http://www.slackware.com/info/
[16]:http://pastebin.com/BKcmMd47
[17]:http://www.linux.com/news/featured-blogs/203-konstantin-ryabitsev/784544-linux-kernel-git-repositories-add-2-factor-authentication
[18]:http://www.top500.org/statistics/details/osfam/1
[19]:http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=9793
[20]:http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=9882
[21]:http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=9885
[22]:http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=9965
[23]:https://lkml.org/lkml/2011/5/29/204
[24]:http://www.wired.com/2012/03/mr-linux/2/
[25]:http://lxr.free-electrons.com/source/kernel/reboot.c#L199
[26]:http://www.nndb.com/people/444/000022378/
[27]:http://linuxfonts.narod.ru/why.linux.is.not.ready.for.the.desktop.current.html
[28]:https://www.youtube.com/watch?v=8myENKt8bD0

View File

@@ -0,0 +1,227 @@
在LVM中设置精简资源调配卷第四部分
================================================================================
逻辑卷管理有许多特性,比如像快照和精简资源调配。在先前([第三部分][3]中我们已经介绍了如何为逻辑卷创建快照。在本文中我们将了解如何在LVM中设置精简资源调配。
![Setup Thin Provisioning in LVM](http://www.tecmint.com/wp-content/uploads/2014/08/Setup-Thin-Provisioning-in-LVM.jpg)
*在LVM中设置精简资源调配*
### 精简资源调配是什么? ###
精简资源调配用于LVM以在精简池中创建虚拟磁盘。我们假定我服务器上有**15GB**的存储容量而我已经有2个客户各自占去了5GB存储空间。你是第三个客户你也请求5GB的存储空间。在以前我们会提供整个5GB的空间富卷。然而你可能只使用5GB中的2GB其它3GB以后再去填满它。
而在精简资源调配中我们所做的是在其中一个大卷组中定义一个精简池再在精简池中定义一个精简卷。这样不管你写入什么文件它都会保存进去而你的存储空间看上去就是5GB。然而这所有5GB空间不会全部铺满整个硬盘。对其它客户也进行同样的操作就像我说的那儿已经有两个客户你是第三个客户。
那么让我们想想我到底为客户分配了总计多少GB的空间呢所有15GB的空间已经全部分配完了如果现在有某个人来问我是否能提供5GB空间我还可以分配给他么答案是“可以”。在精简资源调配中我可以为第四位客户分配5GB空间即使我已经把那15GB的空间分配完了。
**警告**从那15GB空间中如果我们对资源调配超过15GB了那就是过度资源调配了。
### 它是怎么工作的?我们又是怎样为客户提供存储空间的? ###
我已经提供给你5GB空间但是你可能只用了2GB而其它3GB还空闲着。在富资源调配中我们不能这么做因为它一开始就分配了整个空间。
在精简资源调配中如果我为你定义了5GB空间它就不会在定义卷时就将整个磁盘空间全部分配它会根据你的数据写入而增长希望你看懂了跟你一样其它客户也不会使用全部卷所以还是有机会为一个新客户分配5GB空间的这称之为过度资源调配。
但是必须对各个卷的增长情况进行监控否则结局会是个灾难。在过度资源调配完成后如果所有4个客户都尽量写入数据到磁盘你将碰到问题了。因为这个动作会填满15GB的存储空间甚至溢出从而导致这些卷下线。
### 前置阅读 ###
- [在Linux中使用LVM构建灵活的磁盘存储第一部分][1]
- [在Linux中扩展/缩减LVM第二部分][2]
- [在 LVM中 录制逻辑卷快照并恢复(第三部分)][3]
#### 我的服务器设置 ####
操作系统 — 安装有LVM的CentOS 6.5
服务器IP — 192.168.0.200
### 步骤1 设置精简池和卷 ###
理论讲太多了,让我们还是来点实际的吧,我们一起来设置精简池和精简卷。首先,我们需要一个大尺寸的卷组。这里,我创建了一个**15GB**的卷组用于演示。现在,用下面的命令来列出卷组。
# vgcreate -s 32M vg_thin /dev/sdb1
![Listing Volume Group](http://www.tecmint.com/wp-content/uploads/2014/08/Listing-Volume-Group.jpg)
*列出卷组*
接下来,在创建精简池和精简卷之前,检查逻辑卷有多少空间可用。
# vgs
# lvs
![Check Logical Volume](http://www.tecmint.com/wp-content/uploads/2014/08/check-Logical-Volume.jpg)
*检查逻辑卷*
我们可以在上面的lvs命令输出中看到只显示了一些默认逻辑用于文件系统和交换分区。
### 创建精简池 ###
使用以下命令在卷组vg_thin中创建一个15GB的精简池。
# lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
- **-L** 卷组大小
- **thinpool** 创建精简池
- **tp\_tecmint\_poolThin** - 精简池名称
- **vg\_thin** 我们需要创建精简池的卷组名称
![Create Thin Pool](http://www.tecmint.com/wp-content/uploads/2014/08/Create-Thin-Pool.jpg)
*创建精简池*
使用lvdisplay命令来查看详细信息。
# lvdisplay vg_thin/tp_tecmint_pool
![Logical Volume Information](http://www.tecmint.com/wp-content/uploads/2014/08/Logical-Volume-Information.jpg)
*逻辑卷信息*
这里,我们还没有在该精简池中创建虚拟精简卷。在图片中,我们可以看到分配的精简池数据为**0.00%**。
### 创建精简卷 ###
现在,我们可以在带有-VVirtual选项的lvcreate命令的帮助下在精简池中定义精简卷了。
# lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool
我已经在我的**vg_thin**卷组中的**tp\_tecmint\_pool**内创建了一个精简虚拟卷,取名为**thin\_vol\_client1**。现在,使用下面的命令来列出逻辑卷。
# lvs
![List Logical Volumes](http://www.tecmint.com/wp-content/uploads/2014/08/List-Logical-Volumes.jpg)
*列出逻辑卷*
刚才,我们已经在上面创建了精简卷,这就是为什么没有数据,显示为**0.00%M**。
好吧让我为其它2个客户再创建2个精简卷。这里你可以看到在精简池**tp\_tecmint\_pool**下有3个精简卷了。所以从这一点上看我们开始明白我已经使用所有15GB的精简池。
![Create Thin Volumes](http://www.tecmint.com/wp-content/uploads/2014/08/Create-Thin-Volumes.jpg)
### 创建文件系统 ###
现在使用下面的命令为这3个精简卷创建挂载点并挂载然后拷贝一些文件进去。
# mkdir -p /mnt/client1 /mnt/client2 /mnt/client3
列出创建的目录。
# ls -l /mnt/
![Creating Mount Points](http://www.tecmint.com/wp-content/uploads/2014/08/Creating-Mount-Points.jpg)
*创建挂载点*
使用mkfs命令为这些创建的精简卷创建文件系统。
# mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3
![Create File System](http://www.tecmint.com/wp-content/uploads/2014/08/Create-File-System.jpg)
*创建文件系统*
使用mount命令来挂载所有3个客户卷到创建的挂载点。
# mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/
使用df命令来列出挂载点。
# df -h
![Print Mount Points](http://www.tecmint.com/wp-content/uploads/2014/08/Print-Mount-Points.jpg)
*显示挂载点*
这里我们可以看到所有3个客户卷已经挂载了而每个客户卷只使用了3%的数据空间。那么让我们从桌面添加一些文件到这3个挂载点以填充一些空间。
![Add Files To Volumes](http://www.tecmint.com/wp-content/uploads/2014/08/Add-Files-To-Volumes.jpg)
*添加文件到卷*
现在列出挂载点,并查看每个精简卷使用的空间,然后列出精简池来查看池中已使用的大小。
# df -h
# lvdisplay vg_thin/tp_tecmint_pool
![Check Mount Point Size](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Mount-Point-Size.jpg)
*检查挂载点大小*
![Check Thin Pool Size](http://www.tecmint.com/wp-content/uploads/2014/08/Check-Thin-Pool-Size.jpg)
*检查精简池大小*
上面的命令显示了3个挂载点及其使用大小百分比。
13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3
在查看精简池时,我们看到总共只有**30%**的数据被写入这是上面3个客户虚拟卷的总使用量。
### 过度资源调配 ###
现在,**第四个**客户来申请5GB的存储空间。我能给他吗因为我已经把15GB的池分配给了3个客户。能不能再给另外一个客户分配5GB的空间呢可以这完全可能。在我们使用**过度资源调配**时,就可以实现。过度资源调配可以给我们比我们所拥有的更大的空间。
让我来为第四位客户创建5GB的空间然后再验证一下大小吧。
# lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
# lvs
![Create thin Storage](http://www.tecmint.com/wp-content/uploads/2014/08/Create-thin-Storage.jpg)
*创建精简存储*
在精简池中我只有15GB大小的空间但是我已经在精简池中创建了4个卷其总量达到了20GB。如果4个客户都开始写入数据到他们的卷并将空间填满到那时我们将面对严峻的形势。如果不填满空间那不会有问题。
现在,我已经创建在**thin\_vol\_client4**中创建了文件系统,然后挂载到了**/mnt/client4**下,并且拷贝了一些文件到里头。
# lvs
![Verify Thin Storage](http://www.tecmint.com/wp-content/uploads/2014/08/Verify-Thing-Storage.jpg)
*验证精简存储*
我们可以在上面的图片中看到新创建的client 4总计使用空间达到了**89.34%**,而精简池的已用空间达到了**59.19**。如果所有这些用户不再过度对卷写入,那么它就不会溢出,下线。要避免溢出的话,我们需要扩展精简池大小。
**重要**:精简池只是一个逻辑卷,因此,如果我们需要对其进行扩展,我们可以使用和扩展逻辑卷一样的命令,但我们不能缩减精简池大小。
# lvextend
这里,我们可以看到怎样来扩展逻辑精简池(**tp_tecmint_pool**)。
# lvextend -L +15G /dev/vg_thin/tp_tecmint_pool
![Extend Thin Storage](http://www.tecmint.com/wp-content/uploads/2014/08/Extend-Thin-Storage.jpg)
*扩展精简存储*
接下来,列出精简池大小。
# lvs
![Verify Thin Storage](http://www.tecmint.com/wp-content/uploads/2014/08/Verify-Thin-Storage.jpg)
*验证精简存储*
前面,我们的**tp_tecmint_pool**大小为15GB而在对第四个精简卷进行过度资源配置后达到了20GB。现在它扩展到了30GB所以我们的过度资源配置又回归常态而精简卷也不会溢出下线了。通过这种方式我们可以添加更多的精简卷到精简池中。
在本文中,我们已经了解了怎样来使用一个大尺寸的卷组创建一个精简池,以及怎样通过过度资源配置在精简池中创建精简卷和扩着精简池。在下一篇文章中,我们将介绍怎样来移除逻辑卷。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/setup-thin-provisioning-volumes-in-lvm/
作者:[Babin Lonston][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/babinlonston/
[1]:http://linux.cn/article-3965-1.html
[2]:http://linux.cn/article-3974-1.html
[3]:http://linux.cn/article-4145-1.html

View File

@@ -0,0 +1,209 @@
如何在Debian上安装配置ownCloud
================================================================================
据其官方网站ownCloud可以让你通过一个Web界面或者WebDAV访问你的文件。它还提供了一个平台可以轻松地查看、编辑和同步您所有设备的通讯录、日历和书签。尽管ownCloud与广泛使用Dropbox非常相似但主要区别在于ownCloud是免费的开源的从而可以自己的服务器上建立与Dropbox类似的云存储服务。使用ownCloud你可以完整地访问和控制您的私人数据而对存储空间除了硬盘容量或客户端的连接数量没有限制。
ownCloud提供了社区版免费和企业版面向企业的有偿支持。预编译的ownCloud社区版可以提供了CentOS、Debian、Fedora、openSUSE、SLE和Ubuntu版本。本教程将演示如何在Debian Wheezy上安装和在配置ownCloud社区版。
### 在Debian上安装 ownCloud ###
进入官方网站:[http://owncloud.org][1]并点击Install按钮右上角
![](https://farm4.staticflickr.com/3885/14884771598_323f2fc01c_z.jpg)
为当前的版本选择“Packages for auto updates”下面的图是v7。这可以让你轻松的让你使用的ownCloud与Debian的包管理系统保持一致包是由ownCloud社区维护的。
![](https://farm6.staticflickr.com/5589/15071372505_298a796ff6_z.jpg)
在下一屏中点击继续:
![](https://farm6.staticflickr.com/5589/14884818527_554d1483f9_z.jpg)
在可用的操作系统列表中选择Debian 7 [Wheezy]
![](https://farm6.staticflickr.com/5581/14884669449_433e3334e0_z.jpg)
加入ownCloud的官方Debian仓库
# echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list
加入仓库密钥到apt中
# wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
# apt-key add - < Release.key
继续安装ownCLoud
# aptitude update
# aptitude install owncloud
打开你的浏览器并定位到你的ownCloud实例中地址是 http://服务器 IP/owncloud:
![](https://farm4.staticflickr.com/3869/15071011092_f8f32ffe11_z.jpg)
注意ownCloud可能会包一个Apache配置错误的警告。使用下面的步骤来解决这个错误来解决这些错误信息。
a) 编辑 the /etc/apache2/apache2.conf (设置 AllowOverride 为 All):
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
b) 编辑 the /etc/apache2/conf.d/owncloud.conf
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
c) 重启web服务器:
# service apache2 restart
d) 刷新浏览器,确认安全警告已经消失
![](https://farm6.staticflickr.com/5562/14884771428_fc9c063418_z.jpg)
### 设置数据库 ###
这时可以为ownCloud设置数据库了。
首先登录本地的MySQL/MariaDB数据库
$ mysql -u root -h localhost -p
为ownCloud创建数据库和用户账户。
mysql> CREATE DATABASE owncloud_DB;
mysql> CREATE USER owncloud-web@'localhost' IDENTIFIED BY whateverpasswordyouchoose;
mysql> GRANT ALL PRIVILEGES ON owncloud_DB.* TO owncloud-web@'localhost';
mysql> FLUSH PRIVILEGES;
通过http://服务器 IP/owncloud 进入ownCloud页面并选择Storage & database 选项。输入所需的信息MySQL/MariaDB用户名密码数据库和主机名并点击完成按钮。
![](https://farm6.staticflickr.com/5584/15071010982_b76c23c384_z.jpg)
### 为ownCloud配置SSL连接 ###
在你开始使用ownCloud之前强烈建议你在ownCloud中启用SSL支持。使用SSL可以提供重要的安全好处比如加密ownCloud流量并提供适当的验证。在本教程中将会为SSL使用一个自签名的证书。
创建一个储存服务器密钥和证书的目录:
# mkdir /etc/apache2/ssl
创建一个证书(并有一个密钥来保护它),它有一年的有效期。
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
![](https://farm6.staticflickr.com/5587/15068784081_f281b54b72_z.jpg)
编辑/etc/apache2/conf.d/owncloud.conf 启用HTTPS。对于重写规则中的NC、R和L的意义你可以参考[Apache 文档][2]:
Alias /owncloud /var/www/owncloud
<VirtualHost 192.168.0.15:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost 192.168.0.15:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
启用重写模块并重启Apache
# a2enmod rewrite
# service apache2 restart
打开你的ownCloud实例。注意一下即使你尝试使用HTTP你也会自动被重定向到HTTPS。
注意即使你已经按照上述步骤做了在你启动ownCloud你仍将看到一条错误消息指出该证书尚未被受信的机构颁发那是因为我们创建了一个自签名证书。您可以放心地忽略此消息但如果你考虑在生产服务器上部署ownCloud你可以从一个值得信赖的公司购买证书。
### 创建一个账号 ###
现在我们准备创建一个ownCloud管理员帐号了。
![](https://farm6.staticflickr.com/5587/15048366536_430b4fd64e.jpg)
欢迎来自你的个人云注意你可以安装一个桌面或者移动端app来同步你的文件、日历、通讯录或者更多了。
![](https://farm4.staticflickr.com/3862/15071372425_c391d912f5_z.jpg)
在右上叫,点击你的用户名,会显示一个下拉菜单:
![](https://farm4.staticflickr.com/3897/15071372355_3de08d2847.jpg)
点击Personal来改变你的设置比如密码显示名email地址、头像还有更多。
### ownCloud 使用案例:访问日历 ###
让我开始添加一个事件到日历中并稍后下载。
点击左上角的下拉菜单并选择日历。
![](https://farm4.staticflickr.com/3891/15048366346_7dcc388244.jpg)
添加一个时间并保存到你的日历中。
![](https://farm4.staticflickr.com/3882/14884818197_f55154fd91_z.jpg)
通过 'Event and Tasks' -> 'Import...' -> 'Select file' 下载你的日历并添加到你的Thunderbird日历中
![](https://farm4.staticflickr.com/3840/14884818217_16a53400f0_z.jpg)
![](https://farm4.staticflickr.com/3871/15048366356_a7f98ca63d_z.jpg)
提示你还需要设置你的时区以便在其他程序中成功地导入你的日历默认情况下日历程序将使用UTC+0000时区。要更改时区在左下角点击小齿轮图标接着日历设置菜单就会出现你就可以选择时区了
![](https://farm4.staticflickr.com/3858/14884669029_4e0cd3e366.jpg)
### ownCloud 使用案例:上传一个文件 ###
接下来,我们会从本机上传一个文件
进入文件菜单(左上角)并点击向上箭头来打开一个选择文件对话框。
![](https://farm4.staticflickr.com/3851/14884818067_4a4cc73b40.jpg)
选择一个文件并点击打开。
![](https://farm6.staticflickr.com/5591/14884669039_5a9dd00ca9_z.jpg)
接下来你就可以打开/编辑选中的文件,把它移到另外一个文件夹或者删除它了。
![](https://farm4.staticflickr.com/3909/14884771088_d0b8a20ae2_o.png)
### 总结 ###
ownCloud是一个灵活和强大的云存储可以从其他供应商快速、简便、无痛的过渡。此外它是开源软件你只需要很少有时间和精力对其进行配置以满足你的所有需求。欲了解更多信息可以随时参考[用户][3]、[管理][4]或[开发][5]手册。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/08/install-configure-owncloud-debian.html
作者:[Gabriel Cánepa][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.gabrielcanepa.com.ar/
[1]:http://owncloud.org/
[2]:http://httpd.apache.org/docs/2.2/rewrite/flags.html
[3]:http://doc.owncloud.org/server/7.0/ownCloudUserManual.pdf
[4]:http://doc.owncloud.org/server/7.0/ownCloudAdminManual.pdf
[5]:http://doc.owncloud.org/server/7.0/ownCloudDeveloperManual.pdf

View File

@@ -0,0 +1,259 @@
iproute2 对决 net-tools
================================================================================
如今很多系统管理员依然通过组合使用诸如ifconfig、route、arp和netstat等命令行工具统称为net-tools来配置网络功能解决网络故障。net-tools起源于BSD的TCP/IP工具箱后来成为老版本Linux内核中配置网络功能的工具。**但自2001年起Linux社区已经对其停止维护。**同时一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools只支持iproute2。
作为网络配置工具的一份子iproute2的出现旨在从功能上取代net-tools。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置而iproute2则通过netlink套接字接口与内核通讯。抛开性能而言iproute2的用户接口比net-tools显得更加直观。比如各种网络资源如link、IP地址、路由和隧道等均使用合适的对象抽象去定义使得用户可使用一致的语法去管理不同的对象。更重要的是到目前为止iproute2仍处在[持续开发][1]中。
如果你仍在使用net-tools而且尤其需要跟上新版Linux内核中的最新最重要的网络特性的话那么是时候转到iproute2的阵营了。原因就在于使用iproute2可以做很多net-tools无法做到的事情。
对于那些想要转到使用iproute2的用户有必要了解下面有关net-tools和iproute2的众多对比。
### 显示所有已连接的网络接口 ###
下面的命令显示出所有可用网络接口的列表(无论接口是否激活)。
使用**net-tools**
$ ifconfig -a
使用**iproute2**
$ ip link show
![](https://farm4.staticflickr.com/3852/15134851045_53a5135283_z.jpg)
### 激活或停用网络接口 ###
使用这些命令来激活或停用某个指定的网络接口。
使用**net-tools**
$ sudo ifconfig eth1 up
$ sudo ifconfig eth1 down
使用**iproute2**
$ sudo ip link set down eth1
$ sudo ip link set up eth1
### 为网络接口分配IPv4地址 ###
使用这些命令配置网络接口的IPv4地址。
使用**net-tools**
$ sudo ifconfig eth1 10.0.0.1/24
使用**iproute2**
$ sudo ip addr add 10.0.0.1/24 dev eth1
值得注意的是可以使用iproute2给同一个接口分配多个IP地址ifconfig则无法这么做。使用ifconfig的变通方案是使用[IP别名][2]。
$ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1
### 移除网络接口的IPv4地址 ###
就IP地址的移除而言除了给接口分配全0地址外net-tools没有提供任何合适的方法来移除网络接口的IPv4地址。相反iproute2则能很好地完全。
使用**net-tools**
$ sudo ifconfig eth1 0
使用**iproute2**
$ sudo ip addr del 10.0.0.1/24 dev eth1
### 显示网络接口的IPv4地址 ###
按照如下操作可查看某个指定网络接口的IPv4地址。
使用**net-tools**
$ ifconfig eth1
使用**iproute2**
$ ip addr show dev eth1
同样如果接口分配了多个IP地址iproute2会显示出所有地址而net-tools只能显示一个IP地址。
![](https://farm6.staticflickr.com/5552/15134470952_f478190693_z.jpg)
### 为网络接口分配IPv6地址 ###
使用这些命令为网络接口添加IPv6地址。net-tools和iproute2都允许用户为一个接口添加多个IPv6地址。
使用**net-tools**
$ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
$ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64
使用**iproute2**
$ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
$ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1
### 显示网络接口的IPv6地址 ###
按照如下操作可显示某个指定网络接口的IPv6地址。net-tools和iproute2都可以显示出所有已分配的IPv6地址。
使用**net-tools**
$ ifconfig eth1
使用**iproute2**
$ ip -6 addr show dev eth1
![](https://farm4.staticflickr.com/3906/15111848536_f6cb7ddb4f_z.jpg)
### 移除网络设备的IPv6地址 ###
使用这些命令可移除接口中不必要的IPv6地址。
使用**net-tools**
$ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64
使用**iproute2**
$ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1
### 改变网络接口的MAC地址 ###
使用下面的命令可[篡改网络接口的MAC地址][3]请注意在更改MAC地址前需要停用接口。
使用**net-tools**
$ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66
使用**iproute2**
$ sudo ip link set dev eth1 address 08:00:27:75:2a:67
### 查看IP路由表 ###
net-tools中有两个选择来显示内核的IP路由表route和netstat。在iproute2中使用命令ip route。
使用**net-tools**
$ route -n
----------
$ netstat -rn
使用**iproute2**
$ ip route show
![](https://farm6.staticflickr.com/5585/14948293867_c018df8efd_z.jpg)
### 添加和修改默认路由 ###
这里的命令用来添加或修改内核IP路由表中的默认路由规则。请注意在net-tools中可通过添加新的默认路由、删除旧的默认路由来实现修改默认路由。在iproute2使用ip route命令来代替。
使用**net-tools**
$ sudo route add default gw 192.168.1.2 eth0
$ sudo route del default gw 192.168.1.1 eth0
使用**iproute2**:
$ sudo ip route add default via 192.168.1.2 dev eth0
$ sudo ip route replace default via 192.168.1.2 dev eth0
### 添加和移除静态路由 ###
使用下面命令添加或移除一个静态路由。
使用**net-tools**
$ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
$ sudo route del -net 172.16.32.0/24
使用**iproute2**
$ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
$ sudo ip route del 172.16.32.0/24
### 查看套接字统计信息 ###
这里的命令用来查看套接字统计信息比如活跃或监听状态的TCP/UDP套接字
使用**net-tools**
$ netstat
$ netstat -l
使用**iproute2**
$ ss
$ ss -l
![](https://farm4.staticflickr.com/3843/14948157419_564982b0e6_z.jpg)
### 查看ARP表 ###
使用这些命令显示内核的ARP表。
使用**net-tools**:
$ arp -an
使用**iproute2**:
$ ip neigh
![](https://farm4.staticflickr.com/3908/14948193370_1c5256e8e1_z.jpg)
### 添加或删除静态ARP项 ###
按照如下操作在本地ARP表中添加或删除一个[静态ARP项][4]。
使用**net-tools**
$ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
$ sudo arp -d 192.168.1.100
使用**iproute2**
$ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
$ sudo ip neigh del 192.168.1.100 dev eth0
### 添加、删除或查看多播地址 ###
使用下面的命令配置或查看网络接口上的多播地址。
使用**net-tools**:
$ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
$ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
$ ipmaddr show dev eth0
$ netstat -g
使用**iproute2**
$ sudo ip maddr add 33:44:00:00:00:01 dev eth0
$ sudo ip maddr del 33:44:00:00:00:01 dev eth0
$ ip maddr list dev eth0
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html
作者:[Dan Nanni][a]
译者:[KayGuoWhu](https://github.com/KayGuoWhu)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:https://www.kernel.org/pub/linux/utils/net/iproute2/
[2]:http://xmodulo.com/2013/02/how-to-assign-multiple-ip-addresses-to-one-network-interface-on-centos.html
[3]:http://xmodulo.com/2014/02/spoof-mac-address-network-interface-linux.html
[4]:http://xmodulo.com/2013/02/how-to-add-or-remove-static-arp-entry-on-linux.html

View File

@@ -0,0 +1,89 @@
桌面看腻了?试试这 4 款漂亮的 Linux 图标主题吧
================================================================================
**Ubuntu 的默认图标主题在 5 年内[并未发生太大的变化][1],除了[一些古怪的新图标][2]。如果你确实想尝试一些新鲜的东西,我们将向你展示一些惊艳的替代品,它们会让你感到眼前一亮。**
希望您可以在文末的评论里留下您比较中意的图标主题的链接地址。
### Captiva ###
![Captiva 图标 + elementary 文件夹图标 + Moka GTK](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/moka-and-captiva.jpg)
Captiva 图标 + elementary 文件夹图标 + Moka GTK
Captiva 是一款相对较新的图标主题,即使是那些喜欢华丽图标的用户也会接受它。
Captiva 由 DeviantArt 的用户 ~[bokehlicia][3] 制作它并未使用现在非常流行的2D扁平化风格而是采用了一种柔和圆滑的外观。图标本身呈现出一种很有质感的材质外观同时通过微调的阴影和亮丽的颜色提高了自身的格调。
不过 Captiva 图标主题并未包含文件夹图标在内,因此它将使用 elementary如果可以的话或者普通的 Ubuntu 文件夹图标。
要想在 Ubuntu 14.04 中安装 Captiva 图标,你可以新开一个终端,按如下方式添加官方 PPA 并进行安装:
sudo add-apt-repository ppa:captiva/ppa
sudo apt-get update && sudo apt-get install captiva-icon-theme
或者,如果你不擅长通过软件源安装的话,你也可以直接从 DeviantArt 的主页上下载图标压缩包。把解压过的文件夹挪到家目录的‘.icons目录下即可完成安装。
无论你选择哪种方式来安装,你必须得通过像 [Unity Tweak Tool][4] 这样的工具来把你安装的图标主题(本文列出的其他图标主题也要这样)应用到系统上。
- [DeviantArt 上的 Captiva 图标主题][5]
### Square Beam ###
![Orchis GTK 主题下的 Square Beam 图标](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/squarebeam.jpg)
Orchis GTK 主题下的 Square Beam 图标
厌倦有棱角的图标了?尝试下 Square Beam 吧。Square Beam 因为其艳丽的色泽、尖锐的坡度变化和鲜明的图标形象比本文列出的其他图标具有更加宏大的视觉效果。Square Beam 声称自己有超过 30,000 个(抱歉,我没有仔细数过...)不同的图标(!),因此你很难找到它没有涉及到的地方。
- [GNOME-Look.org 上的 Square Beam 图标主题][6]
### Moka & Faba ###
![在 Orchis GTK 主题下的 Moka/Faba Mono 图标](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/moka-faba.jpg)
在 Orchis GTK 主题下的 Moka/Faba Mono 图标
这里得稍微介绍下 Moka 图标集。事实上,我敢打赌阅读此文的大部分用户正在使用这款图标。
淡柔的颜色、平滑的边缘以及简洁的图标艺术设计Moka 是一款真正出色又覆盖全面的应用图标。它的兄弟 Faba 将这些特点展现得淋漓尽致,而 Moka 也将延续这些 —— 涵盖所有的系统图标、文件夹图标、面板图标,等等。这个组合的结果是...吸引你的眼球!
欲知 Ubuntu 上的安装详情、访问项目官方网站?请点击下面的链接。
- [下载 Moka & Faba 图标主题][7]
### Compass ###
![Compass 图标在 Numix Blue GTK 主题下](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/compass1.jpg)
Compass 图标在 Numix Blue GTK 主题下
在本文最后推荐的是 Compass最后推荐当然不是最差的意思。这款图标现在仍然保持着2D双色的 UI 设计风格。它也许是不像本文推荐的其他图标那样鲜明但这正是它的特色。Compass 秉持这点并与之不断的完善 —— 看看文件夹的图标就知道了!
可以通过 GNOME-Look下面有链接进行下载和安装或者通过添加 Nitrux Artwork 的 PPA 安装:
sudo add-apt-repository ppa:nitrux/nitrux-artwork
sudo apt-get update && sudo apt-get install compass-icon-theme
- [GNOME-Look.org 上的 Compass 图标主题][8]
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/09/4-gorgeous-linux-icon-themes-download
作者:[Joey-Elijah Sneddon][a]
译者:[SteveArcher](https://github.com/SteveArcher)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:http://www.omgubuntu.co.uk/2010/02/lucid-gets-new-icons-for-rhythmbox-ubuntuone-memenu-more
[2]:http://www.omgubuntu.co.uk/2012/08/new-icon-theme-lands-in-lubuntu-12-10
[3]:http://bokehlicia.deviantart.com/
[4]:http://www.omgubuntu.co.uk/2014/06/unity-tweak-tool-0-7-development-download
[5]:http://bokehlicia.deviantart.com/art/Captiva-Icon-Theme-479302805
[6]:http://gnome-look.org/content/show.php/Square-Beam?content=165094
[7]:http://mokaproject.com/moka-icon-theme/download/ubuntu/
[8]:http://gnome-look.org/content/show.php/Compass?content=160629

View File

@@ -0,0 +1,155 @@
如何用Nagios远程执行插件NRPE来检测服务器内存使用率
================================================================================
在[先前的教程中][1]我们已经见到了如何在Nagios设置中设置Nagios远程执行插件NRPE。然而监控内存使用率的脚本和插件并没有在原生的Nagios中。本篇中我们会看到如何配置NRPE来监控远程服务器上的内存使用率。
我们要用的监控内存的脚本在[Nagios 市场][2]上,在创建者的[Github仓库][3]中也可以找到。
假设我们已经安装了NRPE我们首先在我们想要监控的服务器上下载脚本。
### 准备远程服务器 ###
#### 在 Debain/Ubuntu 中: ####
# cd /usr/lib/nagios/plugins/
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem
#### 在 RHEL/CentOS 中: ####
# cd /usr/lib64/nagios/plugins/ (or /usr/lib/nagios/plugins/ for 32-bit)
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem
你可以通过手工在本地运行下面的命令来检查脚本的输出是否正常。当使用NRPE时这条命令应该会检测空闲的内存当可用内存小于20%时会发出警告并且在可用内存小于10%时会生成一个严重警告。
# ./check_mem -f -w 20 -c 10
----------
OK - 34.0% (2735744 kB) free.|TOTAL=8035340KB;;;; USED=5299596KB;6428272;7231806;; FREE=2735744KB;;;; CACHES=2703504KB;;;;
如果你看到像上面那样的输出,那就意味这命令正常工作着。
现在脚本已经准备好了我们要定义NRPE检查内存使用率的命令了。如上所述命令会检查可用内存在可用率小于20%时发出警报小于10%时发出严重警告。
# vim /etc/nagios/nrpe.cfg
#### 对于 Debian/Ubuntu: ####
command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10
#### 对于 RHEL/CentOS 32 bit: ####
command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10
#### 对于 RHEL/CentOS 64 bit: ####
command[check_mem]=/usr/lib64/nagios/plugins/check_mem -f -w 20 -c 10
### 准备 Nagios 服务器 ###
在Nagios服务器中我们为NRPE定义了一条自定义命令。该命令可存储在Nagios内的任何目录中。为了让本教程简单我们会将命令定义放在/etc/nagios目录中。
#### 对于 Debian/Ubuntu: ####
# vim /etc/nagios3/conf.d/nrpe_command.cfg
----------
define command{
command_name check_nrpe
command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$' -c '$ARG1$'
}
#### 对于 RHEL/CentOS 32 bit: ####
# vim /etc/nagios/objects/nrpe_command.cfg
----------
define command{
command_name check_nrpe
command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
#### 对于 RHEL/CentOS 64 bit: ####
# vim /etc/nagios/objects/nrpe_command.cfg
----------
define command{
command_name check_nrpe
command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
现在我们定义Nagios的服务检查
#### 在 Debian/Ubuntu 上: ####
# vim /etc/nagios3/conf.d/nrpe_service_check.cfg
----------
define service{
use local-service
host_name remote-server
service_description Check RAM
check_command check_nrpe!check_mem
}
#### 在 RHEL/CentOS 上: ####
# vim /etc/nagios/objects/nrpe_service_check.cfg
----------
define service{
use local-service
host_name remote-server
service_description Check RAM
check_command check_nrpe!check_mem
}
最后我们重启Nagios服务
#### 在 Debian/Ubuntu 上: ####
# service nagios3 restart
#### 在 RHEL/CentOS 6 上: ####
# service nagios restart
#### 在 RHEL/CentOS 7 上: ####
# systemctl restart nagios.service
### 故障排除 ###
Nagios应该开始在使用NRPE的远程服务器上检查内存使用率了。如果你有任何问题你可以检查下面这些情况。
- 确保NRPE的端口在远程主机上是总是允许的。默认NRPE的端口是TCP 5666。
- 你可以尝试通过执行check\_nrpe 命令: /usr/lib/nagios/plugins/check\_nrpe -H remote-server 手工检查NRPE操作。
- 你同样可以尝试运行check\_mem 命令:/usr/lib/nagios/plugins/check\_nrpe -H remote-server c check\_mem
- 在远程服务器上,在/etc/nagios/nrpe.cfg中设置debug=1。重启NRPE服务并检查这些日志文件/var/log/messages (RHEL/CentOS)或者/var/log/syslog (Debain/Ubuntu)。如果有任何的配置或者权限错误,日志中应该包含了相关的信息。如果日志中没有反映出什么,很有可能是由于请求在某些端口上有过滤而没有到达远程服务器上。
总结一下这边教程描述了我们该如何调试NRPE来监控远程服务器的内存使用率。过程只需要下载脚本、定义命令和重启服务就行了。希望这对你们有帮助。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/09/monitor-server-memory-usage-nagios-remote-plugin-executor.html
作者:[Sarmed Rahman][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/sarmed
[1]:http://linux.cn/article-4101-1.html
[2]:http://exchange.nagios.org/directory/Plugins/Operating-Systems/Solaris/check_mem-2Epl/details
[3]:https://github.com/justintime/nagios-plugins/blob/master/check_mem/check_mem.pl

View File

@@ -0,0 +1,73 @@
Arch Linux 安装捷径Evo/Lution
================================================================================
有些人只体验过Ubuntu或Mint的安装却鼓起勇气想要安装Arch Linux他们的学习道路是那样的陡峭和严峻安装过程中半途而废的人数可能要比顺利过关的人多得多。如果你成功搭建并按你所需的配置好了Arch Linux那么它已经把你培养成了一个饱经风霜的Linux用户。
即使有[可以帮助你的维基][1]为新手提供指南对于那些想要征服Arch的人而言要求仍然太高。你需要至少熟悉诸如fdisk或mkfs之类的终端命令并且听过mc、nano或chroot这些并努力掌握它们。这让我回想起了10年前的Debian安装。
对于那些满怀抱负而又缺乏知识的生灵,有一个叫[Evo/Lution Live ISO][2]的ISO镜像格式安装器可以拯救他们。即便它貌似像发行版一样启动但它其实除了辅助安装Arch Linux准系统之外啥都不干。Evo/Lution是一个项目它旨在通过提供Arch的简单安装方式来为Arch的增加更多的用户基数就像为那些用户提供全面帮助和文档的社区一样。在这样一个组合中Evo是Live CD不可安装而Lution是个安装器本身。项目创立者看到了Arch及其衍生发行版的开发者和用户之间的巨大鸿沟而想要在所有参与者之间构筑一个身份平等的社区。
![](https://farm6.staticflickr.com/5559/15067088008_ecb221408c_z.jpg)
项目的软件部分是命令行安装器Lution-AIS它负责解释一个普通的纯净的Arch安装过程中的每一步。安装完毕后你将获得Arch提供的没有从AUR添加任何东西的最新软件或其它任何自定义的包。
启动这个422MB大小的ISO镜像后一个由显示在右边的带有选项快捷方式的Conky和一个左边等待运行安装器的LX-Terminal组成的工作区便呈现在我们眼前。
![](https://farm6.staticflickr.com/5560/15067056888_6345c259db_z.jpg)
在通过右击桌面或使用ALT-i启动实际的安装器后一个写满了16个等待运行的任务列表就出现在你面前了。除非你知道你在做什么否则请将这些任务全部运行一遍。你可以一次运行也可以进行选择如1 3 6或者1-4也可以一次将它们全部运行输入1-16。大多数步骤需要yyes来确认敲击回车即可。在此期间你有足够的时间来阅读安装指南它可以通过ALT-g来打开。当然你也可以出去溜达一圈再回来。
![](https://farm4.staticflickr.com/3868/15253227082_5e7219f72d_z.jpg)
这16个步骤分成“基础安装”和“桌面安装”两组。第一个组安装主要关注本地化、分区以及安装启动器。
安装器带领你穿越分区世界你可以选择使用gparted、gdisk以及cfdisk。
![](https://farm4.staticflickr.com/3873/15230603226_56bba60d28_z.jpg)
![](https://farm4.staticflickr.com/3860/15253610055_e6a2a7a1cb_z.jpg)
创建完分区后像截图中所示用gparted划分/dev/sda1用于root/dev/sda2用于swap你可以在10个文件系统中选择其中之一。在下一步中你可以选择内核最新或长期支持LTS和基础系统。
![](https://farm6.staticflickr.com/5560/15253610085_aa5a9557fb_z.jpg)
安装完你喜爱的启动加载器后第一部分安装就完成了这大约需要花费12分钟。这是在普通的Arch Linux中你第一次重启进入系统所处之处。
在Lution的帮助下继续进入第二部分在这一部分中将安装Xorg、声音和图形驱动然后进入桌面环境。
![](https://farm4.staticflickr.com/3918/15066917430_c21e0f0a9e_z.jpg)
安装器会检测是否在VirtualBox中安装并且会自动为VM安装并加载正确的通用驱动然后相应地设置**systemd**。
在下一步中你可以选择KDE、Gnome、Cinnamon、LXDE、Englightenment、Mate或XFCE作为你的桌面环境。如果你不喜欢臃肿的桌面你也可以试试这些窗口管理器Awesome、Fluxbox、i3、IceWM、Openbox或PekWM。
![](https://farm4.staticflickr.com/3874/15253610125_26f913be20_z.jpg)
在使用Cinnamon作为桌面环境的情况下第二部分安装将花费不到10分钟的时间而选择KDE的话因为要下载的东西多得多所以花费的时间也会更长。
Lution-AIS在Cinnamon和Awesome上像个妩媚的小妖精。在安装完成并提示重启后它就带我进入了我所渴望的环境。
![](https://farm4.staticflickr.com/3885/15270946371_c2def59f37_z.jpg)
我要提出两点批评一是在安装器要我选择一个镜像列表时以及在创建fstab文件时。在这两种情况下它都另外开了一个终端给出了一些文本信息提示。这让我花了点时间才搞清楚原来我得把它关了安装器才会继续。在创建fstab后它又会提示你而你需要关闭终端并在问你是否想要保存文件时回答
![](https://farm4.staticflickr.com/3874/15067056958_3bba63da60_z.jpg)
我碰到的第二个问题可能与VirtualBox有关了。在启动的时候你可以看到没有网络被检测到的提示信息。点击顶部左边的图标将会打开我们所使用的网络管理器wicd。点击“断开”然后再点击“连接”并重启安装器就可以让它自动检测到了。
Evo/Lution看起来是个有价值的项目在这里Lution工作一切顺利目前还没有什么可告诉社区的。他们开启了一个全新的网站、论坛和维基需要填充内容进去啊。所以如果你喜欢这主意加入[他们的论坛][3]并告诉他们吧。本文中的ISO镜像可以从[此网站][4]下载。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/09/install-arch-linux-easy-way-evolution.html
作者:[Ferdinand Thommes][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/ferdinand
[1]:https://wiki.archlinux.org/
[2]:http://www.evolutionlinux.com/
[3]:http://www.evolutionlinux.com/forums/
[4]:http://www.evolutionlinux.com/downloads.html

View File

@@ -0,0 +1,182 @@
通过网络方式安装 Debian 7Wheezy
================================================================================
本教程将指引你直接通过使用**DNSMASQ**作为**PXE服务器预启动执行环境**,以网络方式安装**Debian 7Wheezy**此种情况是假定你的服务器不提供任何CD/DVD/USB介质驱动器或者它只能通过相连的监视器、键盘和鼠标操作。
![Debian 7 Network Installation on Client Machines](http://www.tecmint.com/wp-content/uploads/2014/09/Network-Debian-Instalaltion.png)
*客户机上的Debian 7网络安装*
**DNSMASQ**是一个轻量级网络基础架构服务器它可以通过内建的DNS、DHCP和TFTP服务器提供如DNS、DHCP和网络启动等关键服务。
一旦PXE服务器启动并运行你可以指示你所有的客户机直接从网络启动前提是你的客户机必须拥有一张支持网络启动的网卡网络启动可以从BIOS的网络启动或启动服务选项中启用。
### 前置阅读 ###
- [Debian 7 (Wheezy)安装指南][1]
### 步骤1 安装及配置DNSMASQ服务器 ###
**1.** 首先在安装Debian服务器后要确保你的系统使用的是**静态IP地址**。因为除了网络启动之外也要为你的整个网段提供DHCP服务。设置好静态IP地址后以root帐号或具有root权力的用户来运行以下命令进行DNSMASQ服务器的安装。
# apt-get install dnsmasq
![Install Dnsmasq Package](http://www.tecmint.com/wp-content/uploads/2014/09/Install-Dnsmasq-in-Debian.png)
*安装Dnsmasq包*
**2.** 安装好DNSMASQ包后你可以开始编辑配置文件。首先创建一个主配置文件的备份然后使用下面的命令对**dnsmasq.conf**文件进行编辑。
# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf
![Backup Dnsmasq Configuration](http://www.tecmint.com/wp-content/uploads/2014/09/Backup-dnsmasq-Configuration-file.png)
*备份Dnsmasq配置*
**3.** 上面的备份过程适合重命名配置文件,所以新的文件应该是空,你可以使用以下描述的**DNSMASQ**配置文件节录。
interface=eth0
domain=debian.lan
dhcp-range=192.168.1.3,192.168.1.253,255.255.255.0,1h
dhcp-boot=pxelinux.0,pxeserver,192.168.1.100
pxe-prompt="Press F8 for menu.", 60
#pxe-service types: x86PC, PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
pxe-service=x86PC, "Install Debian 7 Linux from network server 192.168.1.100", pxelinux
enable-tftp
tftp-root=/srv/tftp
![Configuration of Dnsmasq](http://www.tecmint.com/wp-content/uploads/2014/09/Configure-dnsmasq.png)
*Dnsmasq配置*
- **interface** 服务器监听的网络接口。
- **domain** 用你自己的域名替换。
- **dhcp-range** 用你自己的网络掩码定义的网络IP地址范围。
- **dhcp-boot** 保持默认但使用你自己的服务器IP地址替换IP声明。
- **pxe-prompt** 保持默认 要求在**敲击F8键** 进入菜单时等待60秒。
- **pxe=service** 使用**x86PC**作为32位/64位架构并进入引号字符串的菜单描述提示。其它值类型可能是PC98IA64_EFIAlphaArc_x86Intel_Lean_ClientIA32_EFI, BC_EFIXscale_EFI和 X86-64_EFI。
- **enable-tftp** 启用内建TFTP服务器。
- **tftp-root** 使用/srv/tftp作为Debian网络启动文件的存放位置。
### 步骤2: 下载Debian网络启动文件并打开防火墙连接 ###
**4.** 现在该下载Debian网络启动文件了。首先修改你当前工作目录路径到**TFTP根目录**位置,此位置由最后的配置语句定义(**/srv/tftp**系统路径)。
转到[Debian网络安装][2] [网络启动部分][3]的官方页面镜像,抓取以下文件,要抓取的文件取决于你想要安装到客户端的系统架构。
下载好**netboot.tar.gz**文件后同时提取归档该过程描述只适用于64位但对于其它系统架构也基本相同
# cd /srv/tftp/
# wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar xfz netboot.tar.gz
# wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/SHA256SUMS
# wget http://ftp.nl.debian.org/debian/dists/wheezy/Release
# wget http://ftp.nl.debian.org/debian/dists/wheezy/Release.gpg
同时,必须确保**TFTP**目录中的所有文件都可让TFTP服务器读取。
# chmod -R 755 /srv/tftp/
![Download Debian NetBoot Files](http://www.tecmint.com/wp-content/uploads/2014/09/Download-Debian-NetBoot-Files.png)
*下载Debian网络启动文件*
使用以下变量用于**Debian网络安装**镜像和架构。
# wget http://"$YOURMIRROR"/debian/dists/wheezy/main/installer-"$ARCH"/current/images/netboot/netboot.tar.gz
# wget http://"$YOURMIRROR"/debian/dists/wheezy/main/installer-"$ARCH"/current/images/SHA256SUMS
# wget http://"$YOURMIRROR"/debian/dists/wheezy/Release
# wget http://"$YOURMIRROR"/debian/dists/wheezy/Release.gpg
**5.** 下一步启动或重启DNSMASQ守护进程并运行netstat命令来获取服务器监听的端口列表。
# service dnsmasq restart
# netstat -tulpn | grep dnsmasq
![Start Dnsmasq Service](http://www.tecmint.com/wp-content/uploads/2014/09/Start-Dnsmasq-Service.png)
*启动Dnsmasq服务*
**6.** 基于Debian的发行版通常附带了**UFW防火墙**包。使用以下命令来打开需要的**DNSMASQ**端口号:**67**Bootps**69**TFTP**53**DNS**4011**代理DHCPudp和**53** tcpDNS
# ufw allow 69/udp
# ufw allow 4011/udp ## Only if you have a ProxyDHCP on the network
# ufw allow 67/udp
# ufw allow 53/tcp
# ufw allow 53/udp
![Open Dnsmasq Ports](http://www.tecmint.com/wp-content/uploads/2014/09/Open-Dnsmasq-Ports-620x303.png)
*开启Dnsmasq端口*
现在位于你的客户机网络接口上的PXE加载器将使用按以下顺序从**/srv/tftp/pxelinux.cfg**目录加载**pxelinux**配置文件。
- GUID文件
- MAC文件
- 默认文件
### 步骤3 配置客户端从网络启动 ###
**7.** 要为你的客户端计算机启用网络启动,请进入系统**BIOS配置**如何进入BIOS设置请查阅硬件主板提供商的文档
转到**启动菜单**,然后选择**网络启动**作为**首要启动设备**在某些系统上你可以不用进入BIOS配置就能选择启动设备只要在**BIOS自检**时按一个键就可以进行选择了)。
![Select BIOS Settings](http://www.tecmint.com/wp-content/uploads/2014/09/Select-BIOS-Settings.png)
*选择BIOS设置*
**8。** 在编辑启动顺序后,通常按**F10**来保存BIOS设置。重启后你的客户端计算机应该可以直接从网络启动了应该会出第一个**PXE**提示,要求你按**F8**键进入菜单。
接下来,敲击**F8**键来进入,会出现一个新的提示。敲击**回车**键,屏幕上会出现**Debian安装器**主界面提示,如下图所示。
![Boot Menu Selection](http://www.tecmint.com/wp-content/uploads/2014/09/Boot-Menu-Selection.png)
*启动菜单选择*
![Select Debian Installer Boot](http://www.tecmint.com/wp-content/uploads/2014/09/Select-Debian-Installer-Boot.png)
*选择Debian安装器启动*
![Select Debian Install](http://www.tecmint.com/wp-content/uploads/2014/09/Select-Debian-Install.png)
*选择Debian安装*
从这里开始你可以使用Debian 7 Wheezy安装进程将Debian安装到你的机器上了安装链接见上面。然而为了能够完成安装进程你也需要确保你的机器上互联网连接已经激活。
### 步骤4 DNSMASQ服务器排障并在系统范围内启用 ###
**9.** 要诊断服务器以查询最终是否发生问题或要查询其它提供给客户端的信息,运行以下命令来打开日志文件。
# tailf /var/log/daemon.log
![Debug DNSMASQ Server](http://www.tecmint.com/wp-content/uploads/2014/09/Debbug-DNSMASQ-Server.png)
*DNSMASQ服务器排障*
**10.** 如果服务器测试中已一切就绪,你现在可以在**sysv-rc-conf**包的帮助下,启用**DNSMASQ**守护进程自启动,以使该进程在系统重启后自动启动。
# apt-get install sysv-rc-conf
# sysv-rc-conf dnsmaq on
![Enable DNSMASQ Daemon](http://www.tecmint.com/wp-content/uploads/2014/09/Enable-DNSMASQ-Daemon.png)
*启用DNSMASQ守护进程*
到此为止吧!现在你的**PXE**服务器已经整装待发随时准备好分配IP地址了**DHCP**并为你所有网段中的客户端提供需要的启动信息这些信息配置用来从网络启动并安装Debian Wheezy。
使用PXE网络启动安装在服务器主机数量很多时很有优势因为你可以在短时间内火同时设置整个网络基础架构为版本升级提供了方便也可以通过kickstart文件使整个安装的全自动化。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/network-installation-of-debian-7-on-client-machines/
作者:[Matei Cezar][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/cezarmatei/
[1]:http://www.tecmint.com/debian-gnulinux-7-0-code-name-wheezy-server-installation-guide/
[2]:http://www.debian.org/distrib/netinst#netboot
[3]:http://ftp.nl.debian.org/debian/dists/wheezy/main/

View File

@@ -0,0 +1,67 @@
7个杀手级的开源监测工具
================================================================================
想要更清晰的了解你的网络吗?没有比这几个免费的工具更好用的了。
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_01-netmon-intro-100448913-gallery.idge.jpg)
网络和系统监控是一个很宽的范畴。有监控服务器、网络设备、应用正常工作的方案,也有跟踪这些系统和设备性能,提供趋势性能分析的解决方案。有些工具像个闹钟一样,当发现问题的时候就会报警,而另外的一些工具甚至可以在警报响起的时候触发一些动作。这里,收集了一些开源的工具,旨在解决上述的一些甚至大部分问题。
### Cacti ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_02-netmon-cacti-100448914-orig.jpg)
Cacti是一个性能广泛的图表和趋势分析工具可以用来跟踪并几乎可以绘制出任何可监测指标描绘出图表。从硬盘的利用率到风扇的转速在一个电脑管理系统中只要是可以被监测的指标Cacti都可以监测并快速的转换成可视化的图表。
### Nagios ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_03-netmon-nagios-100448915-orig.jpg)
Nagios是一个经典的老牌系统和网络监测工具。运行速度快可靠需要针对应用定制。Nagios对于初学者是一个挑战。但是它的极其复杂的配置正好也反应出它的强大因为它几乎可以适用于任何监控任务。要说缺点的话就是不怎么耐看但是其强劲的功能和可靠性弥补了这个缺点。
### Icinga ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_04-netmon-icinga-100448916-orig.jpg)
Icinga 是一个正在重建的Nagios的分支它提供了一个全面的监控和警报的框架致力于设计一个像Nagios一样的开放和可扩展性的平台。但是和Nagios拥有不一样的Web界面。Icinga 1 和 Nagios非常的相近不过Icinga 2就重写了。两个版本都能很好的兼容而且Nagios用户可以很轻松的转到Icinga 1平台。
### NeDi ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_05-netmon-nedi-100448917-orig.jpg)
NeDi可能不如其他的工具一样闻名全世界但它确是一个跟踪网络接入的一个强大的解决方案。它可以很流畅的运行网络基础设施和设备目录保持对任何事件的跟踪。并且可以提供任意设备的当前地点也包括历史地点。
NeDi可以被用于定位被偷的或者是丢失掉的设备只要设备出现在网络上。它甚至可以在地图上显示所有已发现的节点。并且很清晰的告诉人们网络是怎么互联的到物理设备端口的。
### Observium ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_06-netmon-observium-100448918-orig.jpg)
Observium 综合了系统和网路监控在性能趋势监测上有很好的表现它支持静态和动态发现来确认服务器和网络设备利用多种监测方法可以监测任何可用的指标。Web界面非常的整洁易用。
就如我们看到的Observium也可以在地图上显示任何被监测节点的实际地点。需要注意的是面板上关于活跃设备和警报的计数。
### Zabbix ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_07-netmon-zabbix-100448919-orig.jpg)
Zabbix 利用一系列的工具监测服务器和网络。Zabbix的监控代理支持大多数的操作系统你可以被动的或者是使用外部检查包括SNMP来监控主机和网络设备。你也会发现很多提醒和通知设施和一个非常人性化的Web界面适用于不同的面板此外Zabbix还拥有一些特殊的管理工具来监测Web应用和虚拟化的管理程序。
Zabbix 还可以提供详细的互联图,以便于我们了解某些对象是怎么连接的。这些图是可以定制的,并且,图也可以以被监测的服务器和主机的分组形式被创建。
### Ntop ###
![](http://images.techhive.com/images/idge/imported/imageapi/2014/09/22/12/slide_08-netmon-ntop-100448920-orig.jpg)
Ntop是一个数据包嗅探工具。有一个整洁的Web界面用来显示被监测网络的实时数据。即时的网络数据通过一个高级的绘图工具可以可视化。主机数据流和与之对应的主机通信信息可以被实时的进行可视化显示。
--------------------------------------------------------------------------------
via: http://www.networkworld.com/article/2686794/asset-management/164219-7-killer-open-source-monitoring-tools.html
作者:[Paul Venezia][a]
译者:[barney-ro](https://github.com/barney-ro)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.networkworld.com/author/Paul-Venezia/

View File

@@ -0,0 +1,151 @@
如何用Puppet和Augeas管理Linux配置
================================================================================
虽然[Puppet][1]是一个真正独特的有用工具但在有些情况下你可以使用一点不同的方法来用它。比如你要修改几个服务器上已有的配置文件而且它们彼此稍有不同。Puppet实验室的人也意识到了这一点他们在 Puppet 中集成了一个叫做[Augeas][2]的伟大的工具,它是专为这种使用情况而设计的。
Augeas可被认为填补了Puppet能力的空白比如在其中一个指定对象的资源类型例如用于维护/etc/hosts中的条目的主机资源还不可用时。在这个文档中您将学习如何使用Augeas来减轻你管理配置文件的负担。
### Augeas是什么? ###
Augeas基本上就是一个配置编辑工具。它以他们原生的格式解析配置文件并且将它们转换成树。配置的更改可以通过操作树来完成并可以以原生配置文件格式保存配置。
### 这篇教程要达成什么目的? ###
我们会针对[我们之前构建的Puppet服务器][1]安装并配置Augeas。我们会使用这个工具创建并测试几个不同的配置文件并学习如何适当地使用它来管理我们的系统配置。
### 前置阅读 ###
我们需要一台工作的Puppet服务器和客户端。如果你还没有请先按照我先前的[教程][1]来。
Augeas安装包可以在标准CentOS/RHEL仓库中找到。不幸的是Puppet用到的Augeas的ruby封装只在puppetlabs仓库中或者[EPEL][4])中才有。如果你系统中还没有这个仓库,请使用下面的命令:
在CentOS/RHEL 6.5上:
# rpm -­ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs­release­6­10.noarch.rpm
在CentOS/RHEL 7上:
# rpm -­ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs­release­7­10.noarch.rpm
在你成功地安装了这个仓库后在你的系统中安装Ruby­Augeas
# yum install ruby­augeas
或者如果你是从我的[上一篇教程中继续][1]的使用puppet的方法安装这个包。在/etc/puppet/manifests/site.pp中修改你的custom_utils类在packages这行中加入“ruby­augeas”。
class custom_utils {
package { ["nmap","telnet","vim­enhanced","traceroute","ruby­augeas"]:
ensure => latest,
allow_virtual => false,
}
}
### 不带Puppet的Augeas ###
如我先前所说最初Augeas并不是来自Puppet实验室这意味着即使没有Puppet本身我们仍然可以使用它。这种方法可在你将它们部署到Puppet环境之前验证你的修改和想法是否是正确的。要做到这一点你需要在你的系统中安装一个额外的软件包。请执行以下命令
# yum install augeas
### Puppet Augeas 示例 ###
用于演示这里有几个Augeas使用案例。
#### 管理 /etc/sudoers 文件 ####
1. 给wheel组加上sudo权限。
这个例子会向你展示如何在你的GNU/Linux系统中为%wheel组加上sudo权限。
# 安装sudo包
package { 'sudo':
ensure => installed, # 确保sudo包已安装
}
# 允许用户属于wheel组来使用sudo
augeas { 'sudo_wheel':
context => '/files/etc/sudoers', # 目标文件是 /etc/sudoers
changes => [
# 允许wheel用户使用sudo
'set spec[user = "%wheel"]/user %wheel',
'set spec[user = "%wheel"]/host_group/host ALL',
'set spec[user = "%wheel"]/host_group/command ALL',
'set spec[user = "%wheel"]/host_group/command/runas_user ALL',
]
}
现在来解释这些代码做了什么:**spec**定义了/etc/sudoers中的用户段**[user]**定义了数组中给定的用户,所有的定义放在该用户的斜杠( / ) 后那部分。因此在典型的配置中这个可以这么表达:
user host_group/host host_group/command host_group/command/runas_user
这个将被转换成/etc/sudoers下的这一行
%wheel ALL = (ALL) ALL
2. 添加命令别称
下面这部分会向你展示如何定义命令别名它可以在你的sudoer文件中使用。
# 创建新的SERVICE别名包含了一些基本的特权命令。
augeas { 'sudo_cmdalias':
context => '/files/etc/sudoers', # The target file is /etc/sudoers
changes => [
"set Cmnd_Alias[alias/name = 'SERVICES']/alias/name SERVICES",
"set Cmnd_Alias[alias/name = 'SERVICES']/alias/command[1] /sbin/service",
"set Cmnd_Alias[alias/name = 'SERVICES']/alias/command[2] /sbin/chkconfig",
"set Cmnd_Alias[alias/name = 'SERVICES']/alias/command[3] /bin/hostname",
"set Cmnd_Alias[alias/name = 'SERVICES']/alias/command[4] /sbin/shutdown",
]
}
sudo命令别名的语法很简单**Cmnd_Alias**定义了命令别名字段,**[alias/name]**绑定所有给定的别名,/alias/name **SERVICES** 定义真实的别名alias/command 是属于该别名的所有命令的数组。以上将被转换如下:
Cmnd_Alias SERVICES = /sbin/service , /sbin/chkconfig , /bin/hostname , /sbin/shutdown
关于/etc/sudoers的更多信息请访问[官方文档][5]。
#### 向一个组中加入用户 ####
要使用Augeas向组中添加用户你也许要添加一个新用户不管是排在 gid 字段还是最后的用户 uid 之后。我们在这个例子中使用SVN组。这可以通过下面的命令达成
在Puppet中:
augeas { 'augeas_mod_group:
context => '/files/etc/group', #目标文件是 /etc/group
changes => [
"ins user after svn/*[self::gid or self::user][last()]",
"set svn/user[last()] john",
]
}
使用 augtool:
augtool> ins user after /files/etc/group/svn/*[self::gid or self::user][last()] augtool> set /files/etc/group/svn/user[last()] john
### 总结 ###
目前为止你应该对如何在Puppet项目中使用Augeas有点明白了。随意地试一下你肯定需要浏览官方的Augeas文档。这会帮助你了解如何在你的个人项目中正确地使用Augeas并且它会让你知道可以用它节省多少时间。
如有任何问题,欢迎在下面的评论中发布,我会尽力解答和向你建议。
### 有用的链接 ###
- [http://www.watzmann.net/categories/augeas.html][6]: 包含许多关于 Augeas 使用的教程。
- [http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas][7]: Puppet wiki 带有许多实例。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/09/manage-configurations-linux-puppet-augeas.html
作者:[Jaroslav Štěpánek][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/jaroslav
[1]:http://linux.cn/article-3959-1.html
[2]:http://augeas.net/
[3]:http://xmodulo.com/manage-configurations-linux-puppet-augeas.html
[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html
[5]:http://augeas.net/docs/references/lenses/files/sudoers-aug.html
[6]:http://www.watzmann.net/categories/augeas.html
[7]:http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas

View File

@@ -0,0 +1,120 @@
使用 utmpdump 监控 CentOS 用户登录历史
================================================================================
保留、维护和分析日志如某个特定时期内发生过的或正在发生的帐号事件是Linux系统管理员最基础和最重要的任务之一。对于用户管理检查用户的登入和登出日志不管是失败的还是成功的可以让我们对任何潜在的安全隐患或未经授权使用系统的情况保持警惕。例如工作时间之外或放假期间的来自未知IP地址或帐号的远程登录应当发出红色警报。
在CentOS系统上用户登录历史存储在以下这些文件中
- /var/run/utmp用于记录当前打开的会话被who和w工具用来记录当前有谁登录以及他们正在做什么而uptime用来记录系统启动时间。
- /var/log/wtmp 用于存储系统连接历史记录被last工具用来记录最后登录的用户的列表。
- /var/log/btmp记录失败的登录尝试被lastb工具用来记录最后失败的登录尝试的列表。
![](https://farm4.staticflickr.com/3871/15106743340_bd13fcfe1c_o.png)
在本文中我将介绍如何使用utmpdump这个小程序来自sysvinit-tools包可以用于转储二进制日志文件到文本格式的文件以便检查。此工具默认在CentOS 6和7系列上可用。utmpdump收集到的信息比先前提到过的工具的输出要更全面这让它成为一个胜任该工作的很不错的工具。除此之外utmpdump可以用于修改utmp或wtmp。如果你想要修复二进制日志中的任何损坏条目它会很有用LCTT 译注:我怎么觉得这像是做坏事的前奏?)。
### Utmpdump的使用及其输出说明 ###
正如我们之前提到的,这些日志文件,与我们大多数人熟悉的其它日志相比(如/var/log/messages/var/log/cron/var/log/maillog是以二进制格式存储的因而我们不能使用像less或more这样的文件命令来查看它们的内容。所以utmpdump的出现拯救了世界。
为了要显示/var/run/utmp的内容请运行以下命令
# utmpdump /var/run/utmp
![](https://farm6.staticflickr.com/5595/15106696599_60134e3488_z.jpg)
同样要显示/var/log/wtmp的内容
# utmpdump /var/log/wtmp
![](https://farm6.staticflickr.com/5591/15106868718_6321c6ff11_z.jpg)
最后,对于/var/log/btmp
# utmpdump /var/log/btmp
![](https://farm6.staticflickr.com/5562/15293066352_c40bc98ca4_z.jpg)
正如你所能看到的三种情况下的输出结果是一样的除了utmp和btmp的记录是按时间排序而wtmp的顺序是颠倒的这个原因外LCTT 译注:此处原文有误,实际上都是按照时间顺序排列的)。
每个日志行格式化成了多列说明如下。第一个字段显示了会话识别符而第二个字段则是PID。第三个字段可以是以下值--表示运行等级改变或系统重启bw启动守候进程数字表示TTY编号或者字符和数字表示伪终端。第四个字段可以为空或用户名、重启或运行级别。第五个字段是主TTY或PTY伪终端如果此信息可获得的话。第六个字段是远程主机名如果是本地登录该字段为空运行级别信息除外它会返回内核版本。第七个字段是远程系统的IP地址如果是本地登录该字段为0.0.0.0。如果没有提供DNS解析第六和第七字段会显示相同的信息远程系统的IP地址。最后一个第八字段指明了该记录创建的日期和时间。
### Utmpdump使用样例 ###
下面提供了一些utmpdump的简单使用情况。
1、 检查8月18日到9月17日之间某个特定用户如gacanepa的登录次数。
# utmpdump /var/log/wtmp | grep gacanepa
![](https://farm4.staticflickr.com/3857/15293066362_fb2dd566df_z.jpg)
如果你需要回顾先前日期的登录信息,你可以检查/var/log下的wtmp-YYYYMMDD或wtmp.[1...N]和btmp-YYYYMMDD或btmp.[1...N])文件,这些是由[logrotate][1]生成的旧wtmp和btmp的归档文件。
2、 统计来自IP地址192.168.0.101的登录次数。
# utmpdump /var/log/wtmp | grep 192.168.0.101
![](https://farm4.staticflickr.com/3842/15106743480_55ce84c9fd_z.jpg)
3、 显示失败的登录尝试。
# utmpdump /var/log/btmp
![](https://farm4.staticflickr.com/3858/15293065292_e1d2562206_z.jpg)
在/var/log/btmp输出中每个日志行都与一个失败的登录尝试相关如使用不正确的密码或者一个不存在的用户ID。上面图片中高亮部分显示了使用不存在的用户ID登录这警告你有人尝试猜测常用帐号名来闯入系统。这在使用tty1的情况下是个极其严重的问题因为这意味着某人对你机器上的终端具有访问权限该检查一下谁拿到了进入你数据中心的钥匙了也许吧
4、 显示每个用户会话的登入和登出信息
# utmpdump /var/log/wtmp
![](https://farm4.staticflickr.com/3835/15293065312_c762360791_z.jpg)
在/var/logwtmp中一次新的登录事件的特征是第一个字段为7第三个字段是一个终端编号或伪终端id第四个字段为用户名。相关的登出事件会在第一个字段显示8第二个字段显示与登录一样的PID而终端编号字段空白。例如仔细观察上面图片中PID 1463的行。
- 在 [Fri Sep 19 11:57:40 2014 ART]TTY1上显示登录提示符。
- 在 [Fri Sep 19 12:04:21 2014 ART],用户 root 登入。
- 在 [Fri Sep 19 12:07:24 2014 ART],用户 root 登出。
旁注第四个字段的LOGIN意味着出现了一次登录到第五字段指定的终端的提示。
到目前为止我介绍一些有点琐碎的例子。你可以将utmpdump和其它一些文本处理工具如awk、sed、grep或cut组合来产生过滤和加强的输出。
例如你可以使用以下命令来列出某个特定用户如gacanepa的所有登录事件并发送输出结果到.csv文件它可以用像LibreOffice Calc或Microsoft Excel之类的文字或工作簿应用程序打开查看。让我们只显示PID、用户名、IP地址和时间戳
# utmpdump /var/log/wtmp | grep -E "\[7].*gacanepa" | awk -v OFS="," 'BEGIN {FS="] "}; {print $2,$4,$7,$8}' | sed -e 's/\[//g' -e 's/\]//g'
![](https://farm4.staticflickr.com/3851/15293065352_91e1c1e4b6_z.jpg)
就像上面图片中三个高亮区域描绘的那样过滤逻辑操作是由三个管道步骤组成的。第一步用于查找由用户gacanepa触发的登录事件[7]第二步和第三部用于选择期望的字段移除utmpdump输出的方括号并设置输出字段分隔符为逗号。
当然,如果你想要在以后打开来看,你需要重定向上面的命令输出到文件(添加“>[文件名].csv”到命令后面
![](https://farm4.staticflickr.com/3889/15106867768_0e37881a25_z.jpg)
在更为复杂的例子中,如果你想要知道在特定时间内哪些用户(在/etc/passwd中列出没有登录你可以从/etc/passwd中提取用户名然后运行grep命令来获取/var/log/wtmp输出中对应用户的列表。就像你看到的那样有着无限可能。
在进行总结之前让我们简要地展示一下utmpdump的另外一种使用情况修改utmp或wtmp。由于这些都是二进制日志文件你不能像编辑文件一样来编辑它们。取而代之是你可以将其内容输出成为文本格式并修改文本输出内容然后将修改后的内容导入回二进制日志中。如下
# utmpdump /var/log/utmp > tmp_output
<使用文本编辑器修改 tmp_output>
# utmpdump -r tmp_output > /var/log/utmp
这在你想要移除或修复二进制日志中的任何伪造条目时很有用。
下面小结一下utmpdump从utmp、wtmp和btmp日志文件或轮循的旧归档文件来读取详细的登录事件来补充如whowuptimelastlastb之类的标准工具的不足这也使得它成为一个很棒的工具。
你可以随意添加评论以加强本帖的含金量。
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/09/monitor-user-login-history-centos-utmpdump.html
作者:[Gabriel Cánepa][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/gabriel
[1]:http://linux.cn/article-4126-1.html

View File

@@ -0,0 +1,224 @@
想玩路由器吗?使用 Quagga 将你的 CentOS 变成 OSPF 路由器
================================================================================
[Quagga][1]是一个开源路由软件套件可以将Linux变成支持如RIP、OSPF、BGP和IS-IS等主要路由协议的路由器。它具有对IPv4和IPv6的完整支持并支持路由/前缀过滤。Quagga可以是你生命中的救星以防你的生产路由器一旦宕机而你没有备用的设备而只能等待更换。通过适当的配置Quagga甚至可以作为生产路由器。
本教程中我们将连接假设之间具有专线连接的两个分支机构网络例如192.168.1.0/24和172.17.1.0/24
![](https://farm4.staticflickr.com/3861/15172727969_13cb7f037f_b.jpg)
我们的CentOS位于所述专用链路的两端。两台主机名分别设置为“site-A-RTR”和“site-B-RTR'。下面是IP地址的详细信息。
- **Site-A**: 192.168.1.0/24
- **Site-B**: 172.16.1.0/24
- **两个 Linux 路由器之间的对等网络**: 10.10.10.0/30
Quagga包括了几个协同工作的守护进程。在本教程中我们将重点建立以下守护进程。
1. **Zebra**: 核心守护进程,负责内核接口和静态路由。
1. **Ospfd**: IPv4 OSPF 守护进程。
### 在CentOS上安装Quagga ###
我们使用yum安装Quagga。
# yum install quagga
在CentOS7SELinux默认会阻止quagga将配置文件写到/usr/sbin/zebra。这个SELinux策略会干扰我们接下来要介绍的安装过程所以我们要禁用此策略。对于这一点无论是[关闭SELinux][2]这里不推荐还是如下启用“zebra_write_config”都可以。如果你使用的是CentOS 6的请跳过此步骤。
# setsebool -P zebra_write_config 1
如果没有做这个修改在我们尝试在Quagga命令行中保存配置的时候看到如下错误。
Can't open configuration file /etc/quagga/zebra.conf.OS1Uu5.
安装完Quagga后我们要配置必要的对等IP地址并更新OSPF设置。Quagga自带了一个命令行称为vtysh。vtysh里面用到的Quagga命令与主要的路由器厂商如思科和Juniper是相似的。
### 步骤 1: 配置 Zebra ###
我们首先创建Zebra配置文件并启用Zebra守护进程。
# cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample /etc/quagga/zebra.conf
# service zebra start
# chkconfig zebra on
启动vtysh命令行
# vtysh
首先我们为Zebra配置日志文件。输入下面的命令进入vtysh的全局配置模式
site-A-RTR# configure terminal
指定日志文件位置,接着退出模式:
site-A-RTR(config)# log file /var/log/quagga/quagga.log
site-A-RTR(config)# exit
永久保存配置:
site-A-RTR# write
接下来我们要确定可用的接口并按需配置它们的IP地址。
site-A-RTR# show interface
----------
Interface eth0 is up, line protocol detection is disabled
. . . . .
Interface eth1 is up, line protocol detection is disabled
. . . . .
配置eth0参数
site-A-RTR# configure terminal
site-A-RTR(config)# interface eth0
site-A-RTR(config-if)# ip address 10.10.10.1/30
site-A-RTR(config-if)# description to-site-B
site-A-RTR(config-if)# no shutdown
继续配置eth1参数
site-A-RTR(config)# interface eth1
site-A-RTR(config-if)# ip address 192.168.1.1/24
site-A-RTR(config-if)# description to-site-A-LAN
site-A-RTR(config-if)# no shutdown
现在验证配置:
site-A-RTR(config-if)# do show interface
----------
Interface eth0 is up, line protocol detection is disabled
. . . . .
inet 10.10.10.1/30 broadcast 10.10.10.3
. . . . .
Interface eth1 is up, line protocol detection is disabled
. . . . .
inet 192.168.1.1/24 broadcast 192.168.1.255
. . . . .
----------
site-A-RTR(config-if)# do show interface description
----------
Interface Status Protocol Description
eth0 up unknown to-site-B
eth1 up unknown to-site-A-LAN
永久保存配置:
site-A-RTR(config-if)# do write
在site-B上重复上面配置IP地址的步骤。
如果一切顺利你应该可以在site-A的服务器上ping通site-B上的对等IP地址10.10.10.2了。
注意一旦Zebra的守护进程启动了在vtysh命令行中的任何改变都会立即生效。因此没有必要在更改配置后重启Zebra守护进程。
### 步骤 2: 配置OSPF ###
我们首先创建OSPF配置文件并启动OSPF守护进程
# cp /usr/share/doc/quagga-XXXXX/ospfd.conf.sample /etc/quagga/ospfd.conf
# service ospfd start
# chkconfig ospfd on
现在启动vtysh命令行来继续OSPF配置
# vtysh
输入路由配置模式:
site-A-RTR# configure terminal
site-A-RTR(config)# router ospf
可选配置路由id:
site-A-RTR(config-router)# router-id 10.10.10.1
添加在OSPF中的网络:
site-A-RTR(config-router)# network 10.10.10.0/30 area 0
site-A-RTR(config-router)# network 192.168.1.0/24 area 0
永久保存配置:
site-A-RTR(config-router)# do write
在site-B上重复和上面相似的OSPF配置:
site-B-RTR(config-router)# network 10.10.10.0/30 area 0
site-B-RTR(config-router)# network 172.16.1.0/24 area 0
site-B-RTR(config-router)# do write
OSPF的邻居现在应该启动了。只要ospfd在运行通过vtysh的任何OSPF相关配置的改变都会立即生效而不必重启ospfd。
下一节我们会验证我们的Quagga设置。
### 验证 ###
#### 1. 通过ping测试 ####
首先你应该可以从site-A ping同site-B的LAN子网。确保你的防火墙没有阻止ping的流量。
[root@site-A-RTR ~]# ping 172.16.1.1 -c 2
#### 2. 检查路由表 ####
必要的路由应该同时出现在内核与Quagga理由表中。
[root@site-A-RTR ~]# ip route
----------
10.10.10.0/30 dev eth0 proto kernel scope link src 10.10.10.1
172.16.1.0/30 via 10.10.10.2 dev eth0 proto zebra metric 20
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
----------
[root@site-A-RTR ~]# vtysh
site-A-RTR# show ip route
----------
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O 10.10.10.0/30 [110/10] is directly connected, eth0, 00:14:29
C>* 10.10.10.0/30 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
O>* 172.16.1.0/30 [110/20] via 10.10.10.2, eth0, 00:14:14
C>* 192.168.1.0/24 is directly connected, eth1
#### 3. 验证OSPF邻居和路由 ####
在vtysh命令行中你可以检查必要的邻居是否在线与是否已经学习了合适的路由。
[root@site-A-RTR ~]# vtysh
site-A-RTR# show ip ospf neighbor
![](https://farm3.staticflickr.com/2943/15160942468_d348241bd5_z.jpg)
本教程中我们将重点放在使用Quagga配置基本的OSPF。在一般情况下Quagga能让我们能够轻松在一台普通的Linux机器上配置动态路由协议如OSPF、RIP或BGP。启用了Quagga的机器可以与你网络中的其他路由器进行通信和交换路由信息。由于它支持主要的开放标准的路由协议它或许是许多情况下的首选。更重要的是Quagga的命令行界面与主要路由器厂商如思科和Juniper几乎是相同的这使得部署和维护Quagga机器变得非常容易。
希望这些对你们有帮助。
--------------------------------------------------------------------------------
via: http://xmodulo.com/turn-centos-box-into-ospf-router-quagga.html
作者:[Sarmed Rahman][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/sarmed
[1]:http://www.nongnu.org/quagga/
[2]:http://xmodulo.com/how-to-disable-selinux.html

View File

@@ -0,0 +1,116 @@
如何在Linux里使用xargs命令
================================================================================
你是否遇到过这样的情况需要一遍又一遍地对多个文件执行同样的操作如果有过那你肯定会深有感触这是多么的无聊和效率低下。还好有种简单的方式可以在基于Unix的操作系统中使用xargs命令解决这个烦恼。通过这个命令你可以有效地处理多个文件节省你的时间和精力。在这篇教程中你可以学到如何一次性对多个文件执行命令或脚本操作再也不用担心像单独处理无数个日志或数据文件那样吓人的任务了。
xargs命令有两个要点。第一你必须列出目标文件。第二你必须指定对每个文件需要执行的命令或脚本。
这篇教程会涉及三个应用场景xargs命令被用来处理分布在不同目录下的文件
1. 计算所有文件的行数
1. 打印指定文件的第一行
1. 对每个文件执行一个自定义脚本
请看下面这个叫xargstest的目录用tree命令以及-i和-f选项显示了目录树结构这样可以避免缩进显示而且每个文件都会带有完整路径
$ tree -if xargstest/
![](https://farm3.staticflickr.com/2942/15334985981_ce1a192def.jpg)
这六个文件的内容分别如下:
![](https://farm4.staticflickr.com/3882/15346287662_a3084a8e4f_o.png)
这个**xargstest**目录,以及它包含的子目录和文件将用在下面的例子中。
### 场景1计算所有文件的行数 ###
就像之前提到的使用xargs命令的第一个要点是一个用来运行命令或脚本的文件列表。我们可以用find命令来确定和列出目标文件。选项**-name 'file??'**指定了xargstest目录下那些名字以"file"开头并跟随两个任意字符的文件才是匹配的。这个搜索默认是递归的意思是find命令会在xargstest和它的子目录下搜索匹配的文件。
$ find xargstest/ -name 'file??'
----------
xargstest/dir3/file3B
xargstest/dir3/file3A
xargstest/dir1/file1A
xargstest/dir1/file1B
xargstest/dir2/file2B
xargstest/dir2/file2A
我们可以通过管道把结果发给sort命令让文件名按顺序排列
$ find xargstest/ -name 'file??' | sort
----------
xargstest/dir1/file1A
xargstest/dir1/file1B
xargstest/dir2/file2A
xargstest/dir2/file2B
xargstest/dir3/file3A
xargstest/dir3/file3B
然后我们需要第二个要素,就是需要执行的命令。我们使用带有-l选项的wc命令来计算每个文件包含的换行符数目会在输出的每一行的前面打印出来
$ find xargstest/ -name 'file??' | sort | xargs wc -l
----------
1 xargstest/dir1/file1A
2 xargstest/dir1/file1B
3 xargstest/dir2/file2A
4 xargstest/dir2/file2B
5 xargstest/dir3/file3A
6 xargstest/dir3/file3B
21 total
可以看到不用对每个文件手动执行一次wc -l命令而xargs命令可以让你在一步里完成所有操作。那些之前看起来无法完成的任务例如单独处理数百个文件现在可以相当轻松地完成了。
### 场景2打印指定文件的第一行 ###
既然你已经有一些使用xargs命令的基础你可以自由选择执行什么命令。有时你也许希望只对一部分文件执行操作而忽略其他的。在这种情况下你可以使用find命令的-name选项以及?通配符匹配任意单个字符来选中特定文件并通过管道输出给xargs命令。举个例子如果你想打印以“B”字符结尾的文件而忽略以“A”结尾的文件的第一行可以使用下面的find、xargs和head命令组合来完成head -n1会打印一个文件的第一行
$ find xargstest/ -name 'file?B' | sort | xargs head -n1
----------
==> xargstest/dir1/file1B <==
one
==> xargstest/dir2/file2B <==
one
==> xargstest/dir3/file3B <==
one
你将看到只有以“B”结尾的文件会被处理而所有以“A”结尾的文件都被忽略了。
### 场景3对每个文件执行一个自定义脚本 ###
最后你也许希望对一些文件执行一个自定义脚本例如Bash、Python或是Perl。要做到这一点只要简单地用你的自定义脚本名字替换掉之前例子中的wc和head命令就好了
$ find xargstest/ -name 'file??' | xargs myscript.sh
自定义脚本**myscript.sh**需要写成接受一个文件名作为参数并处理这个文件。上面的命令将为find命令找到的每个文件分别调用脚本。
注意一下上面的例子中的文件名并没有包含空格。通常来说在Linux环境下操作没有空格的文件名会舒服很多。如果你实在是需要处理名字中带有空格的文件上边的命令就不能用了需要稍微处理一下来让它可以被接受。这可以通过find命令的-print0选项它会打印完整的文件名到标准输出并以空字符结尾以及xargs命令的-0选项它会以空字符作为字符串结束标记来实现就像下面的例子
$ find xargstest/ -name 'file*' -print0 | xargs -0 myscript.sh
注意一下,-name选项所跟的参数已经改为'file\*',意思是所有以"file"开头而结尾可以是任意字符的文件都会被选中。
### 总结 ###
在看完这篇教程后你应该会理解xargs命令的作用以及如何应用到自己的工作中。很快你就可以有时间享受这个命令所带来的高效率而不用把你的时间耗费在一些重复的任务上了。想了解更详细的信息以及更多的选项你可以在终端中输入'man xargs'命令来查看xargs的文档。
--------------------------------------------------------------------------------
via: http://xmodulo.com/xargs-command-linux.html
作者:[Joshua Reed][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/joshua

View File

@@ -0,0 +1,125 @@
在CentOS上配置基于主机的入侵检测系统IDS
================================================================================
所有系统管理员想要在他们生产服务器上首先要部署的安全手段之一,就是检测文件篡改的机制——不仅仅是文件内容,而且也包括它们的属性。
[AIDE][1] “高级入侵检测环境”的简称是一个开源的基于主机的入侵检测系统。AIDE通过检查大量文件属性的不一致性来检查系统二进制文件和基本配置文件的完整性这些文件属性包括权限、文件类型、索引节点、链接数、链接名、用户、组、文件大小、块计数、修改时间、添加时间、创建时间、acl、SELinux安全上下文、xattrs以及md5/sha校验值在内的各种特征。
AIDE通过扫描一台未被篡改的Linux服务器的文件系统来构建文件属性数据库以后将服务器文件属性与数据库中的进行校对然后在服务器运行时对被修改的索引了的文件发出警告。出于这个原因AIDE必须在系统更新后或其配置文件进行合法修改后重新对受保护的文件做索引。
对于某些客户,他们可能会根据他们的安全策略在他们的服务器上强制安装某种入侵检测系统。但是,不管客户是否要求,系统管理员都应该部署一个入侵检测系统,这通常是一个很好的做法。
### 在 CentOS或RHEL 上安装AIDE ###
AIDE的初始安装同时是首次运行最好是在系统刚安装完后并且没有任何服务暴露在互联网甚至局域网时。在这个早期阶段我们可以将来自外部的一切闯入和破坏风险降到最低限度。事实上这也是确保系统在AIDE构建其初始数据库时保持干净的唯一途径。LCTT 译注:当然,如果你的安装源本身就存在安全隐患,则无法建立可信的数据记录)
出于上面的原因在安装完系统后我们可以执行下面的命令安装AIDE
# yum install aide
我们需要将我们的机器从网络断开,并实施下面所述的一些基本配置任务。
### 配置AIDE ###
默认配置文件是/etc/aide.conf该文件介绍了几个示例保护规则如FIPSRNORMALDIRDATAONLY各个规则后面跟着一个等号以及要检查的文件属性列表或者某些预定义的规则由+分隔)。你也可以使用此种格式自定义规则。
![](https://farm3.staticflickr.com/2947/15446746115_7d0a291b0a_o.png)
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
NORMAL = FIPSR+sha512
例如上面的例子说明NORMAL规则将检查下列属性的不一致性权限p、索引节点i、链接数n、用户u、组g、大小s、修改时间m、创建时间c、ACLacl、SELinuxselinux、xattrsxattr、SHA256/SHA512校验和sha256和sha512
定义的规则可灵活地用于不同的目录和文件(用正则表达式表示)。
![](https://farm6.staticflickr.com/5601/15259978179_f93b757c56_o.png)
条目之前的感叹号告诉AIDE忽略子目录或目录中的文件对于这些可以另外定义规则。
在上面的例子中PERMS是用于/etc机器子目录和文件的默认规则。然而对于/etc中的备份文件如/etc/.*~)则不应用任何规则,也没有规则用于/etc/mtab文件。对于/etc中的其它一些选定的子目录或文件使用NORMAL规则替代默认规则PERMS。
定义并应用正确的规则到系统中正确的位置是使用AIDE最难的一部分但作一个好的判断是一个良好的开始。作为首要的一条规则不要检查不必要的属性。例如检查/var/log或/var/spool里头的文件的修改时间将导致大量误报因为许多的应用程序和守护进程经常会写入内容到该位置而这些内容都没有问题。此外检查多个校验值可能会加强安全性但随之而来的是AIDE的运行时间的增加。
可选的如果你使用MAILTO变量指定电子邮件地址就可以将检查结果发送到你的邮箱。将下面这一行放到/etc/aide.conf中的任何位置即可。
MAILTO=root@localhost
### 首次运行AIDE ###
运行以下命令来初始化AIDE数据库
# aide --init
![](https://farm3.staticflickr.com/2942/15446399402_198472e983_o.png)
根据/etc/aide.conf生成的/var/lib/aide/aide.db.new.gz文件需要被重命名为/var/lib/aide/aide.db.gz以便AIDE能读取它
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide.db.gz
现在,是时候来将我们的系统与数据库进行第一次校对了。任务很简单,只需运行:
# aide
在没有选项时AIDE假定使用了--check选项。
如果在数据库创建后没有对系统做过任何修改AIDE将会以OK信息来结束本次校对。
![](https://farm3.staticflickr.com/2948/15260041950_f568b3996a_o.png)
### 生产环境中管理AIDE ###
在构建了一个初始AIDE数据库后作为不断进行的系统管理活动你常常需要因为某些合法的理由更新受保护的服务器。每次服务器更新后你必须重新构建AIDE数据库以更新数据库内容。要完成该任务请执行以下命令
# aide --update
要使用AIDE保护生产系统可能最好通过任务计划调用AIDE来周期性检查不一致性。例如要让AIDE每天运行一次并将结果发送到邮箱
# crontab -e
----------
0 0 * * * /usr/sbin/aide --check | /usr/bin/mail -s "AIDE run for $HOSTNAME" your@email.com
### 测试AIDE检查文件篡改 ###
下面的测试环境将演示AIDE是如何来检查文件的完整性的。
#### 测试环境 1 ####
让我们添加一个新文件(如/etc/fake
# cat /dev/null > /etc/fake
![](https://farm3.staticflickr.com/2941/15260140358_f1d758d354_o.png)
#### 测试环境 2 ####
让我们修改文件权限,然后看看它是否被检测到。
# chmod 644 /etc/aide.conf
#### 测试环境 3 ####
最后,让我们修改文件内容(如,添加一个注释行到/etc/aide.conf
echo "#This is a comment" >> /etc/aide.conf
![](https://farm4.staticflickr.com/3936/15259978229_3ff1ea950e_b.jpg)
上面的截图中第一栏显示了文件的属性第二栏是AIDE数据库中的值而第三栏是更新后的值。第三栏中空白部分表示该属性没有改动如本例中的ACL
### 结尾 ###
如果你曾经发现你自己有很好的理由确信系统被入侵了但是第一眼又不能确定到底哪些东西被改动了那么像AIDE这样一个基于主机的入侵检测系统就会很有帮助了因为它可以帮助你很快识别出哪些东西被改动过而不是通过猜测来浪费宝贵的时间。
--------------------------------------------------------------------------------
via: http://xmodulo.com/host-intrusion-detection-system-centos.html
作者:[Gabriel Cánepa][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/gabriel
[1]:http://aide.sourceforge.net/

View File

@@ -0,0 +1,120 @@
极速蜗牛apt-fast
================
如果你在Debian或Ubuntu系统上经常感觉到**apt-get** 或 **aptitude**包安装速度过慢,那么这里就有几种改善这一情况的方法。你有没有考虑过改变正被使用的默认镜像站点?你有没有排除因特网连接的上游带宽成为瓶颈的可能?
如果不是这些原因,你可以尝试第三个选择:使用[apt-fast][1]工具。apt-fast实际上是一个围绕apt-get和aptitude所写的shell脚本容器它能加速包的下载速度。apt-fast本质上采用[aria2][2]下载工具这款工具能够以“块”的方式从多个镜像并行下载一个文件就像BitTorrent下载
### 在Debian或Ubuntu上安装apt-fast
下面是在基于Debian的Linux上安装apt-fast的步骤
### Debian ###
$ sudo apt-get install aria2
$ wget https://github.com/ilikenwf/apt-fast/archive/master.zip
$ unzip master.zip
$ cd apt-fast-master
$ sudo cp apt-fast /usr/bin
$ sudo cp apt-fast.conf /etc
$ sudo cp ./man/apt-fast.8 /usr/share/man/man8
$ sudo gzip /usr/share/man/man8/apt-fast.8
$ sudo cp ./man/apt-fast.conf.5 /usr/share/man/man5
$ sudo gzip /usr/share/man/man5/apt-fast.conf.5
### Ubuntu 14.04 以及更高版本 ###
$ sudo add-apt-repository ppa:saiarcot895/myppa
$ sudo apt-get update
$ sudo apt-get install apt-fast
### Ubuntu 11.04 到 Ubuntu 13.10 ###
$ sudo add-apt-repository ppa:apt-fast/stable
$ sudo apt-get update
$ sudo apt-get install apt-fast
在安装期间,你需要选择一个默认的软件包管理器 (e.g., apt-get. aptitude ),还需要设置其余选项。但是你可以随时通过编辑配置文件 /etc/apt-fast/conf 来更改设置。
![](https://farm6.staticflickr.com/5615/15285526898_1b18f64d58_z.jpg)
![](https://farm3.staticflickr.com/2949/15449069896_76ee00851b_z.jpg)
![](https://farm6.staticflickr.com/5600/15471817412_9ef7f16096_z.jpg)
### 配置 apt-get ###
安装完成后,你需要在/etc/apt-fast.conf里配置**apt-fast**使用的一系列镜像。
你可以在下面的URL中找到一系列Debian/Ubuntu镜像。
- **Debian**: [http://www.debian.org/mirror/list][3]
- **Ubuntu**: [https://launchpad.net/ubuntu/+archivemirrors][4]
选择完那些地理上靠近你的镜像后,你需按照下面的格式将选择的镜像加入到/etc/apt-fast.conf。
$ sudo vi /etc/apt-fast.conf
Debian
MIRRORS=('http://ftp.us.debian.org/debian/,http://carroll.aset.psu.edu/pub/linux/distributions/debian/,http://debian.gtisc.gatech.edu/debian/,http://debian.lcs.mit.edu/debian/,http://mirror.cc.columbia.edu/debian/')
Ubuntu/Mint
MIRRORS=('http://us.archive.ubuntu.com/ubuntu,http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive/,http://mirror.cc.vt.edu/pub2/ubuntu/,http://mirror.umd.edu/ubuntu/,http://mirrors.mit.edu/ubuntu/')
如上面所示,对于一个特定档案的个别镜像,需要用逗号分割开来。你需要在/etc/apt/sources.list的MIRRORS字符串中包含默认的镜像指定站点。
### 使用apt-fast安装一个包 ###
现在你就可以测试apt-fast的强大了。下面是使用**apt-fast**的示例:
apt-fast [apt-get options and arguments]
apt-fast [aptitude options and arguments]
apt-fast { { install | upgrade | dist-upgrade | build-dep | download | source } [ -y | --yes | --assume-yes | --assume-no ] ... | clean }
使用**apt-fast**安装包:
$ sudo apt-fast install texlive-full
在当前目录下载软件包,但不安装:
$ sudo apt-fast download texlive-full
![](http://farm8.staticflickr.com/7309/10585846956_6c98c6dcc9_z.jpg)
如前面所示apt-fast的并行下载是通过aria2完成的。你可以看到如下图般从多个镜像并行下载。
$ sudo netstat -nap | grep aria2c
![](http://farm8.staticflickr.com/7328/10585846886_4744a0e021_z.jpg)
请注意,**apt-fast**并没有加速"apt-get update"。并行下载只在"install", "upgrade", "dist-upgrage"和"build-dep"操作中触发。其余的操作apt-fast就会简单地回到默认的包管理器apt-get或aptitude。
### apt-fast有多快 ###
为了比较apt-fast和apt-get我尝试在两个相同的Ubuntu实例上使用两种方法安装几个软件包。下面的图表展示了所有软件包安装的时间(单位为秒)。
![](http://farm4.staticflickr.com/3810/10585846986_504d07b4a7_z.jpg)
正如你所见到的,**apt-fast**确实比**apt-get**快(e.g. 快3--4秒),特别是安装庞大软件包的时候。
当然,安装性能的提高程度还依赖你上游因特网连通性。以我为例,我有富足的带宽来支持我的上游连接。这也是为什么我看到并行下载带来了成功的提高。
---
via: http://xmodulo.com/speed-slow-apt-get-install-debian-ubuntu.html
作者:[Dan Nanni][a]
译者:[su-kaiyao](https://github.com/su-kaiyao)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:https://github.com/ilikenwf/apt-fast
[2]:http://aria2.sourceforge.net/
[3]:http://www.debian.org/mirror/list
[4]:https://launchpad.net/ubuntu/+archivemirrors

View File

@@ -0,0 +1,103 @@
Ansible和Docker的作用和用法
================================================================================
在 [Docker][1] 和 [Ansible][2] 的技术社区内存在着很多好玩的东西,我希望在你阅读完这篇文章后也能像我们一样热爱它们。当然,你也会收获一些实践知识,那就是如何通过部署 Ansible 和 Docker 来为 Rails 应用搭建一个完整的服务器环境。
也许有人会问:你怎么不去用 Heroku首先我可以在任何供应商提供的主机上运行 Docker 和 Ansible其次相比于方便性我更偏向于喜欢灵活性。我可以在这种组合中运行任何程序而不仅仅是 web 应用。最后我骨子里是一个工匠我非常了解如何把零件拼凑在一起工作。Heroku 的基础模块是 Linux Container而 Docker 表现出来的多功能性也是基于这种技术。事实上Docker 的其中一个座右铭是:容器化是新虚拟化技术。
### 为什么使用 Ansible ###
我重度使用 Chef 已经有4年了LCTTChef 是与 puppet 类似的配置管理工具),**基础设施即代码**的观念让我觉得非常无聊。我花费大量时间来管理代码,而不是管理基础设施本身。不论多小的改变,都需要相当大的努力来实现它。使用 [Ansible][3],你可以一手掌握拥有可描述性数据的基础架构,另一只手掌握不同组件之间的交互作用。这种更简单的操作模式让我把精力集中在如何将我的技术设施私有化,提高了我的工作效率。与 Unix 的模式一样Ansible 提供大量功能简单的模块,我们可以组合这些模块,达到不同的工作要求。
除了 Python 和 SSHAnsible 不再依赖其他软件,在它的远端主机上不需要部署代理,也不会留下任何运行痕迹。更厉害的是,它提供一套内建的、可扩展的模块库文件,通过它你可以控制所有的一切:包管理器、云服务供应商、数据库等等等等。
### 为什么要使用 Docker ###
[Docker][4] 的定位是:提供最可靠、最方便的方式来部署服务。这些服务可以是 mysqld可以是 redis可以是 Rails 应用。先聊聊 git 吧它的快照功能让它可以以最有效的方式发布代码Docker 的处理方法与它类似。它保证应用可以无视主机环境,随心所欲地跑起来。
一种最普遍的误解是人们总是把 Docker 容器看成是一个虚拟机当然我表示理解你们的误解。Docker 满足[单一功能原则][5],在一个容器里面只跑一个进程,所以一次修改只会影响一个进程,而这些进程可以被重用。这种模型参考了 Unix 的哲学思想,当前还处于试验阶段,并且正变得越来越稳定。
### 设置选项 ###
不需要离开终端,我就可以使用 Ansible 来在这些云平台中生成实例Amazon Web ServicesLinodeRackspace 以及 DigitalOcean。如果想要更详细的信息我于1分25秒内在位于阿姆斯特丹的2号数据中心上创建了一个 2GB 的 DigitalOcean 虚拟机。另外的1分50秒用于系统配置包括设置 Docker 和其他个人选项。当我完成这些基本设定后就可以部署我的应用了。值得一提的是这个过程中我没有配置任何数据库或程序开发语言Docker 已经帮我把应用所需要的事情都安排好了。
Ansible 通过 SSH 为远端主机发送命令。我保存在本地 ssh 代理上面的 SSH 密钥会通过 Ansible 提供的 SSH 会话分享到远端主机。当我把应用代码从远端 clone 下来,或者上传到远端时,我就不再需要提供 git 所需的证书了,我的 ssh 代理会帮我通过 git 主机的身份验证程序的。
### Docker 和应用的依赖性 ###
我发现有一点挺有意思的大部分开发者非常了解他们的应用需要什么版本的编程语言这些语言依赖关系有多种形式Python 的包、Ruby 的打包系统 gems、node.js 的模块等等,但与数据库或消息队列这种重要的概念相比起来,这些语言就处于很随便的境地了——随便给我个编程语言环境,我都能把数据库和消息队列系统跑起来。我认为这是 DevOps 运动它旨在促进开发与运维团队的和谐相处的动机之一开发者负责搭建应用所需要的环境。Docker 使这个任务变得简单明了直截了当,它为现有环境加了实用的一层配置。
我的应用依赖于 MySQL 5.5和 Redis 2.8,依赖关系放在“.docker_container_dependencies”文件里面
gerhard/mysql:5.5
gerhard/redis:2.8
Ansible 会查看这个文件,并且通知 Docker 加载正确的镜像,然后在容器中启动。它还会把这些服务容器链接到应用容器。如果你想知道 Docker 容器的链接功能是怎么工作的,可以参考[Docker 0.6.5 发布通知][6].
我的应用包括一个 Dockerfile它详细指定了 Ruby Docker 镜像的信息,这里面的步骤能够保证把正确的 Ruby 版本加载到镜像中。
FROM howareyou/ruby:2.0.0-p353
ADD ./ /terrabox
RUN \
. /.profile ;\
rm -fr /terrabox/.git ;\
cd /terrabox ;\
bundle install --local ;\
echo '. /.profile && cd /terrabox && RAILS_ENV=test bundle exec rake db:create db:migrate && bundle exec rspec' > /test-terrabox ;\
echo '. /.profile && cd /terrabox && export RAILS_ENV=production && rake db:create db:migrate && bundle exec unicorn -c config/unicorn.rails.conf.rb' > /run-terrabox ;\
# END RUN
ENTRYPOINT ["/bin/bash"]
CMD ["/run-terrabox"]
EXPOSE 3000
第一步是复制应用的所有代码到 Docker 镜像,加载上一个镜像的全局环境变量。这个例子中的 Ruby Docker 镜像会加载 PATH 配置,这个配置能确保镜像加载正确的 Ruby 版本。
接下来,删除 git 历史Docker 容器不需要它们。我安装了所有 Ruby 的 gems创建一个名为“/test-terrabox”的命令这个命令会被名为“test-only”的容器执行。这个步骤的目的是能正确解决应用和它的依赖关系让 Docker 容器正确链接起来,保证在真正的应用容器启动前能通过所有测试项目。
CMD 这个步骤是在新的 web 应用容器启动后执行的。在测试环节结束后马上就执行`/run-terrabox`命令进行编译。
最后Dockerfile 为应用指定了一个端口号将容器内部端口号为3000的端口映射到主机运行着 Docker 的机器)的一个随机分配的端口上。当 Docker 容器里面的应用需要响应来自外界的请求时,这个端口可用于反向代理或负载均衡。
### Docker 容器内运行 Rails 应用 ###
没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems进行100次整体测试在使用2个核心实例和2GB内存的情况下这些操作需要花费8分16秒。装上 Ruby、MySQL 和 Redis Docker 镜像后部署应用花费了4分45秒。另外如果从一个已存在的主应用镜像编译出一个新的 Docker 应用镜像出来只需花费2分23秒。综上所述部署一套新的 Rails 应用,解决其所有依赖关系(包括 MySQL 和 Redis只需花我2分钟多一点的时间就够了。
需要指出的一点是我的应用上运行着一套完全测试套件跑完测试需要花费额外1分钟时间。尽管是无意的Docker 可以变成一套简单的持续集成环境当测试失败后Docker 会把“test-only”这个容器保留下来用于分析出错原因。我可以在1分钟之内和我的客户一起验证新代码保证不同版本的应用之间是完全隔离的同操作系统也是隔离的。传统虚拟机启动系统时需要花费好几分钟Docker 容器只花几秒。另外,一旦一个 Dockedr 镜像编译出来,并且针对我的某个版本的应用的测试都被通过,我就可以把这个镜像提交到一个私有的 Docker Registry 上,可以被其他 Docker 主机下载下来并启动一个新的 Docker 容器,而这不过需要几秒钟时间。
### 总结 ###
Ansible 让我重新看到管理基础设施的乐趣。Docker 让我有充分的信心能稳定处理应用部署过程中最重要的步骤——交付环节。双剑合璧,威力无穷。
从无到有搭建一个完整的 Rails 应用可以在12分钟内完成这种速度放在任何场合都是令人印象深刻的。能获得一个免费的持续集成环境可以查看不同版本的应用之间的区别不会影响到同主机上已经在运行的应用这些功能强大到难以置信让我感到很兴奋。在文章的最后我只希望你能感受到我的兴奋
我在2014年1月伦敦 Docker 会议上讲过这个主题,[已经分享到 Speakerdeck][7]了。
如果想获得更多的关于 Ansible 和 Docker 的内容,请订阅 [changlog 周报][8],它会在每周六推送一周最有价值的关于这两个主题的新闻链接。
如果你想为我们的 Changlog 写一篇文章,请[使用 Draft repo][9],他们会帮到你的。
下次见,[Gerhard][a]。
--------------------------------------------------------------------------------
via: http://thechangelog.com/ansible-docker/
作者:[Gerhard Lazu][a]
译者:[bazz2](https://github.com/bazz2)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://twitter.com/gerhardlazu
[1]:https://www.docker.io/
[2]:https://github.com/ansible/ansible
[3]:http://ansible.com/
[4]:http://docker.io/
[5]:http://en.wikipedia.org/wiki/Single_responsibility_principle
[6]:http://blog.docker.io/2013/10/docker-0-6-5-links-container-naming-advanced-port-redirects-host-integration/
[7]:https://speakerdeck.com/gerhardlazu/ansible-and-docker-the-path-to-continuous-delivery-part-1
[8]:http://thechangelog.com/weekly/
[9]:https://github.com/thechangelog/draft

View File

@@ -0,0 +1,71 @@
在Github和Git上fork之简单指南
===
以我的经验来看刚接触Git和GitHub时最困扰的一件事情就是尝试解决下面的问题**在Git和GitHub上我能做什么**
Git教程往往不会解决这个问题因为它集中篇幅来教你Git命令和概念并且不认为你会使用GitHub。[GitHub帮助教程](https://help.github.com/)一定程度上弥补了这一缺陷,但是它每篇文章的关注点都较为狭隘,而且没有提供关于"Git vs GitHub"问题的概念性概述。
**如果你是习惯于先理解概念,再着手代码的学习者**而且你也是Git和GitHub的初学者我建议你先理解清楚什么是fork。为什么呢
1. Fork是在GitHub起步最普遍的方式。
2. Fork只需要很少的Git命令但是起得作用却非常大。
3. Fork提供了对Git和GitHub最基础的了解有益于你之后的工作。
**本篇指南使用两张简单的图表来教会你fork的两种主要工作流程。**我并不打算涉及任何代码,但是在结论中,我会把你需要使用的代码的链接给你。
### fork并且更新一个仓库
现在有这样一种情形有一个叫做Joe的程序猿写了一个游戏程序而你可能要去改进它。并且Joe将他的代码放在了GitHub仓库上。下面是你要做的事情
![Alt text](https://app.yinxiang.com/shard/s14/sh/ff60f113-2880-47b0-ba99-c296803dbe7d/700ebd0916916079da437d9e231f73d4/res/8aab524b-6ea1-4a2f-b03b-143f12b0e71b/github1.png)
**fork并且更新GitHub仓库的图表演示**
1. **Fork他的仓库**这是GitHub操作这个操作会复制Joe的仓库包括文件提交历史issues和其余一些东西。复制后的仓库在你自己的GitHub帐号下。目前你本地计算机对这个仓库没有任何操作。
2. **Clone你的仓库**这是Git操作。使用该操作让你发送"请给我发一份我仓库的复制文件"的命令给GitHub。现在这个仓库就会存储在你本地计算机上。
3. **更新某些文件**:现在,你可以在任何程序或者环境下更新仓库里的文件。
4. **提交你的更改**这是Git操作。使用该操作让你发送"记录我的更改"的命令至GitHub。此操作只在你的本地计算机上完成。
5. **将你的更改push到你的GitHub仓库**这是Git操作。使用该操作让你发送"这是我的修改"的信息给GitHub。Push操作不会自动完成所以直到你做了push操作GitHub才知道你的提交。
6. **给Joe发送一个pull request**如果你认为Joe会接受你的修改你就可以给他发送一个pull request。这是GitHub操作使用此操作可以帮助你和Joe交流你的修改并且询问Joe是否愿意接受你的"pull request",当然,接不接受完全取决于他自己。
如果Joe接受了你的pull request他将把那些修改拉到自己的仓库。胜利
### 同步一个fork
Joe和其余贡献者已经对这个项目做了一些修改而你将在他们的修改的基础上还要再做一些修改。在你开始之前你最好"同步你的fork",以确保在最新的复制版本里工作。下面是你要做的:
![Alt text](https://app.yinxiang.com/shard/s14/sh/ff60f113-2880-47b0-ba99-c296803dbe7d/700ebd0916916079da437d9e231f73d4/res/9ae7ff2b-ebda-478b-ac57-002e92ffde72/github2.png)
*同步GitHub fork的图表示意图*
1. **从Joe的仓库中取出那些变化的文件**这是Git操作使用该命令让你可以从Joe的仓库获取最新的文件。
2. **将这些修改合并到你自己的仓库**这是Git操作使用该命令使得那些修改更新到你的本地计算机那些修改暂时存放在一个"分支"中。记住步骤1和2经常结合为一个命令使用合并后的Git命令叫做"pull"。
3. **将那些修改更新推送到你的GitHub仓库**可选记住你本地计算机不会自动更新你的GitHub仓库。所以唯一更新GitHub仓库的办法就是将那些修改推送上去。你可以在步骤2完成后立即执行push也可以等到你做了自己的一些修改并已经本地提交后再执行推送操作。
**比较一下fork和同步工作流程的区别**当你最初fork一个仓库的时候信息的流向是从Joe的仓库到你的仓库然后再到你本地计算机。但是最初的过程之后信息的流向是从Joe的仓库到你的本地计算机之后再到你的仓库。
### 结论
我希望这是一篇关于GitHub和Git 的 [fork](https://help.github.com/articles/fork-a-repo)有用概述。现在你已经理解了那些概念你将会更容易地在实际中执行你的代码。GitHub关于fork和[同步](https://help.github.com/articles/syncing-a-fork)的文章将会给你大部分你需要的代码。
如果你是Git的初学者而且你很喜欢这种学习方式那么我极力推荐书籍[Pro Git](http://git-scm.com/book)的前两个章节,网上是可以免费查阅的。
如果你喜欢视频学习,我创建了一个[11部分的视频系列](http://www.dataschool.io/git-and-github-videos-for-beginners/)总共36分钟来向初学者介绍Git和GitHub。
---
via: http://www.dataschool.io/simple-guide-to-forks-in-github-and-git/
作者:[Kevin Markham][a]
译者:[su-kaiyao](https://github.com/su-kaiyao)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://disqus.com/home/user/justmarkham/

View File

@@ -0,0 +1,149 @@
系统之锹sysdigLinux服务器监控和排障利器
================================================================================
当你需要追踪某个进程产生和接收的系统调用时首先浮现在你脑海中的是什么你可能会想到strace那么你是对的。你会使用什么样的命令行工具来监控原始网络通信呢如果你想到了tcpdump你又作出了一个极佳的选择。而如果你碰到必须追踪打开的文件在Unix意义上一切皆文件的需求可能你会使用lsof。
strace、tcpdump以及lsof确实是些伟大的工具它们应该成为每个系统管理员工具集之中的一部分而这也正是你为什么应该爱上[sysdig][1]的原因。它是一个强大的开源工具用于系统级别的勘察和排障它的创建者在介绍它时称之为“strace+tcpdump+lsof+上面点缀着lua樱桃的绝妙酱汁”。抛开幽默不说sysdig的最棒特性之一在于它不仅能分析Linux系统的“现场”状态也能将该状态保存为转储文件以供离线检查。更重要的是你可以自定义sysdig的行为或者甚至通过内建的你也可以自己编写名为凿子chisel的小脚本增强其功能。单独的凿子可以以脚本指定的各种风格分析sysdig捕获的事件流。
在本教程中我们将探索sysdig的安装及其基本用法在Linux上实施系统监控和排障。
### 安装Sysdig ###
对于本教程,由于为了简便、缩短安装流程以及版本的不可知,我们将选择使用官方网站提供的自动化安装过程。在自动化过程中,安装脚本会自动检测操作系统并安装必需的依赖包。
以root身份运行以下命令来从官方apt/yum仓库安装sysdig
# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash
![](https://farm6.staticflickr.com/5616/15334678580_99c5d38328_z.jpg)
安装完成后我们可以通过以下方法调用sysdig来感受一下它
# sysdig
我们的屏幕将马上被系统上发生的所有事件填满,对于这些信息,不便于我们做更多操作。要进一步处理,我们可以运行:
# sysdig -cl | less
来查看可用的凿子列表。
![](https://farm4.staticflickr.com/3938/15334678610_e5956a26e8_z.jpg)
默认有以下类目可用,各个类目中分布有多个内建的凿子。
- CPU UsageCPU使用量
- Errors错误
- I/O
- Logs日志
- Misc混杂
- Net网络
- Performance性能
- Security安全
- System State系统状态
要显示指定凿子上的信息(包括详细的命令行用法),运行以下命令:
# sysdig -cl [凿子名称]
例如我们可以检查“网络”类目下关于spy_port凿子的信息
# sysdig -i spy_port
![](https://farm4.staticflickr.com/3945/15521424095_0365bf20c3_z.jpg)
凿子可以通过过滤器(可同时应用于实时数据和记录文件)组合,以获取更多有用的输出。
过滤器遵从“类.字段”结构。例如:
- **fd.cip**客户端IP地址。
- **evt.dir**:事件方向,可以是‘>’用于进入事件,或‘<’用于退出事件。
完整的过滤器列表可以通过以下命令显示:
# sysdig -l
在本教程剩余部分我将演示几个sysdig的使用案例。
### Sysdig实例 服务器性能排障 ###
假定你的服务器发生了性能问题没有回应或者重大的回应延迟。你可以使用瓶颈凿子来显示当前10个最慢系统调用的列表。
使用以下命令在存活服务器上进行实时检查。“-c”标识后跟凿子名称告诉sysdig运行指定的凿子。
# sysdig -c bottlenecks
或者你可以离线对服务器实施性能分析。在此种情况下你可以保存完整的sysdig记录到文件然后像下面这样针对记录运行瓶颈凿子。
首先保存sysdige记录使用Ctrl+c来停止收集
# sysdig -w trace.scap
收集完记录后,你可以运行以下命令来检查捕获间隔中最慢的系统调用:
# sysdig -r trace.scap -c bottlenecks
![](https://farm6.staticflickr.com/5611/15334678670_ebbe93265e_z.jpg)
你需要关注栏#2#3和#4这些分别表示执行时间、进程名和PID。
### Sysdig实例 监控交互用户活动 ###
假定你作为系统管理员想要监控系统中交互的用户活动用户在命令行输入了什么命令以及用户去了什么目录这时spy_user凿子就派上用场了。
让我们首先通过一些额外选项来收集一个sysdig记录。
# sysdig -s 4096 -z -w /mnt/sysdig/$(hostname).scap.gz
- “-s 4096”告诉sysdig每个事件捕获4096字节。
- “-z” (与“-w”一起使用为记录文件启用压缩。
- “-w <trace-file>”保存sysdig记录到指定的文件。
在上面的例子中我们自定义了基于每个主机的压缩的记录文件的名称。记住你可以在任何时候按下Ctrl+c来打断sysdig的执行。
在我们收集到了合理数量的数据后,我们可以通过运行以下命令来查看每个用户的交互活动:
# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users
![](https://farm4.staticflickr.com/3932/15518254291_5c9671ca41_z.jpg)
上面输出的第一栏表示与指定用户的活动相关进程的PID。
如果你想要定位一个指定的用户以及只监控该用户的活动又怎么样呢你可以通过用户名对spy_users凿子的结果进行过滤
# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users "user.name=xmodulo"
![](https://farm4.staticflickr.com/3944/15498248556_66d15422b1_z.jpg)
### Sysdig实例 监控文件I/O ###
我们可以使用“-p”标识来自定义sysdig记录的输出格式并指定双引号括起来的想要的字段如用户名、进程名以及文件或套接口名称。在本例中我们将创建一个记录文件该文件将只包含在家目录中的写入事件我们今后可以使用“sysdig -r writetrace.scap.gz”来检测该文件
# sysdig -p "%user.name %proc.name %fd.name" "evt.type=write and fd.name contains /home/" -z -w writetrace.scap.gz
![](https://farm6.staticflickr.com/5610/15498248586_de5f5fc93d_z.jpg)
### Sysdig实例 监控网络I/O ###
作为服务器排障的一部分你可能想要监听网络通信此工作通常由tcpdump做。对于sysdig可以很容易进行通信嗅探其风格更为对用户友好。
例如你可以检查由特定IP地址特定进程如apache2提供的数据ASCII编码格式
# sysdig -s 4096 -A -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2
如果你想要监控原生数据传输(二进制格式),请把“-A”替换为“-X”
# sysdig -s 4096 -X -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2
要获取更多信息、实例以及案例分析,你可以查阅[项目网站][1]。相信我会有着无限可能但请不要仅仅局限于我所写的这些。安装sysdig请从今天开始深入挖掘吧
--------------------------------------------------------------------------------
via: http://xmodulo.com/monitor-troubleshoot-linux-server-sysdig.html
作者:[Gabriel Cánepa][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/gabriel
[1]:http://www.sysdig.org/

View File

@@ -0,0 +1,84 @@
Linux 有问必答:在 Linux 上如何通过命令行来更改日期和时间
================================================================================
> **问题**: 在 Linux 上, 我怎样通过命令行来改变日期和时间?
在 Linux 系统中保持日期和时间的同步是每一个 Linux 用户和系统管理员的重要责任. 很多程序都依靠精确的时间信息得以正常工作. 另外, 不精确的日期和时间会使得日志文件中的时间戳变得毫无意义, 减弱了它们在系统检查和检修中的作用. 对于生产系统来说, 精确的日期和时间甚至更为重要. 例如, 在零售公司中, 所有产品必须时刻准确地计数(并储存在数据库服务器中)以便于财政部门计算每天及每周,每月,每年的支出和收入.
我们必须注意, 在 Linux 机器上有两种时钟: 由内核维持的软件时钟(又称系统时钟)和在机器关机后记录时间的(电池供电的)硬件时钟. 启动的时候, 内核会把系统时钟与硬件时钟同步. 之后, 两个时钟各自独立运行.
### 方法一: Date 命令 ###
在 Linux 中, 你可以通过 date 命令来更改系统的日期和时间:
# date --set='NEW_DATE'
其中 NEW_DATE 是诸如 "Sun, 28 Sep 2014 16:21:42" 或者 "2014-09-29 16:21:42" 的可读格式的日期字符串.
日期格式也可以手动指定以获得更精确的结果:
# date +FORMAT --set='NEW_DATE'
例如:
# date +%Y%m%d %H%m --set='20140928 1518'
![](https://farm3.staticflickr.com/2944/15220890657_858528a186_o.png)
你也可以用相对的方式地增加或减少一定的天数,周数,月数和秒数,分钟数,小时数。 你也可以把日期和时间的参数放到一个命令中。
# date --set='+5 minutes'
# date --set='-2 weeks'
# date --set='+3 months'
# date --set='-3 months +2 weeks -5 minutes'
![](https://farm3.staticflickr.com/2943/15220655239_deba528dce_o.png)
最后, 把硬件时钟设置为当前系统时钟:
# hwclock --systohc
运行 **hwclock --systohc** 的目的是将硬件时钟同软件时钟同步, 这可以更正硬件时钟的系统漂移(即时钟按照一定的速度走快或走慢).
另一方面, 如果硬件时钟是正确的, 但系统时钟有误, 可以用下面的命令更正:
# hwclock --hctosys
在两种情况下, hwclock 命令都是将两个时钟同步. 否则, 重启后时间会是错误的, 因为当电源关闭时硬件时钟会记忆时间. 然而, 这对于虚拟机器并不适用, 因为虚拟机器并不能访问硬件时钟.
如果你的 Linux 系统上的默认时区是错误的, 你可以按照[这个指导][1]进行更正.
### 方法二: NTP ###
另一种使系统日期和时间保持精确的方法是使用 NTP (网络时间协议). 在 Linux 上, ntpdate 命令通过 NTP 将系统时钟和[公共 NTP 服务器][2]同步.
你可以使用如下命令来安装 **ntpdate**:
在 Debian 及基于 Debian 的发行版上:
# aptitude install ntpdate
在基于 Ret Hat 的发行版上:
# yum install ntpdate
使用 NTP 同步系统时钟:
# ntpdate -u <NTP 服务器名或IP>
# hwclock --systohc
![](https://farm4.staticflickr.com/3930/15404223021_8da3b44a62_z.jpg)
除了一次性使用 ntpdate 来同步时钟, 你也可以使用 NTP 守护进程(ntpd), 它会始终在后台运行, 不断地通过 NTP 来调整系统时钟. 关于 NTP 的设置, 请参考[这个指导][3].
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/change-date-time-command-line-linux.html
译者:[wangjiezhe](https://github.com/wangjiezhe)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://ask.xmodulo.com/change-timezone-linux.html
[2]:http://www.pool.ntp.org/
[3]:http://xmodulo.com/how-to-synchronize-time-with-ntp.html

View File

@@ -0,0 +1,90 @@
Linux 有问必答如何改变libvirt VM镜像的默认位置
================================================================================
> **提问** 我使用libvirt和virt-manager在我的Linux系统上创建虚拟机。我注意到虚拟机镜像位于/var/lib/libvirt/images目录。有没有办法改变虚拟机镜像的默认路径
**libvirt**和它的GUI前端**virt-manager**可以使用不同的虚拟机管理程序创建和管理VM例如LVM和Xen。默认上所有的虚拟机镜像通过**libvirt**创建到/var/lib/libvirt/images目录。然而这有时并不是我们希望的。比如/var/lib/libvirt/images此处的磁盘分区大小有限。或者你想要存储所有的虚拟机镜像到一个特定的用于管理的仓库中。
实际上你可以非常容易地改变libvirt镜像的默认目录或者称之为“存储池”。
有两种方法可以改变默认存储池。
### 方法一: Virt-Manager GUI ###
如果你正在使用virt-manager GUI程序改变默认存储池非常容易。
进入**virt-manager**的菜单GUI “编辑” -> "连接细节"。
![](https://farm4.staticflickr.com/3935/15433062592_0d89a8d132_o.png)
你可以看到如下所是的默认存储池。在窗口的左下角,点击叉形按钮,将会停止默认的存储池。存储池一旦停止后,点击右边的垃圾桶,将会删除存储池。**注意这个动作不会删除池中的镜像。**
现在点击左边的加号增加一个新的存储池。
![](https://farm6.staticflickr.com/5600/15246703330_26884c8258_b.jpg)
输入新的存储池的名字比如default并且选择存储池的类型。本例中因为我们只是改变存储池目录所以选择“文件系统目录”。
![](https://farm4.staticflickr.com/3928/15433416355_1a2f9f85ab_b.jpg)
输入新的存储池路径(比如,/storage
![](https://farm6.staticflickr.com/5599/15433062732_195fa6701b_b.jpg)
这时,新的存储池应该启动了,并且自动在你创建一个新的虚拟机的时候使用。
![](https://farm4.staticflickr.com/3934/15430217721_b14c3a93fa_b.jpg)
### 方法二: Virsh 命令行 ###
另外一个改变默认存储池目录的方法是使用来自**libvirt**包的**virsh** 命令行工具。
首先运行下面的命令来导出默认存储池的XML定义。
$ virsh pool-dumpxml default > pool.xml
用文本编辑器打开XML文件并且改变<path>节点中的/var/lib/libvirt/images改成新的地址。
<pool type='dir'>
<name>default</name>
<uuid>0ec0e393-28a2-e975-feec-0c7356f38d08</uuid>
<capacity unit='bytes'>975762788352</capacity>
<allocation unit='bytes'>530052247552</allocation>
<available unit='bytes'>445710540800</available>
<source>
</source>
<target>
<path>/var/lib/libvirt/images</path>
<permissions>
<mode>0711</mode>
<owner>-1</owner>
<group>-1</group>
</permissions>
</target>
</pool>
移除现在的默认池。
$ virsh pool-destroy default
----------
Pool default destroyed
现在创建一个基于更新后的XML文件的新存储池。
$ virsh pool-create pool.xml
----------
Pool default created from pool.xml
这时,默认池已经改变到新的地址了,并且可以使用了。
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/change-default-location-libvirt-vm-images.html
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,68 @@
Linux有问必答-如何创建和挂载XFS文件系统
================================================================================
> **问题**: 我听说一个牛X的文件系统XFS打算在我的磁盘上试试XFS。那格式化和挂载XFS文件系统的Linux命令是什么呢
[XFS][1]是高性能文件系统SGI为他们的IRIX平台而设计。自从2001年移植到Linux内核上由于它的[高性能][2]XFS成为了许多企业级系统的首选特别是有大量数据需要结构化伸缩性和稳定性的。例如RHEL/CentOS 7 和Oracle Linux将XFS作为默认文件系统SUSE/openSUSE已经为XFS做了长期支持。
XFS有许多独特的性能提升功能使他从众多文件系统中脱颖而出像可伸缩/并行 IO元数据日志热碎片整理IO 暂停/恢复,延迟分配等。
如果你想要创建和挂载XFS文件系统到你的Linux平台下面是相关的操作命令。
### 安装 XFS系统工具集 ###
首先你需要安装XFS系统工具集这样允许你执行许多XFS相关的管理任务。例如格式化[扩展][3],修复,设置配额,改变参数等)
Debian, Ubuntu , Linux Mint系统
$ sudo apt-get install xfsprogs
Fedora, CentOS, RHEL系统:
$ sudo yum install xfsprogs
其他版本Linux:
$ sudo pacman -S xfsprogs
### 创建 XFS格式分区 ###
先准备一个分区来创建XFS。假设你的分区在/dev/sdb,如下:
$ sudo fdisk /dev/sdb
![](https://farm6.staticflickr.com/5604/15474273555_1c0c4be527_b.jpg)
假设此创建的分区叫/dev/sdb1。
接下来格式化分区为XFS使用mkfs.xfs命令。如果已有其他文件系统创建在此分区必须加上"-f"参数来覆盖它。
$ sudo mkfs.xfs -f /dev/sdb1
![](https://farm4.staticflickr.com/3930/15287704767_fe5ded8ea1_b.jpg)
至此你已经准备好格式化后分区来挂载。假设/storage是XFS本地挂载点。使用下述命令挂载
$ sudo mount -t xfs /dev/sdb1 /storage
验证XFS挂载是否成功
$ df -Th /storage
![](https://farm4.staticflickr.com/3938/15474273445_aeacdca6eb_o.png)
如果你想要启动时自动挂载XFS分区在/storage上加入下列行到/etc/fstab
/dev/sdb1 /storage xfs defaults 0 0
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/create-mount-xfs-file-system-linux.html
译者:[Vic___/VicYu](http://www.vicyul.net/)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://xfs.org/
[2]:http://lwn.net/Articles/476263/
[3]:http://ask.xmodulo.com/expand-xfs-file-system.html

View File

@@ -0,0 +1,60 @@
2014年欧洲LinuxCon大会Linus Torvalds的最佳语录
================================================================================
![](http://www.linux.com/images/stories/41373/Linus-Dirk-2014.jpg)
在今年的10月15日星期三Linux的创造者Linus Torvalds出席了欧洲LinuxCon和CloudOpen大会并回答了英特尔的Linux及开源技术专家Dirk Hohndel提出的问题。
Linus Torvalds在那天的[欧洲LinuxCon和CloudOpen大会][1]上说从他首次创造出Linux操作系统到现在的23年里他没后悔过任何他做过的技术决策。
“技术问题,甚至是完全错误的技术问题,你也可以之后再去修复它。” Torvalds说。
![](http://www.linux.com/images/stories/41373/Linus-Torvalds-2014.jpg)
他还说,尽管这些个人问题和异议在社区里“日益繁荣”,但是这些人或许能创造出最好的技术。
他本人就是这样的,然而,他对他在内核邮件列表中用粗话对待开发者和用户的事情感到遗憾。但是彼此间的关系不可能那么轻易就缓和。
社区里的那些人能创造出最好的技术同样也是Torvalds的终极目标和期望。
在英特尔的Linux及开源技术专家Dirk Hohndel的问答环节里Torvalds 谈了社区里的一些现状和内核开发进展谈了怎么成为一名内核开发者以及Linux的未来。以下是对话中的一些闪光点。
**1.** “在过去的几年里我们开发的速度真的没有慢下来。每个版本我们都能从超过1000个人中得到大约100000个补丁最终效果自然是非常好的。”
**2.** Dirk Hohndel: “你说你希望不只一个子系统的维护人员考虑对x86模型产生兴趣你是怎么把自己的建议应用到实际中的
Torvalds: “某一天我可能不得不这么做。目前我还没有收到关于'不主动'的任何投诉。主动是一个内核开发者最重要的东西,不论水平档次...迄今为止一定程度上要感谢Git我才能一直保持着前进的动力。”
**3.** “很多人都想要得到市场份额数包括很多用户因为那是体现自我价值的一种方式。就我来说对Linux最重要的事情之一就是拥有一个一直在不停测试新内核的大社区这是支持我们处理大量硬件问题的唯一办法。”
**4.** Hohndel: “如果你能改变在过去23年里尼做过的一个决策你会怎么做
Torvalds: “从技术角度来看,没有哪个决定重要到这个程度...有个问题是慢慢地疏远了用户和开发者,而我却恰恰很擅长这个。我说了粗话,但是这不是我想要改变的某一个决定,这些粗话应该有所限制。”
**5.** “大多数人即使他们不一定彼此喜欢但会尊重他们写出的代码。对于Linux来说这是很重要的一部分。真正重要的是大家都在尽自己所能产出最佳的代码。”
**6.** “在互联网上没人能察觉到渺小的你。”
**7.** “我们说粗话这个传统导致很多人倒胃口,其中有一个原因是当有强烈的意愿和推动力的技术人员要做一些技术上的进步时,你就需要用一些强烈的语言来表达你的意愿。”
**8.** Hohndel: “你跟那个想成为下一个Linus的学生是怎么说的
Torvalds: “寻找能让你充满热情的事情并去完成它。”
**9.** “成为一个维护人员很容易,你只需要无限的时间并且回复人们的邮件就行。”
**10.** Hohndel: “给Linux的未来做个大胆的预测吧。”
Torvalds: “我能做的一个最大的猜测就是我可能会一周更新一次RC1版本。”
--------------------------------------------------------------------------------
via: http://www.linux.com/news/featured-blogs/200-libby-clark/791788-linus-torvalds-best-quotes-from-linuxcon-europe-2014
作者:[Libby Clark][a]
译者:[ZTinoZ](https://github.com/ZTinoZ)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.linux.com/community/forums/person/41373/catid/200-libby-clark
[1]:http://events.linuxfoundation.org/events/linuxcon-europe

View File

@@ -0,0 +1,88 @@
pidstat - 监控并统计Linux进程的数据
================================================================================
**pidstat**命令用来监控被Linux内核管理的独立任务(进程)。它输出每个受内核管理的任务的相关信息。pidstat命令也可以用来监控特定进程的子进程。间隔参数用于指定每次报告间的时间间隔。它的值为0(或者没有参数)说明进程的统计数据的时间是从系统启动开始计算的。
### 如何安装pidstat ###
pidstat 是sysstat软件套件的一部分sysstat包含很多监控linux系统状态的工具它能够从大多数linux发行版的软件源中获得。
在Debian/Ubuntu系统中可以使用下面的命令来安装
# apt-get install sysstat
CentOS/Fedora/RHEL版本的linux中则使用下面的命令
# yum install sysstat
### 使用pidstat ###
使用pidstat不加任何参数等价于加上-p参数但是只有正在活动的任务会被显示出来。
# pidstat
![pidstat](http://blog.linoxide.com/wp-content/uploads/2014/09/pidstat.jpg)
在结果中你能看到如下内容:
- **PID** - 被监控的任务的进程号
- **%usr** - 当在用户层执行(应用程序)时这个任务的cpu使用率和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
- **%system** - 这个任务在系统层使用时的cpu使用率。
- **%guest** - 任务花费在虚拟机上的cpu使用率运行在虚拟处理器
- **%CPU** - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话cpu使用率会除以你的cpu数量。
- **CPU** - 正在运行这个任务的处理器编号。
- **Command** - 这个任务的命令名称。
### I/O 统计数据 ###
通过使用-d参数来得到I/O的统计数据。比如
# pidstat -d -p 8472
![pidstat io](http://blog.linoxide.com/wp-content/uploads/2014/09/pidstat-io.jpg)
IO 输出会显示一些内的条目:
- **kB_rd/s** - 任务从硬盘上的读取速度kb
- **kB_wr/s** - 任务向硬盘中的写入速度kb
- **kB_ccwr/s** - 任务写入磁盘被取消的速率kb
### 页面失败和内存使用 ###
使用-r标记你能够得到内存使用情况的数据。
![pidstat pf mem](http://blog.linoxide.com/wp-content/uploads/2014/09/pidstat-pfmem.jpg)
重要的条目:
- **minflt/s** - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。
- **majflt/s** - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。
- **VSZ** - 虚拟容量整个进程的虚拟内存使用kb
- **RSS** - 长期内存使用任务的不可交换物理内存的使用量kb
### 举例 ###
**1.** 你可以通过使用下面的命令来监测内存使用
# pidstat -r 2 5
这会给你5份关于page faults的统计数据结果间隔2秒。这将会更容易的定位出现问题的进程。
**2.** 显示所有mysql服务器的子进程
# pidstat -T CHILD -C mysql
**3.** 将所有的统计数据结合到一个便于阅读的单一报告中:
# pidstat -urd -h
--------------------------------------------------------------------------------
via: http://linoxide.com/linux-command/linux-pidstat-monitor-statistics-procesess/
作者:[Adrian Dinu][a]
译者:[John](https://github.com/johnhoow)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://linoxide.com/author/adriand/

View File

@@ -0,0 +1,52 @@
Linux 有问必答:在 Linux 如何更改文本文件的字符编码
================================================================================
> **问题**:在我的 Linux 系统中有一个编码为 iso-8859-1 的字幕文件,其中部分字符无法正常显示,我想把文本改为 utf8 编码。在 Linux 中, 有没有一个好的工具来转换文本文件的字符编码?
正如我们所知道的那样,电脑只能够处理低级的二进制值,并不能直接处理字符。当一个文本文件被存储时,文件中的每一个字符都被映射成二进制值,实际存储在硬盘中的正是这些“二进制值”。之后当程序打开文本文件时,所有二进制值都被读入并映射回原始的可读字符。只有当所有需要访问这个文件的程序都能够“理解”它的编码,即二进制值到字符的映射时,这个“保存和打开”的过程才能很好地完成,这也确保了可理解数据的往返过程。
如果不同的程序使用不同的编码来处理同一个文件,源文件中的特殊字符就无法正常显示。这里的特殊字符指的是非英文字母的字符,例如带重音的字符(比如 ñ,á,ü)。
然后问题就来了: 1我们如何确定一个确定的文本文件使用的是什么字符编码 2我们如何把文件转换成已选择的字符编码
### 步骤一 ###
为了确定文件的字符编码,我们使用一个名为 “file” 的命令行工具。因为 file 命令是一个标准的 UNIX 程序,所以我们可以在所有现代的 Linux 发行版中找到它。
运行下面的命令:
$ file --mime-encoding filename
![](https://farm6.staticflickr.com/5602/15595534261_1a7b4d16a2.jpg)
### 步骤二 ###
下一步是查看你的 Linux 系统所支持的文件编码种类。为此,我们使用名为 iconv 的工具及 “-l” 选项L 的小写)来列出所有当前支持的编码。
$ iconv -l
iconv 工具是 GNU libc 库组成部分,因此它在所有 Linux 发行版中都是开箱即用的。
### 步骤三 ###
在我们在我们的 Linux 系统所支持的编码里面选定了目标编码之后,运行下面的命令来完成编码转换:
$ iconv -f old_encoding -t new_encoding filename
例如,把 iso-8859-1 编码转换为 utf-8 编码:
$ iconv -f iso-8859-1 -t utf-8 input.txt
![](https://farm4.staticflickr.com/3943/14978042143_a516e0b10b_o.png)
了解了我们演示的如何使用这些工具之后,你可以像下面这样修复一个受损的字幕文件:
![](https://farm6.staticflickr.com/5612/15412197967_0dfe5078f9_z.jpg)
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/change-character-encoding-text-file-linux.html
译者:[wangjiezhe](https://github.com/wangjiezhe)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,28 @@
Linux 有问必答如何修复“fatal error: openssl/aes.h: No such file or directory”
================================================================================
> **Question**我尝试在Linux编译一个程序但是编译失败并报了一个错“fatal error: openssl/aes.h: No such file or directory”。我该怎样安装要求的头文件并在我的Linux上解决这个问题
fatal error: openssl/aes.h: No such file or directory
如果你在编译时遇到这个错误这可能是下面的原因你尝试编译的程序使用OpenSSL但是需要和OpenSSL链接的文件库和头文件在你Linux平台上缺少。LCTT 译注:其它类似的错误也可以照此处理)
要解决这个问题,你需要安装**OpenSSL 开发包**这在所有的现代Linux发行版的标准软件仓库中都有。
要在Debian、Ubuntu或者其他衍生版上安装OpenSSL
$ sudo apt-get install libssl-dev
要在Fedora、CentOS或者RHEL上安装OpenSSL开发包
$ sudo yum install openssl-devel
安装完后,尝试重新编译程序。
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/fix-fatal-error-openssl.html
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,54 @@
Linux下的6个扫雷游戏的翻版
================================================================================
Windows 下的扫雷游戏还没玩够么?那么来 Linux 下继续扫雷吧——这是一个雷的时代~~
### GNOME Mines ###
这是GNOME扫雷复制品允许你从3个不同的预定义表大小8×8, 16×16, 30×16中选择其一或者自定义行列的数量。它能以全屏模式运行带有高分值、耗时和提示。游戏可以暂停和继续。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/gnome-mines1.jpg)
### ace-minesweeper ###
这是一个大的软件包中的游戏此包中也包含有其它一些游戏如ace-freecelace-solitaire或ace-spider。它有一个以小企鹅为特色的图形化界面但好像不能调整表的大小。该包在Ubuntu中名为ace-of-penguins。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/ace-minesweeper.jpg)
### XBomb ###
XBomb是针对X Windows系统扫雷游戏它有三种不同的表尺寸和卡牌风格包含有不同的外形六角形、矩形传统或三角形。不幸的是在Ubuntu 14.04中的版本会出现程序分段冲突,所以你可能需要安装另外一个版本。
[首页][1]。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/xbomb.png)
([图像来源][1])
### KMines ###
KMines是一个KDE游戏和GNOME Mines类似有三个内建表尺寸简易、中等、困单也可以自定义支持主题和高分。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/kmines.jpg)
### freesweep ###
Freesweep是一个针对终端的扫雷复制品它可以配置表行列、炸弹比例、颜色也有一个高分表。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/freesweep.jpg)
### xdemineur ###
另外一个针对X的图形化扫雷Xdemineur和Ace-Minesweeper十分相像带有一个预定义的表尺寸。
![](http://www.tuxarena.com/wp-content/uploads/2014/10/xdemineur.jpg)
--------------------------------------------------------------------------------
via: http://www.tuxarena.com/2014/10/6-minesweeper-clones-for-linux/
作者Craciun Dan
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://www.gedanken.org.uk/software/xbomb/

View File

@@ -0,0 +1,51 @@
如何从 Ubuntu 14.04 升级到 Ubuntu 14.10
================================================================================
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/04/Ubuntu_Unicorn_Utopia.jpeg)
Ubuntu 14.10已于前段时间发布。想知道**如何从 Ubuntu 14.04 升级到 Ubuntu 14.10**么?别担心,这很容易做到。事实上,只要网络连接速度好,升级只是点击几下鼠标的事情而已。
### 你需要从 Ubuntu 14.04 切换到 Ubuntu 14.10 么? ###
在你升级到Ubuntu 14.10之前,请确定你真的想为升级 14.10 而抛弃 Ubuntu 14.04。一个很重要的原因是你不能从Ubuntu 14.10 回归到14.04。 你需要完全重新安装。
Ubuntu 14.04是长期支持LTS版本。这意味着有更多的稳定性和更长的支持周期。如果升级到14.10你将被迫在9个月后从Ubuntu 14.10 升级到15.04而14.04将会持续3年以上。
此外目前Ubuntu 14.10没有很多的新功能使吸引用户切换到14.10。当然了你肯定会得到最前沿的操作系统。所以在这之前是否升级到Ubuntu 14.10是你自己的决定。
### 从Ubuntu 14.04 升级到 Ubuntu 14.10 ###
要从Ubuntu 14.04 升级到 Ubuntu 14.10,遵循下面的步骤:
#### 步骤 1: ####
打开 **软件和更新**.
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Software_Update_Ubuntu.jpeg)
进入**更新**选项卡。这里要确保**Ubuntu有新版本时通知我** 设置成**对于任何新版本**。默认Ubuntu只会在另一个LTS发布时通知你。你必须要把它改成在任何中间版本都升级。
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Upgrade_Ubuntu.png)
#### 步骤 2: ####
现在运行 **软件升级**
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/04/Ubuntu_Updater.jpg)
升级完成后,它应该会提示一个可用的新版本。点击升级,接着按照提示的步骤来。
![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Upgrade_to_Ubuntu_1410.jpeg)
我希望本篇教程可以帮助你**从 Ubuntu 14.04 升级到 Ubuntu 14.10**。虽然本教程是为Ubuntu写的但是你可以用同样的步骤升级到 Xubuntu 14.10、Kubuntu 14.10 或者Lubuntu。敬请期待下一篇Ubuntu 14.10相关文章。
--------------------------------------------------------------------------------
via: http://itsfoss.com/upgrade-ubuntu-14-04-to-14-10/
作者:[Abhishek][a]
译者:[geekpi](https://github.com/geekpi)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://itsfoss.com/author/Abhishek/

View File

@@ -0,0 +1,32 @@
小白技巧如何从Ubuntu 14.04 LTS 升级到Ubuntu 14.10
================================================================================
![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/10/software-and-updates.jpg)
**想知道怎样从Ubuntu 14.04 LTS 升级到Ubuntu 14.10么? 这就是我们要讲的**
Canonical不会强迫14.04的用户升级到14.10这个中间版本
但这并不意味着 **你**不能将你的坚如磐石的Trusty Tahr升级到有点让人印象深刻的Utopic Unicorn。
要得到非LTS版本的Ubuntu发布通知你需要在软件和更新工具中选择。这个很直接。
- 打开 **软件和更新**
- 选择 **更新** 选项
- 进入‘**有新版本Ubuntu时通知我**’的选项
- 在下拉菜单选项中将‘**对于长期支持版本**’改成‘**对于任何版本**
切换后你会想快点更新。
现在准备就绪Canonical此刻会弹出“升级”提示给用户相比较普通的ISO镜像而言经常延迟可以通过软件更新工具更新到14.10了。
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/10/upgrade-ubuntu-14-04-to-14-10
作者:[Joey-Elijah Sneddon][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author

View File

@@ -0,0 +1,168 @@
SUSE Linux Zypper 命令示例
================================================================================
Zypper是SuSE Linux中用于安装升级卸载管理仓库、进行各种包查询的命令行接口。本篇将会讨论zypper的几个不同命令的例子。
语法:
# zypper [--global-opts] <command> [--command-opts] [command-arguments]
中括号中的部分可以不需要。执行zypper最简单的方法是输入 zypper 及 <command>。
### 例子1列出可用的全局选项和命令 ###
打开终端输入zypper并按回车它会显示所有可用的全局选项和命令。
linux-xa3t:~ # zypper
### 例子2获得zypper的某个命令的帮助 ###
语法: zypper help [command]
linux-xa3t:~ # zypper help remove
remove (rm) [options] <capability> ...
Remove packages with specified capabilities.
A capability is NAME[.ARCH][OP<VERSION>], where OP is one of <, <=, =, >=, >.
Command options:
-r, --repo <alias|#|URI> Load only the specified repository.
-t, --type <type> Type of package (package, patch, pattern, product).
Default: package.
-n, --name Select packages by plain name, not by capability.
-C, --capability Select packages by capability.
--debug-solver Create solver test case for debugging.
-R, --no-force-resolution Do not force the solver to find solution,let it ask.
--force-resolution Force the solver to find a solution (even an aggressive one).
-u, --clean-deps Automatically remove unneeded dependencies.
-U, --no-clean-deps No automatic removal of unneeded dependencies.
-D, --dry-run Test the removal, do not actually remove.
### 例子3打开zypper shell/会话 ###
linux-xa3t:~ # zypper sh
zypper>
linux-xa3t:~ # zypper shell
zypper>
### 例子4列出已定义的仓库 ###
linux-xa3t:~ # zypper repos
![](http://www.linuxtechi.com/wp-content/uploads/2014/10/zypper-repos.png)
linux-xa3t:~ # zypper lr
#### 4.1) 以表格的形式列出仓库的URI ####
![](http://www.linuxtechi.com/wp-content/uploads/2014/10/zypper-repos-uri.png)
#### 4.2) 以优先级列出仓库 ####
linux-xa3t:~ # zypper lr -p
![](http://www.linuxtechi.com/wp-content/uploads/2014/10/zypper-repos-priority.png)
### 例子5刷新仓库 ###
linux-xa3t:~ # zypper ref
Repository 'openSUSE-13.1-Non-Oss' is up to date.
Repository 'openSUSE-13.1-Oss' is up to date.
Repository 'openSUSE-13.1-Update' is up to date.
Repository 'openSUSE-13.1-Update-Non-Oss' is up to date.
All repositories have been refreshed.
### 例子6修改zypper仓库 ###
zypper仓库可以通过别名、数字或者URI或者通过all、 remote、 local、 medium-type这些选项修改。
linux-xa3t:~ # zypper mr -d 6 #禁用6号仓库
linux-xa3t:~ # zypper mr -rk -p 70 upd #启用自动书信并为upd仓库设置rpm文件缓存且设置它的优先级为70
linux-xa3t:~ # zypper mr -Ka #为所有的仓库禁用rpm文件缓存
linux-xa3t:~ # zypper mr -kt #为远程仓库设置rpm文件缓存
### 例子7添加仓库 ###
语法: zypper addrepo 或者 zypper ar <仓库的URL或者别名>
linux-xa3t:~ # zypper ar http://download.opensuse.org/update/13.1/ update
Adding repository 'update' .............................................[done]
Repository 'update' successfully added
Enabled: Yes
Autorefresh: No
GPG check: Yes
URI: http://download.opensuse.org/update/13.1/
### 例子8移除仓库 ###
语法: zypper removerepo <仓库名> <别名>
或者
zypper rr <仓库名> <别名>
linux-xa3t:~ # zypper rr openSUSE-13.1-1.10 openSUSE-13.1-1.10
Removing repository 'openSUSE-13.1-1.10' ............................[done]
Repository 'openSUSE-13.1-1.10' has been removed.
### 例子9安装软件包 ###
语法: zypper install <包名> 或者 zypper in <包名>
linux-xa3t:~ # zypper install vlc
### 例子10卸载软件包 ###
语法: zypper remove <包名> 或者 zypper rm <包名>
linux-xa3t:~ # zypper remove sqlite
### 例子11导出和导入仓库 ###
导出仓库的语法 : zypper repos export 或者 zypper lr -e
linux-xa3t:~ # zypper lr --export repo-backup/back.repo
Repositories have been successfully exported to repo-backup/back.repo.
导入仓库的语法 :
linux-xa3t:~ # zypper ar repo-backup/back.repo
### 例子12更新一个软件包 ###
语法: zypper update <包名> 或者 zypper up <包名>
linux-xa3t:~ # zypper update bash
### 例子13安装源码包 ###
语法: zypper source-install <源码包> 或 zypper si <源码包>
linux-xa3t:~ # zypper source-install zypper
### 例子14只安装依赖包 ###
例子13中的命令会安装和构建特定包的依赖。如果你想要安装源码包就用-D选项
# zypper source-install -D package_name
只安装依赖就使用-d
# zypper source-install -d package_name
--------------------------------------------------------------------------------
via: http://www.linuxtechi.com/suse-linux-zypper-command-examples/
作者:[Pradeep Kumar][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.linuxtechi.com/author/pradeep/

View File

@@ -0,0 +1,172 @@
Linux 下易用的光盘镜像管理工具
================================================================================
磁盘镜像包括了整个磁盘卷的文件或者是全部的存储设备的数据比如说硬盘光盘DVD,CD,蓝光光碟磁带机USB闪存软盘。一个完整的磁盘镜像应该包含与原来的存储设备上一样完整、准确包括数据和结构信息。
磁盘镜像文件格式可以是采用开放的标准像ISO格式的光盘镜像或者是专有的软件应用程序的特定格式。"ISO"这个名字来源于用CD存储的ISO 9660文件系统。但是当用户转向Linux的时候经常遇到这样的问题需要把专有的的镜像格式转换为开放的格式。
磁盘镜像有很多不同的用处像烧录光盘系统备份数据恢复硬盘克隆电子取证和提供操作系统即LiveCD/DVDs
有很多不同的方法可以把ISO镜像挂载到Linux系统下。强大的mount 命令给我们提供了一个简单的解决方案。但是如果你需要很多工具来操作磁盘镜像,你可以试一试下面的这些强大的开源工具。
很多工具还没有看到最新的版本,所以如果你正在寻找一个很好用的开源工具,你也可以加入,一起来为开源做出一点贡献。
### Furius ISO Mount
![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-FuriusISOMountTool.png)
Furius ISO Mount是一个简单易用的开源应用程序可以用来挂载镜像文件它支持直接打开ISO,IMG,BIN,MDF和NRG格式的镜像而不用把他们烧录到磁盘。
特性:
- 支持自动挂载ISO, IMG, BIN, MDF and NRG镜像文件
- 支持通过 loop 方式挂载 UDF 镜像
- 自动在根目录创建挂载点
- 自动解挂镜像文件
- 自动删除挂载目录,并返回到主目录之前的状态
- 自动记录最近10次挂载历史
- 支持挂载多个镜像文件
- 支持烧录ISO文件及IMG文件到光盘
- 支持MD5校验和SHA1校验
- 自动检索之前解挂的镜像
- 自动创建手动挂载和解挂的日志文件
- 语言支持(目前支持保加利亚语,中文(简体),捷克语,荷兰语,法语,德语,匈牙利语,意大利语,希腊语,日语,波兰语,葡萄牙语,俄语,斯洛文尼亚语,西班牙语,瑞典语和土耳其语)
---
- 项目网址: [launchpad.net/furiusisomount/][1]
- 开发者: Dean Harris (Marcus Furius)
- 许可: GNU GPL v3
- 版本号: 0.11.3.1
###fuseiso
![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-fuseiso.png)
fuseiso 是用来挂载ISO文件系统的一个开源的安全模块。
使用FUSE我们完全可以在用户空间里运行一个完整的文件系统。
特性:
- 支持读ISO,BIN和NRG镜像包括ISO 9660文件系统
- 支持普通的ISO 9660级别1和级别2
- 支持一些常用的扩展想JolietRockRidge和zisofs
- 支持非标准的镜像包括CloneCD's IMGs 、Alcohol 120%'s MDFs 因为他们的格式看起来恰好像BIN镜像一样
---
- 项目网址: [sourceforge.net/projects/fuseiso][2]
- 开发者: Dmitry Morozhnikov
- 许可: GNU GPL v2
- 版本号: 20070708
###iat
![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-iat.png)
iatIso 9660分析工具是一个通用的开源工具能够检测很多不同镜像格式文件的结构包括BIN,MDF,PDI,CDI,NRG和B5I,并转化成ISO 9660格式.
特性:
- 支持读取输入NRG,MDF,PDI,CDI,BIN,CUE 和B5I镜像
- 支持用 cd 刻录机直接烧录光盘镜像
- 输出信息包括进度条块大小ECC扇形分区大小头分区大小镜像偏移地址等等
---
- 项目网址: [sourceforge.net/projects/iat.berlios][3]
- 开发者: Salvatore Santagati
- 许可: GNU GPL v2
- 版本号: 0.1.3
###AcetoneISO
![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-AcetoneISO.png)
AcetoneISO 是一个功能丰富的开源图形化应用程序用来挂载和管理CD/DVD镜像。
当你打开这个程序你就会看到一个图形化的文件管理器用来挂载镜像文件包括专有的镜像格式也包括像ISO, BIN, NRG, MDF, IMG 等等,并且允许您执行一系列的操作。
AcetoneISO是用QT 4写的也就是说对于基于QT的桌面环境能很好的兼容像KDELXQT或是Razor-qt。
这个软件适用于所有正在寻找Linux版本的Daemon Tools的人。
特性:
- 支持挂载大多数windows 镜像,界面简洁易用
- 可以将其所有支持镜像格式转换到ISO,或者是从中提取内容
- 加密,压缩,解压任何类型的镜像
- 转换DVD成xvid avi支持将各种常规视频格式转换成xvid avi
- 从视频里提取声音
- 从不同格式中提取镜像中的文件包括bin mdf nrg img daa dmg cdi b5i bwi pdi
- 用Kaffeine / VLC / SMplayer播放DVD镜像可以从Amazon 自动下载封面。
- 从文件夹或者是CD/DVD生成ISO镜像
- 可以做镜像的MD5校验或者是生成镜像的MD5校验码
- 计算镜像的ShaSums128,256和384位
- 支持加密,解密一个镜像文件
- 按兆数分拆和合并镜像
- 以高压缩比将镜像压缩成7z 格式
- 翻录PSX CD成BIN格式以便在ePSXe/pSX模拟器里运行
- 为BIN和IMG格式恢复丢失的 CUE 文件
- 把MAC OS的DMG镜像转换成可挂载的镜像
- 从指定的文件夹中挂载镜像
- 创建数据库来管理一个大的镜像集合
- 从CD/DVD 或者是ISO镜像中提取启动文件
- 备份CD成BIN镜像
- 简单快速的把DVD翻录成Xvid AVI
- 简单快速的把常见的视频avi, mpeg, mov, wmv, asf转换成Xvid AVI
- 简单快速的把FLV 换换成AVI 格式
- 从YouTube和一些视频网站下载视频
- 提取一个有密码的RAR存档
- 支持转换任何的视频到PSP上
- 国际化的语言支持支持(英语,意大利语,波兰语,西班牙语,罗马尼亚语,匈牙利语,德语,捷克语和俄语)
---
- 项目网址: [sourceforge.net/projects/acetoneiso][4]
- 开发者: Marco Di Antonio
- 许可: GNU GPL v3
- 版本号: 2.3
###ISO Master
![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ISOMaster.png)
ISO Master是一个开源、易用的、图形化CD 镜像编辑器适用于Linux 和BSD 。可以从ISO 里提取文件给ISO 里面添加文件创建一个可引导的ISO这些都是在一个可视化的用户界面完成的。可以打开ISONRG 和一些MDF文件但是只能保存成ISO 格式。
ISO Master 是基于bkisofs 创建的这是一个简单、稳定的阅读修改和编写ISO 镜像的软件库支持Joliet, RockRidge 和EL Torito扩展
特性:
- 支持读ISO 格式文件ISO9660, Joliet, RockRidge 和 El Torito大多数的NRG 格式文件和一些单轨道的MDF文件但是只能保存成ISO 格式
- 创建和修改一个CD/DVD 格式文件
- 支持CD 格式文件的添加或删除文件和目录
- 支持创建可引导的CD/DVD
- 国际化的支持
---
- 项目网址: [www.littlesvr.ca/isomaster/][5]
- 开发者: Andrew Smith
- 许可: GNU GPL v2
- 版本号: 1.3.11
--------------------------------------------------------------------------------
via: http://www.linuxlinks.com/article/20141025082352476/DiskImageTools.html
作者Frazer Kline
译者:[barney-ro](https://github.com/barney-ro)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:https://launchpad.net/furiusisomount/
[2]:http://sourceforge.net/projects/fuseiso/
[3]:http://sourceforge.net/projects/iat.berlios/
[4]:http://sourceforge.net/projects/acetoneiso/
[5]:http://www.littlesvr.ca/isomaster/

View File

@@ -0,0 +1,126 @@
如何在命令行下使用 BitTorrent 下载 ISO 镜像
================================================================================
如果你喜欢尝试最新版甚至是 beta 版的 Linux 发行版来满足你的好奇心,并始终保持是最新版,那么你就会时常遇到下载较大的 ISO 镜像的烦恼。提供 ISO 的人通常会使用 ISO 镜像的 .torrent 文件来减少服务器的带宽消耗。P2P 下载对于使用者来说好处也是很明显的(就下载速度而言),特别是当流行的 Linux 发行版有新版本发布并上传供下载,每个人同时在下载做种的时候。
Ubuntu 14.10 (utopic Unicorn) 这刚刚发布不久,因此现在在 BitTorrent 网络上应该有很多种子可以下载该版本。虽然有很多基于图形界面的 BitTorrent 客户端,不过我将展示**如何通过基于简单的命令行界面的 BitTorrent 客户端下载 ISO 镜像**,如果是在远程无图形界面的服务器上的话这会很方便。在[另外一篇教程][4]里面,我还会演示**如何验证已下载的 ISO 镜像的完整性**。
我今天要使用的基于命令行的 BitTorrent 客户端是 transmission-cli。正如你可能知道的那样[Transmission][1] 是最流行的基于图形界面的 BitTorrent 客户端之一。transmission-cli 是它的简装的命令行版本。
### 在 Linux 上安装 Transmission-cli ###
要安装 **transmission-cli**,你不必安装完整的基于图形界面的 Transmission这是听起来不错。
在 Debian、Ubuntu 或者是基于它们的发行版上:
$ sudo apt-get install transmission-cli
在 Fedora 上:
$ sudo yum install transmission-cli
在 CentOS 或者 RHEL 上(在安装了 [EPEL 仓库][2]之后):
$ sudo yum install transmission-cli
### 通过 transmission-cli 快速地下载 ISO 镜像 ###
**transmission-cli**的使用非常简单。如果你懒于学习它的命令行选项,所有你要做的事情就是下载 .torrent 文件并运行命令。这会自动寻找可用的种子并从那里下载 ISO 文件。
$ wget http://releases.ubuntu.com/14.10/ubuntu-14.10-desktop-amd64.iso.torrent
$ transmission-cli ubuntu-14.10-desktop-amd64.iso.torrent
![](https://farm4.staticflickr.com/3933/14999528344_9af3ea5d2e_z.jpg)
一旦 ISO 镜像下载完成,它默认存储在 ~/Downloads 文件夹中。下载 1GB 的 Ubuntu ISO 镜像只用了我 5 分钟的时间。
![](https://farm6.staticflickr.com/5605/15433651319_745df6633a_z.jpg)
程序下载 ISO 镜像完成后,你会在终端中看到“状态由未完成变为完成”的提示。要注意的是 transmission-cli 会继续运行并做种以便于其他下载者下载。可以按 Ctrl+C 来退出。
### 为重复使用定制下载选项 ###
如果你经常使用 **transmission-cli** ,那么值得花时间来熟悉一下它的命令行选项。
- "-w /path/to/download-directory" 选项指定下载文件保存的文件夹。
- "-f /path/to/finish-script" 选项设置当前下载完成后要运行的脚本。注意 transmission-cli 默认在文件下载完成后继续运行。如果你想在成功下载完成后自动关闭 transmission-cli你可以使用这个选项。下面这个简单的脚本可以完成这个功能。
#!/bin/sh
sleep 10
killall transmission-cli
- 如果你想为 transmission-cli 分配上传/下载带宽限制,你可以使用 “-d <download-speed-in-KB/s>” 和 “-u <upload-speed-in-KB/s>” 选项。如果你不想限制带宽使用,仅仅指定 “D” 或 “-U” 选项即可。
这有一个更高级的 transmission-cli 使用范例。在这个例子中,命令行客户端在成功下载后自动退出。下载速度不限而上传速度限制为 50KB/s。
$ transmission-cli -w ~/iso -D -u 50 -f ~/finish.sh ubuntu-14.10-desktop-amd64.iso.torrent
![](https://farm6.staticflickr.com/5599/15434697690_e9a19f0d97_z.jpg)
### 验证已下载的 ISO 镜像的完整性 ###
当你下载了一个 ISO 镜像,特别是从 BitTorrent 网络上很多未知的种子处下载的,通常建议要验证下载镜像的完整性。
对于 Ubuntu 发行版的情况, Canonical 提供了几个供验证使用的验校文件(如 MD5SUM SHA1SUMS 和 SHA256SUMS。在这个例子中我们使用 SHA256SUMS。
![](https://farm4.staticflickr.com/3943/15434697700_3b3e6077ee_z.jpg)
首先,下载下面两个文件。
$ wget http://releases.ubuntu.com/14.10/SHA256SUMS
$ wget http://releases.ubuntu.com/14.10/SHA256SUMS.gpg
第一个文件是 ISO 镜像的 SHA256 验校文件,而第二个文件(*.gpg是验校文件的签名。第二个文件的目的是验证验校文件本身的有效性。
我们通过运行下面的命令来验证 SHA256SUMS 文件的有效性。
$ gpg --verify SHA256SUMS.gpg SHA256SUMS
----------
gpg: Signature made Thu 23 Oct 2014 09:36:00 AM EDT using DSA key ID FBB75451
gpg: Can't check signature: public key not found
如果你得到上面的错误信息,是因为你还没有导入生成这个签名的公共密钥。因此我们现在导入需要的公共密钥。
这样做之前,你需要知道公共密钥的 “key ID”而这在上面的 gpg 命令的输出中有显示。在这个例子中,密钥 ID 时 “FBB75451”。运行下面的命令来从官方 Ubuntu 密钥服务器导入公共密钥。
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys FBB75451
![](https://farm4.staticflickr.com/3953/15620291035_bcdb3cffb9_z.jpg)
既然公共密钥已经被导入,我们可以继续并重新运行之前的命令来验证签名。
gpg --verify SHA256SUMS.gpg SHA256SUMS
![](https://farm6.staticflickr.com/5600/15433651369_d22905e65b_z.jpg)
这次你没有看到 “public key not found” 的错误信息。如果 SHA256SUMS 文件时有效的,你会看到 “Good signature from <official source>” 的信息。注意到你还看到一个 “This key is not certified with a trusted signature” 的警告信息。基本上这个警告信息是告诉你对导入的公共密钥没有明确信任。要避免这个警告,你可以选择指定[完全信任][3]导入的公共密钥,但你应该只有在通过其他方式审查了这个密钥之后才这样做。否则的话,你可以暂时忽略这个警告。
在验证了 SHA256SUMS 文件的完整性后,最后一个步骤是比较已下载 ISO 文件的 SHA256 验校和和 SHA256SUMS 文件中对应的验校值。你可以使用 sha256sum 命令行工具来完成这个步骤。
为方便起见,下面一行命令比较 SHA256 验校和并报告结果。
$ sha256sum -c <(grep ubuntu-14.10-desktop-amd64.iso SHA256SUMS)
----------
ubuntu-14.10-desktop-amd64.iso: OK
如果你看到了上面的输出信息,这表明两个验校值相匹配。这样已下载 ISO 镜像的完整性就被成功的验证了。
--------------------------------------------------------------------------------
via: http://xmodulo.com/download-iso-image-bittorrent-command-line.html
作者:[Dan Nanni][a]
译者:[wangjiezhe](https://github.com/wangjiezhe)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:https://www.transmissionbt.com/
[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html
[3]:http://xmodulo.com/verify-authenticity-integrity-downloaded-file.html
[4]:http://xmodulo.com/download-iso-image-bittorrent-command-line.html

View File

@@ -0,0 +1,52 @@
如何在Ubuntu 14.04 LTS上安装MariaDB
================================================================================
MariaDB是一个开源数据库且100%与MySQL兼容目标是替代MySQL数据库。
### MariaDB的背景 : ###
2008年MySQL被后来被Oracle在2010年收购的**Sun Microsystems**收购了。 最初被Sun公司的收购由于符合项目的需要而受到MySQL社区的欢呼但是这种情绪并没有持续太久接下来被Oracle的收购不幸期望远远低于预期。许多MySql的开发者离开了Sun和Oracle公司开始新的项目。在他们中间就有MySQL的创建者以及项目长期技术带头人之一的**Michael Monty Widenius**。Monty和他的团队创建了MySQL的一个fork版本并且命名它为**MariaDB**。
本篇我们会讨论如何在Ubuntu上安装MariaDB。默认上MariaDB的包并没有在Ubuntu仓库中。要安装MariaDB我们首先要设置MariaDB仓库。
#### 设置 MariaDB 仓库 ####
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main'
#### 安装 MariaDB : ####
$ sudo apt-get update
$ sudo apt-get install mariadb-server
在安装中你会被要求设置MariaDB的root密码。
![](http://www.linuxtechi.com/wp-content/uploads/2014/10/mariadb-root-1024x442-1.jpg)
#### 从命令行连接到MariaDB : ####
linuxtechi@mail:~$ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 40
Server version: 10.0.14-MariaDB-1~trusty-log mariadb.org binary distribution
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
#### Maria DB 服务 ####
$ sudo /etc/init.d/mysql stop
$ sudo /etc/init.d/mysql start
--------------------------------------------------------------------------------
via: http://www.linuxtechi.com/install-mariadb-in-ubuntu/
作者:[Pradeep Kumar][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.linuxtechi.com/author/pradeep/

View File

@@ -0,0 +1,141 @@
教你在 Ubuntu 上使用 LXC 容器
================================================================================
使用“容器”来保证主机环境的安全性,这个概念早在十年前就已经存在(例如 FreeBSD 的 jail 虚拟化技术),但是直到最近,随着部署云架构需求越来越多,像 LXC 和 [Docker][1] 这种 Linux 下的容器才成为被关注的焦点。当然,由于主流厂商(云服务商如亚马逊主推 AWS微软主推 Azure发行版如红帽、Ubuntu等组成的强大靠山[Docker][2] 已经被放在媒体的聚光灯下面其实Docker 里面所谓的“容器”技术是由 LXC 提供的。
你只是一个普通的 Linux 用户,那 Docker/LXC 能为你带来什么好处呢?容器可以将你的应用在不同的 Linux 发行版之间迁移。想像一下这个场景:你正在用的发行版是 Debian你喜欢它的稳定性同时你又想玩一款最新的 Ubuntu 游戏,你不需要在电脑上装双系统然后重启进入 Ubuntu也不需要在 Debian 上跑一个耗资源的 Ubuntu 虚拟机,你只需要简单地生成一个 Ubuntu 容器就够了。
抛开 Docker 的好处不谈,让我们聊一下 LXC 容器的好处:我可以使用 libvirt 提供的接口来管理 LXC这些接口和 Docker 没有任何关系。如果你有使用基于 libvirt 库的管理工具(例如 virt-manager 和 virsh你就可以使用它们来管理 LXC 容器。
在这篇教程中,我只介绍标准 LXC 容器管理工具的命令行操作,来教你**如何在 Ubuntu 下创建和管理 LXC 容器**。
### Ubuntu 下安装 LXC ###
使用下面的命令安装 LXC 在用户态的工具:
$ sudo apt-get install lxc
然后检查当前内核是否支持 LXC。如果所有结果都是“enable”说明内核支持
$ lxc-checkconfig
![](https://farm4.staticflickr.com/3955/15655792445_d462957ee9_z.jpg)
安装完 LXC 工具后,就能看到 LXC 自动创建了一块桥接网卡lxcbr0可以在 /etc/lxc/default.conf 中设置)。
![](https://farm6.staticflickr.com/5598/15035046834_a53c092230_z.jpg)
当你创建了 LXC 容器后,它的网口会自动链接到这个桥接网卡上,然后这个容器就能和外部世界通信了。
### 创建 LXC 容器 ###
为了在指定环境下(比如 Debian Wheezy 64位创建 LXC 容器,你需要一个相应的 LXC 模板。幸运的是 LXC 提供的工具集成了一整套现成的 LXC 模板,你可以在 /usr/share/lxc/templates 目录下找到它们。
$ ls /usr/share/lxc/templates
![](https://farm4.staticflickr.com/3954/15035046824_d15d1cbf6e_z.jpg)
一个 LXC 模板实质上就是一个脚本,用于创建指定环境下的容器。当你创建 LXC 容器时,你需要用到它们。
比如你要新建 Ubuntu 容器,使用下面的命令即可:
$ sudo lxc-create -n <container-name> -t ubuntu
![](https://farm8.staticflickr.com/7559/15035638763_07d63e23ef_z.jpg)
默认情况下,这个命令会创建一个最小的 Ubuntu 环境版本号与你的宿主机一致我这边是“活泼的蝾螈”版本号是13.1064位。
当然你也可以创建任何你喜欢的版本,只要在命令里面加一个版本参数即可。举个例子,创建 Ubuntu 14.10 的容器:
$ sudo lxc-create -n <container-name> -t ubuntu -- --release utopic
这个命令就会下载安装指定环境下的软件包,创建新容器。整个过程需要几分钟时间,与容器的类型有关,所以,你可能需要耐心等待。
![](https://farm4.staticflickr.com/3933/15469152369_6a48943cf3_z.jpg)
下载安装完所有软件包后LXC 容器镜像就创建完成了,你可以看到默认的登录界面。容器被放到 /var/lib/lxc/<容器名> 这个目录下,容器的根文件系统放在 /var/lib/lxc/<容器名>/rootfs 目录下。
创建过程中下载的软件包保存在 /var/cache/lxc 目录下面,当你想另外建一个一样的容器时,可以省去很多下载时间。
用下面的命令看看主机上所有的 LXC 容器:
$ sudo lxc-ls --fancy
----------
NAME STATE IPV4 IPV6 AUTOSTART
------------------------------------
test-lxc STOPPED - - NO
使用下面的命令启动容器。参数“-d”将容器作为后台进程打开。如果没有指定这个参数你可以在控制台界面上直接把容器的运行程序关闭LCTT译注Ctrl+C组合键
$ sudo lxc-start -n <container-name> -d
打开容器后,看看状态:
$ sudo lxc-ls --fancy
----------
NAME STATE IPV4 IPV6 AUTOSTART
-----------------------------------------
lxc RUNNING 10.0.3.55 - NO
容器状态是“运行中”,容器 IP 是10.0.3.55。
你也可以看到容器的网络接口(比如我这里是 vethJ06SFL自动与 LXC 内部网桥lxcbr0连上了
$ brctl show lxcbr0
![](https://farm4.staticflickr.com/3932/15656618342_53c4bc19ca_z.jpg)
### 管理 LXC 容器 ###
我们已经学习了怎么创建和启动 LXC 容器,现在来看看怎么玩一个正在运行着的容器。
第一步:打开容器控制台:
$ sudo lxc-console -n <container-name>
![](https://farm8.staticflickr.com/7538/15470225050_d093cb1028_z.jpg)
使用“Crtl+a q”组合键退出控制台。
停止、删除容器:
$ sudo lxc-stop -n <container-name>
$ sudo lxc-destroy -n <container-name>
复制容器,用下面的命令:
$ sudo lxc-stop -n <container-name>
$ sudo lxc-clone -o <container-name> -n <new-container-name>
### 常见问题 ###
这个小节主要介绍你们在使用 LXC 过程中碰到过的问题。
1. 创建 LXC 容器时遇到下面的错误:
$ sudo lxc-create -n test-lxc -t ubuntu
----------
lxc-create: symbol lookup error: /usr/lib/x86_64-linux-gnu/liblxc.so.1: undefined symbol: cgmanager_get_pid_cgroup_abs_sync
错误的原因是你运行了最新的 LXC但是它所依赖的 libcgmanager 版本较老,两者不兼容。升级下 libcmanager 即可解决问题:
$ sudo apt-get install libcgmanager0
--------------------------------------------------------------------------------
via: http://xmodulo.com/lxc-containers-ubuntu.html
作者:[Dan Nanni][a]
译者:[bazz2](https://github.com/bazz2)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:http://xmodulo.com/docker-containers-centos-fedora.html
[2]:http://xmodulo.com/manage-linux-containers-docker-ubuntu.html

View File

@@ -0,0 +1,248 @@
CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
================================================================================
LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用。正如其名称所暗示的, LEMP 包是由 Linux、nginx、MariaDB/MySQL 和 PHP 组成的。在传统的 LAMP 包中使用的 Apache HTTP 协议服务器性能低下而且难于大规模集群,相比来说 nginx 的高性能及轻量级等特性,正是其的替代方案。 MariaDB 是一款社区支持驱动的 MySQL 数据库的分支其功能更多性能更佳。PHP服务端编程语言具体是由 PHP FastCGI 的增强版 PHP-FPM 组件来处理,生成网页动态内容。
这篇文章里,我们示范**如何在 CentOS 操作平台上安装 LEMP 包**。我们安装的目标是 CentOS 6 和 CentOS 7 两个操作平台,如有必要会指出它们的不同。
### 第一步: Nginx ###
让我们在 CentOS 上安装 nginx 作为第一步,然后对它作些基本的配置,比如使其能引导时启动和[对防火墙做个性化设置][1]。
#### 安装 Nginx ####
让我们从它的官方的 RPM 源来安装一个预构建的稳定版本的 nginx 包。
在 CentOS 7 系统上:
$ sudo rpm --import http://nginx.org/keys/nginx_signing.key
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum install nginx
在 CentOS 6 系统上:
$ sudo rpm --import http://nginx.org/keys/nginx_signing.key
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install nginx
注意在安装 nginx RPM 包之前,如果您没有导入 nginx 的官方 GPG 密钥的话,会出一如下所示的警告:
warning: /var/tmp/rpm-tmp.KttVHD: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
#### 启动 Nginx ####
安装完成后nginx 是不会自动启动的。现在让我们来启动它吧,还要做些配置让其可以随着操作系统启动而启动。我们也需要在防火墙里打开 TCP/80 端口,以使得可以远程访问 nginx 的 web 服务。所有这些操作、设置都只需要输入如下命令就可实现。
在 CentOS 7 系统上:
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
在 CentOS 6 系统上:
$ sudo service nginx start
$ sudo chkconfig nginx on
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save
#### 测试 Nginx ####
nginx 的默认文档要目录是 /usr/share/nginx/html。默认的 index.html 文件一定已经在这目录下了。让我们检测下是否可以访问到这个测试 web 页,输入 http://nginx的ip地址/ 访问。
![](https://farm4.staticflickr.com/3940/15461279287_8573948074_b.jpg)
如果您看到的是如上所示的页面的话,说明 nginx 已经正常启动。继续往下。
### 第二步: MariaDB/MySQL ###
下一步就是安装 LEMP 包的数据库组件。CentOS/RHEL 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS/RHEL 7 已使用了 MariaDB 替代了默认的 MySQL。作为 MySQL 的简单替代品MariaDB 保证了与 MySQL 的 API 和命令行用法方面最大的兼容性。下面是关于怎么在 CentOS 上安装和配置 MaraDB/MySQL 的操作示例。
在 CentOS 7 系统上:
如下所示操作来安装 MariaDB 服务/客户端包以及启动 MariaDB 服务。
$ sudo yum install mariadb-server
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
在 CentOS 6 系统上:
如下示,安装 MySQL 服务/客户端包并且启动 MySQL 服务。
$ sudo yum install mysql-server
$ sudo service mysqld start
$ sudo chkconfig mysqld on
在成功启动 MariaDB/MySQL 服务后,执行在 MariaDB/MySQL 服务包中的脚本。这一次的运行会为为数据库服务器进行一些安全强化措施,如设置(非空)的 root 密码、删除匿名用户、锁定远程访问。
$ sudo mysql_secure_installation
![](https://farm8.staticflickr.com/7545/15644566071_8c39875512_z.jpg)
这就是数据库的设置。现在进行下一步。
### 第三步: PHP ###
PHP 是 LEMP 包中一个重要的组件,它负责把存储在 MariaDB/MySQL 服务器的数据取出生成动态内容。为了 LEMP 需要,您至少需要安装上 PHP-FPM 和 PHP-MySQL 两个模块。PHP-FPMFastCGI 进程管理器)实现的是 nginx 服务器和生成动态内容的 PHP 应用程序的访问接口。PHP-MySQL 模块使 PHP 程序能访问 MariaDB/MySQL 数据库。
#### 安装 PHP 模块 ####
在 CentOS 7 系统上:
$ sudo yum php php-fpm php-mysql
在 CentOS 6 系统上:
首先,您需要从仓库中安装 REMI 库(参见[本指南][2]),并安装软件包。
$ sudo yum --enablerepo=remi install php php-fpm php-mysql
![](https://farm4.staticflickr.com/3934/15644566121_60cbaab8b7_z.jpg)
在安装 PHP 时,得注意两个地方:
在 CentOS 6 系统中,安装 REMI仓库中最新的 php-mysql 模块时MySQL 的服务端包和客户端包会被当做一部分依赖包而自动的更新。
在 CentOS 6 和 CentOS 7 中,在安装 PHP 包的同时会把 Apache web 服务器(即 httpd当做它的依赖包一起安装。这会跟 nginx web 服务器起冲突。这个问题会在下一节来讨论。
取决于您的使用情况,可以使用 yum 命令来定制您的 PHP 引擎,也许会想安装下面的任意一个扩展 PHP 模块包。
- **php-cli**: PHP 的命令行界面。从命令行里测试 PHP 时非常有用。
- **php-gd**: PHP 的图像处理支持。
- **php-bcmath**: PHP 的数学支持。
- **php-mcrypt**: PHP 的加密算法支持 (例如 DES、Blowfish、CBC、 CFB、ECB ciphers 等)。
- **php-xml**: PHP 的 XML 解析和处理支持。
- **php-dba**: PHP 的数据抽象层支持。
- **php-pecl-apc**: PHP 加速器/缓存支持。
安装时,要查看可用的 PHP 模块的完整列表的话,可以运行:
$ sudo yum search php- (CentOS 7)
$ sudo yum --enablerepo=remi search php- (CentOS 6)
#### 启动 PHP-FPM ####
您需要启动 PHP-FPM ,然后把它放到自动启动服务列表。
在 CentOS 7 系统上:
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
在 CentOS 6 系统上:
$ sudo chkconfig php-fpm on
$ sudo service php-fpm start
### 第四步: 配置 LEMP 组合包 ###
本教程的最后一步是调整 LEMP 组合包的配置。
#### 使 Httpd 不可用 ####
首先,让我们把早先随 PHP 包安装的 httpd 服务给禁用掉。
在 CentOS 7 系统上:
$ sudo systemctl disable httpd
在 CentOS 6 系统上:
$ sudo chkconfig httpd off
#### 配置 Nginx ####
接下来,让我们配置 nginx 虚拟主机,使得 nginx 可以通过 PHP-FPM 来处理 PHP 的任务。用文本编辑器打开 /etc/nginx/conf.d/default.conf ,然后按如下所示修改。
$ sudo vi /etc/nginx/conf.d/default.conf
----------
server {
listen 80;
server_name www.server_domain.com;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
# nginx passes PHP scripts to FastCGI server via a TCP/9000 socket
# this setting much be consistent with /etc/php-fpm.d/www.conf
# try_files prevents nginx from passing bad scripts to FastCGI server
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
nginx 的默认工作线程数(在 /etc/nginx/nginx.conf 文件中指定的)是 1让我们也来调整一下这个数字。通常来说我们创建的工作线程数应该和 CPU 核数相同。要确信您的 CPU 的核数,请运行下面这命令:
$ grep processor /proc/cpuinfo | wc -l
如果您的 CPU 是 4 核的,就如下所示修改 /etc/nginx/nginx.conf 文件。
$ sudo vi /etc/nginx/nginx.conf
----------
worker_processes 4;
#### 配置 PHP ####
接下来,让我们对 PHP 的配置文件 /etc/php.ini 做自定义设置。更具体的就是在 /etc/php.ini 文件中增加以下两行。
cgi.fix_pathinfo=0
date.timezone = "PRC"
为了安全起见,我们希望的是 PHP 解释器只是处理指定文件路径的文件任务而不是预测搜索一些并不存在的文件任务。上面的第一行起的就是这个作用。LCTT 译注原文用的时区是“America/New York”根据国内情况应该用 PRC或 Asia 下的中国城市。)
第二行定义的是 PHP 中日期/时间相关函数使用相关的默认时区。使用[本指南][3],找出您所在的时区,并设置相应 **date.timezone 的值**
#### 测试 PHP ####
最后,让我们来测试下 nginx 是否能处理 PHP 页面。在测试之前,请确保重启 nginx 和 PHP-FPM。
在 CentOS 7 系统上:
$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm
在 CentOS 6 系统上:
$ sudo service nginx restart
$ sudo service php-fpm restart
创建一个叫名叫 test.php 的文件,然后写入如下内容,并放入 /var/www/html/ 目录。
<?php phpinfo(); ?>
打开浏览器,输入 http://nginx的IP地址/test.php 。
![](https://farm6.staticflickr.com/5608/15647258715_9d7bcd8c73_z.jpg)
如果您能看到如上所示的页面,说明设置的 LEMP 完全成功!
--------------------------------------------------------------------------------
via: http://xmodulo.com/install-lemp-stack-centos.html
作者:[Dan Nanni][a]
译者:[runningwater](https://github.com/runningwater)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:http://linux.cn/article-4243-1.html
[2]:http://linux.cn/article-4192-1.html
[3]:http://ask.xmodulo.com/set-default-timezone-php.html

View File

@@ -0,0 +1,40 @@
Linux 有问必答如何修复“hda-duplex not supported in this QEMU binary”
================================================================================
> **提问** 当我尝试在虚拟机中安装一个新的Linux时虚拟机不能启动且报了下面这个错误"unsupported configuration: hda-duplex not supported in this QEMU binary."“不支持的配置hda-duplex在此QEMU文件中不支持。” 我该如何修复?
这个错误可能来自一个当默认声卡型号不能被识别时的一个qemu bug。
![](https://farm4.staticflickr.com/3935/15000012754_b8b147fb16_o.png)
无法完成安装不支持的配置hda-duplex在此QEMU文件中不支持
要解决这个问题,按照下面的做。
### 方案一: virt-manager ###
在**virt-manager**中打开虚拟机的虚拟硬件详细菜单进入声卡选项改变默认的设备型号为ac97。
![](https://farm4.staticflickr.com/3956/15435183020_d97856170c_z.jpg)
点击“应用”按钮并保存设置。看一下虚拟机现在是否可以启动了。
### 方案二: Virsh ###
如果你使用的是**virsh** 而不是**virt-manager** 你可以编辑VM相应的配置文件。在<device>节点中查找**sound**节点,并按照下面的默认声卡型号改成**ac97**。
<devices>
. . .
<sound model='ac97'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
. . .
</device>
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/hda-duplex-not-supported-in-this-qemu-binary.html
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,52 @@
Linux 有问必答如何在CentOS或者RHEL上安装REMI仓库
================================================================================
> **Question**我该如何在CentOS或者RHEL中配置REMI仓库并安装其中的包
[REMI 仓库][1]提供了CentOS和RHEL的核心包的更新版本尤其是最新的PHP/MySQL系列LCTT 译注:当你需要一个更新包,而 CentOS/RHEL 没有及时提供更新时, REMI 仓库可以帮助你)。
安装REMI仓库要记住的一件事是不要在启用了REMI仓库时运行yum update。因为REMI仓库的包名与RHEL/CentOS中的相同运行yum update可能会触发意外的更新。一个好办法是禁用REMI仓库在你需要安装RMEI仓库中独有的包时再启用。
### 预备工作 ###
安装REMI仓库之前你首先需要启用EPEL仓库因为REMI中的一些包依赖于EPEL。按照[这份指南][2]在CentOS或者RHEL中设置EPEL仓库。
### 安装REMI仓库 ###
现在按照下面的步骤安装REMI仓库。
在CentOS 7上:
$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
在CentOS 6上:
$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
默认地REMI是禁用的。要检查REMI是否已经成功安装使用这个命令。你会看到几个REMI仓库比如remi、remi-php55和remi-php56。
$ yum repolist disabled | grep remi
![](https://farm4.staticflickr.com/3956/15443851690_a1abe9eb40_z.jpg)
### 从REMI仓库中安装一个包 ###
如上所述最好保持禁用REMI仓库**只有在需要的时候再启用**。
要搜索或安装REMI仓库中的包使用这些命令:
$ sudo yum --enablerepo=remi search <keyword>
$ sudo yum --enablerepo=remi install <package-name>
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/install-remi-repository-centos-rhel.html
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://rpms.famillecollet.com/
[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html

View File

@@ -0,0 +1,68 @@
Linux有问必答在CentOS或RHEL防火墙上开启端口
================================================================================
> **问题**我在CentOS系统上运行一台网页或文件服务器打算远程访问服务器。因此我需要更改防火墙规则以允许访问系统上的某个TCP端口。那么有什么好方法在CentOS或RHEL系统的防火墙上开启TCP/UDP端口
如果希望在服务器上提供服务诸如CentOS或RHEL的企业级Linux发行版包含内置的强大防火墙它们默认的防火墙规则十分严格。因此如果你安装了任何定制的服务比如web服务器、NFS和Samba那么它们的流量很有可能被防火墙规则阻塞。所以需要在防火墙上开启必要的端口以允许流量通过。
在CentOS/RHEL 6或更早的版本上iptables服务允许用户与netfilter内核模块交互来在用户空间中配置防火墙规则。然而从CentOS/RHEL 7开始一个叫做firewalld新用户空间接口被引入以取代iptables服务。
使用这个命令察看当前的防火墙规则:
$ sudo iptables -L
![](https://farm6.staticflickr.com/5601/15604533686_a8c0ae7b89_z.jpg)
现在让我们看看如何在CentOS/RHEL上修改防火墙来开启一个端口。
### 在CentOS/RHEL 7上开启端口 ###
启动CentOS/RHEL 7后防火墙规则设置由firewalld服务进程默认管理。一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则。
使用这些命令来永久打开一个新端口如TCP/80
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
如果不使用“--permanent”标记把么防火墙规则在重启后会失效。
### 在CentOS/RHEL 6上开启端口 ###
在CentOS/RHEL 6甚至更早版本系统上iptables服务负责维护防火墙规则。
使用iptables的第一条命令可以通过防火墙开启一个新TCP/UDP端口。为了永久保存修改过的规则还需要第二条命令。
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save
另一种方法是通过一个名为system-config-firewall-tui的命令行用户接口TUI的防火墙客户端。
$ sudo system-config-firewall-tui
选择位于中间的“Customize”按钮按下ENTER键即可。
![](https://farm6.staticflickr.com/5602/15628237745_4409cff52f_z.jpg)
如果想要为任何已知的服务如web服务器修改防火墙只需勾选该服务然后关闭工具。如果想要开启任意一个TCP/UDP端口选择“Forward”按钮然后进入下一个界面。
![](https://farm4.staticflickr.com/3941/15604533696_12857827ea_z.jpg)
选择“Add”按钮添加一条新规则。
![](https://farm4.staticflickr.com/3941/15008065383_4b92cbd843_z.jpg)
指定一个端口如80或者端口范围如3000-3030和协议如tcp或udp
![](https://farm4.staticflickr.com/3946/15007474154_bef75d8c72_z.jpg)
最后,保存修改过的配置,关闭工具。这样,防火墙就永久保存了。
![](https://farm4.staticflickr.com/3942/15628237765_0299a638ab_z.jpg)
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/open-port-firewall-centos-rhel.html
译者:[KayGuoWhu](https://github.com/KayGuoWhu)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,36 @@
Ubuntu也许能在中国给Windows以致命打击
================================================================================
> Ubuntu Kylin也许能在中国用来替代Windows
**Windows操作系统将退出中国的前门而它的位置将由一个Linux发行版替代用于官方和政府部门。问题是目前还没有一个真正的可替代系统尽管还是有一款操作系统也许已经准备接下这个任务它就是Ubuntu Kylin。**
至少可以这么说,中国政府和微软目前的关系很紧张。[就像新闻里说的][1]一个用Linux类似系统在全国逐步替换Windows的计划已经在准备了。还不清楚具体会采用哪个系统因为情况很复杂而且这是一个非常大的国家。
通常这种问题没有一个普适的解决方案而且中国的行动确实看起来有点呆板。不管怎样这为Ubuntu Keylin打开了一扇巨大的机会之窗它是一个基于Ubuntu由中国开发者和Canonical共同开发的发行版。它已经稳定一段时间了而且已经发布了几个连续版本。
### Ubuntu Kylin在敲Windows的大门 ###
有趣的是在这个关于中国意图的新闻冒出来的同一天里发布了一篇对国防科技大学NUDT副教授Dr. Jonas Zhang的采访关于[最新的14.10分支开发计划][2]。
“在这次的14.10版本中有许多很好的功能。比如新手也可以轻松地通过Ubuntu Kylin软件中心找到Windows软件的替代用户可以使用Ubuntu Kylin的SSOUbuntu Kylin的单一登录系统我们叫它UKID来登录到Ubuntu Kylin的软件和社区Sogou输入法一款世界知名的中文输入法上个月已经在苹果的应用市场上线了减少了40%的CPU和内存占用。”
“来自CSIP中国政府的一个部门超过50个 Canonical 和 NUDT国防科技大学的项目经理、工程师和社区管理员在为 Ubuntu Kylin 工作。大部分全职工程师来自NUDT。许多来自UbuntuDebian和其他社区的开发者也参与到Ubuntu Kylin的开发中了。”Dr. Jonas Zhang[说][2]。
中国政府也许自己也正想办法搭建另一个Linux发行版不是第一次尝试了但是目前看来已经有一个很好的用来替代Windows的候选者了。这对于Canonical也是很好的商机至少从被承认这个角度看。
如果Ubuntu通过它和Kylin的联系想在像中国这样的大国里取代Windows对这家公司将会是个巨大的促进。让我们拭目以待看看开发者们让Ubuntu Kylin变成一个有竞争力的操作系统所花费的努力是不是白费力气。
--------------------------------------------------------------------------------
via: http://news.softpedia.com/news/Ubuntu-Could-Give-a-Fatal-Blow-to-Windows-in-China-463500.shtml
作者:[Silviu Stahie][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
[1]:http://news.softpedia.com/news/China-Starts-Windows-Eradication-15-of-Govt-PCs-to-Switch-to-Linux-Every-Year-463393.shtml
[2]:http://news.softpedia.com/news/Ubuntu-Kylin-14-10-Utopic-Unicorn-Consolidates-Its-Position-in-China-463068.shtml
[3]:https://insights.ubuntu.com/2014/10/29/interview-nudt-talks-ubuntu-kylin-and-its-14-10-release/

View File

@@ -0,0 +1,72 @@
Cinnamon 2.4 携新功能来袭
================================================================================
**上个周末Linux Mint 为我们带来了新的气息,发布了 Cinnamon 桌面的一个新版本。**
[ Linux Mint 发布了其新 LTS 版本的第一个更新 17.1 ][1],它的易用 shell 的最新版本将是该发行版的重中之重。
![New Wallpaper Slideshow Feature](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/wallpaper-sildeshow-applet.jpg)
*新的墙纸幻灯片功能 *
### Cinnamon 2.4 新特性 ###
Cinnamon 2.4 带来了大量受欢迎的功能,包括改进了波兰语支持、降低内存占用,新的“隐私”和“提醒”设置和桌面墙纸幻灯片功能。
其[官方发布公告][2]里面主要提到了如下变化:
- Cinnamon 桌面启动时带有缩放动画
- 通过代码审核修复了30个内存泄露问题
- 使用Super+e 可以打开“home”文件夹
- 桌面字体现在可以定制了
- 去除了“退出对话框”的超时设置
- 重新设计了“主题与背景”设置
- 支持桌面幻灯片功能(增加了一个新的面板小应用来控制它)
- 增加了“提醒与隐私”设置面板
![Some say Nemo is the best file manager for Linux](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/nemo-file-manager-24-750x368.jpg)
*有些人说 Nemo 是 Linux 上最好的文件管理器*
Nemo 文件管理器也做了如下改进:
- 重新设计了工具条
- nemo-emblems扩展支持为文件夹增加标志emblems
- 边栏在鼠标移动上去时会有高亮效果
- “智能动态书签区”放到边栏
- 文件夹的颜色可以通过 nemo-folder-color-switcher 快速设置(还没有发布)
### 在 Ubuntu 中升级或安装 Cinnamon 2.4 ###
如果**你更在意稳定的话**就不要升级到 Cinnamon 2.4。新的 Cinnamon 在 Linux Mint 发布前一个月才释出,主要是为了测试、解决 bug 和搜集反馈。
不过要是你不在意的话,你可以使用如下的每夜构建 PPA 在 Ubuntu 14.04 LTS 和 Ubuntu 14.10 中安装Cinnamon 2.4
sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly
然后:
sudo apt-get update && sudo apt-get install cinnamon
如果你已经安装了(旧版本的) Cinnamon我建议你运行下列命令来替代上面的安装命令。这会自动通过包管理器解决冲突的包依赖关系
sudo apt-get update && sudo apt-get dist-upgrade
安装后如果不喜欢了,那也很容易,你可以使用如下命令将 Cinnamon 2.4 和它的一大堆配置统统移走:
sudo apt-get purge cinnamon
**如果你体验过了,请让我们知道你的意见,反馈到下面,最好带上一两张截屏!**
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/11/install-cinnamon-2-4-ubuntu-14-04-lts
作者:[Joey-Elijah Sneddon][a]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:http://blog.linuxmint.com/?p=2688
[2]:http://segfault.linuxmint.com/2014/11/cinnamon-2-4/

View File

@@ -0,0 +1,351 @@
在 Ubuntu 14.10/14.04/13.10 上安装 LEMP 服务NginxMySQL 或 MariaDBPHP 和 phpMyAdmin
================================================================================
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/lemp.jpg)
**LEMP**是一个操作系统和几个开源软件包的合称。缩写LEMP来自 **L** inuxNginx发音是 **e** ngine-xHTTP服务器 **M** ySQL数据库**P** HP/ **P** erl/ **P** ython的首字母。
在这篇教程里,让我们看一下如何在 Ubuntu 14.10 上安装 NginxMySQL 或 MariaDBPHP 和 phpMyAdmin。
### 安装Nginx ###
**Nginx** (发音是engine-x)是一个免费的、开源的、高性能HTTP服务器和反向代理也可以用作IMAP/POP3代理服务器它是由Igor Sysoev开发。
要安装Nginx在你的终端里输入下面的命令
**注意**如果你的系统里已经安装了apache2先卸载掉以避免冲突。要卸载apache运行下面的命令
sudo apt-get purge apache2*
sudo apt-get autoremove -y
现在用下面的命令安装nginx
sudo apt-get install nginx
用下面的命令启用Nginx服务
sudo service nginx start
### 测试 nginx ###
打开你的浏览器访问http://IP地址/或者http://localhost/。将可以看到类似下面的截图。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/10/Welcome-to-nginx-Mozilla-Firefox_005.png)
### 配置 Nginx ###
用任意文本编辑器打开文件**/etc/nginx/nginx.conf**
sudo nano /etc/nginx/nginx.conf
设置 worker_processes例如你系统里CPU数目。查看CPU数目可以使用命令“lscpu”。在我这里是“1”。所以我把这个值设为1。
worker_processes 1;
重启 Nginx 服务:
sudo service nginx restart
默认虚拟主机(服务器模块)定义在文件**/etc/nginx/sites-available/default**里。
用任意文本编辑器打开文件/etc/nginx/sites-available/default。
sudo nano /etc/nginx/sites-available/default
在Server区域里按如下设置服务器FQDN或IP地址。确保你增加了index.php这一行。
[...]
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name server.unixmen.local;
[...]
这里面
- **listen 80;** > 监听ipv4端口
- **listen [::]:80 default_server ipv6only=on;** > 监听ipv6宽口
- **root /usr/share/nginx/html;** > 文件根目录
- **server_name server.unixmen.local;** > 服务器FQDN
现在,向下滚动找到区域#location **~ \.php$**。去掉注释并按如下修改:
location ~ \.php$ {
try_files $uri =404; ---------> Add this line
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
这里面,我增加了额外一行**try_files $uri =404;**用于避免0day漏洞。
保存文件并退出。
### 测试 nginx 配置 ###
使用下面的命令测试nginx配置是否存在语法错误
sudo nginx -t
典型输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后重启nginx服务
sudo service nginx restart
### 安装 MySQL ###
**MySQL**是一个关系型数据库管理系统RDBMS作为服务启动提供给多用户访问多种数据库尽管SQLite可能有更多的嵌入式部署。
sudo apt-get install mysql-server mysql-client
在安装过程中会提示你设置MySQL超级用户密码。输入密码并按确认。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_001.png)
重新输入密码。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_0021.png)
现在MySQL服务器就安装好了。
你可以用下面的命令检查 MySQL 服务器状态:
sudo service mysql status
典型输出:
mysql start/running, process 5671
**注意**如果你希望使用MariaDB而不是MySQL可以参考下面的步骤。
### 安装 MariaDB ###
**MariaDB**是 MySQL 的一个直接替代软件。它是一个稳定、可扩展又可靠的SQL服务器包含许多增强功能。
首先,如果有的话你得先卸载掉 MySQL。要完全卸载 MySQL 包括配置文件,输入如下命令:
sudo apt-get purge mysql*
运行如下命令清除不需要的软件包。
sudo apt-get autoremove
在卸载完MySQL后运行如下命令安装MariaDB。
sudo apt-get install mariadb-server mariadb-client
另外如果你希望体验最新版的MariaDB可以从[MariaDB仓库][1]安装。运行下面的命令添加PPA。在写这篇文章的时候MariaDB PPA还没有更新 Ubuntu 14.10。不过,我们还是可以使用 Ubuntu 14.04 的仓库来替代。
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://sgp1.mirrors.digitalocean.com/mariadb/repo/5.5/ubuntu trusty main'
用如下命令更新一下软件源列表然后安装MariaDB
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client -y
在安装过程中会提示你设置数据库root用户密码。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_0031.png)
重新输入一次密码:
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_004.png)
点击‘是’迁移到 MariaDB。注意一下如果在安装MariaDB之前没有装过 MySQL 的话,不会提示你这个问题。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_005.png)
你可以用如下命令检查 MariaDB 版本:
sudo mysql -v -u root -p
典型输出:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 34
Server version: 5.5.39-MariaDB-2 (Ubuntu)
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Reading history-file /home/sk/.mysql_history
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
用如下命令检查MariaDB是否已经开始运行
sudo service mysql status
典型输出:
* /usr/bin/mysqladmin Ver 9.0 Distrib 5.5.39-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Server version 5.5.39-MariaDB-2
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 min 21 sec
Threads: 1 Questions: 566 Slow queries: 0 Opens: 330 Flush tables: 4 Open tables: 22 Queries per second avg: 4.014
### 安装 PHP ###
**PHP**PHP: Hypertext Preprocessor的递归缩写是一个应用广泛的开源通用脚本语言特别适合于网页开发可以直接嵌入到 HTML 中。
使用如下命令安装PHP
sudo apt-get install php5 php5-fpm php5-mysql
### 配置PHP ###
用任意文本编辑器打开**php.ini**文件:
sudo nano /etc/php5/fpm/php.ini
找到这一行cgi.fix_pathinfo=1去掉注释并把值1改为0。
cgi.fix_pathinfo=0
现在重启php-fpm服务。
sudo service php5-fpm restart
### 测试 PHP ###
在nginx文档根目录下创建一个测试文件“testphp.php”。
sudo nano /usr/share/nginx/html/testphp.php
加入下面几行。
<?php
phpinfo();
?>
保存文件并退出。
访问地址**http://server-ip-address/testphp.php**。将显示出所有关于 php 的信息,比如版本、构建日期以及命令等等。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/10/phpinfo-Mozilla-Firefox_0012.png)
PHP-FPM会默认监听套接字**/var/run/php5-fpm.sock**。如果你希望PHP-FPM使用TCP连接打开文件**/etc/php5/fpm/pool.d/www.conf**
sudo nano /etc/php5/fpm/pool.d/www.conf
找到这一行listen = /var/run/php5-fpm.sock
;listen = /var/run/php5-fpm.sock
把它改成**listen = 127.0.0.1:9000**。
listen = 127.0.0.1:9000
保存退出。重启 php5-fpm 服务。
sudo service php5-fpm restart
现在打开 nginx 配置文件:
sudo nano /etc/nginx/sites-available/default
找到这一行**fastcgi_pass unix:/var/run/php5-fpm.sock;**,参考下面把它改成 fastcgi_pass 127.0.0.1:9000;。
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass 127.0.0.1:9000;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
保存退出。最后重启 nginx 服务。
sudo service nginx restart
### 使用 phpMyAdmin 管理 MySQL 数据库(可选) ###
**phpMyAdmin**是一个免费的开源网页界面工具,用来管理你的 MySQL 数据库。
### 安装 phpMyAdmin ###
在 Debian 官方仓库里就有。所以可以用下面的命令安装:
sudo apt-get install phpmyadmin
选择一个网页服务器。默认情况下,这里不会显示 nginx。所以选择 apache 或者 lighttpd然后我们再把 phpMyAdmin 和 nginx 连接起来工作。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_007.png)
选择通过dbconfig-common为phpMyAdmin配置数据库。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_008.png)
输入数据库的管理员账号密码。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_009.png)
输入 phpmyadmin 帐号的 MySQL 密码:
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_010.png)
重新输入一次密码。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/06/sk@server-_011.png)
phpMyAdmin 就安装完成了。
创建一个 phpMyAdmin 的软连接到网站根目录。这里我们的网站根文档目录是/usr/share/nginx/html/。
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html
重启 nginx 服务。
sudo service nginx restart
### 访问 phpMyAdmin 网页控制台 ###
现在你可以在浏览器中通过地址**http://server-ip-address/phpmyadmin/**访问 phpMyAdmin 的控制台了。
输入你在前面步骤里留下的 MySQL 用户名和密码。在我这里是“root”和“ubuntu”。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/10/phpMyAdmin-Mozilla-Firefox_0021.png)
就可以重定向到 phpMyAdmin 的网页管理首页。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/10/192.168.1.100-localhost-phpMyAdmin-4.2.6deb1-Mozilla-Firefox_0031.png)
现在你就可以在 phpMyAdmin 网页里管理你的 MyQL 数据库了。
就这样。你的 LEMP 服务器已经配置完毕,可以使用了。
--------------------------------------------------------------------------------
via: http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-phpmyadmin-ubuntu-14-1014-0413-10/
作者:[SK][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[Caroline](https://github.com/carolinewuyan)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.unixmen.com/author/sk/
[1]:https://downloads.mariadb.org/mariadb/repositories/#mirror=tsinghua

View File

@@ -0,0 +1,42 @@
Mozilla 下周发布全新的开发者浏览器
================================================================================
**当你早晨醒来的时候你可能没有期望在网上看到Mozilla新的浏览器这样的词。**
但是我手上的正是你要找的。
youtube 视频地址,发布的时候不行做个链接吧
<iframe width="750" height="422" frameborder="0" allowfullscreen="" src="https://www.youtube.com/embed/Ehv5u-5rE8c?feature=oembed"></iframe>
### Mozilla 推动前沿 ###
Mozilla一直处于推动开源开放标准和开放访问的最前沿。他们引导了世界上最流行的桌面浏览器之一。他们的开源的基于Linux的移动操作系统[在24个国家的13个运营商的12款手机上出售][1]。他们[甚至可以在谷歌的Chromecast上运行][2]
他们将 Web 推广到每个角落的追求依然旺盛。在Mozilla博客上发布的一篇文章传达了公司宣布在推动前沿上的努力- 这次是针对开发者而不是用户而言的。
这被打趣为“独特但又熟悉”公司打算发布基于Firefox、由开发人员设计、针对开发人员提供的全新的浏览器。 Mozilla说它集成了“像[WebIDE][3]和[Firefox工具适配器][4]这样强大的新工具。
>“在构建Web时开发人员倾向于使用不同的工具但这往往不能很好地协同工作。这意味着你不用在不同的工具、平台和浏览器等这些会减缓你开发效率的工作中切换了
### #Fx10 ###
“Firefox开发者”版声称会在11.10发布。 现在还不知道它支持的平台但是第一它是Mozilla推出的第二针对的是开发者所以如果在那天没有Linux版本的话将会是一件很意外的事情。
Mozilla说感兴趣的人可以注册他们的[黑客简讯][5]来在浏览器发布的时候收到通知。
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/11/mozilla-launch-brand-new-developer-focused-web-browser
作者:[Joey-Elijah Sneddon ][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:https://twitter.com/firefox/status/522175938952716289
[2]:http://www.omgchrome.com/mozillas-chromecast-rival-leaks-online/
[3]:https://hacks.mozilla.org/2014/06/webide-lands-in-nightly/
[4]:https://hacks.mozilla.org/2014/09/firefox-tools-adapter/
[5]:https://hacks.mozilla.org/newsletter/

View File

@@ -0,0 +1,33 @@
Linux 有问必答如何在wget中禁用HTTP转发
================================================================================
> **提问** 当我用wget获取一个重定向到URL Y的URL X的时候wget默认会自动获取URL Y。然而我想要强制获取不带重定向的URL X。我该如何禁用wget重定向URL的功能。
在HTTP标准中重定向响应带3XX的HTTP响应说明请求的URL被移到了新的位置。重定向相应接着包含了目标重定向的URL。
像常规的HTTP客户端wget支持URL重定向也叫URL转发意味着当你尝试下载一个重定向的URL时wget会自动跟随URL重定向获取重定向后的资源。如果你由于一些原因想要禁用URL重定向并停止3XX的状态码你可以使用wget的“--max-redirect=number”选项。这个选项用来指定最大递归重定向的数字默认是20。
如果你想要禁用wget中的HTTP重定向使用“--max-redirect=0”
$ wget --max-redirect=0 http://www.aaa.com/a.html
----------
--2014-10-31 23:08:58-- http://www.aaa.com/a.html
Resolving aaa.com (aaa.com)... 1.2.3.4
Connecting to aaa.com (aaa.com)|1.2.3.4|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.bbb.com/b.html [following]
0 redirections exceeded.
如你所见当wget遇到HTTP重定向响应时它不会跟着重定向并以“0 redirections exceeded”超出0次重定向的错误信息停止。它同样会显示一个HTTP的状态码比如301
注意一下curl另外一个类似的HTTP客户端行为正好相反。默认上curl并不会跟随URL重定向。要强制使cutl重定向到一个URL你要使用“-L”选项。
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/disable-http-redirect-wget.html
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,30 @@
最新版本的 Ubuntu 在 Google 云平台上架
================================================================================
![](http://ostatic.com/files/images/ubuntu_image_5.png)
自从Canonical和Google合作后Canonical宣布已经在Google云平台发布Ubuntu14.04LTS、12.04LTS和14.10的公开beta版本。“从今天起可以在Google云平台上选择优化过的、最新的、十分安全和一致的Ubuntu镜像”Canonical的公告称“Canonical将会继续地维护、测试和更新认证的Ubuntu镜像在官方版本发布后Google云平台马上就会拥有最新版本”。
Ubuntu 在云环境和作为云分发基础中已经日益流行因此为Google云平台提供镜像可以吸引更多的用户。
对于所有Ubuntu LTS版本Canonical会为之提供维护和安全更新5年的版本这些会吸引更多的Canonical已经日益重视的企业级用户。
领先的开源云管理平台Scalr的创始人Sebastian Stadil说道“官方Ubuntu镜像的缺乏已经阻止我们部分迁移我们的基础设施到Google云平台我们很高兴看到Ubuntu技术提供给我们所有企业客户。”
认证公有云CPC 的项目经理Federico Lucifredi 提到“越来越多的企业开始创业从而转向公有云环境来运行大量的关键的向外扩展的工作负载Google作为全球领先的竞争者之一Google 云平台已经快速建成。给Google云平台增加Ubuntu镜像是顺理成章的一步我们确信这样的合作在开发者和企业部署云时便于寻找到一个易于使用和信赖的操作系统。”
通过Canonical得知在作为所有公有云的操作系统选择上Ubuntu事实上已经有显著业绩70%的工作负载运行在Ubuntu上。据OpenStack基金会消息Ubuntu已经是OpenStack部署的基础。
浏览[Google Cloud Platform][1]获得更多信息。
--------------------------------------------------------------------------------
via: http://ostatic.com/blog/the-latest-ubuntu-images-arrive-on-google-cloud-platform
作者:[Sam Dean][a]
译者:[Vic020/VicYu](http://www.vicyu.net)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://ostatic.com/member/samdean
[1]:https://cloud.google.com/compute/docs/operating-systems

View File

@@ -0,0 +1,31 @@
小白技巧openSUSE设置服务服务通过防火墙
================================================================================
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/openSUSE.png)
正如你所知道的在openSUSE/SUSE系统上不是所有的服务是激活并且默认允许的。例如**ssh**服务是默认不允许通过防火墙的。当然这是一个安全措施但是有时我们必须需要ssh服务从远程地点来连接服务器。
这个小教程将会展示如何允许服务不单是ssh也包括所有其他的服务如httpftp等通过服务器。我们可以使用**YaST**命令允许服务通过防火墙,**YaST**命令是openSUSE和其企业版默认安装配置工具。
首先在菜单中打开YaST控制中心。选择**Security and Users安全和用户 -> Firewall防火墙**
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/openSUSE-13.1-Running-Oracle-VM-VirtualBox_001.png)
接下来,打开**Allowed Services已允许服务**选项卡从Service to Allow选择需要允许的服务下拉框中选择**Secure Shell Servicessh服务**,然后 **Add增加****Next下一步**,最后**Finish完成**,搞定。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/openSUSE-13.1-Running-Oracle-VM-VirtualBox_002.png)
就是如此简单ssh服务已经允许通过防火墙这样你就可以在远程系统连接这个系统了。就像这样我们可以同样设置其他服务。
鼓掌!!
--------------------------------------------------------------------------------
via: http://www.unixmen.com/quick-tip-allow-services-firewall-opensuse/
作者:[SK][a]
译者:[VicYu/Vic020](http://www.vicyu.net)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.unixmen.com/author/sk/

View File

@@ -0,0 +1,72 @@
如何在 systemd 下管理Linux系统的时间和日期
===
**timedatectl**是用来查询和修改系统时间和配置的Linux应用程序。它是[systemd 系统服务管理][1]的一部分,并且允许你检查和修改系统时钟的配置。
在这篇文章中,我们将涉及该小巧但十分重要应用程序的所有方面
### 系统当前的时间状态 ###
想要查看系统当前日期/时间,以及可使用不带任何参数的命令查看当前系统时间配置,可以这样:
# timedatectl
输入的结果就像这样:
![](http://blog.linoxide.com/wp-content/uploads/2014/10/timedatectl.jpg)
### 修改日期 ###
想要修改系统日期你可以简单地使用timedatectl设置时间命令紧随命令的是YYYY-MM-DD格式的日期YYYY代表年MM代表2位数字的月份DD代表2位数字的天。举个例子如果你想把日期改为2015年2月4号,你应该使用下面的命令:
# timedatectl 2015-02-04
### 修改时间 ###
想要修改时间你可以以相同的方式使用该工具但是使用的格式为HH:MM:SSHH代表24小时制的时钟MM代表分钟SS代表秒钟。想将当前时间设为22:04:43使用下面的命令
# timedatectl 22:04:43
### 修改时区 ###
设置正确的时区是保持时间同步的关键特别是在你使用NTP协议同步的时候。首先你应该使用list-timezones选项列出你所在区域的可用时区你也可以使用grep和more来让格式方便阅读
# timedatectl list-timezones | grep America | more
这将显示一个简单的滚动列表格式。
之后,你就会知道你想设置的时区是如何命名的,然后使用下面的命令修改它:
# timedatectl set-timezone America/Los_Angeles
### 设置本地时钟 ###
**实时时钟RTC**通常被称为硬件时钟完全独立于操作系统当前状态甚至可以在计算机关闭的时候工作。你可以配置系统使用国际时间UTC或当地时间来校正RTC。注意使用当地时区校正RTC并没有完美支持而且还有可能因为时区变化和夏令时调整引起许多问题。如果有可能在UTC模式下校正RTC。这一做法的唯一问题是其他操作系统可能不完全支持它如果你在同一台机器上运行2个操作系统的话
使用UTC模式校正RTC使用下面的命令
# timedatectl set-local-rtc 0
使用当地时间校正,使用:
# timedatectl set-local-rtc 1
### 设置NTP同步 ###
**网络时间协议NTP**是在分组交换、可变数据延迟的计算机系统间进行时钟同步的网络协议。NTP被设计使用[几毫秒的协调通用时间UTC][2]来同步所有参与的计算机。如果你希望设置NTP同步你可以使用set-ntp选项设置。使用“no”关闭NTP同步使用“yes”开启。
# timedatectl set-ntp yes
---
via: http://linoxide.com/linux-command/timedatectl-change-time-date-systemd/
作者:[Adrian Dinu][a]
译者:[su-kaiyao](https://github.com/su-kaiyao)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://linoxide.com/author/adriand/
[1]:http://www.freedesktop.org/wiki/Software/systemd/
[2]:https://en.wikipedia.org/wiki/Coordinated_Universal_Time

View File

@@ -0,0 +1,129 @@
在 Linux 中使用"avconv"工具录制计算机桌面视频和音频
================================================================================
**Libav**是一款跨平台的工具库能够用来处理多媒体文件、流和协议。它最初是源自ffmpeg。Libav带有一些工具比如
- **Avplay** 一款视频音频播放器。
- **Avconv** 能够记录多个设备输入源的一个多媒体转换器和视频音频录制器。
- **Avprobe** 一个连接多媒体文件流并且返回关于这个文件流的统计信息的工具。
- **Libavfilter** 一个Libav工具的过滤器(filtering)API。
在这篇文章里面,我们就要展示如何通过'Avconv'程序在**Debian/Ubuntu/Linux Mint**发行版上录制Linux桌面视频音频。
### 第一步:下载 Avconv 工具 ###
**1.** **avconv**是 “**libav-tools**” 的一部分, 可以通过官方的基于debian的仓库下载比如Mint、Ubuntu。输入下面命令即可
$ sudo apt-get update
$ sudo apt-get install libav-tools
![Install Avconv Tool](http://www.tecmint.com/wp-content/uploads/2014/11/Install-avconv-tool.jpeg)
*下载Avconv工具*
**注意** 如果从默认仓库下载的话, **avconv** 的版本可能比较老。 因此我们推荐你拉取最新的git官方版本。
$ sudo apt-get install yasm
$ git clone git://git.libav.org/libav.git
$ cd libav
$ ./configure
$ make
$ sudo make install
**注意** 你应该运行 **./configure help** 来列出所有的可选配置选项并且安装相应的解码器和库,你还需要做很多工作来解决依赖问题。
也要注意,如果你是从源代码编译的,就需要使用**sudo avconv**而不是**avconv**来运行这个工具。
### 第二步:开始录制桌面视频 ###
**2.**一切就绪,现在可以通过运行下面的命令录制你的视频了:
$ avconv -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 $HOME/output.avi
简单解释一下这个命令:
- **avconv -f x11grab** 默认从X服务捕捉画面。
- **-r 25** 这是你需要的视频帧率,可以自行设置。
- **-s 1920×1080** 是你的系统的桌面分辨率,要设置成你当前桌面的分辨率,这一点非常重要。
- **-i :0.0** 我们要记录的位置X 服务输出端口),设置成这样就可以了。
- **-vcodec libx264** 我们用来录制视频的编码器。
- **-threads 4** 线程数,可以根据情况更改。
- **$HOME/output** 输出的目标文件路径。
- **.avi** 使用的视频格式,可以换成 “flv”、“mp4″、 “wmv”、 “mov”、 “mkv”等。
**3.**在运行命令之后就会在terminal上自动运行一个进程进行记录按"Ctrl+C"键来终止记录。
![Record Desktop Screen](http://www.tecmint.com/wp-content/uploads/2014/11/Record-Desktop-Screen.jpeg)
*录制桌面视频*
**4.** 现在你可以使用VLC或者其他的播放器或者使用来自Libav包里的播放器"avplay"来播放你录制的视频。
$ avplay $HOME/output.avi
**注意:** 别忘了替换输出文件的路径为你自己的,录制效果还是很好的。
![Play Recorded Video](http://www.tecmint.com/wp-content/uploads/2014/11/Play-Recorded-Video.jpeg)
*播放录制的文件*
这有一段我用 “**avconv**” 录制的[视频](http://www.youtube.com/embed/g1FEh4wByGE) (墙外)。
### 第三步: 开始录制桌面的音频和视频 ###
**5.** 如果也想同时录制音频,先运行这个命令,列出所有的音频输入源:
$ arecord -l
结果类似这样:
![Check Audio Input](http://www.tecmint.com/wp-content/uploads/2014/11/Check-Audio-Input.png)
*检查音频输入源*
在我这里,我只有一个音频输入源,所以数量是**1**,这就是我使用如下命令来捕捉我的视频以及麦克风的音频的原因。
$ avconv -f alsa -i hw:1 -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 output-file2.avi
我修改了部分地方,下面做个简短的解释:
- **-f** alsa 一个从alsa设备捕捉声音的选项。
- **-i** hw:1 是一个从 “hw:1” 设备捕捉音频的选项,这个设备是我电脑上仅有的一个音频输入设备。
**注意**: 如果你想用**arecord -l**显示的**1**之外的设备的话,别忘了替换 “**1**”。
结束录制,再来一次“**Ctrl + C**” 就可以。
### 第四步: 开始录制桌面音频 ###
**6.** 如果只想录制音频的话,使用下面的命令。
$ avconv -f alsa -i hw:1 out.wav
**7.** 替换成 **.mp3** 等Libav支持的格式都可以播放 **out.wav**就能听到你自己的声音了。
![Record Desktop Audio](http://www.tecmint.com/wp-content/uploads/2014/11/Record-Desktop-Audio.png)
*录制桌面音频*
###最后 ###
“**avconv**” 工具可以用来做很多其他事情,不仅仅是录制桌面视频,更多的教程和文档请移步到官网。
- [https://libav.org/avconv.html][1]
你对"avconv"的体验如何,你使用过其他工具录制桌面视频么?在评论里面和我们分享吧。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/record-ubuntu-desktop-screen-using-avconv/
作者:[Hanny Helal][a]
译者:[ggaaooppeenngg](https://github.com/ggaaooppeenngg)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/hannyhelal/
[1]:https://libav.org/avconv.html

View File

@@ -0,0 +1,39 @@
小技巧如何修复Lubuntu中的Docky混合错误
================================================================================
总所周知,**Docky**是Unix/Linux类系统中的轻量级应用启动器。我是 Lubuntu 和 Docky 的忠实粉丝因为它们不需要占用我的所有系统资源这样就可以同时运行更多应用。我在笔记本上使用Docky应用启动器系统为Lubuntu 14.04.
但是如果你使用LXDE发行版你也许肯定遇到过使用Docky时报混合的错误。看下面的截图。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Docky.png)
如果不开启混合功能就不能使用Docky一些特别功能如3D背景、自动隐藏。如果你想开启这些Docky的功能那么你需要在你的LXDE系统中开启混合功能。
就像这样,首先安装 **xcompmgr**包:
sudo apt-get install xcompmgr
然后,选择**菜单Menu -> 偏好Preferences -> LXSession默认程序Default applications for LXSession**。选择自动开始Autostart选项卡。 在**+增加)+Add**框中输入“**@xcompmgr -n**”不带引号。最后点击增加按钮。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/LXSession-configuration_002.png)
这样就搞定了。关掉LXSession配置窗口注销或重启系统。之后你就可以看见混合功能已经打开。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/unknown_006.png)
这时你就可以使用3D背景和隐藏功能如自动隐藏Auto-hideIntellihide和窗口闪烁Window dodge等。
![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Docky-Settings_003.png)
搞定!干杯!
--------------------------------------------------------------------------------
via: http://www.unixmen.com/quick-tip-fix-docky-compositing-error-lubuntu/
作者:[SK][a]
译者:[Vic020/VicYu](http://www.vicyu.net)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.unixmen.com/author/sk/

View File

@@ -0,0 +1,45 @@
你没看错Ubuntu MATE 14.04 LTS 现在发布了
================================================================================
![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/ubuntu-mate-lts.jpg)
**传统桌面的粉丝现在可以欢呼了Ubuntu MATE的第一个长期支持版本现在发布了马上去下载吧**
这个社区产物使用基于 GNOME2 的MATE桌面环境这个分支还继续着积极的开发和提升。Ubuntu MATE 14.04 LTS跟随着上月发布的Ubuntu 14.10一起发布了。
### 回顾补充 ###
你大概会想我是不是打错了我是Joey Sneddon这大概可以肯定。但这此是没错的你看到的是对的。Ubuntu MATE团队决定追溯创建一个LTS版本。
**Ubuntu MATE 14.04 LTS** 确切地应该叫Ubuntu MATE 14.11 LTS。[如项目领导者 Martin Wimpress 注明的][1]不只是因为他在11月份发布还因为它混合了14.04和14.10的代码。
> “该版本并不寻常它虽然基于Ubuntu MATE 14.10 但是加入了很多新的特性并且修复了很多bug。虽然这是一个14.04版本但是你可以认为它是一个比14.10 更新的版本...”
如其他社区产物一样Ubuntu MATE 14.04也将至少支持接下来的三年,但是应该同样会得到来自上游的严重安全更新。
**与14.10相比的改变**包括:
- 更新了主题和壁纸
- 增加了两个新的应用: MATE Menu 和 MATE Tweak
- 改善辅助功能
- VLC 代替了 Totem 视频播放器
- 更新了几个 MATE 桌面包
### 下载 ###
要知道更多细节,以及硬件需求和支持信息,可以在官方网站上找到,也可以点击下面的链接。
- [下载 Ubuntu MATE 14.04 LTS][2]
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/11/ubuntu-mate-14-04-download-released
作者:[Joey-Elijah Sneddon][a]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:https://ubuntu-mate.org/blog/ubuntu-mate-trusty-final-release/
[2]:https://ubuntu-mate.org/longterm/

View File

@@ -0,0 +1,58 @@
修复了60个bug的LibreOffice 4.3.4正式发布
================================================================================
![](http://www.omgubuntu.co.uk/wp-content/uploads/2010/12/libreoffice.png)
**[前一段时间][1], 文档基金会带着它的开源LibreOffice生产力套件的又一个小版本更新回来了。**
LibreOffice 4.3.4,新系列中的第四个次版本,该版本只包含 BUG 修复,按计划发布了。
可以看到的变化是如基金会所说的在developers butterfly net上被揪出来并且修复的bug数量大概有60个左右。
- 排序操作现在还是默认为旧式风格(Calc)
- 在预览后恢复焦点窗口(Impress)
- 图表向导对话框不再是‘切除’式
- 修复了记录改变时的字数统计问题 (Writer)
- 各种各样的RTF修复包括图像边框导入(Writer)
完整列表可以在 [LibreOffice Wiki 页面][2]查看。
### 下载 ###
许多家伙有完整的LibreOffice安装程序但是从来没用过它。如果你是其中一份子你就当做没看到。
如果你喜欢升级,你可以在官方网站上找到所有相关的下载链接。
- [下载LibreOffice 4.3.4][3]
### 预测一下LibreOffice 4.4 ###
![Info bar coming in LibreOffice 4.4](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/libreoffice-infobar.jpg)
*来自LibreOffice 4.4的信息栏*
LibreOffice 4.4应该会让大家更多期望。
[维基上讲述了][4]正在进行中的不间断大范围GUI调整包括一个新的颜色选择器重新设计的段落行距选择器和一个在凸显部位表示该文件是否为只读模式的信息栏。
虽然我知道一些桌面社区对这些大规模的界面变动的抗议声不断,但是他们还是朝着正确的方向稳步前进。
要记住在一些必要情况下LibreOffice对于企业和机构来说是一款非常重要的软件。在外观和布局上有任何引人注目的修改都会引发一串连锁效应。
感谢Tim W
--------------------------------------------------------------------------------
via: http://www.omgubuntu.co.uk/2014/11/libreoffice-4-3-4-arrives-bundle-bug-fixes
作者:[Joey-Elijah Sneddon][a]
译者:[ZTinoZ](https://github.com/ZTinoZ)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:https://plus.google.com/117485690627814051450/?rel=author
[1]:http://www.omgubuntu.co.uk/2014/10/libreoffice-4-3-3-released-62-bug-fixes
[2]:https://wiki.documentfoundation.org/Releases/4.3.4/RC1
[3]:http://www.libreoffice.org/download/libreoffice-fresh/
[4]:https://wiki.documentfoundation.org/ReleaseNotes/4.4#GUI

View File

@@ -0,0 +1,54 @@
Linux有问必答如何检查Linux上的glibc版本
================================================================================
> **问题**我需要找出我的Linux系统上的GNU C库glibc的版本我怎样才能检查Linux上的glibc版本呢
GNU C库glibc是标准C库的GNU实现。glibc是GNU工具链的关键组件用于和二进制工具和编译器一起使用为目标架构生成用户空间应用程序。
当从源码进行构建时一些Linux程序可能需要链接到某个特定版本的glibc。在这种情况下你可能想要检查已安装的glibc信息以查看是否满足依赖关系。
这里介绍几种简单的方法方便你检查Linux上的glibc版本。
### 方法一 ###
下面给出了命令行下检查GNU C库的简单命令。
$ ldd --version
![](https://farm6.staticflickr.com/5613/15631104658_940163834a_z.jpg)
在本例中,**glibc**版本是**2.19**。
### 方法二 ###
另一个方法是在命令行“输入”**glibc 库的名称**libc.so.6),就像命令一样执行。
输出结果会显示更多关于**glibc库**的详细信息包括glibc的版本以及使用的GNU编译器也提供了glibc扩展的信息。glibc变量的位置取决于Linux版本和处理器架构。
在基于Debian的64位系统上
$ /lib/x86_64-linux-gnu/libc.so.6
在基于Debian的32位系统上
$ /lib/i386-linux-gnu/libc.so.6
在基于Red Hat的64位系统上
$ /lib64/libc.so.6
在基于Red Hat的32位系统上
$ /lib/libc.so.6
下图中是输入glibc库后的输出结果样例。
![](https://farm8.staticflickr.com/7516/15631334667_ef50b247a4_z.jpg)
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/check-glibc-version-linux.html
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出

View File

@@ -0,0 +1,84 @@
如何在 CentOS 7 上安装 Docker
================================================================================
Docker 是一个开源工具,它可以让创建和管理 **Linux 容器**变得简单。容器就像是轻量级的虚拟机并且可以以毫秒级的速度来启动或停止。Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上万的节点。
容器和 VM虚拟机的主要区别是容器提供了**基于进程的隔离**,而虚拟机提供了资源的完全隔离。虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。容器使用宿主操作系统的内核,而虚拟机使用独立的内核。
Docker 的局限性之一是,它只能用在 **64 位**的操作系统上。
在这篇文章中我们将讨论如何在 CentOS 7.x 中安装 docker。
### CentOS 7 中 Docker 的安装 ###
Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker只需要运行下面的 yum 命令:
[root@localhost ~]# yum install docker
### 启动 Docker 服务 ###
安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
[root@localhost ~]# service docker start
[root@localhost ~]# chkconfig docker on
LCTT 译注:此处采用了旧式的 sysv 语法如采用CentOS 7中支持的新式 systemd 语法,如下:
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
**下载官方的 CentOS 镜像到本地** LCTT 译注:由于 Docker 被**墙** :-< ,所以请使用 http://docker.cn  的[镜像][1],感谢 @马全一 的镜像。
[root@localhost ~]# docker pull centos
Pulling repository centos
192178b11d36: Download complete
70441cac1ed5: Download complete
ae0c2d0bdc10: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
**确认 CentOS 镜像已经被获取:**
[root@localhost ~]# docker images centos
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos5 192178b11d36 2 weeks ago 466.9 MB
centos centos6 70441cac1ed5 2 weeks ago 215.8 MB
centos centos7 ae0c2d0bdc10 2 weeks ago 224 MB
centos latest ae0c2d0bdc10 2 weeks ago 224 MB
**运行一个 Docker 容器:**
[root@localhost ~]# docker run -i -t centos /bin/bash
[root@dbf66395436d /]#
我们可以看到CentOS 容器已经被启动,并且我们得到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。若要断开与容器的连接,输入 exit。
[root@cd05639b3f5c /]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
[root@cd05639b3f5c /]# exit
exit
[root@localhost ~]#
我们还可以搜索基于 Fedora 和 Ubuntu 操作系统的容器。
[root@localhost ~]# docker search ubuntu
[root@localhost ~]# docker search fedora
**显示当前正在运行容器的列表**
![](http://www.linuxtechi.com/wp-content/uploads/2014/11/docker-ps.png)
--------------------------------------------------------------------------------
via: http://www.linuxtechi.com/install-docker-on-centos-7/
作者:[Pradeep Kumar][a]
译者:[felixonmars](https://github.com/felixonmars)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.linuxtechi.com/author/pradeep/
[1]:https://docker.cn/h/how-to-use-docker-official-repositories

View File

@@ -0,0 +1,218 @@
在Linux中使用Openswan搭建站点到站点的IPsec VPN 隧道
================================================================================
虚拟私有网络VPN隧道是通过Internet隧道技术将两个不同地理位置的网络安全的连接起来的技术。当两个网络是使用私有IP地址的私有局域网络时它们之间是不能相互访问的这时使用隧道技术就可以使得两个子网内的主机进行通讯。例如VPN隧道技术经常被用于大型机构中不同办公区域子网的连接。
有时使用VPN隧道仅仅是因为它很安全。服务提供商与公司会使用这样一种方式架设网络他们将重要的服务器数据库VoIP银行服务器放置到一个子网内仅仅让有权限的用户通过VPN隧道进行访问。如果需要搭建一个安全的VPN隧道通常会选用[IPsec][1]因为IPsec VPN隧道被多重安全层所保护。
这篇指导文章将会告诉你如何构建站点到站点的 VPN隧道。
### 拓扑结构 ###
这边指导文章将按照以下的拓扑结构来构建一个IPsec 隧道。
![](https://farm4.staticflickr.com/3838/15004668831_fd260b7f1e_z.jpg)
![](https://farm6.staticflickr.com/5559/15004668821_36e02ab8b0_z.jpg)
![](https://farm6.staticflickr.com/5571/14821245117_3f677e4d58_z.jpg)
### 安装软件包以及准备VPN服务器 ###
一般情况下你仅能管理A点但是根据需求你可能需要同时管理A点与B点。我们从安装Openswan软件开始。
基于Red Hat的系统CentOSFedora或RHEL:
# yum install openswan lsof
在基于Debian的系统DebianUbuntu或Linux Mint):
# apt-get install openswan
现在禁用VPN的重定向功能如果有服务器可以执行下列命令
# for vpn in /proc/sys/net/ipv4/conf/*;
# do echo 0 > $vpn/accept_redirects;
# echo 0 > $vpn/send_redirects;
# done
接下来允许IP转发并且禁重定向功能。
# vim /etc/sysctl.conf
----------
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
重加载 /etc/sysctl.conf文件
# sysctl -p
在防火墙中启用所需的端口,并保证不与系统当前的规则冲突。
# iptables -A INPUT -p udp --dport 500 -j ACCEPT
# iptables -A INPUT -p tcp --dport 4500 -j ACCEPT
# iptables -A INPUT -p udp --dport 4500 -j ACCEPT
最后我们为NAT创建防火墙规则。
# iptables -t nat -A POSTROUTING -s site-A-private-subnet -d site-B-private-subnet -j SNAT --to site-A-Public-IP
请确保上述防火墙规则是持久有效的LCTT 译注你可以save这些规则或加到启动脚本中
#### 注意: ####
- 你可以使用MASQUERAD替代SNAT(iptables)。理论上说它也能正常工作但是有可能会与VPS发生冲突所以我仍然建议使用SNAT。
- 如果你同时在管理B点那么在B点也设置同样的规则。
- 直连路由则不需要SNAT。
### 准备配置文件 ###
我们将要用来配置的第一个文件是ipsec.conf。不论你将要配置哪一台服务器总是将你这端的服务器看成是左边的而将远端的看作是右边的。以下配置是在站点A的VPN服务器做的。
# vim /etc/ipsec.conf
----------
## general configuration parameters ##
config setup
plutodebug=all
plutostderrlog=/var/log/pluto.log
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/16
## disable opportunistic encryption in Red Hat ##
oe=off
## disable opportunistic encryption in Debian ##
## Note: this is a separate declaration statement ##
include /etc/ipsec.d/examples/no_oe.conf
## connection definition in Red Hat ##
conn demo-connection-redhat
authby=secret
auto=start
ike=3des-md5
## phase 1 ##
keyexchange=ike
## phase 2 ##
phase2=esp
phase2alg=3des-md5
compress=no
pfs=yes
type=tunnel
left=<siteA-public-IP>
leftsourceip=<siteA-public-IP>
leftsubnet=<siteA-private-subnet>/netmask
## for direct routing ##
leftsubnet=<siteA-public-IP>/32
leftnexthop=%defaultroute
right=<siteB-public-IP>
rightsubnet=<siteB-private-subnet>/netmask
## connection definition in Debian ##
conn demo-connection-debian
authby=secret
auto=start
## phase 1 ##
keyexchange=ike
## phase 2 ##
esp=3des-md5
pfs=yes
type=tunnel
left=<siteA-public-IP>
leftsourceip=<siteA-public-IP>
leftsubnet=<siteA-private-subnet>/netmask
## for direct routing ##
leftsubnet=<siteA-public-IP>/32
leftnexthop=%defaultroute
right=<siteB-public-IP>
rightsubnet=<siteB-private-subnet>/netmask
有许多方式实现身份验证。这里使用预共享密钥,并将它添加到文件 /etc/ipsec.secrets。
# vim /etc/ipsec.secrets
----------
siteA-public-IP siteB-public-IP: PSK "pre-shared-key"
## in case of multiple sites ##
siteA-public-IP siteC-public-IP: PSK "corresponding-pre-shared-key"
### 启动服务并排除故障 ###
目前服务器已经可以创建站点到站点的VPN隧道了。如果你可以管理B站点请确认已经为B服务器配置了所需的参数。对于基于Red Hat的系统使用chkconfig命令以确定这项服务以设置为开机自启动。
# /etc/init.d/ipsec restart
如果所有服务器没有问题的话那么可以打通隧道了。注意以下内容后你可以使用ping命令来测试隧道。
1. A点不可达B点的子网当隧道没有启动时ping不通。
1. 隧道启动后在A点直接ping B点的子网IP是可以ping通的。
并且到达目的子网的路由也会出现在服务器的路由表中。LCTT译注这里“子网”指的是site-B“服务器”指的是site-A
# ip route
----------
[siteB-private-subnet] via [siteA-gateway] dev eth0 src [siteA-public-IP]
default via [siteA-gateway] dev eth0
另外,我们可以使用命令来检测隧道的状态。
# service ipsec status
----------
IPsec running - pluto pid: 20754
pluto pid 20754
1 tunnels up
some eroutes exist
----------
# ipsec auto --status
----------
## output truncated ##
000 "demo-connection-debian": myip=<siteA-public-IP>; hisip=unset;
000 "demo-connection-debian": ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0; nat_keepalive: yes
000 "demo-connection-debian": policy: PSK+ENCRYPT+TUNNEL+PFS+UP+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 32,28; interface: eth0;
## output truncated ##
000 #184: "demo-connection-debian":500 STATE_QUICK_R2 (IPsec SA established); EVENT_SA_REPLACE in 1653s; newest IPSEC; eroute owner; isakmp#183; idle; import:not set
## output truncated ##
000 #183: "demo-connection-debian":500 STATE_MAIN_I4 (ISAKMP SA established); EVENT_SA_REPLACE in 1093s; newest ISAKMP; lastdpd=-1s(seq in:0 out:0); idle; import:not set
日志文件/var/log/pluto.log记录了关于身份验证密钥交换以及隧道处于不同时期的一些信息。如果你的隧道无法启动了可以查看这个文档。
如果你确信所有配置都是正确的,但是你的隧道任然无法启动,那么你需要检查以下的事件。
1. 很多ISP会过滤IPsec端口。确认你的网络ISP允许使用UDP 500 TCP/UDP 4500端口。你可以试着在远端通过telnet连接服务器的IPsec端口。
1. 确认所用的端口在服务器防火墙规则中是允许的。
1. 确认两端服务器的预共享密钥是一致的。
1. 左边和右边的参数应该正确配置在两端的服务器上
1. 如果你遇到的是NAT问题试着使用SNAT替换MASQUERADING。
总结这篇指导重点在于使用Openswan搭建站点到站点IPsec VPN的流程。管理员可以使用VPN使得一些重要的资源仅能通过隧道来获取这对于加强安全性很有效果。同时VPN确保数据不被监听以及劫持。
希望对你有帮助。让我知道你的意。
---
via: http://xmodulo.com/2014/08/create-site-to-site-ipsec-vpn-tunnel-openswan-linux.html
作者:[Sarmed Rahman][a]
译者:[SPccman](https://github.com/SPccman)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/sarmed
[1]:http://en.wikipedia.org/wiki/IPsec
[2]:https://www.openswan.org/

View File

@@ -0,0 +1,103 @@
Linux 命令行下嗅探 HTTP 流量的工具httpry
================================================================================
假设由于某种原因你需要嗅探HTTP站点的流量如HTTP请求与响应。举个例子你可能在测试一个web服务器的实验性功能或者你在为某个web应用或RESTful服务排错又或者你正在为PAC(proxy auto config)排错或寻找某个站点下载的恶意软件。不论什么原因在这些情况下进行HTTP流量嗅探对于系统管理、开发者、甚至最终用户来说都是很有帮助的。
数据包嗅工具tcpdump被广泛用于实时数据包的导出但是你需要设置过滤规则来捕获HTTP流量甚至它的原始输出通常不能方便的停在HTTP协议层。实时web服务器日志解析器如[ngxtop][3]可以提供可读的实时web流量跟踪痕迹但这仅适用于可完全访问live web服务器日志的情况。
要是有一个仅用于抓取HTTP流量的类似tcpdump的数据包嗅探工具就非常好了。事实上[httpry][4]就是:**HTTP包嗅探工具**。httpry捕获HTTP数据包并且将HTTP协议层的数据内容以可读形式列举出来。通过这篇指文章让我们了解如何使用httpry工具嗅探HTTP流量。
###在Linux上安装httpry###
基于Debian系统Ubuntu 或 LinuxMint基础仓库中没有httpry安装包(译者注本人ubuntu14.04,仓库中已有包,可直接安装)。所以我们需要通过源码安装:
$ sudo apt-get install gcc make git libpcap0.8-dev
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install
在FedoraCentOS 或 RHEL系统可以使用如下yum命令安装httpry。在CentOS/RHEL系统上运行yum之前使其能够访问[EPEL repo][5]。
$ sudo yum install httpry
如果你仍想通过基于RPM系统的源码来安装httpry的话你可以通过这几个步骤实现
$ sudo yum install gcc make git libpcap-devel
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install
###httpry的基本用法###
以下是httpry的基本用法
$ sudo httpry -i <network-interface>
httpry就会监听指定的网络接口并且实时的显示捕获到的HTTP请求/相应。
![](https://farm4.staticflickr.com/3883/14985851635_7b94787c6d_z.jpg)
在大多数情况下,由于发送与接到的数据包过多导致刷屏很快,难以分析。这时候你肯定想将捕获到的数据包保存下来以便离线分析。可以使用'b'或'-o'选项保存数据包。'-b'选项将数据包以二进制文件的形式保存下来这样可以使用httpry软件打开文件以浏览。另一方面'-o'选项将数据以可读的字符文件形式保存下来。
以二进制形式保存文件:
$ sudo httpry -i eth0 -b output.dump
浏览所保存的HTTP数据包文件
$ httpry -r output.dump
注意,不需要根用户权限就可以使用'-r'选项读取数据文件。
将httpry数据以字符文件保存
$ sudo httpry -i eth0 -o output.txt
###httpry 的高级应用###
如果你想监视指定的HTTP方法GETPOSTPUTHEADCONNECT等使用'-m'选项:
$ sudo httpry -i eth0 -m get,head
![](https://farm6.staticflickr.com/5551/14799184220_3b449d422c_z.jpg)
如果你下载了httpry的源码你会发现源码下有一些Perl脚本这些脚本用于分析httpry输出。脚本位于目录httpry/scripts/plugins。如果你想写一个定制的httpry输出分析器则这些脚可以作为很好的例子。其中一些有如下的功能
- **hostnames**: 显示唯一主机名列表。
- **find_proxies**: 探测web代理。
- **search_terms**: 查找及统计在搜索服务里面的搜索词。
- **content_analysis**: 查找含有指定关键的URL。
- **xml_output**: 将输出转换为XML形式。
- **log_summary**: 生成日志汇总。
- **db_dump**: 将日志文件数据保存数据库。
在使用这些脚本之前,首先使用'-o'选项运行httpry。当获取到输出文件后立即使用如下命令执行脚本
$ cd httpry/scripts
$ perl parse_log.pl -d ./plugins <httpry-output-file>
你可能在使用插件的时候遇到警告。比如如果你没有安装带有DBI接口的MySQL数据库那么使用db\_dump插件时可能会失败。如果一个插件初始化失败的话那么只是这个插件不能使用所以你可以忽略那些警告。
当parse\_log.pl完成后你将在httpry/scripts 目录下看到数个分析结果。例如log\_summary.txt 与如下内容类似。
![](https://farm4.staticflickr.com/3845/14799162189_b85abdf21d_z.jpg)
总的来说当你要分析HTTP数据包的时候httpry非常有用。它可能并不被大多Linux使用者所熟知但会用总是有好处的。你觉得这个工具怎么样呢
--------------------------------------------------------------------------------
via: http://xmodulo.com/2014/08/sniff-http-traffic-command-line-linux.html
作者:[Dan Nanni][a]
译者:[DoubleC](https://github.com/DoubleC)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/nanni
[1]:http://xmodulo.com/2012/12/how-to-set-up-proxy-auto-config-on-ubuntu-desktop.html
[2]:http://xmodulo.com/2012/11/what-are-popular-packet-sniffers-on-linux.html
[3]:http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html
[4]:http://dumpsterventures.com/jason/httpry/
[5]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html

View File

@@ -0,0 +1,167 @@
使用GDB命令行调试器调试C/C++程序
============================================================
没有调试器的情况下编写程序时最糟糕的状况是什么编译时跪着祈祷不要出错用血祭召唤恶魔帮你运行可执行程序或者在每一行代码间添加printf("test")语句来定位错误点如你所知编写程序时不使用调试器的话是不方便的。幸好linux下调试还是很方便的。大多数人使用的IDE都集成了调试器但 linux 最著名的调试器是命令行形式的C/C++调试器GDB。然而与其他命令行工具一致DGB需要一定的练习才能完全掌握。这里我会告诉你GDB的基本情况及使用方法。
###安装GDB###
大多数的发行版仓库中都有GDB
Debian 或 Ubuntu
$ sudo apt-get install gdb
Arch Linux
$ sudo pacman -S gdb
Fedora,CentOS 或 RHEL
$sudo yum install gdb
如果在仓库中找不到的话,可以从[官网中下载][1]。
###示例代码###
当学习GDB时最好有一份代码动手试验。下列代码是我编写的简单例子它可以很好的体现GDB的特性。将它拷贝下来并且进行实验——这是最好的方法。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i;
int a=0, b=0, c=0;
double d;
for (i=0; i<100; i++)
{
a++;
if (i>97)
d = i / 2.0;
b++;
}
return 0;
}
###GDB的使用###
首先最重要的,你需要使用编译器的 “-g“选项来编译程序这样可执行程序才能通过GDB来运行。通过下列语句开始调试
$ gdb -tui [executable's name]
使用”-tui“选项可以将代码显示在一个漂亮的交互式窗口内所以被称为“文本用户界面 TUI”在这个窗口内可以使用光标来操控同时在下面的GDB shell中输入命令。
![](https://farm3.staticflickr.com/2947/15397534362_ac0b5692c8_z.jpg)
现在我们可以在程序的任何地方设置断点。你可以通过下列命令来为当前源文件的某一行设置断点。
break [行号]
或者为一个特定的函数设置断点:
break [函数名]
甚至可以设置条件断点
break [行号] if [条件]
例如,在我们的示例代码中,可以设置如下:
break 11 if i > 97
![](https://farm3.staticflickr.com/2948/15374839066_8c7c0eb8a4_o.png)
这样程序循环97次之后停留在“a++”语句上。这样是非常方便的避免了我们需要手动循环97次。
最后但也是很重要的是,我们可以设置一个“观察断点”,当这个被观察的变量发生变化时,程序会被停止。
watch [变量]
这里我们可以设置如下:
watch d
当d的值发生变化时程序会停止运行例如当i>97为真时
当设置断点后,使用"run"命令开始运行程序,或按如下所示:
r [程序的输入参数(如果有的话)]
gdb中大多数的命令单词都可以简写为一个字母。
不出意外程序会停留在11行。这里我们可以做些有趣的事情。下列命令
bt
回溯功能backtrace可以让我们知道程序如何到达这条语句的。
![](https://farm3.staticflickr.com/2943/15211202760_1e77a3bb2e_z.jpg)
info locals
这条语句会显示所有的局部变量以及它们的值(你可以看到,我没有为d设置初始值,所以它现在的值是任意值)。
当然:
![](https://farm4.staticflickr.com/3843/15374838916_8b65e4e3c7_z.jpg)
p [变量]
这个命令可以显示特定变量的值,而更进一步:
ptype [变量]
可以显示变量的类型。所以这里可以确定d是double型。
![](https://farm4.staticflickr.com/3881/15397534242_3cb6163252_o.jpg)
既然已经到这一步了,我么不妨这么做:
set var [变量] = [新的值]
这样会覆盖变量的值。不过需要注意,你不能创建一个新的变量或改变变量的类型。我们可以这样做:
set var a = 0
![](https://farm3.staticflickr.com/2949/15211357497_d28963a9eb_o.png)
如其他优秀的调试器一样,我们可以单步调试:
step
使用如上命令,运行到下一条语句,有可能进入到一个函数里面。或者使用:
next
这可以直接运行下一条语句,而不进入子函数内部。
![](https://farm4.staticflickr.com/3927/15397863215_fb2f5912ac_o.jpg)
结束测试后,删除断点:
delete [行号]
从当前断点继续运行程序:
continue
退出GDB
quit
总之有了GDB编译时不用祈祷上帝了运行时不用血祭了再也不用printf(“test“了。当然这里所讲的并不完整而且GDB的功能远远不止于此。所以我强烈建议你自己更加深入的学习它。我现在感兴趣的是将GDB整合到Vim中。同时这里有一个[备忘录][2]记录了GDB所有的命令行以供查阅。
你对GDB有什么看法你会将它与图形调试器对比吗它有什么优势呢对于将GDB集成到Vim有什么看法呢将你的想法写到评论里。
--------------------------------------------------------------------------------
via: http://xmodulo.com/gdb-command-line-debugger.html
作者:[Adrien Brochard][a]
译者:[SPccman](https://github.com/SPccman)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://xmodulo.com/author/adrien
[1]:https://www.gnu.org/software/gdb/
[2]:http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf

View File

@@ -0,0 +1,80 @@
Systemd这个有争议的项目正在接管你身边的Linux发行版
=========
![](http://core4.staticworld.net/images/article/2014/10/linux-attack-100528169-gallery.jpg)
Systemd 是目前为止在Linux平台上最有争议的项目之一。它到底有多大的争议它的争议大到systemd的开发者之一Lennart Poettering 声称有人使用[比特币][2]雇佣职业杀手要干掉他。但是还是有比较理智的做法的,有一个[抵制systemd网站][3]在技术角度上提出了抵制systemd的原因。
如此强烈的抵制也反映了systemd的成功。它已经被或将要被Fedroa、OpenSUSE、Ubuntu、Debian、Arch Linux等众多发行版采用。随着时间推移GNOME越来越依赖它Debian[回归GNOME][4]的原因之一就是它采用了systemd。systemd无处不在
那么如此激烈的争论到底是关于什么呢?让我们近距离观察这场战争。
###Systemd是一个全新的init
[Systemd][5]的核心是取代老旧的[SysV init][6]。init用来初始化你的操作系统当你启动系统时init负责加载需要的驱动激活你的网络链接启动众多的系统服务最后进入图形登陆界面。而SysV init 是一个老旧的系统,它基本上仅运行**/etc/init.d**目录下的一些脚本。
Systemd是一个现代技术用以取代老旧以及粗糙的SysV init。它可以在接收到事件响应时启动相关服务比如当你接入了一个USB打印机systemd可以在接收到设备接入响应时启动打印服务。当它接收到某个网络端口的连接请求时它可以启动在此端口上监听的服务并且传递这个连接。
获取更多关于SysV init 与 systemd的信息可以参考Jorgen Schäfer的 “[Why systemd?][9]”
###但是systemd远不止此###
systemd的反对者之中也有部分人认为SysV太老了应该被取代掉。但是批评systemd的人发现Systemd是一个巨大的项目其中包括了很多其他的功能。它是一个软件套件而不仅仅是一个init。
![An illustration of systemd's structure.](https://cms-images.idgesg.net/images/article/2014/10/systemd-diagram-100528171-orig.png)
*[维基共享资源][10] systemd 结构图解*
Systemd包括用于管理用户登陆的守护进程logind还包括journald并且journald 颇有争议的使用了二进制形式保存系统日志而不是以文本形式。systemd也采用了[udev][11]的思想及代码,它对**/dev/**目录下的虚拟设备文件进行管理并且处理设备接入或推出时所产生的事件。除了这些还有很多其他的systemd还包括了[cron][12]风格的任务调度器与网络守护进程networkd等等。
###抨击者认为systemd不是类UNIX风格
多数的抱怨源于人们认为systemd项目太大以至于超出了它的工作范围并且它从Linux系统接管的部分太多了。不要感到惊奇systemd的抵制活动是以下面的抱怨开始的
>"systemd文件是一大堆的复杂的高度耦合的二进制组成的这违反了UNIX哲学做一件事情并把它做好。它超出了一个init程序的职责范围因为它还有电源管理设备管理挂载管理cron定时执行工具磁盘加密socket接口/inetdsyslog网络配置登陆/会话管理文件预读GPT分区发现容器注册hostname/locale/time管理mDNS/DNS-SD等功能它将Linux控制台以及其他的一些功能都包装在一个程序里面。
##那么systemd是好是坏
到这里,我判断一下,到底谁是正确的。
![](https://cms-images.idgesg.net/images/article/2013/09/linux-penguin-100055693-medium.png)
systemd最初的想法是非常好的。Linux需要一个新的东西来替换老的 SysV init 和沉重的 SysV init 脚本这个新的程序应该是灵活的现代化的系统守护进程它可以响应更多类型并且智能化的管理众多的守护进程。然而事实上systemd好像成为了**一个仅依赖Linux核心的完全统一的系统层**。
*但是*尽管Linux是一个社区开发项目但它不是为PC世界的专栏作家或者是一群网络评论者提供的这些人都不能决定它的进化与发展。只有那些亲手贡献代码以及全身心投入的人才有这个资格。巧的是Linux发行版以及那些参与者好像大部分都倾向与systemd。
>'我对于systemd本身并没有很强烈的个人看法。我与核心开发人员争论过它的bug与兼容性并且我认为它的一些设计是愚蠢的比如二进制的日志但这只是细节不是大问题。
如果 Linux Torvald 对于systemd的设计没有什么反对意见那么说明它可能还是不错的。如果你想平静的看下为什么Linux发行版要使用systemd的话我推荐这篇文章[Debian's systemd discussion document][13]。
你是如何看systemd的可以在评论回复但是请文明讨论。
*更新这篇文章以澄清之前的错误的消息ubuntu 桌面版将在下一个版本中纳入systemd。之前我们错误的认为ubuntu已经使用了systemd*
-------------------------------------------------------------------------------
via: http://www.pcworld.com/article/2841873/meet-systemd-the-controversial-project-taking-over-a-linux-distro-near-you.html
作者:[Chris Hoffman][a]
译者:[SPccman](https://github.com/SPccman)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.pcworld.com/article/2841873/meet-systemd-the-controversial-project-taking-over-a-linux-distro-near-you.html#chrishoffman
[1]:https://plus.google.com/app/basic/stream/z13rdjryqyn1xlt3522sxpugoz3gujbhh04
[2]:http://www.pcworld.com/article/2033715/7-things-you-need-to-know-about-bitcoin.html
[3]:http://boycottsystemd.org/
[4]:http://www.pcworld.com/article/2691192/how-gnome-3-14-is-winning-back-disillusioned-linux-users.html
[5]:http://www.freedesktop.org/wiki/Software/systemd/
[6]:http://en.wikipedia.org/wiki/Init#SysV-style
[7]:http://www.pcworld.com/column/world-beyond-windows/
[8]:http://www.pcworld.com/blog/world-beyond-windows/index.rss
[9]:http://blog.jorgenschaefer.de/2014/07/why-systemd.html
[10]:http://en.wikipedia.org/wiki/File:Systemd_components.svg
[11]:http://en.wikipedia.org/wiki/Udev
[12]:http://en.wikipedia.org/wiki/Cron
[13]:http://www.markshuttleworth.com/archives/1295
[14]:http://www.pcworld.com/article/2836984/why-ubuntu-1410-utopic-unicorns-humble-changes-are-the-calm-before-the-storm.html
[15]:http://www.maximumpc.com/article/news/linus_torvalds_tosses_f-bombs_middle_fingers_and_general_disdain_nvidia
[16]:http://www.zdnet.com/linus-torvalds-and-others-on-linuxs-systemd-7000033847/
[17]:https://wiki.debian.org/Debate/initsystem/systemd