本文目录:
- 1、Linux:用shell如何实现读取一个字符串的第n个字符呢
- 2、linux中shell分多少种,都有什么区别
- 3、UNIX / Linux命令与DOS命令有什么不同
- 4、如何选择一个 Linux Tracer
- 5、Linus vs.Gnome:我是怎么选择Linux桌面环境的
Linux:用shell如何实现读取一个字符串的第n个字符呢
代码如下:
str="/home/gateman"
if [ ${str:0:1} = "/" ]; then
echo "yes'
fi
${str:0:1} 中0表示从第几个字符开始,1表示截取多长。
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
扩展资料
Linux shell 截取字符变量的前8位:
实现方法有如下几种:
expr substr “$a” 1 8
echo $a|awk ‘{print substr(,1,8)}’
echo $a|cut -c1-8
echo $
expr $a : ‘\(.\\).*’
echo $a|dd bs=1 count=8 2/dev/null
按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2
小结:shell对应字符串的处理方法很多,根据需求灵活选择。
在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。
linux中shell分多少种,都有什么区别
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
扩展资料:
常见的编程语言分为两类:一个是编译型语言,如:c/c++/java等,它们远行前全部一起要经过编译器的编译。另一个解释型语言,执行时,需要使用解释器一行一行地转换为代码,如:awk, perl, python与shell等。
Shell 经过了POSIX的标准化,所以它是可以在不同的linux系统上进行移植。
关于注释的问题: 在shell中使用#进行注释,注意,sh里面没有多行注释,只能每一行加一个#号;
UNIX / Linux命令与DOS命令有什么不同
1.Linux的操作比较复杂,windows的比较简单.
Linux速度比较快,安全性比windows好
但是有很多软件只能在windows里运行
与Linux兼容的软件正在开发中.
Linux适用在网络方面.
2. 什么是Linux?
简单地说, Linux是一套免费使用和自由传播的类 Unix操作系统,它主要用于基
于 Intel x86系列 CPU的计算机上。这个系统是由世界各地的成千上万的程序员
设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自
由使用的 Unix兼容产品。 Linux的出现,最早开始于一位名叫 Linus Torvalds
的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一
个代替 Minix(是由一位名叫 Andrew Tannebaum的计算机教授编写的一个操作系
统示教程序)的操作系统,这个操作系统可用于 386、 486或奔腾处理器的个人
计算机上,并且具有 Unix操作系统的全部功能,因而开始了 Linux雏形的设计。
Linux以它的高效性和灵活性著称。它能够在 PC计算机上实现全部的 Unix特性,
具有多任务、多用户的能力。 Linux是在 GNU公共许可权限下免费获得的,是一
个符合 POSIX标准的操作系统。 Linux操作系统软件包不仅包括完整的 Linux操
作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有
多个窗口管理器的 X-Windows图形用户界面,如同我们使用 Windows NT一样,允
许我们使用窗口、图标和菜单对系统进行操作。
Linux与其他操作系统有什么区别:
Linux可以与 MS-DOS、 OS/2、 Windows等其他操作系统共存于同一台机器上。它
们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。
目前运行在 PC机上的操作系统主要有Microsoft的 MS-DOS、 Windows、 Windows
NT、 IBM的 OS/2等。早期的 PC机用户普遍使用 MS-DOS,因为这种操作系统对机
器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来
越低,人们可以相对容易地提高计算机的硬件配置,于是开始使用
Windows、Windows NT等具有图形界面的操作系统。 Linux是新近被人们所关注的
操作系统,它正在逐渐为 PC机的用户所接受。那么, Linux与其他操作系统的主
要区别是什么呢?下面从两个方面加以论述。
首先看一下Linux与 MS- DOS之间的区别。 在同一系统上运行 Linux和 MS-DOS
已很普遍,就发挥处理器功能来说, MS-DOS没有完全实现 x86处理器的功能,而
Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。 Linux可以
直接访问计算机内的所有可用内存,提供完整的 Unix接口。而 MS-DOS只支持部
分 Unix的接口。
就使用费用而言, Linux和 MS-DOS是两种完全不同的实体。与其他商业操作系统
相比, MS-DOS价格比较便宜,而且在 PC机用户中有很大的占有率,任何其他 PC
机操作系统都很难达到 MS-DOS的普及程度,因为其他操作系统的费用对大多数
PC机用户来说都是一个不小的负担。 Linux是免费的,用户可以从 internet上或
者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。 就操作系统
的功能来说, MS-DOS是单任务的操作系统,一旦用户运行了一个 MS-DOS的应用
程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而 Linux
是多任务的操作系统,用户可以同时运行多个应用程序。 再看一下 Linux与
OS/2、 Windows、 Windows NT之间的区别。
从发展的背景看, Linux与其他操作系统的区别是, Linux是从一个比较成熟的
操作系统发展而来的,而其他操作系统,如 Windows NT等,都是自成体系,无对
应的相依托的操作系统。这一区别使得 Linux的用户能大大地从 Unix团体贡献中
获利。因为 Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年
代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少
相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是
Unix的作者还是 Unix的用户,都认为只有 Unix才是一个真正的操作系统。
3. 首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件
,
只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司
都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些
Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区
别
是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置,
各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之
没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到
。
所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志
得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了,
或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下
安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜
是不希奇的 -- 当然,我觉得这是值得的。
所以,面对那么多Linux distribution,你应当选择哪个呢?
比较著名的Linux distribution有:
RedHat:最新版本6.2, 7.0beta。由于RedHat公司已经上市,获得了很多
商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的
工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为
Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你
自然会只认准一个Linux。
Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了
。
SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。
另外还有Debian,CorelLinux等dist,不一一介绍了。
还有你会看到国内媒体上吹捧的各种“中文Linux”,他们的优势主要是有
中文处理。但是如前一篇文章提到的,想用中文,用windows 2000最好。实际上
我觉得一个老7字班的前辈跟我说的一句话很好:“(对我们来说)在计算机上看
到
中文本身就是一件很古怪的事情”。如果你是抱着学习计算机的目的而来,那么
你不可能避免阅读英文文档。即使是microsoft的文档,有关编程的文档,最新的
也
全是英文。当然,要上BBS,看中文网页等,用英文的dist一样能做到
4. Linux和Windows的区别
和Linux 一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口
、网络和安全性。但是,Linux和Windows的真正区别在于,Linux 事实上是Unix
的一种版本,而且来自Unix的贡献非常巨大。是什么使得Unix如此重要?不仅在
于对多用户机器来说,Unix是最流行的操作系统,而且在于它是免费软件的基础
。在Internet上,大量免费软件都是针对Unix系统编写的。由于有众多的Unix厂
商,所以Unix也有许多实现方法。没有一个单独的组织负责Unix的分发。现在,
存在一股巨大的力量推动Unix社团以开放系统的形式走向标准化。另一方面Windo
ws系列是专用系统,由开发操作系统的公司控制接口和设计。在这个意义上这种
公司利润很高,因为它对程序设计和用户接口设计建立了严格的标准,和那些开
放系统社团完全不一样。一些组织正在试图完成标准化Unix程序设计接口的任务
。特别要指出的是,Linux完全兼容POSIX.1标准。
安全问题对于IT管理员来说是需要长期关注的。主管们需要一套框架来对操作系
统的安全性进行合理的评估,包括:基本安全、网络安全和协议,应用协议、发
布与操作、确信度、可信计算、开放标准。在本文中,我们将按照这七个类别比
较微软Windows和Linux的安全性。最终的定性结论是:目前为止,Linux提供了相
对于Windows更好的安全性能,只有一个方面例外(确信度)。
无论按照什么标准对Windows和Linux进行评估,都存在一定的问题:每个操作系
统都不止一个版本。微软的操作系统有Windows98、 Windows NT、 Windows 2000
、 Windows 2003 Server和Windows
CE,而Linux的发行版由于内核(基于2.2、2.4、2.6)的不同和软件包的不同也
有较大的差异。我们本文所使用的操作系统,都是目前的技术而不是那些"古老"
的解决方案。
用户需要记住:Linux和Windows在设计上就存在哲学性的区别。Windows操作系统
倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合;而Linux不同
于Windows,它的内核空间与用户空间有明显的界限。根据设计架构的不同,两者
都可以使操作系统更加安全。
Linux和Windows安全性的基本改变
对于用户来说,Linux和Windows的不断更新引发了两者之间的竞争。用户可以有
自己喜欢的系统,同时也在关注竞争的发展。微软的主动性似乎更高一些――这
是由于业界"冷嘲热讽"的"激励"与Linux的不断发展。微软将在下几个月对Window
s安全进行改观,届时微软会发布Windows XP的WindowsXP Service Pack 2。这一
服务包增强了Windows的安全性,关闭了原先默认开放的许多服务,也提供了新的
补丁管理工具,例如:为了避免受到过多无用的信息,警告服务和信使服务都被
关闭。大多数情况下,关闭这些特性对于增强系统安全性是有好处的,不过很难
在安全性与软件的功能性、灵活性之间作出折衷。
最显著的表现是:微软更加关注改进可用性的同时增强系统的安全性。比如:200
3年许多针对微软的漏洞攻击程序都使用可执行文件作为电子邮件的附件(例如My
Doom)。Service Pack2包括一个附件执行服务,为Outlook/Exchange、 Windows
Messenger和Internet Explorer提供了统一的环境。这样就能降低用户运行可执
行文件时感染病毒或者蠕虫的威胁性。另外,禁止数据页的可执行性也会限制潜
在的缓冲区溢出的威胁。不过,微软在WindowsXP Service Pack
2中并没有修改Windows有问题的架构以及安全传输的部分,而是将这部分重担交
给了用户。
微软的重点显然是支持应用程序的安全性。WindowsXP Service Pack 2中增强的
许多方面都是以Outlook/Exchange和Internet
Explorer作为对象的。例如:Internet Explorer中有一个智能的MIME类型检查,
会对目标的内容类型进行检查,用户可以获悉该内容中是否存在潜在的有害程序
。不过这一软件是不是能将病毒与同事的电子数据表区分开来呢?
WindowsXP Service Pack 2的另一个新特性是能够卸载浏览器的多余插件,这需
要终端用户检查并判断需要卸载哪些插件。Outlook/Exchange可以预览电子邮件
消息,因此用户可以在打开之前就将电子邮件删除。另一个应用安全的增强,防
火墙在网络协议栈之前启动。对于软件开发者来说,远方过程调用中权限的改变
,使得安全性差的代码难以工作正常。
WindowsXP Service Pack 2也为Windows用户提供了许多华丽的新特性,但是问题
仍然存在:这些特性会不会对管理员甚至是终端用户造成负担?是不是在增加了W
indows操作系统代码安全性的同时让系统变得更加复杂?
Linux 与 Windows 的不同
虽然有一些类似之处,但Windows和Linux的工作方式还是存在一些根本的区别。
这些区别只有在您对两者都很熟悉以后才能体会到,但它们却是 Linux 思想的核
心。
Linux 的应用目标是网络而不是打印
Windows最初出现的时候,这个世界还是一个纸张的世界。Windows的伟大成就之
一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows
的后期发展。
同样,Linux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的
设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较
简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文
本为基础。
对那些熟悉图形环境的人来说,Linux服务器初看可能比较原始。但是Linux开发
更多关注的是它的内在功能而不是表面上的东西。即使是在纯文本的环境中,Lin
ux同样拥有非常先进的网络、脚本和安全能力。执行一些任务所需的某些表面上
看起来比较奇怪的步骤是令人费解的,除非您认识到 Linux 是期望在网络上与其
他 Linux系统协同执行这些任务。Linux的自动执行能力也很强,只需要设计批处
理文件就可以让系统自动完成非常详细的任务。Linux 的这种能力来自于其基于
文本的本质。
可选的 GUI
Linux有图形组件。Linux支持高端的图形适配器和显示器,完全胜任图形相关的
工作。现在,许多数字效果艺术家在Linux工作站上来进行他们的设计工作,而以
前这些工作需要使用IRIX系统来完成。但是,图形环境并没有集成到 Linux 中,
而是运行于系统之上的单独一层。这意味着您可以只运行 GUI,或者在需要时才
运行 GUI。如果您的系统主要任务是提供Web应用,那么您可以停掉图形界面,而
将其所用的内存和CPU资源用于您的服务。如果您需要在 GUI 环境下做一些工作
,可以再打开它,工作完成后再将其关闭。
Linux 有图形化的管理工具,以及日常办公的工具,比如电子邮件、网络浏览器
和文档处理工具等。不过,在 Linux 中,图形化的管理工具通常是控制台 (命令
行) 工具的扩展。也就是说,用图形化工具能完成的所有工作,用控制台命令同
样可以完成。同样,使用图形化工具并不妨碍您对配置文件进行手工修改。其实
际意义可能并不是特别显而易见,但是,如果在图形化管理工具中所做的任何工
作都可以以命令行的方式完成,这就表示那些工作也可以由一个脚本来实现。脚
本化的命令可以成为自动执行的任务。Linux 同时支持这两种方式,并不要求您
只用文本或者只用 GUI。您可以根据您的需要选择最好的方法。
Linux 中的配置文件是人类可读的文本文件,这与过去的 Windows 中的 INI 文
件类似,但与 Windows 的注册表机制在思路上有本质的区别。每一个应用程序都
有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的
配置文件都存放于一个目录树 (/etc) 下的单个地方,所以看起来它们在逻辑上
是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件
的备份、检查和编辑工作。
文件名扩展
Linux不使用文件名扩展来识别文件的类型。相反,Linux根据文件的头内容来识
别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来
说没有任何作用。不过,有一些应用程序,比如 Web 服务器,可能使用命名约定
来识别文件类型,但这只是特定的应用程序的要求而不是 Linux 系统本身的要求
。
Linux通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予
可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。
这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防
止许多脚本病毒。
重新引导是最后的手段
如果您使用Windows已经很长时间了,您可能已经习惯出于各种原因(从软件安装
到纠正服务故障)而重新引导系统。在Linux思想中您的这一习惯需要改变。Linu
x在本质上更遵循“牛顿运动定律”。一旦开始运行,它将保持运行状态,直到受
到外来因素的影响,比如硬件的故障。实际上,Linux系统的设计使得应用程序不
会导致内核的崩溃,因此不必经常重新引导(与Windows系统的设计相对而言)。
所以除了Linux内核之外,其他软件的安装、启动、停止和重新配置都不用重新引
导系统。
如果您确实重新引导了 Linux 系统,问题很可能得不到解决,而且还会使问题更
加恶化。学习并掌握 Linux 服务和运行级别是成功解决问题的关键。学习 Linux
最困难的就是克服重新引导系统的习惯。
另外,您可以远程地完成Linux中的很多工作。只要有一些基本的网络服务在运行
,您就可以进入到那个系统。而且,如果系统中一个特定的服务出现了问题,您
可以在进行故障诊断的同时让其他服务继续运行。当您在一个系统上同时运行多
个服务的时候,这种管理方式非常重要。
命令区分大小写
所有的 Linux 命令和选项都区分大小写。例如, -R 与 -r 不同,会去做不同的
事情。控制台命令几乎都是小写的。我们将在“ 第 2 部分. 控制台速成班”中
对命令进行更详细的介绍。
广泛的硬件支持可能是任何流行操作系统最基本的要求,也是可伸缩性的一个重要方面。Windows操作系统在这个方面做得的确非常出色:一方面,Windows的广泛使用使得任何硬件厂商在推出新的硬件时都会把Windows当作标准的平台加以支持,并且不断为新的Windows版本更新驱动程序;另一方面,大量的硬件支持又反过来推动了Windows平台的进一步普及。
Linux的硬件驱动程序通常都是由那些需要这些硬件的用户自己来开发的. Linux的共享性能够很快地给那些常用的硬件提供驱动程序,这些驱动程序需要后续的支持和帮助,来克服潜在的不稳定性。至于一些尚未普及的组件,如各式各样的USB设备,其驱动程序的开发将需要更多的支持,来满足不同用户的需要。
SMP(对称多处理器)支持
CPU是计算机系统的核心部分,是否具有良好的SMP支持将直接影响大型应用下的性能。
Windows 2000 Advanced Server的零售版本最多支持四路SMP,OEM版可以支持最多达32路的SMP。对CPU的支持级别和Windows 4.0相比没有什么变化,但是对SMP的实现代码进行了改进,使得高性能的缩放可以更为“线性”地进行。Windows NT Server 4.0企业版已经实现了创纪录的性能价格水平,随着对SMP缩放的改进,这一趋势将在Windows 2000 Advanced Server和Datacenter Server中得到延续。在采用八路设计或者多于八路设计的系统中,性能的提高最为明显。
而Linux正致力于解决核心部分中的SMP支持,以提高Linux在大型应用下的性能。尽管Linux不是为SMP而设计的,Linux Torvalds也曾经说过Linux的SMP评测表现很差,但是我们期望这些问题能够在2.4版本内核中得到解决,使更多的学校或者企业可以使用经过考验的Linux来实现他们的核心程序。
对群集的支持
Windows 2000 Server具有强大的群集功能。Compaq最近之所以能在TPC-C比赛中傲视群雄,击败所有对手,靠的就是一个巨大的有着12个节点,96个处理器的群集,而它们运行的是Windows 2000 Server。
尽管Linux没有在高端系统中运行关键性应用程序方面有出色记录,但最近Linux在群集项目也发布了不少东西,希望Linux的开发者大军可以开发出更完善的群集功能
对特定计算环境的支持
使每一个系统都有适合于自己的工作场合,这就是系统对特定计算环境的支持。
微软开发了不同的操作系统来完成不同类型的任务。Windows CE适用于小型的手持式电脑和笔记本电脑,Windows 95/98和Windows 2000 Professional适用于桌面计算机,而Windows NT 4.0和Windows 2000 Server则适用于大型服务器应用程序。作为一个系列操作系统家族,Windows对各种不同的工作环境提供了良好的伸缩性支持。
由于Linux大部分可用的平台处于开发的初始阶段,对于各种不同计算环境的支持将是Linux系统的下一步目标。
文档编制
众所周知,随着系统变得越来越复杂,功能越来越强大,编制一个好的文档是非常重要的。这有助于用户对系统的理解和管理。详尽的文档说明,有助于我们熟练地掌握它所有的功能和特性。
微软通常为其产品提供了深入细致的文档说明,在文档的本地化方面也做得很好。Linux产品的文档说明需要进一步的规范。
回答者:可爱的小刚丝 - 试用期 一级 9-6 13:12
1、从系统构成上来说,linux是开源软件,而windows不是。那就意味着,如果你喜欢你可以对linux系统做你想做的任何改动。而这点对于windows来说,是想也不要想的。
2、从运行的稳定性来说。各有利弊。但linux的任何程序都是相对独立的,哪怕gnome和kde(图形界面)也是独立的。而软件的崩溃只是软件的崩溃,很少造成系统的瘫痪(死机)。只有重新运行程序就好了。windows吗,就不用说了,没见过windows死机的人,我没见过。
3、从多用户来说,linux是真正的多用户系统。可以多个用户真正登录,这对于windows来说,虽然也有了雏形,但太儿戏化了,摆设而已。
4、对于中文的支持来说。windows的多个版本对于windows的支持是很强的。字体也很漂亮。而linux虽然也支持中文,但要完全支持中文是要手动做很多设置的,不过就算做的再好。总有机会看到中文乱码的(因为几乎每个软件都要设置字体和字符编码的)。而且中文的字体比较烦,不是很好看。(好看的基本都不是开源的。ps:如果你都不想为操作系统花钱,还会去买几个字体吗。当然也有盗版@不是用linux的初衷了。)
5、对于系统更新来说,apt是目前linux不二的选择了,快捷普遍、简单。而且无什么正版验证之虞的。windows也不错,可以漏洞总比补丁来的快,更何况我没用过正版的呢。
6、从安全性来说。其实上一条也说过这个问题了。我们用windows时,杀毒软件、防火墙、防垃圾软件、防间谍软件占去了大部分的系统资源。可这样还是防不胜防的。有谁没中过毒或木马、流氓软件呢?
linux?不用这些烦人的东西。
7、从应用软件来说,虽然linux下的软件有很多,但和windows来说,真的没办法比的。谁让windows几乎成了操作系统的代名了呢。
8、从易用性来说,我自我的感觉,在常用的windows、mac、linux中,无论界面、鼠标操作、文件格式,windows都是相当容易上手的。其他的操作系统,几乎都要是摸索中探索的。更何况linux的很多配置都是基于文档的,也就是要手工的修改一些配置文件。对于想我这样的老人来说,厄长的代码,明天还能记得否?
windows几乎一支鼠标就能解决所有问题。呵呵
9、综述:当然各种的优缺点远不至就这些,就不过说了。
如果要出于个人应用的话,还是用windows吧。学习容易,资料好早。
如果出于学习的话,还是用用linux吧,但你要做好不厌其烦的心理准备!对于混乱的linux版本来说,你要记得同样的问题,可以有n种解决办法,但可能只有一种合适你的。网上资料相对比较匮乏,比较单一,而且抄袭严重。
linux我推荐用新华linux,中文化很好了(少烦很多神的),论坛也做的不错。
如何选择一个 Linux Tracer
tracer 是一个高级的性能分析和诊断工具,但是不要让这名词唬住你,如果你使用过 strace 和tcpdump,其实你就已经使用过 tracer 了。系统 tracer 可以获取更多的系统调用和数据包。它们通常能跟踪任意的内核和应用程序。
有太多的 linux tracer 可以选择。每一种都有其官方的(或非官方的)的卡通的独角兽吉祥物,足够撑起一台"儿童剧"了。
那么我们应该使用哪个 tracer 呢?
我会为两类读者回答这个问题,大部分人和性能/内核工程师。过一段时间这些可能会发生变化,我会持续跟进并补充,大概会一年更新一次。
多数人
多数人 (开发者,系统管理员,开发管理者,运维人员,评测人员,等等) 不关心系统追踪器的细节。下面是对于追踪器你应该知道和做的:
1. 使用perf_events分析CPU性能
使用 perf_events 做 CPU 性能分析。性能指标可以使用flame graph 等工具做可视化。
git clone --depth 1
perf record -F 99 -a -g -- sleep 30
perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl perf.svg
Linux perf_events (又称 "perf",同命令名) 是 Linux 用户的官方追踪器和性能分析器。内置于内核代码,有很好维护(近来获得快速增强),通常通过 linux 命令行工具包添加。
perf 有很多功能,如果只能推荐一个,我选择 CPU 性能分析。尽管这只是采样,而不是从技术上追踪事件。最难的部分是获取完整的栈和信息,我为 java 和 node.js 做的一个演讲 Linux Profiling at Netflix中已经说过这个问题
2.了解其他的Tracer
正如我一个朋友说的:“你不需要知道如何操作 X 射线机器,但是一旦你吞了一枚硬币,你得知道这得去做 X 射线”,你应该了解各种 tracer 都能做什么,这样就能在你工作中真正需要 tracer 的时候,你既可以选择稍后学习使用,也可以雇相应的人来完成。
简短来说:几乎所有的东西都可以使用 tracer 来进行分析和跟踪。如,文件系统,网络处理器,硬件驱动器,全部的应用程序。可以看一下我的个人网站上关于 ftrace的文章,还有我写的关于perf_events 文档介绍,可以做为一个追踪(或者性能分析)的例子。
3. 寻求前端支持工具
如果你正想买一个能支持跟踪 Linux 的性能分析工具(有许多卖这类工具的公司)。想像一下,只需要直接点击一下界面就能“洞察”整个系统内核,包括隐藏的不同堆栈位置的热图,我在Monitorama talk 中介绍了一个这样带图形界面的工具。
我开源了一些我自己开发的前端工具,尽管只是 CLI (命令行界面)而不是(图形界面)。这些工具也会让人们更加快速容易的使用 tracer。比如下面的例子,用我的 perf_tool,跟踪一个新进程:
# ./execsnoopTracing exec()s. Ctrl-C to end.
PID PPID ARGS
22898 22004 man ls
22905 22898 preconv -e UTF-8
22908 22898 pager -s
22907 22898 nroff -mandoc -rLL=164n -rLT=164n -Tutf8
[...]
在 Netflix 上,我们创建了一个 Vector,一个分析工具的实例同时也是 Linux 上的 tracer 的最终前端。
致性能或内核工程师
我们的工作变的越来越困难,很多的人会问我们怎么样去追踪,哪种路径可以用!为了正确理解一个路径,你经常需要花上至少100个小时才能做到。理解所有的 linux 路径去做出理性的决定是一个浩大的工程。(我可能是唯一一个接近做到这件事情的人)
这里是我的建议,可以二选其一:
A) 选中一个全能的路径,并且使它标准化,这将涉及花费大量的时间去弄清楚它在测试环境中的细微差别和安全性。我现在推荐 SystemTap 的最新版本(ie,从源代码构建)。我知道有些公司已经选用 LTTng,而且他们用的很好,尽管它不是非常的强大(虽然它更安全)。Sysdig 可以成为另一个候选如果它可以增加追踪点或者 kprobes。
B) 遵循我上面提供的流程图,它将意味着尽可能更多的使用 ftrace 或者 perf_event, eBPF 会得到整合,之后其他的路径像 SystemTap/LTTng 会去填补这个空白。这就是我目前在 Netflix 做的工作。
tracer 的评论:
1. ftrace
我喜欢用 ftrace,它是内核 hacker 的首选,内置于系统内核,可以使用跟踪点(静态检查点),能调用内核 kprobes 和 uprobes 调试工具。并且提供几个这样的功能:带可选过滤器和参数的事件追踪功能;在内核中进行统计的事件计数和定时功能;还有函数流程遍历的功能。可以看一下内核代码中 ftrace.txt 例子了解一下。ftrace 由 /sys 控制,仅支持单一的 root 用户使用(但是你可以通过缓冲区实例破解以支持多用户)。某些时候 Ftrace 的操作界面非常繁琐,但是的确非常“hack”,而且它有前端界面。Steven Rostedt,ftace 的主要作者,创建了 trace-cmd 命令工具,而我创建了 perf 的工具集。我对这个工具最大的不满就是它不可编程。举例来说,你不能保存和获取时间戳,不能计算延迟,不能把这些计算结果保存成直方图的形式。你需要转储事件至用户级别,并且花一些时间去处理结果。ftrace 可以通过 eBPF 变成可编程的。
2.perf_events
perf_events 是 Linux 用户的主要跟踪工具,它内置在内核源码中,通常通过 linux-tools-commom 加入。也称“perf”,同前端工具名称,通常用来跟踪和转储信息到一个叫做 perf.data 的文件中,perf.data 文件相当于一个动态的缓冲区,用来保存之后需要处理的结果。ftrace 能做到的,perf_events 大都也可以做到,perf-events 不能做函数流程遍历,少了一点儿“hack”劲儿(但是对于安全/错误检查有更好的支持)。它可以进行 CPU 分析和性能统计,用户级堆栈解析,也可以使用对于跟踪每行局部变量产生的调试信息。它也支持多用户并发操作。和 ftrace 一样也不支持可编程。如果要我只推荐一款 tracer,那一定是 perf 了。它能解决众多问题,并且它相对较安全。
3. eBPF
extended Berkeley Packet Filter(eBPF)是一个可以在事件上运行程序的高效内核虚拟机(JIT)。它可能最终会提供 ftrace 和 perf_events 的内核编程,并强化其他的 tracer。这是 Alexei Starovoitov 目前正在开发的,还没有完全集成,但是从4.1开始已经对一些优秀的工具有足够的内核支持了,如块设备I/O的延迟热图。可参考其主要作者 Alexei Starovoitov 的BPF slides和eBPF samples。
4. SystemTap
SystemTap 是最强大的tracer。它能做所有事情,如概要分析,跟踪点,探针,uprobes(来自SystemTap),USDT和内核编程等。它将程序编译为内核模块,然后加载,这是一种获取安全的巧妙做法。它也是从tree发展而来,在过去有很多问题(多的可怕)。很多不是 SystemTap 本身的错——它常常是第一个使用内核追踪功能,也是第一个碰到 bug 的。SystemTap 的最新版本好多了(必须由源代码编译),但是很多人仍然会被早期版本吓到。如果你想用它,可先在测试环境中使用,并与irc.freenode.net上 的 #systemtap 开发人员交流。(Netflix 有容错机制,我们已经使用了 SystemTap,但是可能我们考虑的安全方面的问题比你们少。)我最大的不满是,它似乎认为你有常常没有的内核 debug 信息。实际上没有它也能做很多事情,但是缺少文档和例子(我必须自己全靠自己开始学习)。
5. LTTng
LTTng 优化了事件采集,这比其他 tracers 做得好。它从 tree 发展而来,它的核心很简单:通过一组小规模的固定指令集将事件写入追踪缓冲区,这种方式使它安全、快速,缺点是它没有内核编码的简单途径。我一直听说这不是一个大问题,因为尽管需要后期处理,它也已经优化到可以充分的度量。此外,它还首创了一个不同的分析技术,更多对所有关注事件的黑盒记录将稍后以 GUI 的方式进行研究。我关心的是前期没有考虑到要录制的事件缺失问题如何解决,但我真正要做的是花更多时间来看它在实践中用的怎么样。这是我花的时间最少的一个 tracer(没有什么特殊原因)。
6. Ktap
ktap 在过去是一款前景很好的 tracer,它使用内核中的 lua 虚拟机处理,在没有调试信息的情况下在嵌入式设备上运行的很好。它分为几个步骤,并在有一段时间似乎超过了 Linux 上所有的追踪器。然后 eBPF 开始进行内核集成,而 ktap 的集成在它可以使用 eBPF 替代它自己的虚拟机后才开始。因为 eBPF 仍将持续集成几个月,ktap 开发者要继续等上一段时间。我希??今年晚些时候它能重新开发。
7. dtrace4linux
dtrace4linux 主要是 Paul Fox 一个人在业余时间完成的,它是 Sun DTrace 的 Linux 版本。它引入瞩目,还有一些 provider 可以运行,但是从某种程度上来说还不完整,更多的是一种实验性的工具(不安全)。我认为,顾忌到许可问题,人们会小心翼翼的为 dtrace4linux 贡献代码:由于当年 Sun 开源DTrace 使用的是 CDDL 协议,而 dtrace4linux 也不大可能最终进入 Linux kernel。Paul 的方法很可能会使其成为一个 add-on。我很乐意看到 Linux 平台上的 DTrace 和这个项目的完成,我认为当我加入 Netflix 后将会花些时间来协助完成这个项目。然而,我还是要继续使用内置的 tracers,如 ftrace 和 perf_events。
8.OL DTrace
Oracle Linux DTrace为了将 DTrace 引入 Linux,特别是 Oracle Linux,做出了很大的努力。这些年来发布的多个版本表明了它的稳定进展。开发者们以一种对这个项目的前景看好的态度谈论着改进 DTrace 测试套件。很多有用的 provider 已经完成了,如:syscall, profile, sdt, proc, sched 以及 USDT。我很期待 fbt(function boundary tracing, 用于内核动态跟踪)的完成,它是 Linux 内核上非常棒的 provider。OL DTrace 最终的成功将取决于人们对运行 Oracle Linux(为技术支持付费)有多大兴趣,另一方面取决于它是否完全开源:它的内核元件是开源的,而我没有看到它的用户级别代码。
9. sysdig
sysdig是一个使用类tcpdump语法来操作系统事件的新tracer,它使用lua提交进程。它很优秀,它见证了系统跟踪领域的变革。它的局限性在于它只在当前进行系统调用,在提交进行时将所有事件转储为用户级别。你可以使用系统调用做很多事情,然而我还是很希望它能支持跟踪点、kprobe和uprobe。我还期待它能支持eBPF做内核摘要。目前,sysdig开发者正在增加容器支持。留意这些内容。
延伸阅读
我关于 tracer 的工作包括:
ftrace:我的 perf-tools工具集(参考实例目录);我在 lwn.net 上的 关于ftrace的文章;LISA14的发言;还有帖子:函数计数, iosnoop,opensnoop,execsnoop,TCP转发, uprobes 以及USDT。
perf_evenets:我的网页 perf_events实例;SCALE上的发言Netflix的Linux性能分析;还有帖子CPU采样,静态追踪点,热点图,计数,内核行追踪,off-CPU时间图。
eBPF:帖子eBPF:迈出一小步,和一些BPF工具(我需要发布更多)。
SystemTap:我很久以前写了一篇有点过期的帖子使用SystemTap。最近,我发布了一些工具systemtap-lwtools来演示如何在没有内核诊断信息的情况下使用SystemTap。
LTTng:我只花了一点时间,还不足以发表任何内容。
ktap:我的网页ktap实例包含一些早期版本的单行小程序和脚本。
dtrace4linux:我在系统性能一书中给出了一些实例,并曾经开发了一些小的修复程序,如timestamps。
OL DTrace:由于它直接由DTrace转变而来,很多我早期关于DTrace的工作都有相关性(如果在这里给出链接的话就太多了,可以在我的主页上搜索)。当它更完善时,我会开发一些特殊工具。
sysdig:我向 fileslower 和 subsecond offset spectrogram 贡献了代码。
其他:我写了关于strace 的注意事项。
请不要有更多的 tracer!如果你想知道为什么 Linux 不仅仅只有一个 tracer,或者只用本身的DTrace,你可以在我的演讲稿从DTrace到Linux中找到答案,从28张幻灯片开始。
感谢Deirdré Straughan的编辑,以及与 General Zoi 的小马宝莉创作者一起创作的 tracing 小马。
Linus vs.Gnome:我是怎么选择Linux桌面环境的
这篇文章使我回想起我的窗口管理器/桌面环境的切换历程, 我用 linux 至今至少 7 年, 而长期使用 (每日绝大部分使用电脑时间) 也有三年半. 用过了好些著名的桌面环境: FVWM, KDE, GNOME, XFCE, 还有其他短期使用的不知名的咚咚.一开始我使用的是 FVWM, 因为当时有资料说有个 FVWM95 能作出 windows 一样的界面, 我竟然真的成功地配置好除中文外的所有东西, 使用起 FVWM. 但是我当时完全是按 windows 的思维使用这东西的, 当然处处碰壁, 痛苦无比.接着使用的 ``真正能用'' 的是 KDE. 那时 KDE 已经相当完善, 整个架子跟现在相去不远. 提供的功能以及可定制性已经比当时的 windows 还好, 而且还有一大堆小游戏可玩. 记忆中我是在一个叫 winlinux 的发行版上使用它的, 记忆中它的唯一问题是中文 --- 只要设成中文界面, 全部乱码, 我猜那时候只要我弄个中文字体进去, 一切就完美了, 可惜那时我还不会. 当时 (2000 年前后) 的 GNOME 在我眼里还是只丑小鸭, 一点都不起眼.后来准备上大学的时候在新机器上用的是经典中的经典: Redhat 9. redhat 的推荐/默认桌面环境是 gnome, 但我还是选择我我熟悉的 KDE. 安装过程中对 GNOME 和 KDE 的介绍刻意地保持一模一样, 我也去尝试过 GNOME, 在 Redhat 的刻意包装下, 初始使用感觉, GNOME 跟 KDE 其实没啥差别. 那我更不会作 switch, 一直使用这 KDE.很多人说 KDE 是 windows style 的, GNOME 是 mac style 的, 确实有一定的道理. KDE 并非刻意模仿 windows 的用户界面和使用风格, 而是走着一条和 windows 一样的路: 不断地追求功能强大, 设置丰富, 让系统显得更加强大, 以吸引用户. 我很喜欢它的文件管理器 konqueror, 它确实比 windows 的 explore 还强大, 功能让我眼花缭乱, 一个让我非常着迷的特性是当你将一个文件拖动到一个文件夹时, 它会非常 ``人性化'' 地询问, 你是想移动到这里, 复制到这里, 还是做个符号链接? 我觉得这做得很细致贴心, 在数年之后, 在我成为系统维护, 不断强迫自己以大部分用户而不是仅以自己的角度思考用户界面的时候, 我才发现它的问题所在.我就这样用 KDE 用了很久, 到后来王垠向我们介绍了FVWM --- 我对这东西有阴影, 总觉得它是上个世纪刚用 linux 的那个黑暗时代的痛苦根源. 但王垠的介绍确实很诱人: 速度(KDE确实越来越慢了), 完全可定制的键盘快捷键等 (后来版本的 KDE 也有了这个功能) 都是我需要的, 那时候我也不那么惧怕写配置文件了, 下载了王垠自己的配置文件, 改一改, 附上个 KDE 的 panel, 上手后确实比 KDE 用的要方便. 之后的一段时间我热衷于FVWM配置. FVWM 仅仅是一个窗口管理器, 除了基本的窗口管理外, 几乎什么都不提供(除非使用那些不怎么好用的模块), 你可以用各种各样的外部小程序去武装它, 将它弄得非常强大. (其实 GNOME 也是这么武装起来的, GNOME 核心的窗口管理器, 现在是 metacity). UNIX 系统的开放性使这种砌积木的工作简单而有趣. 到最后, 我的桌面无比强大和花哨, 窗口最小化之后会有缩略图, 像 MacOSX 一样, 而且是以我喜欢的方式而不是 mac 的方式排列的, 也是我用过的最顺手的桌面 (当然了, 完全是我一点一点写出来的), 我也在这个时候养成了一切事情用键盘快捷键而不用鼠标的习惯, 一般人根本不敢碰我的键盘, 不知道一不小心又会触发什么.FVWM 有 FVWM 的问题, 它过于灵活, 过于强大, 你似乎是在自己买来一堆零件, 然后以天才的工程思维拼凑自己专用的机器, 这样 1) 这种事其实没几个人能做 2) 即使对工程天才, 这也是件费神的事 3) 总有一天你会厌倦的. 你换个桌面要先做个格式转换, 然后爬去改配置文件, 你不小心升级了某个部件, 发现使用不正常了, 你要自己去检查所有的 log 和配置, 找出问题所在. 这令我非常头痛, 但我实在无法舍弃这精心配置出来的顺手无比的环境, 但是用得越久, 这个问题就越严重, 直到某一天无法承受. 我想起 Ken Thompson 评论 UNIX 牌汽车 (UNIX Haters Handbook 里面的笑话): 有经验的用户知道这是怎么回事. 是的, 我知道怎么回事, 但是即使是天才汽车工程师也不愿骑着一个发动机加自己设计的传动部件满街跑, 他也希望开一台舒服的自动档汽车.我的机器在使用 FVWM 的同时, 我家里的机器用的是 XFCE. 因为家里的机器台烂, 跑 KDE 已经有点吃力, 而将 FVWM 的配置和它要使用的那一堆小部件一起移到家里的机器上, 是几乎不可能的. XFCE 是一个轻便的桌面环境, 也有相当的可配置性, 我也在不久之后找到了如何配置快捷键启动程序, 但 XFCE 也有一些我无法理解的地方 --- 为什么快捷键最多只能设置十个? 以我自己的经验, 这其中不应存在太多技术问题 (用一个 16bit 的咚咚去标识一个功能可以用哪些快捷键启动?), 既然允许设置快捷键, 为什么不允许设置更多? 是的, 普通用户可能根本用不上这 10 个快捷键, 但是允许设置更多快捷键的能力并不会影响普通用户的正常使用, 那为什么要做这个限制呢? 类似的问题还有很多. 另外 XFCE 对普通用户的一些习惯做了颠覆, 比如不可以放置桌面图标 (4.2 之前的版本), 是的, XWINDOW 传统习惯中, 最小化一个程序叫 iconfy, 将程序缩成桌面上的图标, 桌面上当然也不能放其他东西 (这也是 win 3.x 时代的习惯, 是否也是 mac 的习惯? 未调查过), 但是, XFCE 的程序最小化是放到任务栏的, 桌面会空无一物, 却依然不允许放桌面图标. 对于这种半吊子事情, 我们知道它的渊源, 也可以马马虎虎对付过去, 但对其他普通用户来说, 它会失去一个很有效率的功能 --- 这不是一个能用 ``不同的系统, 不同的操作习惯'' 就能解释的问题, XFCE 因为这个缺乏了一个能快速访问频繁使用的文档的能力, 你找不到替代品.但 XFCE 还不失为一个好的桌面环境, 因为它快, 使用简单, 能满足普通用户的基本要求, 然后....... 就没有了. 这样的话, 它可能是一个很好的替代品 (替代 GNOME), 却很难让人喜欢它, 将它作为第一选择.说回我的机器, FVWM 实在用不下去了, 为了让 FVWM 保持正常, 我强制了好些组件不去更新, 凑合着过. 到最后我终于换回了 KDE, 此时我也发现了 KDE 也有设置程序启动快捷键的功能, 经过一天的配置, 我换回了 KDE. 顺便说以下这个设置启动快捷键功能的 bug, 你要在菜单栏里设置某个菜单项的启动键, 之后, 如果你把这个菜单项删掉, 你就永远也不能用这个启动键了, 你得到配置目录的某个深处, 手动删掉文件中的某几行才能恢复正常. 是的, 我知道问题所在, 也知道怎么弄好它, 但这种``小''问题让我非常恼火.长期使用配置文件来配置环境, 用 KDE 图形化的控制中心, 我反而有点不知所措了. 我也第一次了解到 KDE ``强大'' 的代价, KDE 的配置中心使用了一个树型的配置列表, 可以调整几乎一切配置. 但是, 我想调整一个鼠标是单击打开文件还是双击打开, 我不知道是在 ``窗口行为'' 里, ``桌面'' 里, ``附加设备'' 的 ``鼠标'' 里做这个设置. 如果我想设置 KDE 像 mac 一样把菜单栏显示在桌面顶端, 我不知道这是属于 ``外观'', ``桌面'' 还是 ``窗口行为''. 就这样, 我要设置任何东西, 找个半天, 看得头昏眼花.这时候我也对 KDE 的一些 ``贴心'' 设计产生怀疑. 如文章开始时说的文件移动问题. 我重新思考这个问题是因为 BBS 的一位站务希望 BBS 有某个新功能, 我拒绝了, 因为加入了这个功能会使用户产生迷惑, 在解释时我就想到了 KDE 的这个例子: drag-and-drop 来源于实际生活中的移动物体, 把一个文件移到别处, 可以用 drag-and-drop, 就像实际生活中那样简便地完成. 在实际生活中, 移动东西就是移动东西, 这个语义是非常明确的, 而 KDE 在用 drag-and-drop 移动文件时, 反而会问你: 你要复制它, 移动它还是建立链接? 用户会迷惑, 而且会不耐烦: 我都已经这么移了, 你说我除了移动文件还想干嘛? 再说, 在实际生活中, 如果你把电脑挪个窝, 你就有两台电脑, 看你会不会疯掉! 这就是这些所谓 ``贴心'' 设计的问题, 它的这些功能纯属画蛇添足, 跟 windows 那些毫无营养的对话确认有一拼. 这可以参考关于用 winxp 武装的厕所等笑话, 可是令人惊讶的是, vista 把这些毫无营养的对话, 自作聪明的 ``贴心功能'' 发挥到极致, 据说 KDE 的这种特性也出现在 vista 上了. 在这里衷心祝愿 KDE 不要再跟 vista 学坏了.....KDE 在技术上一直高歌猛进, KDE 4.0 有许多让人激动不已的新特性. 在很久以前, 在某个对 KDE 开发者的访谈中谈到 KDE 4.0 是否会加入桌面搜索特性, 并举出其他竞争者的努力, 我记下了开发者的这样的话(抱歉我很懒, 没有去找原文, 迟些补上): 现在的问题并不是我们要怎么去搜索文件, 而是改变我们的文件存储和表达方式, 让信息更容易组织和查找. 从此足可见 KDE 开发者在技术上的独到眼光. KDE 4.0 的一些特性, 比如 native 的矢量图形支持等, 都是革命性的, KDE 4.0 实在值得期待. 但也希望 KDE 能够下力气去做好技术上没啥难度的提升用户体验的工作, 技术上再激动人心, 也就是我们这些 geeks 知道而已.可是, 我们得知道, 通常来说, GNOME 这样的软件, 其目标用户不是我, 更不是 Linus. 它的目标用户讨厌使用键盘操作, 不可能记忆那么多快捷键; 它的用户都用普通的三键鼠标, 也觉得右键菜单很有用, 并且不知道中键有什么用 --- 我也想知道 Linus 同学对 mac 只有一个键的鼠标的评价, 哈哈. 所以 Gnome 根本用不着为我们设计这些东西.Gnome 对普通用户来说, 已经做得很好了. 它在很多地方学习了 MacOS, 甚至有的界面是完全一样的. 它并不提供很多的选项, 但对已经受够了 KDE 的控制中心的我来说, 觉得它倒是恰到好处. 比之复杂而且强大的 KDE 来说, Gnome 走的是另一条路: 越来越简单, 功能满足普通人需要即可, 但幸好它比 XFCE 要强大和丰富, 不至于走向极端.功能和配置的简单也有它的问题, 用户有时候无法做更细致的调整了. 比如想要模拟 Mac 机, 换上主题后, 在 gnome 的配置界面里你是无法调整窗口按钮的位置的 --- 而这个功能在 XFCE 和 KDE 中都能直接完成. 你得使用一个类似 windows 中注册表编辑器的 gconf-edit, 找到那个选项, 手动调整. 这是一种很常用的同时满足普通人群和高级人群的做法: 把简单常用的东西摆在前台, 让 geeks 到后台去造它们奇怪的机器去吧. 这其实也跟 windows 常见的 ``Advanced '' 按钮一个道理. 但我总还觉得这个办法并不完全合适, 即使别人用不着, 我也想有个工具能舒舒服服地摆弄我的设置, 而不用去对付那个选项编辑器. 即使别人用不着, 我也希望它有某些更强大的功能.我觉得一个可参考的例子是 firefox, firefox 的魅力在它的插件. firefox 提供基本的网页浏览功能, 用插件的方式支持其他许多奇怪的功能. 普通用户用着基本的浏览器, 高级用户 --- 或者我们应该避开这个说法, 应该说是有特殊要求的用户, 他们不一定精通电脑 --- 也不需经历痛苦就能获得扩展的高级功能. 譬如 Fasterfox 插件只是去调整一些细微的选项, 如果你愿意, 你可以自己在 about:config 中调整这些选项的. 但 Fasterfox 令这个过程变得简单, 使有这样需求的用户都能轻易地完成, 这使它成为最有价值的插件之一. Gnome 在功能和配置上, 也可以提供一个最简单的基本系统和基本配置, 并留足可扩展的接口, 让各种各样的扩展插件去完成高级功能. 而 Gnome 现在似乎还没有一个可与 firefox 相比的插件支持系统.Gnome 的操作也极尽简单, 直接, 当然不会有 KDE 那种让人迷惑的问题. 但电脑毕竟很笨, 你的操作太简单, 它有时候不明白. 比如: 把光盘目录中的某个文件拖放到硬盘, Gnome 当然知道你这时是要复制文件而不是移动(因为移动是不可能的), 它也确实是这么做的. 在 U 盘目录中做同样的事情, Gnome 也认为是复制 --- 是啊, U 盘是移动存储空间, 用来交换文件, 我这么一个拖放不能把原来的给删了啊? 很好, 但已经觉得有点问题的苗头了. 现在, 你把硬盘上一个分区的东西拖放到另一个分区上, 它给你做的是复制! UNIX 的分区 mount 机制本来是非常美妙的, 给它这么一弄就很倒胃口了. 我们知道这时什么原因. 但普通用户呢? 它甚至不能像在 windows 一样看出两个目录在不同的分区, 他的观感就是: 同一个操作, 移到不同的目录会有完全不同的结果, 这样的一个系统是根本无法接受的. 那解决方法呢? 不同分区移动的时候询问用户到底想干嘛? 这会比 KDE 更糟, 因为这样的询问有时候出现有时候不出现(同分区移动时), 用户无法接受反复无常的系统.尽管如此, Gnome 还是至今我最满意的一个桌面环境, 我也希望它能够越做越好.系统很难摸清. 于是要不就提供一大堆选项, 问一大堆问题, 搞清楚用户到底想干嘛; 要不就按大部分用户大部分情况下的语义, 自动地给完成了. 这两种方法都有它的问题. 而要完全地解决这个问题, 在我看来非常困难, 现在的情况大抵是: 既然系统没法知道用户的意思, 就让用户顺着系统的脾性来, 等用户养成习惯了, 就会反过来觉得这个系统真贴心. 这决不是解决问题的方法.
【linuxfox优惠码】的内容来源于互联网,如引用不当,请联系我们修改。
网友留言: