Skip to content Skip to main navigation Skip to footer

Linux

Linux:轻量级标记语言

轻量级标记语言是一种时髦的系统语言,它用不同的方式标注文档,并且设计了简单易读的语法。事实上,它的语法非常之简单以至于任何人都能快速的掌握这些标记语言。这类语言最大的优点在于,用户使用一个普通的文本编辑器就可以在源文档中方便的输入注释文本。

这类语言使用简单的格式以及几个简单的特殊字符或字符串来标记段落标题、列表、表格、引用、字体等内容。

轻量级标记语言有许多用处。我们的生活被电子邮件、便笺、文章、报道以及推特包围着。许多人会先写好文本,然后重新排列、重新使用这些文本。轻量级标记语言在这方面非常有用,节约了大量手工敲打html标记的时间,加快了文字处理的速度。当读者想要阅读源文件和已输出文档时,他们也具有很强大的可读性。此外,他们也被频繁的使用于基于网络的出版物中,包括维基和博客等。

通过使用这些开源的工具,用户能够在很短的时间里做出高质量的注释文本,这不需要任何成本。代码完全是可移植的,并且可以输出成各种格式的文档。

现在,让我们来看看7个最常用的轻量级标记语言。下面每一个语言的标题都带有指向他自己首页的链接,里面有详细的描述,包括它本身语言特点的深度分析,以及一些相关资源的链接和评论。

  • Markdown –标记语言以及文本到HTML的转换工具
  • MultiMarkdown –基于Markdown但具有更多功能
  • AsciiDoc –漂亮的文本文档格式用于写作
  • Textile –被称为“人类网络文本生成器”
  • Texy –文本到XHTML格式化和转化库
  • Tome –作者的标记语言和工具包
  • reStructuredText –Docutils的标记语法分析组件

 

via: http://www.linuxlinks.com/article/20130921022758982/LightweightMarkupLanguages.html

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

译者:markvv 校对:Caroline

来源:https://linux.cn/article-2040-1.html

Linux:Linux下NTFS分区的修复和恢复

我们时不时需要帮助我们的朋友、家人、熟人、商业伙伴或者其他杂七杂八的人摆脱使用Windows的时候遇到的困境。尽管我们不像他们一样日常遇到各种问题,却经常是在他们有难的时候会求助的人。此外,甚至我们自己的Windows分区/驱动器也会出现问题(毕竟,有时候我们还是需要玩儿会儿游戏,而且,尽管Steam在努力,但Linux还不是游戏玩家的梦想之地),但愿不会如此。下面让我们看一两个我们可能会遇到的状况,那时我们可以用手边的Linux环境和一些NTFS分区恢复工具来修复它们。

简单修复

Windows 系统通常能很好的处理异常的“冷重启”(断电,关闭插线板的电源,或家里的小人儿手指随意按导致关机)。事实上,至今为止,最有效的修复Windows桌面问题的方法就是简单的重启系统。但是,Windows分区偶尔会显示系统需要进行驱动器一致性检测。不这么做的话,在几次重启后可能会引起文件系统状况恶化而使系统变得更糟。众所周知,Windows文件系统检查超级慢,而且经常不得不做好几次才能清理掉文件系统的“脏(dirty)”标志。

下面介绍一个叫“ntfsfix”的小工具,在基于Debian的系统(如 Ubuntu)可以通过下面的命令下载:

sudo apt-get install ntfsfix

或者在基于RPM的系统(如 Red Hat 或 CentOS)中通过下面的命令下载:

sudo yum install ntfsfix

这个‘ntfsfix’工具能快速的修复常见的错误以及NTFS分区不一致的问题。最常用的命令不用带任何参数。 它也可以报出来那些没有修复掉的项,然后我们能通过以下选项来修复它们:

  • -b: 清除磁盘上的坏的扇区 (可以在从一个旧磁盘往新的磁盘上克隆之后使用)
  • -d: 清除“脏”标志。“脏”标志是Linux不能挂载一个Windows分区的最常见的原因,通常发生在Windows断电前没有正常关机的情况。
  • -n: 除了在标准输出上显示它要完成的(换句话说,就是需要修复哪些)之外不做任何事。

过去Windows在启动前,用NTFS Disk Check来重置“脏”标志,常常要花几个小时。而‘ntfsfix’完成这个仅仅只需要大约三秒的时。

深度修复

不幸的是, 并非所有的问题都能被快速修复。事实上,有非常多的昂贵的磁盘恢复软件(通常属于“磁盘取证”类的软件,因为是在筛选损坏磁盘的时候调查人员使用的)用来修复那些加电但不能启动或者不能访问文件系统的磁盘。

有一个神奇的工具,免费而强大(而且如果在你本地电脑使用的话,可以放到一个可引导的救援Live CD里面)可以用来恢复你的Windows NTFS分区(而且,也能恢复EXT2/3/4,FAT/FAT32、exFAT、HFS和SunFS文件系统)。这个工具叫做TestDisk,在Debian和CentOS 的软件仓库中可用。Red Hat的软件仓库中并没有这个软件,但是安装它很容易。

sudo apt-get install testdisk

在基于 RPM 的系统(如 Red Hat 或 CentOS):

sudo yum install testdisk

这个工具简直无与伦比。如果驱动器加电并且运转了,甚至当驱动器有物理损坏时,这个小工具仍会奇迹般的取出一些文件来。 你可以通过一个旧式风格的命令“sudo testdisk /dev/sdX”来启动它,这里‘X’是你的驱动器号,之后你会看到下面的界面:

Linux:Linux下NTFS分区的修复和恢复
Linux:Linux下NTFS分区的修复和恢复

TestDisk在终端中运行

这个工具使用起来很简单,只需要根据菜单提示进行操作,而且它是交互式的。它会扫描你指定的某个分区,然后把重建的目录和文件显示出来,然后你可以标记,并存到另外一磁盘或者分区里面。我已经成功地从Windows,OSX和linux分区里面恢复过文件,这些分区要么因为这种或那种原因不能启动,要么害怕启动之后可能彻底完蛋,总之,这些分区用不了多久就会彻底完蛋了。

说句实在的,你不能期望文件系统100%的恢复,尤其是你的驱动器已经有损坏了,不过至少聊胜于无吧,而且不用像去请专业人员处理那样花很多钱(实际上一分也不用花)。所以如果你的驱动器现在有问题了,那你可以用下这个工具。

结束语

当你使用Linux的时候,磁盘修复要容易得多,当然也便宜的多,要么用USB转接器连接有问题的磁盘,要么从一个LiveCD启动,然后用CD里面的修复工具。本文中我们谈到的所有的工具都是免费使用,而且是在持续开发(更新)中。您可以在下面留言,谈一下你曾经不得不使用什么工具来从您磁盘的问题中恢复。

 

via: http://blog.linuxacademy.com/linux/ntfs-partition-repair-and-recovery-in-linux/

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

译者:younel0925 校对:jasminepeng

 

来源:https://linux.cn/article-2045-1.html

Linux:三个快速便捷的命令行小贴士

最近几周里,我总是收到人们询问一些快速零散的问题。有时候一个人是在寻找一个有帮助的建议,或者一个具体的命令,或者一个命令行捷径,以完成一个特定的任务。本篇将介绍最近人们向我提出的三个问题,以及完成这些任务的简单方法。

第一个场景

我们要找到那些在过去的一个月中被改动过的文件,并将他们从当前的位置复制到另一个目录中去。

在这种情况下,能否精确的解决取决于你复制文件的时候是否保持了原来的文件树结构,还是你仅仅只是把所有文件全部复制到了一个指定的地方。如果我们只是想把所有的文件保存到一个文件夹中,或许这样做是为了将这些文件归档,那么我们可以使用find这条命令。通过使用find命令,我们能够根据文件被修改的时间查找到他们的位置,然后复制他们到指定的地方。这条命令看起来是这样:

find Documents -mtime -30 -exec cp “{}” Backup ;

上面这条命令会在Documents文件夹中查找在过去30天内被修改过的文件。这些文件之后将会被复制到另一个叫Backup的目录中去。find命令将会通过调用cp命令来执行复制这一操作。通过修改mtime这条参数,我们可以查找到最近某个时间内被修改过的文件,在上面这个例子中它被设定为在过去的30天内。

更多的时候,我们会想要在把文件复制到目标文件夹后,仍然能够保留源文件夹的目录结构。很多时候,人们都希望两个文件夹的内容同步,然后他们会运行一个脚本来使他们保持一致。这种情况下,我们可能会用到rsync这条命令了。这个工具会把新文件、修改过的文件从一个复制到另一个目录中去,同时保持源目录的展示结构:

rsync -a Documents/ Backup

上面的例子,它会先找到哪些文件在Documents中和Backup中都存在,以便不再复制这些不必要的文件。

第二个场景

有一个我们都会做的很普遍的工作,就是在一个文本文件中找到一个单词,然后用另一个单词把这个词在文本中的所有实例都替换掉。

比如,假设我有一个文档中提到一个人名叫“Becky”,但是我后来决定还是用稍微正式点的称呼“Rebecca”为好。对文件中的这个简单的改动,下面这条命令会起到作用:

perl -pi -e ‘s/Becky/Rebecca/’ mydocument.txt

这条微型的Perl脚本会查询文档中所有“Becky”的实例,并且将之改为“Rebecca”。程序首先读取名为mydocument.txt这个要改动的文档,待修改完毕后再保存回去。

第三个场景

一个普遍关注的问题是,在一个硬盘要给别人或者被扔掉之前,需要对其中存储的敏感数据做些什么。

有些人会在电脑里保存一些银行的业务数据或者税务信息,那么这些数据最好在你的硬盘被转手到别人之前被彻底清理掉。现在有一些方法和工具可以让你使用。我最喜欢的一个是shred这条命令,它不仅能对单一文件进行处理,同样也能对整个设备进行处理。要重写一个文件里面的内容,我们可以这样运行shred

shred mytaxes.odt

上面这个例子中,它会移除文件里存的内容,但并不会把文件本身从硬盘中删除掉。如果要清除文件的内容同时删除掉这个文件,我们可以这样运行:

shred -u mytaxes.odt

需要强调的一点是,shred并不是在所有的文件系统中都能正常运行,尤其是那些带有日志功能的比较新的文件系统。在shred的操作手册中写明了哪些文件系统运行这个程序的时候会出问题。当处理敏感数据的时候,最好的方法也许是清除掉整张硬盘。shred同样也能办到。下面这个例子中,显示了如何移除掉我们电脑中第一块硬盘内的所有数据。使用这条命令一定要非常小心:

shred /dev/sda

 

via: http://distrowatch.com/weekly.php?issue=20130923

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

译者:markvv 校对:wxy

来源:https://linux.cn/article-2047-1.html

Linux:lmctfy:让我用集装箱为你的程式打包

lmctfy (Let Me Contain That For you,发音是lem-kut-fee)是谷歌Google开发的容器栈,可以为Linux应用提供容器(container)。这些容器可以让一台机器上的不同应用使用相互隔离的资源,以独占的方式运行在同一台机器上。这些应用也可以拥有容器,因此能够创建和管理属于他们自己的子容器。

这项项目旨在提供一组以用户的意图为原点的高级API,来实现对容器概念的抽象化。这些创建的容器自身也通过继承也可以拥有了自己的容器、也能够被其他的用户程序所管理。

Lmctfy是为某些特定的场景(配置环境)设计、实现的,所以可能不能在所有场景(配置环境)中正常运作。我们的目标是为更多的场景(配置环境)提供更多的支持,所以你可以为这项项目贡献你的补丁或是在邮件列表中发送邮件,这样我们可以朝着既定的路线图前进。

lmctfy 内包含一个C++库和一个CLI(命令行界面程序)

最新进展

lmctfy 还是一个在beta阶段的应用,目前仍在主要开发中。最新的版本是0.1。她目前只支持CPU和内存资源的隔离。点击查看我们的路线图来了解各部分的开发情况,点击查看贡献

从此开始

这一节描述如何编译你的CLI,运行所有的UI测试,和初始化机器的细节。 CLI这节提供了一些CLI操作的例子,C++ 库描述了这个库的使用详情。

依赖

编译本程序需要使用make和g++4.7。 lmcfy使用了C++11,所以需要支持这项功能的编译器。我们在 Ubuntu 12.04+ 上测试过编译。如果有为其他环境的编译提供支持的补丁,我们很高兴而且希望这越多越好。

lmctfy 依赖下列几个库,需要这些库存在于你的计算机系统里。

编译CLI

编译lmctfy的CLI:

make -j <线程数> lmctfy

CLI程序会生成在 bin/lmctfy/cli/lmctfy

编译C++库

编译lmctfy的库:

make -j <线程数> liblmctfy.a

库文件会生成在 bin/liblmctfy.a.

运行测试

编译和运行所有的UI测试:

make -j <线程数> check

初始化

lmctfy已经在 Ubuntu 12.04+ 上的 3.33.8 内核上测试过。 lmctfy在一台机器的所有容器都是运行它的时候运转得最好,所以不建议让她运行在LXC或者其他container系统上(尽管在某些特殊得配置下这能够跑起来)。

为了运行lmctfy,我们必须首先初始化计算机。这只需要运行一次就可以,而且一般是在计算机第一次启动时候就完成了。当cgroup的hierarchies已经挂载了,接下来通常一个空的配置会可以让lmctfy自动监测到目前的挂载。

lmctfy init “”

如果cgroup的hierarchies没有被挂载,那么必须指明这些资源,这样lmctfy才可以挂载他们。目前版本需要以下cgroup的hierarchies资源cpu,cpuset,cpuacct,memory和freezer。 cpu和cpuacct 是目前唯一可以被共享挂载的,其他的必须被单独地挂载。具体配置说明可以查看lmctfy.proto中的InitSpec节。以下的例子是一个挂载了/dev/cgroup中的所有hierarachies的配置文件:

lmctfy init "
  cgroup_mount:{
    mount_path:'/dev/cgroup/cpu'
    hierarchy:CGROUP_CPU hierarchy:CGROUP_CPUACCT
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/cpuset' hierarchy:CGROUP_CPUSET
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/freezer' hierarchy:CGROUP_FREEZER
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/memory' hierarchy:CGROUP_MEMORY
  }"

这样,机器就可以被lmctfy使用、进行容器的操作。

容器的命名

容器的命名系统简化了文件系统的路径,因为以后只需要一系列容器的继承(容器的容器、子容器、子子容器)就可以了♪───O(≧∇≦)O──── ♪。

容器名称允许的字符集:

  • 英文字母+阿拉伯数字 ([a-zA-Z0-9]+)
  • 下划线 (_)
  • 横县 (-)
  • 英文句号 (.)

绝对路径是从容器(比如是/sys/subcont)的根目录(/)开始计算的。容器的名字也可以是相对的(比如subcont)。一般地(除非特殊情况说明),都是沿用一般的文件路径方式。

例子

	/ 		: 容器的根目录
	/sys 		: "sys" 容器
	/sys/sub	: "sub" 容器,"sys"容器的子容器
	. 		: 当前的容器
	./ 		: 当前的容器
	.. 		: 当前的容器的父容器
	sub 		: 当前的容器的"sub" 子容器
	./sub 	: 当前的容器的"sub" 子容器
	/sub 		: "sub" 容器
	../sibling	: 当前的父容器的“sibling”子容器

 

CLI

创建

创建一个容器:

lmctfy create <名称> <参数>

更完整的细节参见lmctfy.proto

例子 (创建一个内存限制在100MB的容器):

lmctfy create memory_only “memory:{limit:100000000}”

销毁

销毁一个容器:

lmctfy destroy<名称>

列表

从根目录递归显示当前机器的所有容器:

lmctfy list containers -r /

你也可以只列出当前的子容器:

lmctfy list containers

运行

在一台容器中运行命令:

lmctfy run <名称> <命令行>

 

例子:

lmctfy run test “echo hello world”

lmctfy run /test/sub bash

lmctfy run -n /test “echo hello from a daemon”

其他

键入lmctfy help查看全部的命令和文档

C++ Library

此库包含了::containers::lmctfy::ContainerApi 用来创建、获取、销毁、监测::containers::lmctfy::Container类型的对象,并且被独立的容器相互交流。具体的lmctfy C++库的文档可以查看头文件lmctfy.h(你是认真的吗( ̄▽ ̄))。

路线图

lmctfy项目通过两个层(CL1、CL2)来实现一个容器栈。CL1围绕着驱动进程,并执行CL2制定的容器策略。CL1会为更高层创建和维护容器的抽象。她应当是唯一直接和内核交流以维护容器的层。 CL2发展和设定容器策略,她使用CL1来执行策略和操控容器。比如,CL2(后台进程)实现了一个策略:所有容器的CPU和内存使用总和不可以超过现提供的CPU和内存资源(以防止对内存资源的过度使用)。为了执行这条策略,她(CL2)会使用CL1(library/CLI)来创建带这条内存限制规则的容器。另一条对应的策略可能包括了允许过度使用X%的机器资源或者对不同资源的多重层次控制。

lmcfty项目现在提供了CL1组件,CL2还没有实现。

CL1

