2014年1月

众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作。RAM指的是插在计算机主板上的物理存储。这里的RAM被用于加载像浏览器、文字处理器这类的程序,实际上,你使用的程序都运行在内存上。

让我们假设你有2GB的内存。当你在运行操作系统时,你的可用内存可能只有1.5GB。接着你使用了大量的程序。当内存使用满之后,你可能再也无法加载更多的程序。浅显地说,计算机可能会说:"抱歉,你不能在运行更多的程序了,如果你还要运行其他的程序请先关闭一些程序。"

为了解决这个问题,包括Linux在内的各种操作系统使用了一个称之为虚拟内存的方法。这个方法会搜索最近不在使用的程序的内存区域,接着将它们拷贝到计算机硬盘上。这会腾出一些剩余内存空间给你有机会运行更多的程序。

为了监视虚拟内存的活动,我们使用vmstat工具。

什么是 vmstat

vmstat是一个提供报告虚拟内存统计的工具。它包括了系统内存、交换和实时处理器利用率。

如何运行 vmstat

mpstat一样,vmstat包含在sysstat包中。如果你还没有,请安装sysstat包。

为了运行vmstat,只需在控制台输入vmstat。不带参数运行vmstat会显示vmstat的默认结果。

让我们看下如何了解vmstat提供的信息:

Procs

procs有 r列和b列。r列代表等待访问CPU的进程数量。而b列意味着睡眠进程的数量。在这些列的下面,是它们的值。从上面的截图中,我门有2个进程正在等待访问CPU,0个睡眠进程。

Memory

memory有swpd、 free、 buffcache 这些列。这些信息和命令free -m相同。swpd列显示了有多少内存已经被交换到了交换文件或者磁盘。free列显示了未分配的可用内存。buff列显示了使用中的内存。cache列显示了有多少内存可以被交换到交换文件或者磁盘上如果一些应用需要他们。

Swap

swap显示了从交换系统上发送或取回了多少内存。si列告诉我们每秒有多少内存被从swap移到真实内存中(In)。so列告诉我们每秒有多少内存被从真实内存移到swap中(Out)。

I/O

io依据块的读写显示了每秒输入输出的活动。bi列告诉我们收到的块数量,bo列告诉我们发送的块数量。

System

system显示了每秒的系统操作数量。in列显示了系统每秒被中断的数量。cs列显示了系统为了处理所以任务而上下文切换的数量。

CPU

CPU告诉了我们CPU资源的使用情况。us列显示了处理器在非内核程序消耗的时间。sy列显示了处理器在内核相关任务上消耗的时间。id列显示了处理器的空闲时间。wa列显示了处理器在等待IO操作完成以继续处理任务上的时间。

按间隔时间运行vmstat

作为一个统计工具,使用vmstat最好的方法是使用间隔时间。你可以间断地捕捉系统状态。让我假设以5秒的间隔运行vmstat。只需要在你的控制台中输入vmstat 5就行。

命令将会每5秒运行一次,直到你按下Ctrl-C来终止它。你也可以使用第二个参数来控制vmstat运行的次数。

上面的命令会以5秒的间隔运行7次vmstat

显示活跃和非活跃内存

要这么做,你可以在vmstat后加入-a选项。这是个示例。

显示磁盘统计数据总结

如果你想,vmstat也可以打印系统磁盘活动统计。使用-D选项就行。

显示单位

你可以选择你想打印的显示单位字符。在-S后跟上k (小写,1000)、 K (大写,1024)、 m (小写,1000000)、 M (大写,1048576) 字节. 如果你不想选择单位,默认使用的是K (1024)。

显示某个磁盘分区的详细统计数据

要这么做,你可以使用-p选项跟上设备名。这里有个例子。

文件

vmstat实际上是使用这些文件获取的数据。

/proc/meminfo
/proc/stat
/proc/*/stat 

总结

如果你感觉系统运行超出内存了,在你增加物理内存前,这个工具可以帮助你确定问题的根本原因。通常上,你可以在控制台中输入man vmstat获取更多的关于vmstat的详细信息,这会为你显示vmstat的手册页。


via: http://linoxide.com/linux-command/linux-vmstat-command-tool-report-virtual-memory-statistics/

译者:geekpi 校对:wxy

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

Linux命令中的链接的意思是,通过操作符的行为将几个命令组合执行。Linux中的链接命令,有些像你在shell中写短小的shell脚本,并直接在终端中执行。链接使得自动处理变得更方便。不仅如此,一个无人看管的机器在链接操作符的帮助下能够十分有条理地运行。

Linux中的10个链接操作符

本文旨在介绍一些常用的链接操作符,通过简短的描述和相关的例子帮助读者提高生产力、降低系统负载、写出更加简短有意义的代码。

1. 和号操作符 (&)

&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你可以一口气在后台运行多个命令。

在后台运行一个命令:

tecmint@localhost:~$ ping ­c5 www.tecmint.com &

同时在后台运行两个命令:

root@localhost:/home/tecmint# apt-get update & mkdit test &

2. 分号操作符 (;)

分号操作符使你可以一口气运行几个命令,命令顺序执行。

root@localhost:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

上述命令先后执行了update和upgrade,最后在当前工作目录下创建了一个‘test’文件夹

3. 与操作符 (&&)

如果第一个命令执行成功,与操作符 (&&)才会执行第二个命令,也就是说,第一个命令退出状态是0。(译注:原文的这里明显写错了,我们进行了改译,有兴趣的读者可以参看原文以及原文下面的评论。在UNIX里面,0表示无错误,而所有非0返回值都是各种错误)。这个命令在检查最后一个命令的执行状态时很有用。

比如,我想使用links 命令在终端中访问网站tecmint.com,但在这之前我需要检查主机是否在线不在线

root@localhost:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. 或操作符 (||)

或操作符 (||)很像编程中的else语句。上面的操作符允许你在第一个命令失败的情况下执行第二个命令,比如,第一个命令的退出状态是1

举例来说,我想要在非root帐户中执行‘apt-get update‘,如果第一个命令失败了,接着会执行第二个命令‘links www.tecmint.com‘。

tecmint@localhost:~$ apt-get update || links tecmint.com

上面的命令中,由于该用户不允许更新系统,这意味着第一个命令的退出状态是’1′,因此最后一个命令‘links tecmint.com‘会执行。

如果第一个命令成功执行并且退出状态是‘0‘呢?很明显的,第二个命令不会执行。

tecmint@localhost:~$ mkdir test || links tecmint.com

这里,用户在家目录创建了一个‘test‘文件夹,这是被允许的。命令成功的执行,退出状态是‘0‘,因此,最后的命令不会执行。

5. 非操作符 (!)

非操作符 (!)很像except语句。这个命令会执行除了提供的条件外的所有的语句。要理解这点,在你的主目录创建一个目录‘tecmint’,并‘cd’到它这里。

tecmint@localhost:~$ mkdir tecmint 
tecmint@localhost:~$ cd tecmint

接下来,在文件夹‘tecmint’下创建不同类型的文件。

tecmint@localhost:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

看一下我们在文件夹‘tecmint’创建的新文件。

tecmint@localhost:~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

用一种聪明的办法马上删除除了 ‘html’之外的所有文件。

tecmint@localhost:~/tecmint$ rm -r !(*.html)

验证一下上次的执行结果,使用ls 命令列出可见所有文件。

tecmint@localhost:~/tecmint$ ls 

a.html  b.html

6. 与或操作符 (&& – ||)

上面的操作符实际上是‘’和‘’操作符的组合。它很像‘if-else‘语句。

比如,我们ping tecmint.com,如果成功打印‘已验证’,否则打印‘主机故障’。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"

示例输出

PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.tecmint.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

现在,断开我们现在的网络连接诶,再试一下相同的命令。

tecmint@localhost:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"

实例输出

ping: unknown host www.tecmint.com 
Host Down

7. 管道操作符 (|)

PIPE在将第一个命令的输出作为第二个命令的输入时很有用。比如,‘ls -l’的输出通过管道到‘less’,并看一下输出。

tecmint@localhost:~$ ls -l | less

8. 命令合并操作符 {}

合并两个或多个命令,第二个命令依赖于第一个命令的执行。

比如,检查一下文件‘xyz.txt’是否在Downloads目录下,如果不存在则创建之并输出提示信息。

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz.txt ] || touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"

但是这样的命令的运行结果并不如我们预期的运行,会始终都输出提示信息。因此需要使用{}操作符来合并命令:

tecmint@localhost:~$ [ -f /home/tecmint/Downloads/xyz1.txt ] || {touch /home/tecmint/Downloads/xyz.txt; echo "The file does not exist"}

“The file does not exist”

(译注:原文这里应该也是复制或书写的时候,出现了一些问题,例子中并没有出现小标题中的"{}"操作符,所以这里我们进行了修改)

9. 优先操作符 ()

这个操作符可以让命令以优先顺序执行。

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

在上面的伪代码中,如果Command\_x1执行失败了会怎么样,Command\_x2, Command\_x3, Command\_x4没有一个会执行,对于这种情况,我们使用优先操作符

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的伪代码中,如果Command\_x1执行失败,Command\_x2不会执行,但是Command\_x3会继续执行, Command\_x4会依赖于 Command\_x3的退出状态。

10. 连接符 ()

连接符 ()如它名字所说,被用于连接shell中那些太长而需要分成多行的命令。可以在输入一个“\”之后就回车,然后继续输入命令行,直到输入完成。比如,下面的命令会打开文本文件test(1).txt

tecmint@localhost:~/Downloads$ nano test\
1.txt

今天就到这里,我会近日开始另外一个有趣的文章。不要走开,继续关注我们。不要忘记在评论栏里提出有价值的反馈。


via: http://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/

译者:geekpi 校对:Mr小眼儿

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

CentOS 6.5 新版本发布

随着RHEL 6.5新版本的发布,CentOS 6.5在12月1号准时跟上。现在是时间来玩弄它了。如果想要从已经安装好的6.4系统升级到6.5,只要简单的使用* yum update *命令,然后就是见证奇迹的时刻。

CentOS 6.5 迎来了新的更新包和新功能。可以在release notes中查看更多细节信息。

主要更新

  • 精密时间协议 - 以前仅是一个科技预览版 - 现在已经完整支持了!以下设备支持网络时间戳:bnx2x,tg3 , e1000e , igb , ixgbe ,sfc。
  • OpenSSL 升级到1.0.1版本
  • OpenSSL、NSS支持TLS1.1和1.2
  • KVM得到大量加强。包括提升对VMDK文件和VHDX文件的只读,CPU支持热插拔以及升级了 virt-v2v-/virt-p2v-conversion 工具
  • Hyper-V 和 VMware 驱动升级
  • 升级到 Evolution(2.32)和 Libre Office(4.0.4)

下载

这篇教程我们将要安装它的桌面版。你可以从下面的任意一个url开始

http://isoredirect.centos.org/centos-6/6.5/isos/http://mirror.centos.org/centos/6.5/isos/

选择你的机器制式,它会列出一张镜像表。进入任何一个镜像、得到种子文件下载或者直接下载iso链接。有许多选择下载方式可以选择,比如,LiveCD, LiveDVD, Dvd1+2双碟套装, Minimal最小化安装 和 Netinstall.

Minimal最小化安装是一个基于文字界面的安装程序,这样安装的CentOS将只有shell和最少软件应用程序。剩余的所有东西不得不你自己通过yum安装。

LiveCD/LiveDVD提供桌面版和GUI安装程序,可以安装CentOS系统但是不提供任何可选择的软件包。

DvD1+2双碟套装给有需求的人提供完整的应用程序集合

netinstall 事实上会先下载安装镜像然后再安装

这篇文章我们将使用LiveCD。 它大概有650MB。 尽管CentOS主要使用在服务器上,但它有一个桌面系统可以帮助你的服务器在安装时创造一个基础GUI的安装环境。在其他文章,我们将会尝试minimal 和 netinstall安装方法。

安装

所以现在,该是时候在你的桌面系统安装CentOS了。快点使用LiveDVD或者是LiveCD去启动运行吧!

1.放入媒体然后重启。启动菜单有多个带说明的选项。选择Boot进入Live桌面。

2.在桌面上双击下列安装图标,开启anaconda安装器。

3.进入安装向导,点击Next(下一步)

4.键盘布局 - 这一步会询问你,选择你的键盘布局。(译注:推荐选择U.S. English)

5.存储类型完成键盘布局的选择,接下来的是选择用来安装CentOS的存储类型。对于本地硬盘启动,应该选择Basic storage。

6.主机名 下一步 anaconda 安装器会询问主机名。所以填入适当的词。如果不确定,随意输入一个(译注:主机名hostname可以随时更改)。

7.时区选择 接下来选择时区选项。

8.Root 密码 下面是输入 root 密码 ,最好是输入一个你熟悉但要足够强壮的密码。

9.规划分区 现在向导想要知道,你将要怎么规划存储设备。 如果你需要自己规划分区,选择 “Custom Layout” 并根据需要分区。为了这篇教程的目的,我们选择了第一个选项,那就是使用整个设备并让CentOS用它喜欢的规划自动分区。

10.复制文件 现在安装已经开始复制文件了。现在除了等待和盯着没有什么事情可以做。LiveCD安装器基本上从CD镜像上复制到硬盘上。你没有得到任何安装包的选项去选择安装或省略。而且liveCD本身只自带了很少的软件和应用程序。

安装完毕后配置

11.在安装完毕后会自动重启,欢迎向导将出现来进一步配置系统。

12.许可证协议 就像所有CentOS的软件一样会有一个很小只有几行的许可证。所以同意吧!

13.创建用户 现在为自己创建一个使用系统的普通用户。

14.当前日期和时间 输入当前日期和时间并且选择使用网络自动同步时间。

15.Kdump这是欢迎向导的最后一步,询问Kdump应该是开启还是关闭。推荐开启它。

开始使用 CentOS 6.5

结束完之前步骤,系统将会重启,最后引导到登陆界面。

登陆之后,迎来的金光闪闪的CentOS 6.5 的桌面!

希望你喜欢这篇安装指南,可以在下方留下你的评论和问题。

资源

CentOS 6.5 release notes(版本记录) http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.5


via: http://www.binarytides.com/centos-6-5-installation-screenshots/

译者:Vic\_\_\_ 校对:Mr小眼儿

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

linux系统里有一些日志文件。观察这些日志文件是系统管理员的一个重要任务。你可以很方便地使用tail命令观察它们。但是如果你想要长时间监视这些文件,每几分钟使用tail检查那些日志文件是一件很乏味的事情。你可以写一个短小的无限循环的脚本来周期性地检查文件,但其实已经有一个程序可以为你处理这种重复的任务。

Linux watch 命令

Linux中的watch 命令提供了一种方式处理重复的任务。默认watch会每2秒重复执行命令。你一定也想到了,watch是一个很好的观察log文件的工具。下面是一个例子。

watch tail /var/log/syslog

想要停止命令的执行,只要使用标准的kill流程, [Ctrl]+C

使用Linux watch命令监测syslog 使用Linux watch命令监测syslog

你可以使用-n开关改变并指定时间间隔。要想每10秒检测日志文件,试试这个。

watch -n 10 tail /var/log/syslog

带有管道的watch命令

watch并不仅限于浏览日志文件。它可以用来重复你给它的任何命令。如果你要监测CPU的温度,你可以使用watch后跟上sensord命令来查看。

watch -n 1 sensors

我电脑上的输出看上去就像这样:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +45.0°C  (crit = +100.0°C)

我想过滤一下这个输出来只显示温度而不显示其他的。

我可以使用这个命令来查看

sensors | grep temp | awk '{ print $2 }'

记住,watch命令会重复它后面的第一个命令。必须要注意命令后面跟上管道的情况。你可以将你的命令放在引号里面来管理。

watch -n1 "sensors | grep temp | awk '{ print $2 }'"

带管道的watch命令 带管道的watch命令

将watch作为时钟

就像你现在已经注意到的,watch执行后会在你的终端的右上角显示时间。我们可以通过传给watch一个空的命令参数来把它作为一个简单的时钟。 我们可以将一个空格包含在引号中来作为一个空的参数。

watch -n 1 " "

如你所见,这给予这个命令另外一个意义,手表(watch)。你可以把它作为你的腕表。

现在你知道如何使用Linux的watch命令。你要用它处理什么重复任务?


via: http://tuxtweaks.com/2013/12/linux-watch-command/

译者:geekpi 校对:Mr小眼儿

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

Ubuntu 13.10 中配备了GNOME 3.8桌面。 尽管它相比Unity是一个可靠稳定以及有特色的替代品,但这个版本还是过时了。

GNOME桌面的最新版本在2013年9月发布,随之而来的是一系列改进的功能、应用程序和可用性的调整。从对高分辨率屏幕的支持到客户端应用窗口上的美化,GNOME 3.10无疑是一个引人注目的升级版本。

好消息是:假设你正在运行Ubuntu 13.10,拥有不错的网络操作和命令行水平,那么你无需继续使用一个过时版本的GNOME。

在Ubuntu 13.10 上如何升级到GNOME 3.10

为了那些爱略过前言直奔主题的读者,我还要重申两点:

要使用本方法安装GNOME 3.10,需运行 Ubuntu 13.10版本。

GNOME 3.10还未在 Ubuntu 13.10上测试,所以升级风险自负。

首先,让我们添加GNOME 3 的PPA到Ubuntu的软件资源中。这个操作可以使用图形界面完成,但使用命令更容易一些。

打开一个新的终端窗口,键入下列命令,在需要时输入你的用户密码:

sudo add-apt-repository ppa:gnome3-team/gnome3-next && sudo apt-get update

添加完PPA并更新包列表后,我们就可以继续,开始安装GNOME 3.10了。运行下列命令,当弹出提示时再次输入你的用户密码:

sudo apt-get update && sudo apt-get install gnome-shell ubuntu-gnome-desktop

获取并安装所有必要的包和组件会花一点时间,所以请耐心一点。

在安装过程中,在终端将会弹出一个提示,要求你选择一种显示管理器,默认使用的是“登录窗口”。

这个决定完全取决于你;UBuntu的Unity Greeter和GNOME的显示管理器都能让你很轻松地在桌面会话之间切换(如果你想保持在Unity界面或者另一个桌面将很方便),但仅仅只有GDM提供给GNOME特定的功能,譬如锁屏通知。

当你确定选择后,使用上下键选择,然后敲击‘确认/返回’键以确认。安装便会继续进行。

增加额外的功能

GNOME 3.10还有一些不错的新特性和应用-包括GNOME天气,音乐盒及地图 以及其它各种各样的改变。因为并不是所有的特性都足够稳定以致于可以被包含在我们之前添加的GNOME 3 PPA中,所以如果你想使用它们,就需要利用到两个额外的GNOME PPA。

现在,你需要意识到很重要的是,在这些仓库里的一些包据说有稳定性问题。这些问题大多是小问题,譬如应用程序崩溃和损坏。但还是有潜在的可能,导致像使GNOME完全崩溃这样的重大问题。

除开这个警告不说,在终端里打开一个新的选项卡,输入下列命令:

sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update && sudo apt-get dist-upgrade

为了添加一些之前提到的很酷的应用,运行这个命令:

sudo apt-get install gnome-weather gnome-music gnome-maps cheese gnome-documents

这样之后,就搞定了!

你可能会想先注销然后重新登录(记得选择“GNOME”会话)以确保改动都已经正确生效了。

细小的差别

如果你在不卸载Unity的情况下安装GNOME 3.10,那么有一些注意事项。

首先,你会发现在系统设置里“Online Accounts”有两个入口。其中,有钥匙图标的是Unity版的,另一个有插孔符号的是GNOME版的。

一些应用程序可能会要求你往Unity中添加账户(Shotwell, Gwibber, Empathy),有一些可能是要求往GNOME中添加(Evolution, Documents, Contacts)。

“通知”和“搜索”入口是GNOME专有的,它们让你挑选哪些应用程序和资源能够显示通知或出现在活动区。

卸载GNOME 3.10

假如你已经尝试了GNOME 3.10,但不喜欢它。这时该怎么办?

使用一个叫做“PPA Purge”的命令行工具,移除GNOME 3.10 是一个相当简单的过程。这个工具可以在Ubuntu软件中心里找到,是目前为止自动移除或降级从PPA安装的包的最容易的方法。

为了使用这个工具,我们需要返回终端然后键入下面命令,要留意任何出现在降级过程中的提示。

sudo ppa-purge ppa:gnome3-team/gnome3-next

如果你也添加了其它可选的PPA,你也需要清除它们:

sudo ppa-purge ppa:gnome3-team/gnome3-staging
sudo ppa-purge ppa:gnome3-team/gnome3

完成后,你就剩下了原来的 GNOME 3.8 桌面。如果你不再想保留GNOME Shell了,你可以执行下列命令去卸载它:

sudo apt-get remove gnome-shell ubuntu-gnome-desktop

最后,手动移除任何在降级之后可能残留的应用程序(譬如,Epiphany and GNOME Documents),然后重启。


via: http://www.omgubuntu.co.uk/2013/12/upgrade-gnome-3-10-ubuntu-13-10

译者:KAyGuoWhu 校对:jasminepeng

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

Linux从未兑现最初的承诺---作为一款传统的桌面操作系统。然而在2013年中,在社区的驱动下,它变得无处不在。

IMG

2013年,从各方面看,都是属于Linux的一年。Linux基金会执行董事Jim Zemlin宣布Linux的已经普及到了运算的每一个角落。“从智能手机,平板电脑,消费电器和汽车,到开放云和高性能计算机,以及游戏平台等,是Linux一直是几乎无处不在的,” Zemlin 说到

Linux是如何蔓延到技术世界的每一个角落?毕竟,Linux并未真正实现其最初的承诺---成为一款取代Microsoft和Windows的传统的桌面操作系统。内核和代码都只是这个故事的一部分,Linux的无所不在归结为它在激发和凝聚社区方面的能力,而非出众的技术。

足够好,但仍然有一些缺陷

话虽如此,我们并非认为如果技术较为落后,Linux仍旧会取得今天的成就。正如甲骨文公司的负责Linux、MySQL和虚拟化和开源产品营销的高级主管莫妮卡·库马尔所说,“没有卓越的技术,优越的社会就不会团结在Linux操作系统周围。” 这是任何成功的开源项目的 关键组件之一,即伟大的初始代码。

然而,这还不够!

当刚被推出的时候,Linux是一个廉价的,“足够好”的替代专有UNIX的系统。但是,并未做到更好。事实上,在最早开发Linux后的10多年间,InfoWorld仍能令人信服地声称,“作为UNIX的变种,相比于Linux操作系统,Solaris是技术优越的操作系统”。UNIX,毕竟是定位于一个相对狭窄的应用程序和硬件类型,允许其供应商针对特定的任务来深度优化它的性能。

正如IBM所解释的那样,Linux恰恰相反:

GNU / Linux的发展...比UNIX更加多样化。开发人员来自许多不同的背景,因此有不同的经验和想法。在Linux社区内部,目前还没有一套严格的标准的工具,环境和功能....由于缺乏标准,导致Linux中出现明显的不一致性。

有趣的是,这也赋予了Linux最大的优势:适用于所有用户的能力。

为何社区喜爱Linux

但为什么是Linux?考虑到当Linux推出时,对于大多数任务来说,只是勉强足够使用,是什么促使一个社区形成的?Ubuntu Linux制造商Canonical的OEM部门主管,Brent Fox,认为相对于失败的风险,一个公共平台的回报更加诱人。

@mjasay 在很长一段时间内,该技术本身是不成熟的。这对于已经厌烦现在的OS的人们是一种吸引力,它吸引了一大群人 — Brent Fox (@brentfox) December 19, 2013

这些基本上来说是对的,但它与历史并不完全相符。毕竟,Linux的最早倡导者之一,是一个有庞大的UNIX的业务需要保护的公司:IBM。IBM需要Linux来统一其不同的硬件线路,并且看到了在Linux上搭建一个更大的硬件和服务业务的潜力,即使以某些UNIX的收入为代价。

现如今,Linux成为许多数十亿美元级别公司的心脏。就如"Who Writes Linux?"报告反映的,Linus Torvalds的这个小玩具已经成为世界上一些大公司和最好的开发者关注的焦点。

通过多样性所获得的优势 ... 以及Linus

控制冲突的能力,以及有时在一面旗帜下控制竞争利益的能力使得Linux变得如此成功。它促使不同的公司和个人开发者通过塑造Linux来满足他们的需求。正如Apache软件基金会主席吉姆Jagielski告诉我的那样,和建立一个健康的可行的社区相比,“建立内核较为容易,Linux之所以能够成功,是因为它有一个成功的社区。”

寻求和发现Linux成功之处的顶级Linux开发赞助商名单:

支撑这种多样性的是Linus Torvald的非凡的领导“。由于许多人试图令Linux私有化,托沃兹已经设法让由他的权威所支持的Linux对这种行为说“不”。它工作得很好,但拥有足够的弹性,来让公司提供驱动程序或其他技术,使得Linux非常适合他们的客户。

Linux技术尽管已经变得如此神奇,然而,它并非Linux的最大优势。正如Zemlin在电子邮件中告诉我的那样:

这些天,我并没有得到许多关于Linux的询问,尽管到处都在使用它。许多公司想知道如何最大限度地发挥它的性能以及如何将它的原理应用于其他的事情。这便是我所感兴趣的问题:社区是如何工作的。

伟大的技术一直都在被创造。然而大多数都没能找到观众。Linus Torvalds以及他所塑造的Linux发展的天赋在于,他所开创和完善的社会发展模式。


via: http://readwrite.com/2013/12/19/the-genius-of-linux-is-community-not-technology#feed=/hack

译者:tomatoKiller 校对:wxy

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