现在只提供高性能CPU和内存隔离。在我们的路线图中我们还需要实现以下几项:

  • 磁盘IO隔离: 这部分几乎完成了,但是我们还缺少控制器和资源处理器。
  • 网络隔离: 这部分和cgroup实现还在计划中。
  • 命名空间支援: 给所有命名空间支援并且整合到相关的资源中。
  • 根文件系统支援: 识别并建立根文件系统。
  • 磁盘镜像: 可以导入和导出容器的根文件系统的镜像。
  • 支持暂停/继续: 使用继承的freezer。
  • 还原点恢复: 可以建立还原点并恢复到不同机器的容器中。

CL2

最基础的CL2 应当有一个容器策略来保证在机器不允许超载运行情况下的资源合理分配。我们的目标是CL2最终实现提供不同层次的服务。在这个框架下一些层次可以比其他的获得更多好的服务。

  • 监控和统计支持。
  • 管理功能和功能检查。
  • 服务的质量保证和执行。

内核支持

lmctfy 最初的设计和实现是在一个自定义的内核上(一个原生linux内核外加一些列自选的补丁)上。由此,一些特性在这些内核补丁上跑得最理想。但是lmctfy应该在没有他们得情况下正常运行。她应当监测可用得内核支援并且与之适应。我们已经在原生的 Ubuntu3.33.8 系列内核上测试过。如果你发现在其他版本内核下的问题,请汇报。

一些相关的内核补丁:

  • CPU 延时: 这个补丁为cpu hierarchy增加了cpu.lat的cgroup 文件。她限制了cgroup能预测的CPU唤醒延时时间。
  • CPU 柱状图统计: 这个补丁为cpuacct hierarchy增加了cpuacct.histogram cgroup 文件。她为CPU计划行为提供了多种柱状图方案。
  • OOM 管理: 一系列的补丁,用于在内存用尽的情况下执行优先权。

贡献

对项目感到兴趣了?看看我们的路线图,看你是不是由很多想贡献的方向呢? 从此开始,你应该可以运行我们的程序。如果无法运行,请让我们知道,这样我们可以改进这份指南。

邮件列表

本项目的邮件列表是lmctfy@googlegroups.com。本邮件列表用来发布、讨论、一般性支持。

 

原文: https://github.com/google/lmctfy/

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

译者:Chilledheart 校对:wxy

来源:https://linux.cn/article-2049-1.html

Linux:如何让你的内存中的 NoSQL 数据存储适合企业级应用

对于关注用户体验的每一个Web或移动应用而言,基于内存的NoSQL数据存储系统(例如开源的 RedisMemcached)正在成为事实标准。由于性能、可扩展性和可用性面临的诸多挑战,很多大企业已经在试图采用这些数据库系统。

非常幸运的是,现代编程语言(例如Ruby、Node.js、Python等)和开发平台(例如Rails、Sinatra、Django等)已经内置了很多工具和开发库(libraries)。这些工具和开发库能够有效利用内存数据库的高性能和各种操作命令,能够实现当前流行的多种应用项目。

这些开源的示例项目包括作业管理、论坛、实时分析、Twitter克隆、地理位置搜索以及高级缓存等等。

数据库系统的可用性(availability)、可扩展性(scalability)和性能(performance)对于这些项目的成功至关重要。

本文粗略的介绍如何构建企业真正可用的基于内存的NoSQL数据库,包括一些技巧和建议;这些技巧和建议能够解决云端NoSQL数据库管理面临的七大挑战。 

1. 可用性

无论你做什么,对于你的应用来说数据必须是时刻可用的。这对于内存数据库尤为重要;因为,如果没有得当的措施,当下面的情形发生时你的数据将会部分或全部丢失:

  1. 节点失败(在云(cloud)中经常发生);
  2. 进程重启(你可能需要不时的进行重启);
  3. 需要扩展(我们假设你可能需要这个)。

对于情形1和情形2有两种方式来解决;情形3将在稍后讨论。

  • 复制:你要确保将你的数据保存一份到集群的另一节点,如果是另一数据中心则更为可靠,以便应付数据中心发生故障(亚马逊AWS在2012年至少发生了4次故障)。不幸的是事情并非如此简单。随便就能举一个复制非常困难的例子:一旦程序写的频率增加,你会发现应用服务器写入速度远大于复制的速度,尤其是在主节点和复制节 点存在网络拥堵的情形下。一旦这种情况发生,如果数据集大到一定程度,复制节点很有可能永不再 与主节点同步。 
  • 自动切换:为什么需要这个?内存数据库每秒处理的请求比一般数据库通常多100倍,这就意味着每增加一秒宕机时间就会延迟更多的请求处理并给用户带来不好的用户体验。在实现自动切换时一定要遵循下面的原则:1.确保主存储节点一旦失败就立马切换到备用复制节点。这一般基于成熟健壮的看门狗技术 (watchdog),看门狗持续的监控节点,一旦失败就切换到健康的复制节点。2.对于你的应用程序而言切换过程要尽量透明;最理想的情况是不需要更改任何配置。更高级的解决方案是仅仅修改DNS中存储节点的IP地址,确保修复过程在几秒钟之内完成。3.自动切换应当基于Quorum并且是完全一致(fully consistent)或最终一致(eventually consistent)的。讨论下面继续:

2. 网络分裂过程中和完成后的一致性

网络分裂(network splits)在云中频繁发生,对地球上的分布式存储系统而言也是最复杂的问题。一旦发生分裂,应用程序可能只会发现内存数据库的部分节点;同时,每个内存NoSQL数据库节点也很有可能只能发现一部分的其他节点。

为什么说这是一个非常严重的问题呢?如果你的数据库包含一些隐蔽的设计缺陷,当网络分裂发生时,应用程序很可能会写入错误的节点。这意味着,当情况恢复时,应用程序发起的写入就会丢失。这对基于内存的NoSQL数据库来说这是一个非常有意义的话题,因为基于内存的NoSQL数据库每秒的写操作远大于其他的NoSQL数据库系统。

一个设计得当的基于内存的NoSQL是什么样子的呢?很不幸,你只能从下面两个非常糟糕的候选中选择一个:

  1. 如果基于内存的NoSQL数据库是完全一致(fully consistent)的,在某些情况下你是不允许写入任何内容的,除非网络分裂恢复。
  2. 如果基于内存的NoSQL数据库是最终一致(eventually consistent)的,应用程序可以对“读”请求采用quorum方法——返回一个值或者阻塞。 

注意——在今天的市场上并不存在最终一致(eventually consistent)的基于内存的NoSQL数据库,所以只有选项1是可以实际应用的方案。

3. 数据持久化

尽管基于内存的NoSQL解决方案提供多种复制选择,你仍需要着重考虑数据持久化和备份,原因如下:

  • 或许你不希望为内存复制提供额外支出,但是仍希望将数据保存在某个地方并且在遇到节点故障时能够将数据恢复(即使恢复速度很慢)。
  • 你一定希望在遇到任何故障时都能将数据恢复并且希望保留另外一个选择——将数据保存在另外一个安全的地方,即使数据不能与最新的的修改同步。
  • 还有一些采用数据持久化的其他理由,例如为了测试将数据从生产环境导入到过渡环境等

现在你已经确信数据持久化是必要的,在大多数云环境中你应当使用附属在云主机上的存储设备(像AWS的EBS、Azure的Cloud Derive等)。如果你将数据保存在本地硬盘,当遇到节点故障时你就会丢失数据。

一旦数据得到持久化保存,你最大的挑战将变成:在将改变实时写入到持久化存储的同时保证内存NoSQL数据库的速度。

4. 稳定的性能

基于内存的NoSQL数据库(例如Redis和Memcached)的设计目标是:在毫秒延迟内,每秒钟能够处理超过10万个请求。但是,这个数字在云环境下是很难达到的,除非你遵循以下的原则:

  • 确保你的解决方案使用的是功能最强大的云主机(cloud instances),例如AWS的 m2.2xlarge/m2.4xlarge或者是Azure的A6/A7 ;同时,它还必须是一个专用环境。你也可以选择另外一种替代方案:实现一种机制,该机制能够阻止不同帐户之间的相互影响。该机制要能够基于一定的标准,对于执行的每一条命令,实时监控数据库的性能;如果发现延迟超过一定的阈值,就采用一定的方法将数据迁移到其他节点。
  • 避免I/O瓶颈,尽量使用功能强大的存储设备,最好配置了RAID。其次,要确保在“突然爆发”的情况下也不能阻塞你的应用。例如,使用开源的Redis,你可以配置slave节点进行写操作;master节点专心处理用户请求,这样就能尽量避免“突然爆发”情况下的超时现象。
  • 测试云厂商提供的关于I/O优化的各种建议,例如AWS’ PIOPS。大多数情况下,这些建议对随机访问非常有用(读或写);但是,对于内存NoSQL经常采用的像顺序写入等类似的操作意义不大。
  • 如果内存数据库基于单线程架构(例如Redis),千万不要在同一个线程中运行多个数据库。不然,一个数据库在执行命令的过程中非常有可能阻塞另外一个数据库。

5. 网速

大多数云主机都配置了一块1Gbps网卡。在基于内存的NoSQL数据库中,该网卡需要完成以下操作:

  1. 处理应用请求
  2. 集群内部的交互
  3. 复制
  4. 存储访问

这很容易成为运行的瓶颈,因此,这里提供一些解决该问题的建议:

  • 为每一台云主机配置10Gbps的网卡(要有心理准备,这非常昂贵)
  • 选择能够为一些特殊应用配置多块1Gbps网卡的云提供商,例如AWS的VPC
  • 采用能够在内存NoSQL节点之间高效分配资源的解决方案以减小网络拥塞。

6. 可扩展性

对于简单的KV(key/value)缓存(例如Memcached或者Redis的简单应用),扩展很少被认为是一个很严重的问题;因为在大多数情况下,这只需要在在服务器列表中增加或删除节点并修改哈希方法。但是,实际经历过该问题的人就会意识到这是一个非常令人痛苦的问题。对于该话题我们有一些建议:

  1. 采用一致性哈希(hashing)。如果采用简单的哈希函数(例如求模),在扩展的时候就意味着丢失所有的数据。另一方面,很多人不知道的是:即使采用一致性哈希函数,在扩展的时候你仍然会丢失部分数据。例如,在扩展的时候你会丢失1/N的数据,N是你扩展后节点的数目。所以,如果N比较小,这仍然是一个非常痛苦的过程(如果对于2个节点的集群采用一致性哈希就意味着丢失1/3的数据)。
  2. 构建一种方法将扩展操作通知到每一个NoSQL的客户端,以便阻止在扩展过程中不同的应用服务器写入不同节点。

当进行某些复杂操作时,例如 Redis的 UNION 和 INTERSECT 操作,扩展就成为一个真正的问题。这些操作与SQL中的JOIN命令完全一样。在multi-shard架构下,如果不增加一定的的延迟和复杂性这些操作就完全不能实现。应用级别的分片(Sharding)能够解决一定的问题,因为它允许在分片(shard)模式下运行一些复杂的命令。但这需要非常复杂的设计,并且与内存NoSQL数据库的配置密切相关(例如分片的应用必须明确知道每一个主键保存的节点);当遇到扩展时(例如re-sharding)还需要巨大的代码修改和额外开销。

另一方面,很多人声称新一代的超高性能RAM能够解决节点扩展中遇到的大多数问题。但现实与他们的声称有所不同,在25GB-30GB数据规模上,对于像Redis一样的内存数据库,还有一些其他方面的问题会阻止扩展的真正实施。这些问题与本文前面提到的挑战密切相关,像复制、I/O、每核一个线程的架构、网络开销等。

7. 巨大的运维开销

基于内存的NoSQL数据库的运维会产生巨大的额外开销。它需要对这些技术进行深入了解,以便在紧要关头做出正确决策。同时,因为这些技术变化频率很快(可能是非常快),你还要时刻关注这些系统的趋势和最新修改。

结论

正如我们上面所说的一样,为了更好的利用Redis、Memcached等开源技术带给我们的优势,我们需要对这些技术进行深入了解和掌握。对于企业的IT团队来说,为了能够在企业环境中使用基于内存的NoSQL数据库,了解如何更好的应对这些挑战就显得更为重要。不是我持有偏见,我强烈建议寻找一些能够克服可扩展性和高可用性限制而不损害功能和性能的商业解决方案;因为运行维护基于内存的NoSQL数据库需要该领域的高级专家,这是非常稀少的。

在市场上有一些关于Redis和Memcached的NoSQL服务(NoSQL-as-a-service);我建议你对每一个可用的服务进行深入的比对(就像DIY),以便挑选一个最好的解决方案。能够实际体验一下这些服务就更好了,很多服务商为这个目的都提供了免费体验。

英文原文:How to Make Your In-memory NoSQL Datastores Enterprise-Ready

参与翻译(1人):sdzzboy

via: http://www.oschina.net/translate/make-imdg-enterprise-ready 

 

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端

有时候在Linux上使用基于GUI的程序,你必须在程序窗口和命令行窗口之间切换。这会消耗一些时间。将一个终端窗口嵌入到程序窗口内部是个很好的解决方案。我不知道在其他程序是否可以,但是,如果你为gedit寻找一个这样的解决方案,那么这儿有一个插件– Embedded Terminal — 能让你从gedit窗口内部访问命令行终端。

NOTE — 这篇文章中使用Ubuntu 13.04作为例子。

简短教程

安装了这个插件后,可以让用户很容易地在编辑文件的同时访问命令行。

这是插件启用后的gedit窗口截图:

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
 

如上,你可以看到在gedit窗口内部命令行操作与编辑文本文件集成到了一起。

下载/安装

通过以下步骤来正确地在gedit下载安装和配置embedded terminal插件。

步骤1

通过命令安装gedit插件:

sudo apt-get install gedit-plugins

步骤2

现在,在gedit窗口里,转到Edit(编辑)–>Preferences(首选项)–>Plugins(插件)并且启动Embedded Terminal插件。

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
 

步骤3

在gedit窗口中点击View(视图)–>Bottom Panel(底部面板)

gedit-view-bottom-panel 

你将在gedit窗口的底部面板看到一个嵌入式终端呈现出来。

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端

唯一的问题是色调搭配不是很好,比如,白色的命令提示符在淡灰色背景下几乎看不清。接下来的步骤去修改色调搭配。

步骤4

打开dconf-editor,如果没有安装,通过命令来安装它:

sudo apt-get install dconf-tools

安装后,用下面命令来执行:

dconf-editor

在dconf editor窗口中,转到org–>gnome–>gedit–>plugins–>terminal并且取消选定use-theme-colors选项。

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端

步骤5

重启gedit

Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端
Linux:Gedit插件:Embedded Terminal,让你在编辑器内使用命令行终端

可以看到,在浅色背景下的黑色的命令提示符。

优点

  • 从gedit窗口内部轻松访问终端
  • 作为一个插件,它能节约任何时间

缺点

  • 在初始化配置里色调搭配问题是个主要问题(译注,估计插件作者使用的深色配色方案的Gedit,因此没有意识到这个问题,期待以后的更新版本会解决这个问题)

总结

无论如何,在Linux中工作总是难以避开命令行。所以,在你常用的程序窗口中嵌入一个终端是一个好多的方法。这个gedit插件是个不错的小工具,它可以帮你节省一些时间。尝试它,它值得你安装。

 

via: http://mylinuxbook.com/embedded-terminal-a-gedit-plugin/

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

译者:Vito 校对:wxy

来源:https://linux.cn/article-2058-1.html

Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”

以前,我很想要一个用管理员身份打开文件/目录的右键菜单选项(在nautilus文件管理器中)。原因在于,每个需有root权限的操作,我都必须返回命令行终端使用sudo。这并不是说我不习惯命令行,但是我仍希望至少有个能等价于sudo或su的东西。我四处搜索发现一个nautilus插件– Nautilus-Gksu

NOTE — 本文中所有的示例已经在Ubuntu 13.04上测试过。

Nautilus-Gksu

Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
 

简短教程

Nautilus-Gksu插件在右键菜单中添加了一个有用的选项– 以管理员身份打开(Open as administrator) 。这对nautilus文件管理器中处理文件和目录和有用。

例如,假设你想从nautilus文件管理器中打开root目录。想当然的双击将获取一个错误信息,如:

gksu-1

但是你安装nautilus gksu插件后,你需要做的是在目录上右击并选择“以管理员身份打开(Open as administrator)”选项。

Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”

一旦你点击了这个选项,你将被提示输入密码。

Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”

只要输入密码就行了。

下载/安装

正如前面提到的,这些天我的大多数文章用Ubuntu 13.04完成,允许我坦白的讲,通过之前推荐的方式安装这个插件很困难。

就是说像这样命令:

sudo apt-get install nautilus-gksu

它不工作且获得以下错误信息:

Reading package lists… Done  

Building dependency tree  

Reading state information… Done  

E: Unable to locate package nautilus-gksu  

我google了一下这个问题,发现我不是唯一遇到这个问题的,但是许多其他Ubuntu 13.04用户也面临一个类似的问题。不管怎样,我一直在寻找解决方案,直到我发现一个线索指向该解决方案。我在AskUbuntu上阅读完帖子并尝试在Ubuntu 12.04上提到的步骤。

这是帖子的一个截图:

Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
Linux:Nautilus Gksu 插件:在右键菜单中增加“以管理员身份打开”
 

阅读完上面的帖子,我使用以下步骤来完成安装:

  • 下载64位插件。[我的是64位系统]
  • 解压下载后的deb文件。
  • 执行以下命令(译者注:直接复制插件的.so文件到插件安装目录): sudo cp /home/himanshu/Downloads/nautilus-gksu2.0.2-5ubuntu2amd64/usr/lib/nautilus/extensions-2.0/libnautilus-gksu.so /usr/lib/nautilus/extensions-3.0/

这样插件就安装成功了。

总结

如果你的工作涉及到使用Nautilus文件管理器管理你的日常文件,那么这个插件是你的首选。虽然在Ubuntu 13.04上安装它并不容易,但是它仍然值得付出努力。

优点

让你右击使用root权限轻松打开任何文件或目录。

缺点

在Ubuntu 13.04上安装不容易。

 

via: http://mylinuxbook.com/nautilus-gksu/

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

译者:Vito 校对:wxy

来源:https://linux.cn/article-2061-1.html

Linux:Glances:自适应显示的多合一系统监控工具

很少有命令行工具可以适应不同的终端尺寸,为用户提供最大限度的信息。绝大多数的工具的显示都是类似的——要么显示的信息混乱了或工具给出一个错误信息。不过, Glances 却是一个支持在80X24终端到任何更大尺寸终端上显示大量系统/网络监控相关信息的工具。

Linux:Glances:自适应显示的多合一系统监控工具
Linux:Glances:自适应显示的多合一系统监控工具

提示 — 这篇文章中的所有例子在Ubuntu 13.04的bash shell上测试过。

简短教程

Glances是一个系统监控工具,它在你的终端上能展示各种各样的系统相关信息。这些信息包括:

  • CPU相关信息
  • 磁盘IO相关信息
  • 内存相关信息
  • 挂载点相关信息
  • 网络接口相关信息
  • 进程相关信息
  • 等等

这是glances示例截图:

Linux:Glances:自适应显示的多合一系统监控工具
Linux:Glances:自适应显示的多合一系统监控工具

它是用python写的并且利用psutils库获取所有系统相关信息的显示。Glances在终端上的显示非常灵活,比如,它可以在小至80X24的终端上显示更多的信息。

这是在较小终端上的glances截图:

Linux:Glances:自适应显示的多合一系统监控工具
Linux:Glances:自适应显示的多合一系统监控工具

你可以看到甚至在较小终端上它也能显示一些信息。

你不仅可以用Glances对本地系统监控,它也能用于监控远程系统。在远程系统使用glances,运行以下命令:

glances -s

并且在客户端执行:

glances -c [ip-address-of-server]

在C/S模式中,使用glances有一些用户应该记住的重点[取自glances官方文档]:

在服务器端,你可以用 -B address 和 -p port 来设置绑定的IP地址和端口。在客户端,使用 -p port 来指定连接的服务器端的端口。默认的绑定地址是0.0.0.0(即监听在全部网络接口上)和61209/TCP端口上。

在C/S模式下,限制是在服务器端设置的。你也可以通过 -P password 来指定一个连接口令。Glances 也支持IPv6,可以通过 -B :: 来绑定到全部的IPv6地址上。

此外,这有几个命令行选项可用于自定义信息,像:

  • 使用 -m 禁止显示挂载相关信息
  • 使用 -n 禁止显示网络相关信息
  • 使用 -t 设置屏幕刷新时间间隔
  • 等等

通过man手册页探索和发现更多这样的选项。

除了命令行选项,glances提供许多帮助选项,你可以当glances正在运行的时候使用,这是选项列表:

Linux:Glances:自适应显示的多合一系统监控工具
Linux:Glances:自适应显示的多合一系统监控工具

所以你可以看到glances不仅灵活显示也高度可定制。

下载/安装

这是一些与glances工具有关的重要链接:

你可以从软件源下载和安装Glances,但这需要预装python-dev模块。Ubuntu用户可以通过Ubuntu软件中心直接下载和安装。本文使用的版本是1.7.1与PsUtil 0.6.1。

总结

Glances是个工具,可以用于系统管理员快速了解完整的系统概况。在你的宝贝电脑上是个很好的工具,可以在你调试一些系统相关问题上派上用场。显示灵活想必是极好的。

优点

  • 在同等情况下提供许多系统相关信息
  • 灵活的显示

缺点

  • 较小终端时必须指定一些选项,以便显示更多信息。
  • 从源代码构建依赖于附加库,像python-dev。

你曾今用过Glances或类似的工具吗?你的经历是什么?分享你的故事吧。

 

via: http://mylinuxbook.com/glances-an-all-in-one-system-monitoring-tool/

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

译者:Vito 校对:wxy

来源:https://linux.cn/article-2063-1.html

Linux:rtorrent – 强大的命令行BT客户端

如果你不使用torrent命令行客户端是担心它太复杂,那么,请重新考虑下。我相信一旦使用过了基于命令行的BT客户端,你就会离不开它:你可以非常轻松地在你的终端窗口启动和监控进度。在这篇文章中,我们将会介绍一个强大的命令行BT客户端 – rtorrent 。

NOTE – 文中展示的所有示例和指令都已经在Ubuntu 13.04中测试过。

rtorrent – 命令行BT客户端

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

简明教程

rtorrent 是一个用来轻松下载文件的命令行BT客户端(基于ncurses). 安装这个BT客户端之后,可以用下面命令运行它:

rtorrent

这有一个运行rtorrent后的窗口的截图:

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

好吧,我同意这个主窗口看起来并不是很美观,而且显示的信息有一点点混乱。不要担心,只要在你的键盘上按下enter就会有一个提示出现在窗口底部.

这是截图:

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

注意这个出现在屏幕上的提示load.normal>,下一步仅需输入torrent文件的名字。例如,我输入这个torrent文件名 Fedora-20-Alpha-x86_64-DVD.torrent.

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

注意你只需要输入torrent文件名(如果不在当前目录的话,那就要输入完整的路径)。你可以轻松的使用bash的快捷键比如[TAB]来补全文件名和路径。之后,再次按下enter。

 

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

现在你可以看到torrent文件已经加载了,但是你需要激活它,让它开始下载。怎么做呢?首先按下向下箭头键。现在应该在之前加载文件的详细信息前面上显示了一个星号(译者注:表示选中)。

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

注意在torrent文件信息开头显示的星号,现在,按下 Ctrl+s 开始下载。

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

rtorrent现在已经开始下载当前文件了。用 Ctrl+d 停止下载,再用一次 Ctrl+d 可以移除torrent任务,即卸载它。用 Ctrl+q 退出rtorrent。

你可以看到尽管基于命令行,但是事实上操作rtorrent并不是很难。

下载/安装

一些重要的关于rtorrent的链接:

Ubuntu 用户可以从Ubuntu软件中心下载rtorrent. 现在使用的版本是0.9.2.

rtorrent 下载安装之后,你必须设置一个资源文件(配置文件) – .rtorrent.rc 。这个文件必须存在,否则程序无法正常启动。下图就是我没有设置 ~/.rtorrent.rc 运行程序的结果。

Linux:rtorrent - 强大的命令行BT客户端
Linux:rtorrent – 强大的命令行BT客户端

你可以看到程序显示了一个不能读取到资源文件的错误。设置这个文件,首先下载文件模板,根据需求改一改。

注意 – 我上面提到的链接是官方的下载链接。这个文件和我的 ~/.rtorrent.rc有一点不同。

这是我使用的资源文件:

# For temporary downloaded files
# 临时下载文件
directory = ~/rTempDownloadFiles
# Directory to save and resume torrent sessions
# 保存和恢复torrent会话的目录
session = ~/rSession
# Other Tunables
# 其它可调参数
upload_rate = 30
download_rate = 200
peer_exchange = yes
# DHT enabled
# 开启DHT
dht = auto
# custom throttles
# 自定义阀门(译者注:流量限制)
throttle_up = low,10
throttle_down = low,10
throttle_up = med,20
throttle_down = med,20
# Watch a directory for new torrents, restart torrents that have been
# 监控目录中新的torrent, 重新启动torrent
# copied back and stop those that have been deleted.
# 复制并且阻止已经删除的.
schedule = watch_directory,0,10,load_start=~/rWatch/*.torrent
schedule = tied_directory,10,10,start_tied=
schedule = untied_directory,10,10,close_untied=
# Enable the default ratio group
# 启用默认比率组
ratio.enable=
# Change the limits, the defaults should be sufficient.
# 改变限制,默认应该足够
ratio.min.set=50
ratio.max.set=150
ratio.upload.set=20M
# Changing the command triggered when the ratio is reached.
# 当比值达到,改变命令触发
system.method.set = group.seeding.ratio.command, d.close=, d.erase=
# Move finished torrents to completed
# 移走完成的torrent
system.method.set_key = event.download.finished,rm_torrent,”execute=rm,$d.get_tied_to_file=”
system.method.set_key = event.download.finished,move_complete,”execute=mv,-u,$d.get_base_path=,~/rFullDownloadFiles/ ;d.set_directory=~/rFullDownloadFiles/”

注意 – 这个资源文件引用自这个链接.

要使用这个资源文件,不要忘记运行下面的命令(建立资源文件中提到的目录):

mkdir /home//rTempDownloadFiles
mkdir /home//rFullDownloadFiles
mkdir /home//rSession
mkdir /home//rWatch

用你自己的用户名替换 。还有,确保资源文件的名字是 .rtorrent.rc (前面有一个点) 不是 rtorrent.rc,把它保存在你的home目录(我的是/home/himashu).

想知道更多关于使用rtorren,请读用户指南。还可以在rtorrent中浏览详细教程

结论

rtorrent 是为那些想要用命令行BT客户端来代替基于GUI的客户端的用户准备的。虽然它需要为初始化配置付出一些时间并且需要一些操作来习惯,但是这些时间是值得的。尝试一下,它一定会给你留下深刻印象。

优点

  • 功能丰富
  • 大量的自定义选项

缺点

  • 初始配置时需要一点时间
  • 用户可能需要一些时间来习惯

你使用基于CLI的BT客户端吗?它有什么优势和弊端?和我们分享你的经历。

 

via: http://mylinuxbook.com/rtorrent-bit-torrent-client/

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

译者:flsf01 校对:Caroline

来源:https://linux.cn/article-2064-1.html

Linux:.CN 根域名被攻击至瘫痪,谁之过?

.CN根域名遭受有史以来最大规模DDoS攻击

2013年8月25日凌晨,.CN域名凌 晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析。事故造成大量以.cn和.com.cn结尾的域名无法访 问。直到当日凌晨4点左右,CN根域名服务器的解析才有部分恢复。此后,经CNNIC确认,国家域名解析节点遭受到有史以来规模最大的拒绝服务攻击,导致 访问延迟或中断,部分网站的域名解析受到影响。而距本次事故发生一个月之后,本月24号,CNNIC和工信部终于揪出了本次攻击事件的始作俑者–一名来 自山东青岛的黑客。

据调查发现,该黑客本意是要攻击一个游戏私服网站,使其瘫痪,后来他为了更快达到这个目的,直接对.CN的根域名服 务器进行了DDoS攻击,发出的攻击流量堵塞了.CN根服务器的出口带宽(据工信部数据:攻击时峰值流量较平常激增近1000倍,近15G),致使.CN 根域名服务器的解析故障,使得大规模的.CN域名无法正常访问。

DDoS攻击背后的利益链条

大家可能会有疑问,看似普通的DDoS攻击其背后究竟隐藏着什么?一句话:为了利益。本次事故中攻击者使用的手法(譬如攻击一些“私服”的网站或主机) 并不罕见,且近些年有愈演愈烈的趋势。自国内的互联网事业兴起以来,国内有一些常年进行DDoS攻击的组织或个人,胁迫某些“私服”游戏的运营团队并收取 “保护费”,如果不合作便采取DDoS暴力攻击,使其无法正常运营。而这些“私服”的运营团队本身业务就涉及侵权,所以他们在遇到DDoS威胁时绝不敢报 警或维权,往往是被迫接受。这种恶性循环的结果就是这些网络中的恶意胁迫越来越肆无忌惮,这些从事DDoS攻击商业行为的组织或个人也演变成了各式各样的 “网络黑帮”,各式黑色产业链也层出不穷。由于当今互联网上DDoS攻击的门槛已经越来越低,雇主可以购买DDoS攻击服务,攻击可指定时间、指定流量、 指定攻击效果。总的来说,同行业间的恶意竞争是导致DDoS攻击愈演愈烈的最大原因,同时被攻击后定位攻击者所花费的成本较高也是这类事件层出不穷的重要 原因。

为何选择针对DNS服务器进行DDoS攻击

一直以来作为网络基础设施的DNS系统,给我们提供了访问互联网的便利,用户只需记住域名就可以访问到互联网上的对应主机。当你在浏览器中输入一个域名时,DNS的解析过程就开始了,一般的DNS解析过程如图1、图2所示:

图1:DNS解析的一般过程(有缓存时)

图2:DNS解析的一般过程(无缓存时)

下面来聊一聊现有互联网上运行的DNS系统所可能遭受到的风险。大家应该都了解,根域名服务器是DNS系统中最高级别的域名服务器,全球一共有13台, 多数分布在美国。首先,DNS系统是一个中心化的树形结构,很容易遭受DDoS攻击,且越靠近中心攻击效果越为显著;其次,现有DNS系统的迭代查询方 式,对根域和顶级域解析服务器依赖非常严重;再次,现有互联网上存在着大量开放式的DNS域名服务器,这些服务器通常拥有强大的性能和带宽,利用DNS反 射技术的放大效应,可以产生近其带宽百倍的攻击流量。所以这些开放式的DNS服务器极其容易成为黑客们青睐的DDoS攻击“肉鸡“。这对整个互联网的基础 设施都是巨大的安全威胁。

在对现有DNS协议的风险评估上,DNS协议是很脆弱且不安全的。为什么说DNS协议很脆弱呢?一方面DNS 协议是明文协议,协议里带的信息可以很容易的被篡改、伪造,使得DNS协议易成为暴露用户行为的工具;另一方面,若在现有协议传输上采用加密手段,现有 DNS体系无法承受加密带来的开销和技术升级的成本。

正因为DNS系统的脆弱性和其协议设计上的缺陷,所以历史上针对DNS的攻击事件也比较多,影响比较大有2013年针对Spamhaus的攻击事件、2009年5.19断网、2008年DNS缓存投毒,以及2002年全球根域名服务器被攻击等等。

深入剖析本次.CN被攻击事件

从本次.CN根服务器被DDoS攻击的手法上来看,有两种可能性,一种可能是黑客使用DDoS方法攻击某个.CN域名,而较大的攻击流量或海量的查询请 求却把该.CN域名上一级根服务器打挂;第二种可能是黑客直接把DDoS攻击矛头指向了.CN的根域名服务器。针对DNS系统,常见的DDoS攻击手法 是:

1)传统DDoS攻击: 流量型(以堵塞网络带宽为主要攻击目的),包括UDP洪水攻击;TCP流量攻击;资源消耗型(以消耗目标机器可用资源为攻击目的),包括SYN洪水攻击,ACK洪水攻击,ACK反射攻击,慢速消耗攻击等;

2)DNS特有DDoS攻击:DNS反射攻击(放大效应)、DNS查询攻击(僵尸主机发起的海量请求)、变域名攻击:构造随机域名(或畸形域名)的查询请求,利用僵尸网络对目标域名或主机进行攻击(如图3所示)。

图3:DNS QUERY洪水攻击原理

为了最大限度的降低命中DNS缓存的可能,一般攻击者在构造攻击包时都会随机伪造查询源IP地址、伪造随机源端口,伪造随机查询ID以及待解析的域名。 从笔者获取到本次.CN攻击的数据包来看(见下图4),攻击者就是把经过特殊构造的海量的随机域名的查询请求直接发给了.CN的根服务器,也就是上文中提 到的变域名攻击方式。不过,笔者认为其中可能还混合有其他一些诸如UDP洪水、DNS放大和DNS僵尸查询等DDoS攻击,最终的目的就是让被攻击网络的 链路带宽超出服务的带宽,让目标机或集群处理能力超出极限,从而达到DNS解析不能提供正常服务的状态。

图4:.CN的攻击数据包(部分)

后续:DNS攻击的新趋势

在笔者看来,本次针对.CN根服务器的攻击为我们再一次敲响了互联网基础设施安全性的警钟,建议主管部门加强对基础设施的保障力度,以避免此类事故重演。

从笔者的日常工作中也能够发现不同针对DNS基础系统的攻击手法,譬如今年3月份针对国际公司Spamhaus的300G超大流量的DDoS攻击,攻击 者主要采取的手法就是DNS反射攻击,这种攻击技术的特点就是利用互联网上开放的DNS递归服务器作为攻击源,利用“反弹”手法攻击目标机器。攻击原理如 图5所示:

图5:DNS反射攻击的原理

在DNS反射攻击手法中,假设DNS请求报文的数据部分长度约为40字节,而响应报文数据部分的长度可能会达到4000字节,这意味着利用此手法能够产 生约100倍的放大效应。因此,对于.CN遇袭事件,攻击者只需要控制一个能够产生150M流量的僵尸网络就能够进行如上规模(15G)的DDoS攻击。 据不完全统计,国内外总计有超过250W台开放DNS服务器可以充当这种“肉鸡”,开放的DNS服务器简直是互联网上无处不在的定时炸弹。

我们如何应对这种DDoS攻击?

我们DNS系统的运维人员在日常部署时要尽量做到DNS应用的负载均衡,提升DNS服务器的处理性能,尽量将解析节点分散,能够做到按不同的IDC或城 市实现冗余和容灾机制,通过这些手段可以有效的减轻大流量DDoS攻击发生时所带来的危害。但是如上文所言,针对于如此不堪一击的DNS系统,我们未来还 能够从哪些方面出发去应对一般规模或是超大规模的DDoS攻击呢?笔者认为有如下一些解决方案可以值得尝试。

第一,在你的主机遭受DDoS攻击时,最简单的是在本机做策略,譬如iptables等,或是事先将主机kernel加固以应对随时可能出现的风险,但是这种方法不能解决DDoS的根本问题,且非常不灵活。

第二,若通过对流量和攻击报文分析已知DDoS攻击类型,那么也可以通过配置一些策略来减轻攻击带来的危害。譬如对DNS反射攻击的防护,首先若被攻击 的服务器并未提供DNS业务,那么可以通过设置访问控制策略直接阻断所有的DNS请求/回应;如果被攻击的服务器是DNS相关服务器,那么最有效的方法是 配置DNS服务器,只响应合法区域的查询。不过这种方法需要一定的专业知识,需要运维人员介入,同样是不灵活的。

第三,提供充足的带宽 和性能很强的DNS服务器,也就是俗称的“堆机器,拼资源”,不过这种方法也如同饮鸩止渴,期望“魔高一尺,道高一丈”是不太现实的。不过建议管理人员还 是需要对DNS服务器的上联链路的负载情况及时做好监控,避免因链路拥塞导致丢包的情况出现,同时还是需要在物理带宽上投入一定的资源以防止上联链路拥 塞。

第四,在互联网的核心路由入口侧部署专业的DDoS流量检测设备和DDos流量清洗设备,通过DDoS检测设备与清洗设备之间进行 的策略联动,及时对恶意的攻击行为进行发现、清洗、阻断,这也是当下较为为业界所认可的防护方案。通过DNS协议的自身特点,依托Intel、 Tilera和Cavium等高效的硬件平台,开发专门针对DDoS流量清洗的系统。这里可以构建专用的DNS防护算法,如DNS QUERY FLOOD防护算法、DNS反射攻击防护等,用于从根本上过滤掉攻击流量。

但对于大量的中小网站、企业而言,花费重金购买防护资源是不 现实的,不过现在随着互联网云技术的发展,很多大型互联网公司都提供了云主机服务,如腾讯云,阿里云等,并且免费提供专业的DDoS检测、清洗防护功能, 如果广大业务运营者担心自己的业务或主机会遭受到DDoS攻击,选择现有的云服务也不失为一种有效的解决方案。

除了上述提到的几种解决 方案,还有一些业界比较成熟的方案值得我们借鉴。比如CloudFlare公司采用的Anycast技术,该技术基于IP路由原理实现了自动流量负载均 衡,在发生DDoS攻击时,这种技术能够有效的将攻击流量分流到不同区域的防护节点,进行流量清洗。该方案已经成功的在用户环境中部署。

最后,随着网络上DDoS攻击规模的不断扩大,DDoS工具的自动化,资源充足和带宽充裕,黑客发起DDoS攻击成本越来越低,而针对DDoS的攻防对 抗,又是一个博弈对抗的过程。在非技术层面上,事先需要制定好应急预案和应对措施,如业务的自身调整、与运营商的沟通和应急措施同步。当DDoS攻击发生 时,需要多个部门间快速的响应,实施应急方案和及时同步处理结果。同时,建议从立法上,对这类攻击进行严惩,提升攻击违法的成本。

Linux:一个成功的Git分支模型

本文中我会展示一种开发模型,一年前该模型就已经被我用在所有的项目中(包括工作中的项目和私有项目),结果是非常成功的。我早就想为此写点东西,可直到现在才有时间。本文不会讲述任何项目的细节,只会涉及到分支策略和发布管理。

Linux:一个成功的Git分支模型
Linux:一个成功的Git分支模型

本文使用Git作为所有源码的版本控制工具。

为什么是Git?

要全面了解Git与其它集中式版本控制系统相比的优劣,可以参考这个页面。这方面的争论可谓是硝烟弥漫。作为一个开发者,所有这些工具中我最钟情于Git。Git的的确确改变了人们考虑合并及分支的方式。在我之前所处的经典CVS/Subversion世界中,合并/分支总是被认为是有点可怕的事情(“小心合并冲突,丫会恶心到你”),因此你只应偶尔干这种事情。

但有了Git,这类事情就变得非常简单,分支及合并甚至被认为是你日常版本控制操作的核心之一。例如,在CVS/Subversion的中,分支及合并往往在后面的章节才被介绍(针对高级用户),但在每一本Git的书中,该内容已经在前3章中介绍(基础)。

简单及易重复性带来的好处就是,分支及合并变得不再可怕。版本控制工具本该帮助我们方便的进行和分支及合并操作。

简单介绍下工具后,让我们来看开发模型。我讲介绍的模型本质上只是一组步骤,每个团队成员都必须遵循这些步骤以形成一个可靠管理的软件开发过程。

去中心化但仍保持中心化

在这个分支模型中我们使用的,且被证实工作得很好的仓库配置,其核心是一个中心“真理”仓库。注意只有该仓库才被认为是中心库(由于Git是DVCS [分布式版本控制系统],在技术层面没有中心库这一东西)。之后我们用origin指代该仓库,因为大多数Git用户都熟悉这个名称。

Linux:一个成功的Git分支模型
Linux:一个成功的Git分支模型

每个开发者都对origin做push和pull操作。不过除了这种中心化的push-pull关系外,每个开发者还可以从其他开发者或者小组处pull变更。例如,可能两个或更多的开发者一起开发一个大的特性,在往origin永久性的push工作代码之前,他们之间可以执行一些去中心化的操作。在上图中,分别有Alice和Bob、Alice和David、Clair和David这些小组。

从技术上来说,这仅仅是Alice定义一个Git remote,名字为bob,指向Bob的仓库,反过来也一样。

主要分支

Linux:一个成功的Git分支模型
Linux:一个成功的Git分支模型

此开发模型的核心主要受现有的模型启发。中心仓库包含了两个主要分支,这两个分支的寿命是无限的:

  • master
  • develop

每个Git用于都应该熟悉origin上的master分支。与master分支平行存在的,是另外一个名为develop的分支。

我们认为origin/develop分支上的HEAD源码反映了开发过程中最新的提交变更。有人会称之为“集成分支”。该分支是自动化每日构建的代码源。

当develop分支上的源码到达一个稳定的状态时,就可以发布版本。所有develop上的变更都应该以某种方式合并回master分支,并且使用发布版本号打上标签。稍后我们会讨论具体操作细节。

因此,每次有变化被合并到master分支时,根据定义这就是一次新的产品版本发布。我们趋向于严格遵守该规范,所以理论上来说,每次master有提交时,我们都可以使用一个Git钩子(hook)脚本来自动构建并部署软件至产品环境服务器。

支持性分支

紧接着主要分支master和develop,我们的开发模型使用多种支持性分支来帮助团队成员间实现并行开发、追踪产品特性、准备产品版本发布、以及快速修复产品问题。与主要分支不同的是,这些分支的寿命是有限的,它们最终都会被删除。

我们会用到的分支有这几类:

  • 特性分支(feature branch)
  • 发布分支(release branch)
  • 热补丁分支(hotfix branch)

上述每种分支都有特定的用途,它们各自关于源自什么分支、合并回什么分支,都有严格的规定。稍后我们逐个进行介绍。

从技术角度来说,这些分支一点都不“特殊”。分支按照我们对其的使用方式进行分类。技术角度它们都一样是平常的Git分支。

特性分支

可能的分支来源:develop

必须合并回:develop

分支命令约定:任何除master, develop, release-*, 或 hotfix-*以外的名称

特性分支(有时也被称作topic分支)是用来为下一发布版本开发新特性。当开始开发一个特性的时候,该特性会成为哪个发布版本的一部分,往往还不知道。特性分支的重点是,只要特性还在开发,该分支就会一直存在,不过它最终会被合并回develop分支(将该特性加入到发布版本中),或者被丢弃(如果试验的结果令人失望)。

特性分支往往只存在于开发者的仓库中,而不会出现在origin。

创建一个特性分支

开始开发新特性的时候,从develop分支创建特性分支。

$ git checkout -b myfeature developSwitch to a new branch “myfeature”

合并完成的特性回develop

完成的特性应该被合并回develop分支以将特性加入到下一个发布版本中:

git checkout developSwitch to branch ‘develop’$ git merge –no-ff myfeatureUpdating ea1b82a..05e9557(Summary of changes)$ git branch -d myfeatureDeleted branch myfeature (was 05e9557).$ git push origin develop

上述代码中的–no-ff标记会使合并永远创建一个新的commit对象,即使该合并能以fast-forward的方式进行。这么做可以避免丢失特性分支存在的历史信息,同时也能清晰的展现一组commit一起构成一个特性。比较下面的图:

Linux:一个成功的Git分支模型
Linux:一个成功的Git分支模型

在第2张图中,已经无法一眼从Git历史中看到哪些commit对象构成了一个特性——你需要阅读日志以获得该信息。在这种情况下,回退(revert)整个特性(一组commit)就会比较麻烦,而如果使用了–no-diff就会简单很多。

是的,这么做会造成一些(空的)commit对象,但这么做是利大于弊的。

可惜的是,我没能找到方法让–no-diff成为默认的git merge行为参数,但其实应该这么做。

发布分支

可能的分支来源:develop

必须合并回:develop和master

分支命名约定:release-*

发布分支为准备新的产品版本发布做支持。它允许你在最后时刻检查所有的细节。此外,它还允许你修复小bug以及准备版本发布的元数据(例如版本号,构建日期等等)。在发布分支做这些事情之后,develop分支就会显得比较干净,也方便为下一大版本发布接受特性。

从develop分支创建发布分支的时间通常是develop分支(差不多)能反映新版本所期望状态的时候。至少说,这是时候版本发布所计划的特性都已经合并回了develop分支。而未来其它版本发布计划的特性则不应该合并,它们必须等到当前的版本分支创建好之后才能合并。

正是在发布分支创建的时候,对应的版本发布才获得一个版本号——不能更早。在该时刻之前,develop分支反映的是“下一版本”的相关变更,但不知道这“下一版本”到底会成为0.3还是1.0,直到发布分支被创建。版本号是在发布分支创建时,基于项目版本号规则确定的。

创建一个发布分支

发布分支从develop分支创建。例如,假设1.1.5是当前的产品版本,同时我们即将发布下个版本。develop分支的状态已经是准备好“下一版本”发布了,我们也决定下个版本是1.2(而不是1.1.6或者2.0)。因此我们创建发布分支,并且为其赋予一个能体现新版本号的名称:

$ git checkout -b releases-1.2 developSwitched to a new branch “release-1.2”$ ./bump-version.sh 1.2Files modified successfully. version bumped to 1.2.$ git commit -a -m “Bumped version number to 1.2”[release-1.2 74d9424] Bumped version number to 1.21 files changed. 1 insertions(+). 1 deletions(-)

创建新分支并转到该分支之后,我们设定版本号。这里的bump-version.sh是一个虚构的shell脚本,它修改一些本地工作区的文件以体现新的版本号。(当然这也可以手动完成——这里只是说要有一些文件变更)接着,提交新版本号。

新的发布分支可能存在一段时间,直到该版本明确对外交付。这段时间内,该分支上可能会有一些bug的修复(而不是在develop分支上)。在该分支上添加新特性是严格禁止的。新特性必须合并到develop分支,然后等待下一个版本发布。

结束一个发布分支

当发布分支达到一个可以正式发布的状态时,我们就需要执行一些操作。首先,将发布分支合并至master(记住,我们之前定义master分支上的每一个commit都对应一个新版本)。接着,master分支上的commit必须被打上标签(tag),以方便将来寻找历史版本。最后,发布分支上的变更需要合并回develop,这样将来的版本也能包含相关的bug修复。

前两步在Git中的操作:

$ git checkout masterSwitched to branch ‘master’$ git merge –no-ff release-1.2Merge made by recursive.(Summary of changes)$ git tag -a 1.2

现在版本发布完成了,而且为未来的查阅提供了标签。

提醒:你可能同时也会想要用 -s 或者 -u 来对标签进行签名。

为了能保留发布分支上的变更,我们还需要将分支合并回develop。在Git中:

$ git checkout developSwitched to branch ‘develop’$ git merge –no-ff release-1.2Merge made by recursive.(Summary of changes)

这一操作可能会导致合并冲突(可能性还很大,因为我们改变了版本号)。如果发现,则修复之并提交。

现在工作才算真正完成了,最后一步是删除发布分支,因为我们已不再需要它:

$ git branch -d release-1.2Deleted branch release-1.2 (was ff452fe).

热补丁分支

Linux:一个成功的Git分支模型
Linux:一个成功的Git分支模型

可能的分支来源:master

必须合并回:develop和master

分支命名约定:hotfix-*

热补丁分支和发布分支十分类似,它的目的也是发布一个新的产品版本,尽管是不在计划中的版本发布。当产品版本发现未预期的问题的时候,就需要理解着手处理,这个时候就要用到热补丁分支。当产品版本的重大bug需要立即解决的时候,我们从对应版本的标签创建出一个热补丁分支。

使用热补丁分支的主要作用是(develop分支上的)团队成员可以继续工作,而另外的人可以在热补丁分支上进行快速的产品bug修复。

创建一个热补丁分支

热补丁分支从master分支创建。例如,假设1.2是当前正在被使用的产品版本,由于一个严重的bug,产品引起了很多问题。同时,develop分支还处于不稳定状态,无法发布新的版本。这时我们可以创建一个热补丁分支,并在该分支上修复问题:

$ git checkout -b hotfix-1.2.1 masterSwitched to a new branch “hotfix-1.2.1″$ ./bump-version.sh 1.2.1Files modified successfully, version bumped to 1.2.1.$ git commit -a -m “Bumped version number to 1.2.1″[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.11 files changed, 1 insertions(+), 1 deletions(-)

不要忘了在创建热补丁分之后设定一个新的版本号!

然后,修复bug并使用一个或者多个单独的commit提交。

$ git commit -m “Fixed severe production problem”[hotfix-1.2.1 abbe5d6] Fixed severe production problem5 files changed, 32 insertions(+), 17 deletions(-)

结束一个热补丁分支

修复完成后,热补丁分支需要合并回master,但同时它还需要被合并回develop,这样相关的修复代码才会同时被包含在下个版本中。这与我们完成发布分支很类似。

首先,更新master分支并打上标签。

$ git checkout masterSwitched to branch ‘master’$ git merge –no-ff hotfix-1.2.1Merge made by recursive.(Summary of changes)$ git tag -a 1.2.1

提醒:你可能同时也会想要用 -s 或者 -u 来对标签进行签名。

接着,将修复代码合并到develop:

$ git checkout developSwitched to branch ‘develop’$ git merge –no-ff hotfix-1.2.1Merge made by recursive.(Summary of changes)

这里还有个例外情况,如果这个时候有发布分支存在,热补丁分支的变更则应该合并至发布分支,而不是develop。将热补丁合并到发布分支,也意味着当发布分支结束的时候,变更最终会被合并到develop。(如果develop上的开发工作急需热补丁并无法等待发布分支完成,这时你也已经可以安全地将热补丁合并到develop分支。)

最后,删除临时的热补丁分支:

$ git branch -d hotfix-1.2.1Deleted branch hotfix-1.2.1 (was abbe5d6).

小结

虽然这个分支模型中没有什么特别新鲜的东西,但本文起始处的“全景图”事实上在我们的项目中起到了非常大的作用。它帮助建立了优雅的,易理解的概念模型,使得团队成员能够快速建立并理解一个公用的分支和发布过程。

我同时也提供了一个该图对应的高质量PDF版本。你可以打印出来并挂在墙上,随时参考。

Linux:选择一个日志文件系统

通俗的说,计算机的文件系统就是一个像磁盘这样的存储设备如何存储、检索以及管理文件的方式。文件系统需要记录的不仅是文件本身每一个字节,及其在存储设备上的位置,还要存储文件相关的信息。比如,也要存储每个文件的名字、文件存放的层次结构(目录),还有文件的元数据,像文件的修改时间等。

虽然在linux上可以使用许多不同的文件系统,但是绝大多数用户很少去关注使用哪一个,它们通常都被忽视了。选择使用什么样的文件系统视情况而定,要考虑的相关因素包括兼容性、性能、还原能力、使用的介质、存储介质的大小和数量、特性,还有安全考虑等。

日志文件系统是一种特殊类型的文件系统,它记录一个被称为日志的追踪文件。日志可以让系统能够修复在异常终止时出现的不一致情况。它通过追踪之前提交到主文件系统的更改。在计算机非正常关机的情况下,任何数据丢失都可被重建。因此,这种文件系统不太可能遭受破坏,并且可以使文件系统快速恢复工作。

为了深入了解日志文件系统的使用,我们整理出一个首选列表。

现在,让我们讨论一下手边的日志文件系统。

  • ext3 许多流行的Linux发行版默认的文件系统
  • XFS 为高性能和大文件设计的文件系统
  • Btrfs 校检copy-on-write(写入时复制)文件系统
  • ext4 由ext3增加许多显著特性和扩展进化而来的文件系统

ext3

ext3,或者叫第三扩展文件系统,它是一个通常被用于Linux内核的日志文件系统。日志功能意味着不用对fsck等待过久和担心损坏元数据。

它是包括Debian在内的许多流行的Linux发行版的默认文件系统。ext3 最初发布时间是1999年9月。

Ext3 默认保留了%5的可用空间,主要的原因是保证超级用户(root)甚至在文件系统已满的情况下能够登录。

ext3

0.9.18

价格 : 免费下载

大小 : 13.8KB

协议 : GNU GPL

开发者 : Stephen Tweedie

网站 : ftp://ftp.kernel.org/

支持 : FAQ, 邮件列表

特性包括:

  • 简单,健壮,可扩展
  • 内核和用户空间的代码已广泛测试
  • 在ext2上增加的特性
    • 日志 :提高可靠性,并且异常关机后不需要检查文件系统
    • 各种日志模式:日志,有序,写回
    • 文件系统被重新挂载时自动恢复
    • 所有的VFS操作(包括配额)都会记录到日志
    • 添加数据的更新也被记录日志
    • 在线文件系统的扩容
    • 在大目录上使用Htree索引
  • 扩展属性块和大量的inode
  • 支持在线文件系统的大小调整
  • 哈希索引的目录
  • 文件/设备都支持日志
  • 目录项中记录文件类型
  • 日志恢复依赖
  • 减少块组的备份
  • 减少超级块的备份
  • 文件可大于2GiB
  • 易于自ext2迁移文件系统,而不需要备份,恢复和格式化分区
  • UNIX权限, ACL和其它的安全属性

XFS

XFS 是一个64位的、高性能的支持文件系统一致性的日志文件系统,由Silicon Graphics公司所开发。是IRIX5.3和以后版本的默认文件系统,后来又移植到Linux内核。

XFS结合先进的日志技术和完整的64位寻址还有可扩展的数据结构和算法。

XFS从Linux 2.4开始一直留在官方Linux内核内核树。所有现代的Linux发行版都支持XFS。

XFS

价格 : 免费下载

协议 : GNU GPL v2

开发者 : Silicon Graphics Inc.

网站 : http://oss.sgi.com/projects/xfs/

支持 : http://XFS.org, FAQ, 邮件列表

特性包括:

  • 快速恢复 – 意外中断后,重新启动非常快,不受管理文件的数量影响
  • 快速事务 – 提供优越的日志同时尽量减少日志在读取和写入数据事务时对性能的影响
  • 大规模的可扩展性 – 支持最大文件系统为8 EiB – 1(1024PiB – 1)
  • 有效分配 – 实现极其复杂的空间管理技术
  • 出色的带宽占用 – 能够提供非常接近底层的硬件本身I/O性能
  • 提供日志文件系统元数据,在实际磁盘块更新前首先写入一个连续的日志来更新文件系统
  • 支持文件系统的挂载卷增长,使文件系统的“冻结”和“解冻”操作支持卷级快照,并提供了一个在线的文件碎片整理工具
  • 实现完整的日志扩展属性
  • 支持ACL语义和在POSIX 1003.1e标准草案的接口描述
  • 兼容NFS
  • 使用开源的Samba服务导出XFS文件系统到Microsoft Windows系统
  • 数据管理API(DMAPI/XDSM的)允许实施不修改内核的分层存储管理软件
  • 支持“实时子卷”的概念 – 一个独立的区域只有文件数据存储的磁盘空间

Btrfs

Btrfs(B-树文件系统)是一个Linux写入时复制(Copy on Write)文件系统。写入时复制(COW)是维护数据集合的副本和使用相同数据处理多个任务时管理资源的优化技术(译者注:用于保留某些数据的原始副本的一种技术。在写入操作修改数据时,会复制数据的原始副本)。

这个日志文件系统的目的是给Linux带来更高效的存储管理和更好的数据完整性功能。

Btrfs很好的实现了高级特性,同时保持了容错性、可扩展性和可靠性。这个文件系统自2007年以来一直在开发,它的基础代码现在已经到达了一个成熟的水平,其磁盘格式应该不会改变。基础代码还在密集的开发中。

Btrfs 首次亮相在Linux2.6.29发布时。Btrfs可以处理多达264个字节,少了几百特殊项。

Btrfs

价格 : 免费下载

协议 : GNU GPL

开发者 : Oracle Corporation

网站 : http://btrfs.wiki.kernel.org

支持 : Btrfs初学者指南, 我如何使用Btrfs先进的功能, Btrfs文件系统入门

选择评论: Josef Bacik

特性包括:

  • 可扩展,64位文件系统能够跨越卷提供文件,文件系统最大可达16EiB
  • 集成了卷管理
  • 在线文件系统的碎片整理 – 可用在卷挂载或在线时整理卷碎片
  • 脱机文件系统检查
  • 在线卷增长和收缩
  • 在线块设备的添加和删除
  • 在线平衡(移动对象在块设备之间来平衡负载)
  • 使用B-树结构来存储数据类型和存储在磁盘上的信息点
  • 在线数据擦除发现错误和自动修复文件冗余副本
  • 延迟分配以便更好的磁盘分配
    • 空间高效的打包小文件
    • 空间高效的索引目录
  • 子卷(单独的内部文件系统root)
  • 透明压缩(zlib和LZO)
  • 容易使用的可写快照,只读快照。在快照目录下,快照被看做一般的目录
  • 发送/接收(以二进制流保存快照之间的差别)
  • 数据一致性:
    • 内置RAID支持(RAID0,RAID1,RAID5,RAID6和RAID10) 。可用于数据擦除,特别是RAID 1
    • 故障隔离和校验和算法 – 从用户数据分开存储的元数据实现故障隔离
    • 校验数据和元数据(CRC- 32C) ,可以选择关闭数据校验和
    • 即使在一个单一的设备,元数据被冗余存储在两个位置
    • 重建次数
    • 加密
  • 文件克隆(在单个文件写入时复制,或字节范围)
  • 原地迁移ext3/4到BTRFS(支持回滚)
  • 文件系统seeding
  • SSD (闪存)识别(TRIM /丢弃报告重用的空闲块)和优化
  • 文件条带化,文件镜像化,文件条带化+镜像化,单双奇偶校验实现条带化
  • 每个子卷分层配额
  • 基于扩展的文件存储
  • 提供了用户最低限度的调整,以防范滥用

ext4

ext4,也叫做第四扩展文件系统,是一个由ext3演变而来的Linux日志文件系统。它在Linux内核2.6.28很稳定。

ext4的增加了许多重要特性 : 一个单一的连续块的描述符,而不是传统的ext2和ext3所使用的块映射体系。这是一个表示大文件的有效方式,更高效的CPU 利用和更少的元数据的输入输出(I/O)。这也使文件系统检查更快,更加有利的于文件系统规模的增长。

ext4

价格 : 免费下载

协议 : GNU GPL

开发者 :Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts’o, Eric Sandeen, others

网站 : http://ext4.wiki.kernel.org

支持 : Wiki, FAQ, 内核新手

特性包括:

  • 扩展属性块和大量的inode
  • 基于扩展的磁盘格式
  • 在线碎片整理
  • 在线文件系统的大小预先调整
  • 哈希索引目录
  • 文件/设备都记录日志
  • 目录项中记录文件类型
  • 使用日志恢复
  • 文件分配扩展格式
  • 支持超过232个文件系统块
  • 灵活的块组元数据的位置
  • 减少块组的备份
  • 减少超级块的备份
  • 文件可大于2GiB
  • 组描述符校验和稀疏inode表
  • 超过32000个子目录
  • inode特性
    • 更多的inode
    • inode的预订
    • 纳秒级时间戳和创建时间
  • 文件可大于2TiB
  • 日志校验 – 可以校验日志数据来判断日志块是否发生故障或损坏
  • 可以选择关闭日志
  • 持久预分配
  • 向后兼容ext2和ext3
  • 分配方案:
    • 持久预分配
    • 延迟分配
    • 多块分配
    • 条块化感知分配
  • 扩展属性
  • 配额日志
  • 实现 discard/TRIM(译者注:任务相关教学法)

 

via: http://www.linuxlinks.com/article/20130927180305497/JournalingFileSystems.html

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

译者:flsf 校对:Carolinewxy

来源:https://linux.cn/article-2067-1.html

Linux:简单5步隐藏Ubuntu13.04 Unity 启动器

最近这几天,我在研究和学习conky。当做它的截屏时,我被unity启动器频繁遮挡住屏幕截图难住了。突然间我问自己,有没有一种办法可以默认隐藏unity启动器(只在需要的时候才出现)?我google了一圈,发现通过系统设置选项可以很容易做到。因此,今天我不会讨论一个特定的应用而是来讨论一个有用的方法,一定会对其他Ubuntu用户很有帮助。

unity-launcher-main

我的Ubuntu桌面上的Unity启动器截图

提示 – 文章中所有的操作都在Ubuntu 13.04测试通过

Ubuntu 13.04隐藏Unity启动器步骤

步骤:

第1步

在主菜单点击 System Settings(系统设定) 选项。

unity-launcher-1 

第2步

在系统设定中,点击 Appearance(外观) 选项。

unity-launcher-2

第3步

现在,进入标题为’Behavior(行为)’的标签中。

unity-launcher-3

第4步

打开右上方的单选按钮。

unity-launcher-5

unity-launcher-4

第5步

在完成上一步后,unity启动器已经默认隐藏。它只有在鼠标接触到屏幕最左边时才会出现。调整启动器的灵敏度。根据你的需求调整滑动条(如下图所示):

unity-launcher-5-1

这是当我完成所有步骤(上面所列)后的桌面截图.

unity-launcher-7

我的Ubuntu桌面上的Unity启动器截图

重点

我也想把unity启动器放在桌面底部(就像Apple的Mac那样),但是从Ubuntu 12.04开始就无法改变启动器的位置。像许多其他用户一样,我也有点失望。不管怎么说,如果你想了解更多,你可以读Ubuntu论坛上的详细讨论.

如果你知道任何在Ubuntu 13.04上改变unity启动器位置的非官方途径(一个应用或者插件),请分享给我们。

 

via: http://mylinuxbook.com/hide-unity-launcher-ubuntu-13-04/

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

译者:flsf 校对:Caroline

来源:https://linux.cn/article-2069-1.html

Linux:最大的Redis集群:新浪Redis集群揭秘

前言

Tape is Dead,Disk is Tape,Flash is Disk,RAM Locality is King.       — Jim Gray

Redis不是比较成熟的Memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充。现在有越来越多的应用也在纷纷基于Redis做架构的改造。

可以简单公布一下Redis平台实际情况

2200+亿 commands/day   5000亿Read/day   500亿Write/day

18TB+ Memory

500+ Servers in 6 IDC    2000+instances

应该是国内外比较大的Redis使用平台,今天主要从应用角度谈谈Redis服务平台。

Redis使用场景

1.Counting(计数)

计数的应用在另外一篇文章里较详细的描述,计数场景的优化 http://www.xdata.me/?p=262 这里就不坳述了。

可以预见的是,有很多同学认为把计数全部存在内存中成本非常高,我在这里用个图表来表示下我的观点:

Linux:最大的Redis集群:新浪Redis集群揭秘
Linux:最大的Redis集群:新浪Redis集群揭秘

很多情况大家都会设想纯使用内存的方案会很有很高成本,但实际情况往往会有一些不一样:

1.COST,对于有一定吞吐需求的应用来说,肯定会单独申请DB、Cache资源,很多担心DB写入性能的同学还会主动将DB更新记入异步队列,而这三块的资源的利用率一般都不会太高。资源算下来,你惊异的发现:反而纯内存的方案会更精简!

2.KISS原则,这对于开发是非常友好的,我只需要建立一套连接池,不用担心数据一致性的维护,不用维护异步队列。

3.Cache穿透风险,如果后端使用DB,肯定不会提供很高的吞吐能力,cache宕机如果没有妥善处理,那就悲剧了。

4.大多数的起始存储需求,容量较小。

2.Reverse cache(反向cache)

面对微博常常出现的热点,如最近出现了较为火爆的短链,短时间有数以万记的人点击、跳转,而这里会常常涌现一些需求,比如我们向快速在跳转时判定用户等级,是否有一些账号绑定,性别爱好什么的,已给其展示不同的内容或者信息。

普通采用Memcache+Mysql的解决方案,当调用id合法的情况下,可支撑较大的吞吐。但当调用id不可控,有较多垃圾用户调用时,由于memcache未有命中,会大量的穿透至Mysql服务器,瞬间造成连接数疯长,整体吞吐量降低,响应时间变慢。

这里我们可以用redis记录全量的用户判定信息,如string key:uid int:type,做一次反向的cache,当用户在redis快速获取自己等级等信息后,再去Mc+Mysql层去获取全量信息。如图:

Linux:最大的Redis集群:新浪Redis集群揭秘
Linux:最大的Redis集群:新浪Redis集群揭秘

当然这也不是最优化的场景,如用Redis做bloomfilter,可能更加省用内存。

3.Top 10 list

产品运营总会让你展示最近、最热、点击率最高、活跃度最高等等条件的top list。很多更新较频繁的列表如果使用MC+MySQL维护的话缓存失效的可能性会比较大,鉴于占用内存较小的情况,使用Redis做存储也是相当不错的。

4.Last Index

用户最近访问记录也是redis list的很好应用场景,lpush lpop自动过期老的登陆记录,对于开发来说还是非常友好的。

5.Relation List/Message Queue

这里把两个功能放在最后,因为这两个功能在现实问题当中遇到了一些困难,但在一定阶段也确实解决了我们很多的问题,故在这里只做说明。

Pinterest使用Redis存储社交graph信息:

http://blog.gopivotal.com/case-studies-2/using-redis-at-pinterest-for-billions-of-relationships

Message Queue就是通过list的lpop及lpush接口进行队列的写入和消费,由于本身性能较好也能解决大部分问题。

6.Fast transaction with Lua

Redis 的Lua的功能扩展实际给Redis带来了更多的应用场景,你可以编写若干command组合作为一个小型的非阻塞事务或者更新逻辑,如:在收到message推送时,同时1.给自己的增加一个未读的对话 2.给自己的私信增加一个未读消息 3.最后给发送人回执一个完成推送消息,这一层逻辑完全可以在Redis Server端实现。

但是,需要注意的是Redis会将lua script的全部内容记录在aof和传送给slave,这也将是对磁盘,网卡一个不小的开销。

7.Instead of Memcache

很多测试和应用均已证明,

1.在性能方面Redis并没有落后Memcache多少,而单线程的模型给Redis反而带来了很强的扩展性。

2.在很多场景下,Redis对同一份数据的内存开销是小于Memcache的slab分配的。

3.Redis提供的数据同步功能,其实是对cache的一个强有力功能扩展。 

Redis使用的重要点

1.rdb/aof Backup!

我们线上的Redis 95%以上是承担后端存储功能的,我们不仅用作cache,而更为一种k-v存储,他完全替代了后端的存储服务(MySQL),故其数据是非常重要的,如果出现数据污染和丢失,误操作等情况,将是难以恢复的。所以备份是非常必要的!为此,我们有共享的hdfs资源作为我们的备份池,希望能随时可以还原业务所需数据。

2.Small item & Small instance!

由于Redis单线程(严格意义上不是单线程,但认为对request的处理是单线程的)的模型,大的数据结构list,sorted set,hash set的批量处理就意为着其他请求的等待,故使用Redis的复杂数据结构一定要控制其单key-struct的大小。

另外,Redis单实例的内存容量也应该有严格的限制。单实例内存容量较大后,直接带来的问题就是故障恢复或者Rebuild从库的时候时间较长,而更糟糕的是,Redis rewrite aof和save rdb时,将会带来非常大且长的系统压力,并占用额外内存,很可能导致系统内存不足等严重影响性能的线上故障。我们线上96G/128G内存服务器不建议单实例容量大于20/30G。

3.Been Available!

业界资料和使用比较多的是Redis sentinel(哨兵)

http://www.huangz.me/en/latest/storage/redis_code_analysis/sentinel.html

http://qiita.com/wellflat/items/8935016fdee25d4866d9

2000行C实现了服务器状态检测,自动故障转移等功能。

但由于自身实际架构往往会复杂,或者考虑的角度比较多,为此@许琦eryk 和我一同做了hypnos项目。

hypnos是神话中的睡神,字面意思也是希望我们工程师无需在休息时间处理任何故障。:-)

其工作原理示意如下:

Linux:最大的Redis集群:新浪Redis集群揭秘
Linux:最大的Redis集群:新浪Redis集群揭秘

Talk is cheap, show me your code! 稍后将单独写篇博客细致讲下Hypnos的实现。

4.In Memory or not?

发现一种情况,开发在沟通后端资源设计的时候,常常因为习惯使用和错误了解产品定位等原因,而忽视了对真实使用用户的评估。也许这是一份历史数据,只有最近一天的数据才有人进行访问,而把历史数据的容量和最近一天请求量都抛给内存类的存储现实是非常不合理的。

所以当你在究竟使用什么样的数据结构存储的时候,请务必先进行成本衡量,有多少数据是需要存储在内存中的?有多少数据是对用户真正有意义的。因为这其实对后端资源的设计是至关重要的,1G的数据容量和1T的数据容量对于设计思路是完全不一样的

Plans in future?

1.slave sync改造

全部改造线上master-slave数据同步机制,这一点我们借鉴了MySQL Replication的思路,使用rdb+aof+pos作为数据同步的依据,这里简要说明为什么官方提供的psync没有很好的满足我们的需求:

假设A有两个从库B及C,及 A `— B&C,这时我们发现master A服务器有宕机隐患需要重启或者A节点直接宕机,需要切换B为新的主库,如果A、B、C不共享rdb及aof信息,C在作为B的从库时,仍会清除自身数据,因为C节点只记录了和A节点的同步状况。

故我们需要有一种将A`–B&C 结构切换切换为A`–B`–C结构的同步机制,psync虽然支持断点续传,但仍无法支持master故障的平滑切换。

实际上 我们已经在我们定制的Redis计数服务上使用了如上功能的同步,效果非常好,解决了运维负担,但仍需向所有Redis服务推广,如果可能我们也会向官方Redis提出相关sync slave的改进。

2.更适合redis的name-system Or proxy

细心的同学发现我们除了使用DNS作为命名系统,也在zookeeper中有一份记录,为什么不让用户直接访问一个系统,zk或者DNS选择其一呢?

其实还是很简单,命名系统是个非常重要的组件,而dns是一套比较完善的命名系统,我们为此做了很多改进和试错,zk的实现还是相对复杂,我们还没有较强的把控粒度。我们也在思考用什么做命名系统更符合我们需求。

3.后端数据存储

大内存的使用肯定是一个重要的成本优化方向,flash盘及分布式的存储也在我们未来计划之中。

 

via: http://www.xdata.me/?p=301 

Linux:在Ubuntu中安装Cinnamon 1.8

之前的一些文章中我们已经讨论过CinnamonNemo文件管理器是什么,但是如果你仍然不了解,请读下文:

Cinnamon是由Linux Mint团队最初为Linux Mint开发的一款桌面环境。它提供给用户一个更舒适和现代化的体验。

如果你和我一样很喜欢Unity(Ubuntu默认桌面)。我建议你尝试一下Cinnamon。安装Cinnamon不意味着你淘汰Unity,绝不是。

最新版本的Cinnamon 1.8在Ubuntu仓库尚未公布,因此我们要感谢PPA。

Cinnamon1.8包含了这些新功能,包括 Screensaver(屏幕保护程序),Cinnamon Control Center(Cinnamon控制中心)等等.

安装Cinnamon

打开终端输入以下命令:

$ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable  

$ sudo apt-get update  

$ sudo apt-get install cinnamon nemo

安装Cinnamon和Nemo文件管理器成功后,注销或重启你的系统。

点击你 用户名右上角Ubuntu 图标。你应该能看到 Cinnamon 和其他桌面环境。

选择 Cinnamon 并登录。

你就有了这样一个桌面。

 

Linux:在Ubuntu中安装Cinnamon 1.8
Linux:在Ubuntu中安装Cinnamon 1.8

查看已打开菜单的Cinnamon 1.8桌面

 

via: http://www.unixmen.com/install-cinnamon-1-8-ubuntu-13-04/

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

译者:Vito 校对:Caroline

来源:https://linux.cn/article-2087-1.html

Linux:爱的初体验 —— Semplice Linux 5

Semplice 是一个基于Debian GNU/Linux项目的Linux发行版,基于Debian不稳定分支构建。开发者使用不稳定仓库中的软件包,并通过一个自定义图形界面安装程序将这些软件包加以整合。项目官网介绍说该Semplice不但支持加密LVM卷,而且整合了Openbox窗口管理器,并始终专注于更加快速、轻便的资源,“简约不简单”。该发行版目前支持32位、64位ISO镜像下载,体积大概620MB左右。

从LiveCD启动后,可以看到一个图形界面窗口,它包括3个标签页,分别用来设置键盘布局、系统语言和所在时区。确认上述设置正确无误后,关闭窗口,就可以看到Openbox界面那明亮的蓝色背景了。在显示器底部我们发现了一个任务切换界面和一个系统托盘。点击鼠标右键可以呼出程序菜单,菜单顶部其中一项就是系统安装程序的入口。

Linux:爱的初体验 —— Semplice Linux 5
Linux:爱的初体验 —— Semplice Linux 5

Semplice Linux 5 —— 访问项目官网(截图大小398KB,分辨率1280×960)

Semplice的系统安装程序同样为图形化界面。程序界面友好,引导步骤也比较清晰。首先,程序会让我们确认首选的语言、键盘和时区,然后会询问是否要检测安装程序有无更新,我很负责任的选择了“是”,它竟然真的联网找到了自己的新版本,于是,我又下载更新,安装程序自动重启执行更新(……作者你是话唠吗?)接下来,程序要求我们创建一个用户账户,同时,提供了是否激活root账户的选项。Semplice默认是将第一个用户账户作为sudo管理员同时禁用root账户的。尽管如此,我们仍然可以激活root账户再给它设置一个密码。然后,来到磁盘分区界面,程序自动帮我们完成了一套分区建议,当然,你也可以选择自己手动分区。

这里我发现手动分区会有点尴尬,主要是由于屏幕的布局。另外,我还发现当我尝试建立LVM卷的时候,程序却并不允许,一个对话框会让我输入卷的名称,但是它的“OK”按钮却无法点击,着实让人纳闷。文件系统还是传统的几个,ext2/3/4和ReiserFS,分区之后,它会询问是否要安装GRUB,以上步骤都完成后,最后一步需要我们选择是否开启一些功能与服务,然后就开始正式安装了。安装的同时,安装程序会询问我们是否需要一些额外的工具,例如蓝牙支持、打印机、生产套件、桌面特效、Web应用以及专有软件包,如果你选择需要,程序就会自动将它们拷贝至本地磁盘。整个安装过程只需要几分钟,安装完毕后,需要重启电脑。

除了基本所需的文本编辑器、计算器、图像浏览、文件管理与档案管理外,Semplice Linux发行版还预装了很多有用的软件,例如Chromium浏览器、Claws Mail邮件客户端、XChat IRC以及Pidgin等聊天软件。另外,下载软件有gFTP和uGet,文档处理有GNU Paint、AbiWord、Gnumeric,娱乐播放有MPlayer、Exaile,刻录工具有xfburn,游戏子菜单下还有一个Tetris。

程序菜单中还有许多有用的配置工具,通过这些工具用户可以对网络设置、系统服务、用户账户等进行轻松配置。同时,系统还提供了程序对Openbox窗口管理器进行管理。在Web应用部分,用户可以以最简方式打开一个web浏览器,用来访问Twitter和Facebook。系统还提供了前往Semplice项目官网的快捷方式。通过深度挖掘,我发现Semplice具有一整套完备的多媒体编码解码器和Adobe Flash插件。系统默认采用的是安全shell服务(OpenSSH)。我还发现系统预装了GNU编译工具集。而在内核方面,Semplice采用3.10版本,能够保证以上各个工具软件正常运行。

Linux:爱的初体验 —— Semplice Linux 5
Linux:爱的初体验 —— Semplice Linux 5

Semplice Linux 5 —— 运行各种桌面程序(截图大小241KB,分辨率1280×960)

使用Semplice工作的过程中我也遇到了一些小问题。比如,当我在虚拟终端运行“top”进程监视器的时候,窗口顶端的系统统计信息会无故消失,稍微折腾了一番,我发现原来是因为虚拟终端的颜色配置导致了文字不可见。但是当我修改主题颜色一段时间以后,下一次我再打开一个终端,主题颜色又回到了以前的默认值。如此反复,每次关闭终端后,我的设置总会丢失。丢失设置的另一个表现是,之前安装过程中配置好的一些服务也失效了,包括蓝牙、打印机支持、Web应用和其他一些项目。

当时我告诉安装程序不要安装蓝牙和打印软件,但是后来我在服务管理器里还是看到了它俩在活蹦乱跳地运行着。

第三个奇怪的问题是,当我尝试连接SSH服务的时候,总是被告知连接丢失被重置,很快我发现问题原因是由于系统根本就木有生成OpenSSH所需的主机密钥。当我手动生成这些密钥后,就可以使用安全Shell服务了。

新立德(Synaptic)作为通用软件包管理器负责Semplice发行版软件包的管理与更新。通常功能强大的软件包管理器难以兼顾漂亮的外观,但新立德做到了。它允许用户创建一系列行为动作,并且执行迅速,执行的同时还能显示详细的细节信息。Linux发行版一般会从一些不同的软件仓库获取软件,Semplice默认是从Debian的不稳定分支仓库以及其他一些Semplice的自定义仓库中获取。当我初次安装好Semplice的时候,就有137个更新等着我下载安装,体积总共达到了135MB。一周下来,我总共安装了超过200个更新,体积超过200MB。Semplice不愧是基于Debian的不稳定分支,不但更新速度超快,而且采用的都是快速更新的前沿软件包。

Linux:爱的初体验 —— Semplice Linux 5
Linux:爱的初体验 —— Semplice Linux 5

Semplice Linux 5 —— 管理软件包与服务(截图大小299KB,分辨率1280×960)

我尝试在我的台式机上运行Semplice Linux(CPU双核2.8GHz,内存6G,Radeon显卡,Realtek网卡),然而不管我如何修改内核参数,都无法在实体机上运行,但是在VirtualBox虚拟机上却运行的很好。在VirtualBox里,Semplice启动快速,反应灵敏而且整个测试过程都非常稳定。Semplice所需的配置内存相当低,只需要130MB。

整个Semplice体验过程一个词概括:还行(Okay)。这既不是认可也不是否定。总体上讲,Semplice表现还是不错的,它提供了很多优秀的软件,而且我认为它的安装程序比Debian的要漂亮,至少在桌面系统上如此。Semplice的管理员工具很实用,除此以外,通过访问Debian的软件仓库,它还提供了海量软件包供普通用户选用。该发行版紧跟前沿,不喜欢总是下载更新的用户可能会比较介意,但是同时这也意味着它为我们提供了不断尝试新鲜事物的机会。以上是好的方面。不好的方面,在我测试的过程中也出现了一些问题,例如,安装程序并未采纳我对系统服务的一些配置,我也无法使用加密LVM卷。

还有其他一些小问题,像虚拟终端丢失设置等等。另外,我始终禁不住会想,Semplice为何不用LXDE代替Openbox作为图形接口呢?我并不是对Openbox有什么偏见,但LXDE可以提供更美观、常见的图形接口,特别是对于新手用户,就好像在家里面对自己熟悉的环境一样。另一个问题是,Semplice无法在我的实体机上运行,也许我的情况是个案,反过来可能别人运行不了的系统我的电脑却可以运行,我也并不想以此对Semplice吹毛求疵,但是,其他Debian类的系统例如Ubuntu和Debian版的Mint,都可以在我的机子上流畅运行,因此,当发现Semplice运行不了时候,我当时还是有些惊讶的。最后一个问题,OpenSSH运行时,没有自动生成主机密钥,导致安全Shell连接丢失,虽说手动生成新的主机密钥只是小事一桩,但如果它启动的时候就能自动完成这些工作岂不是更好。

总结一下,对于Semplice,我“爱的初体验”看起来还是比较美好的,它为简约Debian做出了不少改进(至少对于台式机/笔记本用户),默认所选择的软件也都不错。尽管如此,它还是有一些毛边儿略显粗糙。也许这不算什么,因为没有什么能吓住我们Linux系统测试员,但我还是衷心希望不久的将来,Semplice的新版本能改善上面那些问题。

 

via: http://distrowatch.com/weekly.php?issue=20131007

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

译者:tinyeyeser 校对:wxy

来源:https://linux.cn/article-2089-1.html

Linux:用Python来SSH连接到你的机器

是时间写点python代码了。我爱自动化的东西,今天我将告诉大家怎么使用python通过ssh连接你的机器,并在上面运行命令。这并不难,但是用python来做也不是很简单,因为要用很多模块和库来完成这个任务。 你是不是很好奇本教程将会使用什么模块呢?

我们将使用Python中 pexpect 模块的 pxssh 类,它用于处理一些自动化的需求,比如ssh和ftp。想使你的系统管理生活尽可能的简单吗?那么,请关注本教程并且尝试尽可能多的学习吧。OK,OK,看我这里,下面我将给出关于pxssh的一些简单的描述。你也可以在python的交互shell导入pxssh 后,键入help(pxssh)以得到更多关于pxssh的信息。

pxssh介绍

pxssh 基于pexpect。它是pexpect.spawn的扩展类,专门用来建立SSH连接。我经常使用python的pxssh进行ssh连接。 pxssh 使用shell提示符从远程主机来同步输出。为了使这更牛x,它把shell提示符设置的比$或#还独特。这应该可以在大多数Borne/bash或csh shell上工作。

你可以在这里看到更多关于pxssh。

现在开始吧。

第一步,我们导入所有需要的东西,并且给机器详情分配变量,就像图解1.

 

Linux:用Python来SSH连接到你的机器
Linux:用Python来SSH连接到你的机器

图解 1

之后我们创建一个函数,使用pxssh创建并开始一个到ssh服务器的连接。

 

Linux:用Python来SSH连接到你的机器
Linux:用Python来SSH连接到你的机器

图解 2

请仔细学习我们是是怎么用try和except来处理错误的.在这里可以阅读更多关于python的错误处理.

下一步是什么?

下一步是在两个机器间的ssh连接建立之后,创建一个函数来给机器发送命令.

 

图解 3

 

Linux:用Python来SSH连接到你的机器
Linux:用Python来SSH连接到你的机器

图解 4

关闭文件并保存它. 现在它已经准备好可以运行了.

 

via: http://www.unixmen.com/use-python-ssh-machine/

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

译者:flsf 校对:jasminepeng

来源:https://linux.cn/article-2090-1.html

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

经过2周左右的测试,Arch Linux开发者们今天早些时候(10月7日)在稳定频道发布了GNOME3.10桌面环境,用户们终于可以升级他们已经使用了6个月之久的GNOME 3.8了。

作为其中一名用户,我非常高兴在我的Arch Linux机子上进行了一次纯粹的GNOME 3.10体验。同时,我可以非常骄傲的说,GNOME 3.10桌面环境运行得非常好,而且界面美观,就像期待中的一样棒!

首先我想提醒大家,早在上个月9月25号,GNOME项目组就已经宣告发布了3.10版的,这些天来,我一直对发布公告中介绍的新特性充满兴奋与期待。

如果你也正在使用Arch Linux与GNOME作为你的主要桌面环境,那么现在你只需要在终端中输入命令“sudo pacman -Syu”,就可以将GNOME更新至3.10版本。别忘了重启电脑后,更新才能生效哦~

这也是我使用Arch Linux操作系统以来经历的最大一次更新,下载了总共300MB左右的更新包,安装后体积超过了1.1GB。

 

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
 

上面的截图,就是之前报道中我们所期待的的新特性与新功能,我可以拍胸脯告诉你,它们运行起来感觉棒极了!

当我重启完电脑,我立刻就注意到了登录管理器的一个新效果,还有风格相统一的状态栏,看起来令人惊喜而且很好上手。在登录按钮旁边有一个像轮子一样的按钮,如果你有多个桌面环境,点击它可以在各个桌面环境之间进行切换。

我必须承认,桌面加载以后,我是稍有一点失望的,因为我已经习惯了酷拽炫的GNOME桌面环境,但我之前安装的GNOME扩展却不见了。一开始,我认为是更新进程使其失效了,但经过一阵研究后,我才意识到,是因为之前的扩展插件无法与GNOME 3.10相匹配。

因此,我打开火狐浏览器,来到GNOME扩展页面,更新升级了其中最重要的一部分,然后用第三方主题对我的GNOME进行了美化。没办法~我就是要我的GNOME够酷够拽够炫!

如果是单纯的升级到GNOME 3.10,默认并不会安装一起新发布的应用程序。我必须从Arch Linux的软件仓库中手动安装它们。不幸的是,我并没有看到那些传说中的GNOME应用软件,或许过几天他们才会添加进来。

 

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

 

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

 

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

 

Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
Linux:爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux

另一个有趣的东西是,我注意到当我在桌面点击右键的时候,出现了一个“打开终端”的新功能,如果你像我一样在工作中经常用到终端,你一定也会觉得这是一个非常方便的改进。

还等什么,赶快拿起电话订购吧……额不,赶快下载GNOME 3.10体验吧~

 

via: http://news.softpedia.com/news/First-Look-at-GNOME-3-10-on-Arch-Linux-389114.shtml

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

译者:tinyeyeser 校对:wxy

来源:https://linux.cn/article-2091-1.html

Linux:Ubuntu下的三个好用的CD/DVD刻录工具

大约一周前,我的朋友向我寻求一些帮助,是关于在Ubuntu下有哪些好用的CD/DVD刻录软件。此人本是windows的用户,但是由于他使用的Windows软件花费太多了,超出他的承受能力,因此他开始计划尝试使用Linux系统了。为什么不用那些免费的软件来把你喜欢的电影和音乐刻录到光盘里呢?其实windows操作系统中也有免费的替代产品,但是既然我的朋友正在走向Linux世界,让我们给他一些信息,介绍三个可以在Ubuntu Linux系统下使用的免费CD/DVD刻录工具吧。

Brasero Disc Burner

Linux:Ubuntu下的三个好用的CD/DVD刻录工具
Linux:Ubuntu下的三个好用的CD/DVD刻录工具
 

相信每个Ubuntu的用户都很熟悉Brasero Disc Burner,因为它就是Ubuntu Linux系统自带的默认应用程序。Brasero是一个在GPL协议下发布的免费刻录程序。这个软件的优点是,它可以支持CD和DVD两种格式。Brasero可以支持单次写入数据DVD、任何类型的CD,并能使用所有的能够被本地安装的Gstreamer处理的音频文件(ogg,flac,mp3,…)。

功能特点

数据CD/DVD:

  • 支持对光盘内容的编辑 (在文件夹中删除/移动/重命名文件)
  • 支持实时刻录CD/DVD数据
  • 自动过滤掉不合适的文件 (隐藏文件,损坏/递归的链接文件,不符合Joliet标准的文件,…)
  • 支持多区段刻录
  • 支持Joliet扩展
  • 能将光盘镜像写入到硬盘中
  • 能够检查光盘文件完整性

音频 CD:

  • 写入CD-TEXT信息(通过Gstreamer自动寻找)
  • 支持编辑CD-TEXT信息
  • 能够多区段刻录音频CD
  • 能够使用所有可以被本地安装的Gstreamer所处理的音频文件(ogg,flac,mp3,…)。
  • 能够在已删除的文件夹内查询音频文件
  • 在曲目间完全无噪音的编辑

你可以在这里读到完整的功能列表。

K3b

 

Linux:Ubuntu下的三个好用的CD/DVD刻录工具
Linux:Ubuntu下的三个好用的CD/DVD刻录工具

K3b是另一个能够完成大多数CD/DVD刻录任务的免费工具。这个功能丰富的软件有一个使用便捷的用户界面,并且能够处理蓝光或者高清DVD光盘。

该软件包含三个基本部分:

项目:

项目可以从文件菜单中创建,并且可以放入待刻录的数据

工具:

工具菜单内提供各种工具,比如CD复制或者DVD格式化。

根据不同任务提供相关的媒体工具:

当点击代表CD/DVD的驱动器图标时,K3b会展示出相关内容,并允许做一些更进一步的操作。比如翻录音频CD。

K3b能够把MP3和OGG的文件自动重命名为“艺术家-标题.mp3”这样的通用格式,可以通过托拽来刻录数据CD或者ISO镜像,可以创建eMovix格式的CD/DVD,能够把音频光碟翻录成任意CD数据库所支持的格式……这些还只是K3b的部分功能。你可以从这里阅读更多有关它的功能的资料。

Xfburn

 

Linux:Ubuntu下的三个好用的CD/DVD刻录工具
Linux:Ubuntu下的三个好用的CD/DVD刻录工具

Xfburn是另一个能够刻录CD/DVD的工具,它可以很好的运行在Xfce桌面环境中。它非常快速,轻量级,能够刻录视频CD和DVD。如果你不想为了K3b而安装KDE桌面环境的话,它会是最好的选择。

提醒:Xfburn 目前还在开发中,因此一些功能尚不具备,但是对于刻录数据来讲,它已经是一个非常好的工具了。

 

via: http://www.unixmen.com/3-good-cd-dvd-burning-tools-ubuntu/

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

译者:markvv 校对:Caroline

来源:https://linux.cn/article-2094-1.html

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)

Jitsi 是Java编写的开源的、多平台的音频/视频网络电话和即时通信软件。它支持一些最流行的即时通信和电信协议,比如:SIP,Jabber/XMPP(这样就支持了Facebook和Google Talk),AIM,ICQ,MSN,Yahoo! Messenger。

Jitsi也被认为是Skype的一个很好的替代者。

 

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)

安装Jitsi

按下键盘上的Ctrl+Alt+T组合键打开终端。在打开的终端中输入如下命令下载Jitsi:

32位系统:

$ wget https://download.jitsi.org/jitsi/debian/jitsi_2.2-latest_i386.deb

64位系统:

$ wget https://download.jitsi.org/jitsi/debian/jitsi_2.2-latest_amd64.deb

对于32位和64位系统都运行如下命令:

$ sudo dpkg -i jitsi_2.2-latest_*.deb

以上命令将在你的系统中安装Jitsi 2.2,并且在你的系统中添加Jitsi的源库,以便以后能够更加容易的升级。

 

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)

Jitsi的部分功能:

支持的协议/网络

  • SIP XMPP (Jabber)
  • GoogleTalk (使用XMPP) Facebook (使用XMPP)
  • .NET Messenger Service (通常叫做MSN或者是Windows Live Messenger),Yahoo! Messenger,AIM ICQ

通话

支持的协议

SIP

XMPP

MSN

音频通话

支持

支持

由于项目终止而没有计划

视频通话

支持

支持

桌面流

支持

支持

桌面共享

支持

支持

音频电话会议

支持

支持

音频级别显示

支持

支持

通话录音

支持

支持

指定转接

支持

支持

电话盲转

支持

支持

通过SDES/SRTP和ZRTP实现通话加密

支持

支持

通话静音

支持

支持

通话保持

支持

支持

支持ICE

正在进行

支持

支持TURN

正在进行

支持

使用SILK,G.722和Speex的宽带音频

支持

支持

噪声抑制

支持

支持

回声消除

支持

支持

即时通信

支持的协议

XMPP

MSN

Yahoo!

ICQ/AIM

SIP

存在

支持

支持

支持

支持

支持

一对一聊天

支持

支持

支持

支持

支持

多用户聊天

支持

支持

支持

支持

不支持

文件传输

支持

支持

支持

支持

不支持

OTR加密

支持

支持

支持

支持

不支持

更多特性 点击这里

使用Jitsi

Jitsi能够通过在终端中执行如下命令来运行

$ jitsi

或者从dash中运行

Dash > Jitsi

添加账户

 

点击 select network(选择网络).

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
 

在这个教程中,使用Gtalk帐号进行登录

 

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)

按要求输入你的username(用户名)password(密码)

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
 

然后你就在线了。

 

聊天窗口。

Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
Linux:在Ubuntu下安装Jitsi Instant Messenger(Jisti即时信使)
 

对于其他Linux发行版,请访问Jitsi下载页面

如有问题,请访问我们的 Q/A 论坛 : http://ask.unixmen.com/ – 更多信息请参见: http://www.unixmen.com/install-jitsi-instant-messenger-ubuntu/#sthash.TuH8ZN0b.dpuf

 

来自: http://www.unixmen.com/install-jitsi-instant-messenger-ubuntu/

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

译者:SCUSJS 校对:jasminepeng

来源:https://linux.cn/article-2099-1.html

Linux:在Ubuntu中安装XScreenSaver

这个教程将会给你展示如何在Ubuntu 12.04(也包含其他Ubuntu版本)中加入屏幕保护,它们原本不包含X-windows屏幕保护程序。不过,一些对计算机或linux不熟悉的人,并不了解屏幕保护。到底屏幕保护能做什么呢?

屏幕保护是一个主要用于安全用途的计算机程序(译注:和最初屏幕保护的用途不同了)。当计算机空闲时,这个程序会清空屏幕或者在屏幕上填满移动的图片或图样。屏幕保护也可以用于娱乐或显示系统信息。当你打算离开办公室又不想让任何人看你电脑上的信息时,屏保程序将是绝佳的解决方案。

屏幕保护怎么让我的电脑变得更安全?

屏幕保护能配置成在允许用户继续工作之前要求用户输入密码。但是请留意,如果设置为在启动机器后自动登入帐号,那么攻击者可以轻易的重启机器来登入你的帐号。

怎么安装屏幕保护?

打开一个新的终端(ctrl+alt+T),如图一所示。

 

图一

在安装一个新的屏幕保护之前我们必须卸载默认屏幕保护,运行 ‘sudo apt-get remove gnome-screensaver’ ,见图二。

图二

用下列命令安装XScreenSaver和一些附加的屏保包。 sudo apt-get install xscreensaver xscreensaver-data-extra xscreensaver-gl-extra

图三

图四

图五

XScreenSaver 每次启动后会随机选择一个屏幕保护.预了解如何配置XScreenSaver,参见这里

 

via: http://www.unixmen.com/installing-xscreensaver-ubuntu/

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

译者:Luoxcat 校对:jasminepeng

来源:https://linux.cn/article-2104-1.html

Linux:为什么Android使用弱加密算法?

Linux:为什么Android使用弱加密算法?
Linux:为什么Android使用弱加密算法?

Android 2.2.1默认使用的加密算法是AES 256-SHA1,但从2010年发布的Android 2.3开始,它默认使用的是一种更弱的加密算法 RC4-MD5。

当Android应用建立SSL加密连接,如果没有指定的话它将默认使用RC4-MD5进行加密。

有人可能会怀疑美国国家安全局(NSA)收买了Android开发者以降低破解加密连接监视Android用户的难度。

但Georg Lukas在分析了Android源代码之后发现,默认加密算法的次序是Sun/甲骨文的Java定义的,Java规格定义的TLS安全传输协议加密算法列表中前两种为RC4和MD5,2011年发布的Java 7加入椭圆曲线加密算法改进了加密列表,但Android是基于 JDK 6,仍然沿用十年前定义的默认加密算法列表。

via: http://www.solidot.org/story?sid=36811 

Linux:点评Linux平台上的音乐播放器Audacious 3.4

在Linux平台上,虽然音乐播放器软件多如牛毛,但是称得上音乐播放器这个名称的为数不多。Audacious是一款非常知名的软件,并且就是这些能被叫做音乐播放器的少数软件之一。

 

版本点评:Audacious 3.4

Audacious是一款开源的音乐播放器软件。 作为XMMS播放器软件的分支,Audacious播放器可以随心所欲的播放你的音乐,并且不会抢占其他任务的系统资源。 在你的所有音乐库里,你可以进行拖动文件夹和放置私人的歌曲文件、搜索歌手和专辑或者编辑你的自定义播放列表等操作。

特性:

  • 聆听CD
  • 简洁的播放列表
  • 清爽的界面
  • 轻量级的系统资源利用
  • 多种音效设置
  • 大量的plugins

在Linux平台上并不缺乏音乐播放器软件,但每过去一年,这种类型的软件定义变得越來越模糊。开发商正在实验新的东西,他们尝试着模仿其他平台的软件以及从其他平台复制有特色的功能过来。

今天在用的大多数播放器,至少是一些主要的发布版本,已经尝试着加入一些功能,并不仅仅是一个简单的媒体播放器。开发商已经实现了在线电台、广播,甚至在界面上就可以直接购买音乐的功能。

虽然这种创新是值得提倡的,但在音频播放器上做的太过火了。开发商已经忘记了这软件的主要作用。虽然不用打开网络浏览器就能购买音乐很不错,但是一款音频播放软件不应该把此功能当作核心。

我们现在看看Audacious,一款在Linux平台上的“老校友”式的音频播放软件,仍在更新及增加新血液,它不会为了要得到所有第三方服务而改变核心功能。

安装

有复杂的和简单的两种方式来安装Audacious。复杂的方式即从源代码开始编译安装,其实没有必要这样做。如果选择从源代码编译开始,那么以后的更新都要用相同的方法来做,这将是非常繁琐的过程。

我们已经在Ubuntu 13.10 (Saucy Salamander)系统上安装了Audacious 3.4。虽然Ubuntu 13.10系统仍然处于测试阶段,但是除了一个异常外它已经被证实是一个稳定的操作系统。

这个软件的最新版本是在官方源已经可用,可以通过Ubuntu软件中心安装或使用终端来安装。通常,我们建议用后一种方式,因为Ubuntu软件中心需要一些依赖的软件登录,即使它们是免费的,而且最好看看在安装过程中具体的发生了什么。

打开终端,输入如下的命令:

sudo apt-get install audacious

当所有的包都已安装结束,像平时一样,打开Unity Dash,键入应用程序的名称,你就能找到这个播放器的快捷图标。

总结

如果您正在寻找传统但也包含了一些新的功能的音频播放器,你应该试试Audacious。

该软件有一个简单的界面,它几乎不占用任何系统资源,没有任何花里胡哨的功能,这也正是它的风格。Audacious播放音乐,就这样,一点也不突兀。

优点

我最喜欢Audacious的就是它清爽干净,而不是伪装简单的界面。从一开始,你会发现,一切都已经设计了这样一种方式,你几乎不可能会犯任何错误。

不像它的一些竞争对手软件(对,我说的就是Rythmbox),为了导入一个简单的文件夹,你将四处摸索此功能所在何处。它不会用各样的排序你的音乐库的方式来打扰用户,显示歌曲信息的方式也很舒服。

 

它还配备了一个非常简单和高效的悬停界面,当你想看到一首歌的细节,但你不想点击该特定项目,这是非常有用的。

 

Audacious还配备了三个不同的可以使老用户回到以前所用的“真正的”音频播放器的可视化模型,并且所有的都可以修改和定制。

所有你期望一个媒体播放器所具有的其他选项,它都具有,谈论他们不是主要目的。您可以导入播放列表,设置重复播放,甚至还有一个非常简单和良好的均衡器。

 

Audacious的优势之一是默认包括的音效,如去除人声,采样率转换器,通道混合器,速度和间距,以及更多。

 

 

从偏好设置里,大量的插件也可以被激活,如:专辑封面,歌词,状态图标,GNOME快捷键以及其它的一些等等。请注意,所有这些插件在默认情况下是禁用的,他们得由用户手工开启,以便使界面干净漂亮。

 

 

 不足

关于此软件的评论,我可能会有点主观,因为我真的不能忍受过于复杂的音频播放器,Audacious正对我的胃口。但是,说句公道话,我曾经是爱过能够添加排序字段的播放列表功能的。

这款应用还具备第二个“Winamp”模式的特性,这使它看起来像Windows平台上的Winamp播放器,不幸的是,每次我试着激它的时候Audacious崩溃了,但也可能是因为Ubuntu13.10目前还不稳定。

Audacious 3.4.1: 免费下载

 

via: http://www.softpedia.com/reviews/linux/Audacious-Review-387093.shtml

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

译者:runningwater 校对:wxy

来源:https://linux.cn/article-2110-1.html

Linux:如何在Ubuntu 13.04和13.10上安装iOS 7的图标

这个简单的教程将指导你如何在你的Ubuntu 12.04、13.04和13.10上安装苹果iOS 7操作系统的所有图标。

 

Linux:如何在Ubuntu 13.04和13.10上安装iOS 7的图标
Linux:如何在Ubuntu 13.04和13.10上安装iOS 7的图标

上面是效果图,安装的图标虽然并不多,但是对于外观的改进来讲却是重大提高。如果Canonical没有在每一个发行版中使用差异甚小的同类图标,那你就不太容易分辨出Ubuntu。

以前在Ubuntu安装主题、图标甚至是鼠标光标,那叫一个麻烦,但是近几年这事变得容易多了。想要安装新的图标,只需要输入几条命令就行。

在开始之前,请注意一下。本文使用的PPA(Personal Package Archives)只能在Ubuntu 12.04上运行。这是因为,在复制iOS的图标时候是在Ubuntu 12.04版本上建立的。

当然,正如开始提到的,这些图标可以在Ubuntu 13.04 和 Ubuntu 13.10上使用,只是需要改变一点小小的操作。

除此之外,你需要一个小软件使这些图标生效。我们推荐使用GNOME Tweak Tool,但是如果你喜欢的话还有几个其他软件可供选择。

下面教程开始:

打开终端,安装GNOME Tweak Tool:

sudo apt-get install gnome-tweak-tool

你会发现这个软件在Ubuntu下叫做Tweak Tool。

安装PPA,然后更新一下:

sudo add-apt-repository ppa:elementary-br/projects

sudo apt-get update

Ubuntu 12.04安装iOS图标:

sudo apt-get install ieos7-icons

Ubuntu 13.04、Ubuntu 13.10安iOS装图标:

wget -c https://launchpad.net/~elementary-br/+archive/projects/+files/ieos7-icons_0.1-0~13~ubuntu12.04.1_all.deb

sudo dpkg -i ieos7-icons_0.1-0~13~ubuntu12.04.1_all.deb

如果你发现deb包安装失败,无论什么原因,只需要运行:

sudo apt-get install -f

修复完依赖关系,再次运行:

sudo dpkg -i ieos7-icons_0.1-0~13~ubuntu12.04.1_all.deb

这个图标集大概有300个,所以你的操作系统中的部分应用程序图标还是老样子。

享受你的新图标吧!

 

via: http://news.softpedia.com/news/How-to-Install-the-iOS-7-Icons-in-Ubuntu-13-04-and-Ubuntu-13-10-387709.shtml

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

译者:Vic___ 校对:carolinewuyan

来源:https://linux.cn/article-2114-1.html

Linux:精通Linux的“kill”命令

无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭。在Linux(还有Mac),你可以用一个”kill”命令强制终结它。在这个教程中,我们将展示给你多种方式使用”kill”命令终结应用。

Kill命令和信号

当你执行一个”kill”命令,你实际上发送了一个信号给系统,让它去终结不正常的应用。总共有60个你可以使用的信号,但是基本上你只需要知道SIGTERM(15)和SIGKILL(9)。

你可以用这个命令看到所有信号的列表:

kill -l

Linux:精通Linux的“kill”命令
Linux:精通Linux的“kill”命令
 

  • SIGTERM – 此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。
  • SIGKILL – 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。

使用”kill”的语法是:

kill [信号或选项] PID(s)

默认信号(当没有指定的时候)是SIGTERM。当它不起作用时,你可以使用下面的命令来强制kill掉一个进程:

kill SIGKILL PID

或者

kill -9 PID

这里”-9″代表着SIGKILL信号。

如果你不知道应用的PID,仅需要运行这个命令:

ps ux

它会显示所有正在运行的应用还有应用的PID。

 

Linux:精通Linux的“kill”命令
Linux:精通Linux的“kill”命令

例如,要kill掉Chrome,我会运行命令:

kill -9 3629

也可以在同一时间kill多个进程。

kill -9 PID1 PID2 PID3

PKill

“pkill”命令允许使用扩展的正则表达式和其它匹配方式。你现在可以使用应用的进程名kill掉它们,而不是使用PID。例如,要kill掉Firefox浏览器,只需要运行命令:

pkill firefox

使用正则表达式匹配的话,你可以输入进程名的部分字符,比如:

pkill fire

为了避免kill掉错误的进程,你应该用一下”pgrep -l [进程名]”列表来匹配进程名称。

 

Linux:精通Linux的“kill”命令
Linux:精通Linux的“kill”命令

Killall

killall同样使用进程名替代PID,并且它会kill掉所有的同名进程。例如,如果你正在运行多个Firefox浏览器的实例,可以用命令把它们全部kill掉:

killall firefox

在Gnome中,你可以使用这个命令重启Nautilus:

killall nautilus

xkill

xkill 是图形方式kill一个应用。当你在终端键入”xkill”,你的光标将立刻变成一个”十字”。你只需要做的是在不正常的应用上点击一下,它就会立刻kill掉这个应用。如果你经常用的话,你也可以添加一个键盘快捷键来激活xkill

结论

当应用不正常而导致系统挂起的时候,人们往往重启计算机并且再一次开启所有的任务。而有了这些”kill”命令,你将能够更好的处理不正常的应用,从而避免导致系统崩溃。当你不想因一个不正常的进程而导致服务器宕机时,它尤其的有用。


via: http://www.maketecheasier.com/kill-command-in-linux/

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

译者:flsf 校对:wxy

来源:https://linux.cn/article-2116-1.html

Linux:小评磁盘分区软件GParted 0.16.2

GParted可能是Linux平台上最重要的应用程序之一了,并且它也是最有用最易识别的软件之一。

 

Linux:小评磁盘分区软件GParted 0.16.2
Linux:小评磁盘分区软件GParted 0.16.2

不能把GParted作为一个单独的应用程序来讨论。公平的说,它本是采用GTK+开发的GNU Parted的前端程序。但是由于开发人员做了许多工作,使得它的功能已经不仅仅只是给这个复杂而难用的软件提供一个简单的图形界面了。

GParted项目启动于2004年,自从那时起开发人员一直在不断的完善它。这个过程是缓慢的,最新发布的版本号是0.16.2(该版本已经被我们点评过)。难以想象这个开发工作一下就持续了近十年。

用户会发现GParted不仅仅是一个工具,还有一个名叫GParted Live的Live操作系统,它无需安装即可直接使用,它可以在任何带有光驱或者USB接口的系统上直接运行,包括Mac操作系统。

很难想像在Linux世界中没有这个工具会怎样,但是我们也不得不说,它并不是完成这方面工作唯一工具。

安装

这是一项困难的工作。GParted的开发者们只提供最新版软件的源代码,这就意味着如果你想获取最好的版本就不得不做一些编译的工作。这真是个坏消息。

我们在Ubuntu 13.10(代号俏皮的蝾螈)上安装了GParted,一切都很顺利。官方库所提供的最新版是0.16.1,这个版本应该可以满足大多数用户的需求了。该版本与最新0.16.2版之间的区别并不明显,只是在一些设置上有所改动。

我们假设你真的如饥似渴般想要最新的版本。首先,下载软件包然后解压它。

下载GParted 0.16.2:

这并不是一个很大的软件,编译时间也不会太长。通常,用户只需要输入下面的命令:

./configure

make

sudo make install

问题是正如你和我这样的普通人,并没有安装该软件所依赖的所有软件包。这意味着,当 ./configure命令显示错误的时候,你不得不一个一个的去安装这些软件。

好消息是,Ubuntu用户有一个非常方便的命令,适用于所有在他们仓库中的应用。在使用./configure之前,首先输入如下命令:

sudo apt-get build-dep gparted

这条命令会从仓库中获得所有必须的依赖软件包,并将用户从复杂的一个一个安装依赖库的工作中解救出来。

使用

像我以前说的,这是一个磁盘分区编辑器。这意味着你可以通过它的用户界面进行移动、重新分配分区大小、重新分区以及做任何你想要做的事。

用户也可以删除分区,修复那些被其他系统损坏了的USB盘。你必须足够的小心。如果你像我一样安装了多系统,你会发现它会很容易损坏已经安装了的Windows系统。

GParted能够修改以下文件系统:btrfs, crypt / LUKS, ext2, ext3, ext4, fat16, fat32, hfs, hfs+, linux-swap, lvm2 pv, nilfs2, ntfs, reiserfs, reiser4, ufs, 以及 xfs。GParted也可以被用于克隆整个分区。

此外,GParted也得到了UEFI安全启动的支持,能够在任何具有此功能的PC电脑上流畅运行。

 

Linux:小评磁盘分区软件GParted 0.16.2
Linux:小评磁盘分区软件GParted 0.16.2

Linux:小评磁盘分区软件GParted 0.16.2
Linux:小评磁盘分区软件GParted 0.16.2

 

Linux:小评磁盘分区软件GParted 0.16.2
Linux:小评磁盘分区软件GParted 0.16.2

 

Linux:小评磁盘分区软件GParted 0.16.2
Linux:小评磁盘分区软件GParted 0.16.2

 

总结

谁会知道修改分区是件有趣的事呢?GParted把这项枯燥又具有潜在危险的活动变得并不那样可怕,为用户提供了一个很棒的用户体验,而不像命令行的应用程序那样。

那些用户不得不在终端中调整分区的日子已经远去了。GParted看起来像一个专业的解决方案,它是我们不能没有的工具。

优点

使用其它操作系统的用户,比如windows或者Mac,需要支付高额的费用来使用这一类软件。而Linux用户则可以免费获得,而且开发者在不断的维护这个程序。

它的用户界面非常整洁,简单易懂,甚至Linux新手都能看的明白。

不足

使用这个程序会很容易的把事情搞坏。尤其是一但具有了root用户的权限,它会具有潜在的破坏性。

对于这种情况,如果GParted能够提供更多综合性的建议,或者在开始的时候仅提供一个初级版本的话,或许会更合适。

 

via: http://www.softpedia.com/reviews/linux/GParted-Review-387094.shtml

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

译者:woodboow 校对:Caroline

来源:https://linux.cn/article-2121-1.html

Linux:如何使用命令行测试你的网速

 

你可能知道,可以在你的浏览器里进行互联网速度测试。不过这篇Make Tech Easier教程给我们展示了如何在终端窗口中做同样的事情,非常适合你的树莓派或家用服务器上做。

打开一个终端,只需要运行下面命令:

wget -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test10.zip

Linux:如何使用命令行测试你的网速
Linux:如何使用命令行测试你的网速

这个测试是使用wget命令从远程仓库服务器下载一个10MB文件(译者注:其实你可以下载任何一个其它的较大文件)。当文件下载完成,下载速度就会显示在终端,你就可以知道你正在连接的网络速度有多快了(译者注:其实这也与你所下载的文件所在的带宽有关,并非全面的测试)。

任何运行linux的PC(译者注:一般,我们所说的PC是指’IBM PC兼容机’,此架构中的中央处理器采用英特尔或超微等厂商所生产的中央处理器)能够运行wget命令。WindowsMac用户需要下载这个程序,但是功能差不多是一样的。点击下述链接可以了解更多。

怎样从终端测试你的网速 | Make Tech Easier

 

via: http://lifehacker.com/how-to-test-your-internet-speed-with-a-terminal-command-1364123567

译者:flsf 校对:Caroline

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

来源:https://linux.cn/article-2123-1.html

Linux:iLinux:Linux平台最大的自定义图标收藏铺

Linux Icons可能是Linux平台上最大的图标收藏铺,它的创作灵感来源于Linux,Windows和Mac OS系统。

Linux:iLinux:Linux平台最大的自定义图标收藏铺
Linux:iLinux:Linux平台最大的自定义图标收藏铺

在Linux平台可用的高品质图标甚少,即使有几百种不同的软件包。

iLinux Icons 的开发者从三个不同的平台:Ubuntu,Windows和Mac OS上设法收集和整理了那些类似的图标(在一些情况下甚至更好的)。

安装非常简单,可以用一个简单的PPA帮助。只需在终端中输入以下命令:

sudo add-apt-repository ppa:noobslab/icons2

sudo apt-get update

sudo apt-get install ilinux-icons

为了应用这些图标你还需要Ubuntu Tweak或GNOME Tweak Tool。你还可以查看开发商的官方网站的更多信息。

 

via: http://news.softpedia.com/news/iLinux-Is-the-Largest-Collection-of-Custom-Icons-on-the-Linux-Platform-390519.shtml

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

译者:vito-L 校对:wxy

来源:https://linux.cn/article-2122-1.html

Linux:保护密码的利器:Ubuntu 之 KeePassX

随着安全性问题变得越来越重要,密码当然是越安全越理想(比如多步认证),这一点再强调也不为过。

 

因此,于是我最近就试用了几个安全密码管理器,试图找到一款比较安全,易于使用并且跨平台的应用软件。

首先,我尝试了LastPass。LastPass大概最为人们所熟知,因为它是基于WEB管理密码的,是所有软件中平台无关性最强的。但是我发现它的界面简陋,而且提供太多的工具和选项,比较繁琐。

接下来,我又试了试KeePass 2。尽管是一款功能相当完善的应用软件,非常类似于下面我将要描述的,但是官方没有提供Linux的安装包,而且社区移植的版本,虽然可用,但仍然算不上最好的。所以我又尝试了其他应用。

在所有的试用过的软件中,我最喜欢的是 KeePassX 。 它原来是KeePass的在Linux上的移植版,但是后来演变成了独立的应用。凭借更漂亮、更原生的外观,KeePassX 打败了KeePass 2。

在ubuntu中使用KeePassX

方便的是,KeePassX已经提供在ubuntu上安装的软件包。

从命令行安装KeePassX或者 从软件管理中心安装

安装后打开它,你会看到一个空白窗口。点击工具条上的第一个按钮来创建一个新数据库。你可以使用密钥文件或者密码保护这个刚刚创建的数据库。一般你会使用密码,因为只需要记住它并输入就行了 – 你应该输入较长的密码,这样你就可以防止其他人使用你的数据库。

接下来,你得把它存到某个位置。我保存在我的Dropbox里面,这样就可以从多个地方获取。Dropbox使用双因子认证,所以如果有人想进到我的Dropbox里面,他就得拿到我的手机,这样的方式是还是相当安全的。

或者你也可以使用其他的服务,比如Google Drive和Skydrive,它们都可以使用认证器应用;也可以使用Box,它用短信进行双因子认证。

当然,如果你 真的 很在意自己的密码,你很可能不想把密码存到其他的组织,因为理论上密码是可以被他们获取到的。

Ubuntu中KeePassX的主界面

使用该应用还是相当直观明了的。你可以添加分组,然后在分组里添加密码。KeePassX带有一个很方便的密码生成器,当你需要输入一个密码的时候可以使用该生成器,而不用自己构思一个。我倾向于使用所有基本的字符以及挑选的特殊的字符来生成我的密码,20个字符的长度,当然这得看你访问的网站接不接受了。

需要注意一点,有些网站并不告诉你他们接受多长字符的密码,倾向于只在输入框限制输入长度。如果你粘贴进去的密码看起来没那么长,很可能就不是你要输入的口令,而被截断了。这种情况我碰到过几次。

KeePassX 密码生成器

根据日常的使用经验,我积累了一些小的技巧,使得操作KeePassX更简单一些:

关于复制粘贴的担心

像这样复制粘贴密码,你可能会比较担心。可以肯定的是这比手动输入高效多了。默认情况下,KeePassX会在一分钟后清空粘贴板,你也可以设置更短的时间,所以不必担心有人会在你电脑上把密码粘贴下来查看。你也可以开启一个AutoType的特性,不过这对于我来说没用。Chris Zuber 在评论里面说明了如何使用 AutoType 。

数据库的困境

如果你把数据库存放到云端,就不要为云端服务设置完全随机的密码。如果你不能进入到云,但是又把云密码存储到云里边,这是完全没有用的。这看起来似乎很明显,但是刚开始我却没有意识到这一点。

确保所有的密码都是安全的

为了查看常用的账号,工作或者学习的时候要频繁地掏手机,这也是一件挺痛苦的事儿,所以设置密码的时候不妨想象一下这种情形,哈。

未来

如果你以前也深入了解过KeePass 2和KeePassX,或许会注意到二者使用不同的数据库格式。

KeePass 2使用一种新的版本格式,比如允许自定义字段。尽管KeePassX目前还不支持新的.kdbx格式,不过正在开发中的新的版本会支持的。

可以预览一下新版本的KeePassX,界面大为改善。你也可以从GitHub上6下载后自己安装。

 

KeePassX 2.0 主界面

密码项的一些细节

密码项的附加属性

历史登陆信息,比如从先前的版本替换掉”Backup”文件夹之类的

KeePassX 2.0 中的配置

其他建议

正如本文开头所说,我在寻找能够跨平台的东西。这正是.kdb格式的优点 – 很多应用都支持这种格式。KeePassX 在 Mac OS X上运行起来要比KeePass 2容易得多,在windows上也可以。

Android系统上,我使用KeePassDroid6,在我的手机和平板上运行都很稳定。

 

via: http://www.omgubuntu.co.uk/2013/10/manage-passwords-securely-keepassx

译者:l3b2w1 校对:wxy

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

来源:https://linux.cn/article-2125-1.html

Linux:如何从Ubuntu13.04 升级到Ubuntu13.10 Saucy Salamander

Ubuntu 13.10 Saucy已于10月17日发布。希望它比Ubuntu 13.04 Raring版本或以前的版本有很大的改进及增加更多功能。大家都好奇地等着,想看看Ubuntu13.10将给Ubuntu爱好者带来些什么。

如果你的系统是Ubuntu的13.04、12.10、12.04 Precise Pangolin或者更早的版本的话,你愿意升级到这最新的发行版本吗?我知道你愿意。只需要按照下面所示的简单几步,不管你用的是桌面版本还是服务器版本,都能轻松地从Ubuntu13.04版本升级到Ubuntu 13.10 Saucy版本。

注意:在升级前,确保对你的 数据做一次全备份,备份存储到外部设备(USB记忆棒或CD/ DVD)。

桌面版升级

在升级前,我们首先得更新系统,按下快捷键打开终端输入如下命令。

sudo apt-get update && sudo apt-get dist-upgrade

然后就可以升级到最新的发行版本了。

sudo update-manager -d

Software Updater将会打开并且搜索新的发布版本。

 

几秒钟以后,你会看到如下所示,标有“However, Ubuntu 13.10 is available now (you have 13.04)”字样的窗口。

 

然后点击Upgrade按钮。

 

Software Updater会让你确认是否仍要升级。点击Start Upgrade就真正开始安装Ubuntu 13.10了。

 

现在Software Updater就会获取文件包并进行安装。这将需要一段时间,具体时间长短取决于你的网络连接速度。坐下来放松片刻吧。

 

过一会儿,你将被询问是否删除不必要的应用程序或软件包。

 

最后,点击重启完成升级。

 

现在你的系统就是最新的Ubuntu 13.10发布版本了。

 

服务器版升级

要从Ubuntu 13.10服务器版升级到Ubuntu 13.04服务器版本,请按下面步骤操作。

如果还没有安装 update-manager-core 软件包,请先安装它:

sudo apt-get install update-manager-core

打开 /etc/update-manager/release-upgrades 文件,

sudo nano /etc/update-manager/release-upgrades

按如下所示进行编辑,设置 Prompt=normal

# Default behavior for the release upgrader.
[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#       release is found, the release upgrader will attempt to upgrade to
#       the release that immediately succeeds the currently-running
#       release.
#  lts- Check to see if a new LTS release is available.  The upgrader
#       will attempt to upgrade to the first LTS release available after
#       the currently-running one.  Note that this option should not be
#       used if the currently-running release is not itself an LTS
#       release, since in that case the upgrader won't be able to
#       determine if a newer release is available.
Prompt=normal

现在就可以把系统升级到最新服务器版本了,使用下面的命令:

sudo do-release-upgrade -d

按照屏幕上的指示一步一步操作。大功告成!!

已经成功的升级到Ubuntu 13.10了,现在该做些什么呢?看看我们的新文章“安装Ubuntu13.10后最应该做的几件事”。现在你的系统已经很完善了。庆祝吧!!

 

via: http://www.unixmen.com/upgrade-ubuntu-13-04-raring-ubuntu-13-10-saucy-salamander/

译者:runningwater 校对:Caroline

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

来源:https://linux.cn/article-2128-1.html