2013年1月31日星期四

[小红猪]德国大胆的能源实验

[小红猪]德国大胆的能源实验

本文作者:小红猪小分队

导读:2013年1月,陷入灰霾之中的中国,急需一个清晰的答案:如此严重的污染是怎么造成的?拿北京来说,城市的拥堵,让人们首先想到汽车排放的尾气,但假使停驶所有汽车可以还我们蓝天白云吗?答案恐怕是否定的。灰霾天气让人心生恐惧的一大原因是其往往意味着PM2.5污染颗粒物的严重超标,而化石燃料的燃烧是其主要来源,汽车消耗汽油、柴油只是化石能源应用的一种形式。此外,中国还是一个燃煤大国,70%的能源供给倚仗煤炭(数据源:高盛组图:中国能源利用现状及趋势),工业生产、居民供暖哪个也离不开燃煤。

未来中国的能源结构必将发生变化,这也是改变糟糕空气环境的治本之道。事实上,世界上已经有地方开始了变革,肩背欧债重担的德国,已经在路上。本文发表于2012年7月,小红猪此时放出此文,以期为思考如何解决中国环境危机的你提供一个能源变革层面的视角。

感谢译者doctor who

作者:David Talbot

原文:The Great German Energy Experiment

德国决心大大降低温室气体排放,但另一面却渐渐关闭核电站。这个高度工业化国家能依靠风力涡轮和太阳能板推动经济么?

【这些正在德国Görmin建设中的风力发电机这是全国22000台中的一部分,图片来源:Sean Gallup | Getty】

在德国西部North Rhine-Westphalia州的一条乡村路旁,居住着36岁的农夫。双手长满老茧、和蔼可亲的他是两个孩子的父亲,直到最近都一直做着普通的营生:种土豆与养猪。不过,作为欧洲最大的经济体,德国能源政策不同寻常的转变给了他新的机会。2003年,一家小型风力发电公司在Leurs的一块土豆田上竖起了一座70米高的风轮,而上百个遍布德国乡间的风力农场上总共有22,000座这样的风轮。Leurs可以获得电力销售6%的收益,这样每年大概可以有$9,500的收入,他正考虑增加两座或更多的风轮,每个都像之前那个一样高。

从风轮上获得的这点收益和他在太阳能电池板项目上的收益比起来还不算是多的。2005年,Leurs了解到政府正要求当地电厂高价购买太阳能转化而来的电能。他于是贷了款,在接下来的七年时间里,逐步在自己家的猪圈、谷仓和住所上都安装上了太阳能设备,甚至都不怎么管天气有阴晴,屋顶朝向也不尽完美。安装了690千瓦的太阳能电池板后,他现在每年可以获益$280,000,估计在偿还完贷款后还会有超过$2百万的收益。

有了Leur的故事,我们就知道为何德国在2011年就能将新能源产的电能的比例提升到20%,而2000年的时候,这一比例才是6%。德国保证了风能、太阳能、生物能和水力发电的高价格,而将成本转嫁到电费单中。像Leurs和小型发电厂这样的商家利用了现成的技术就锁定了收益。对他们来说,绿色是如此的容易。

不过,接下来就不这么容易了。2010年,德国政府宣布他们将实施称之为Energiwende的能源策略,可以说是一种能源的转向与革命。这个从化石能源到可再生能源的转变也是这个高度工业国家从未有过的雄心勃勃的计划,其目标是到2020年将温室气体排放在1990年的水平上减少40%;到本世纪中叶时减少80%。这个目标是富有挑战性的,不过考虑到德国目前已经有20%的电力是来源于几乎不排放温室气体的核能,要实现起来就不那么难了。可去年,为了应对日本福岛海啸过后的核危机带来的公众恐慌,首相默克尔命令立即关闭八座最老的核电站。几个月后,政府达成了计划:到2020年,关闭剩下的九个核电站。如今,Energiwende就不能再把这个德国最大的低碳电力资源计算在内了。

欧洲很大程度依赖于德国的经济。而德国必须在能源使用减少的情况下,以前所未有的规模,忍受巨大且不确定的成本,建立并使用新能源技术。这一转变还不能让工业受损,而工业离不开价格合理且稳定可靠的能源。“某种程度上,Energiwende是政治宣言却没有技术支撑”,GE Energy Germany的CEO Stephan Reimelt说,“德国是在强迫自己走向创新,结果就产生了之前从没有过的如此规模的工业实验室,我们必须时常动用很多不同的技术来完成这一转变”。

德国能源工业的主要企业正分头寻求新的策略。为了替代核能,他们争相在距离北海德国海岸较远处建立大的风力农场,与此同时建立新的传输设施将电力传输到德国的工业区。另一方面,像Siemens、GE、RWE这几个德国最大的发电公司则寻找新的方式,让公司在暂不涉足风能与太阳能的情况下能保持发展。他们寻求便宜的大规模的电力储存方式,也借助电脑更智能化的协调上百万个分散的电力资源。

【在德国Rostock北海港附近的船坞上,西门子公司正在建造一个可以容纳能够管理来自远海风力农场能量的设备的巨大平台,图片来源 Courtesy of Siemens】

这一转变的成本估算分歧也较大,主要取决于新技术的引进有多快,价格能降到多低。不同的几个经济智库预测德国需要花费1250亿到2500亿来拓展基础设施以及发放未来8年内的补助款,这相当于德国2011年GDP的3.5%至7%。长期下来的成本,包括核电站停运的成本,无疑将更高。

德国已经开始面临高成本能源的挑战。含有新能源附加费的电费每月上涨了15%;自从八个核电站关闭后,批发的电价上涨了约10%。德国的电网压力空前的大。讽刺的是,Energiwende的目标本来是减低温室气体排放,可关闭核电站导致的却是对煤电的依赖增加。

如果德国能成功实现能源转型,那就为其他的工业国家提供了可行的蓝图,他们也都面临着能源消费的转型压力。“人们正密切关注Energiwende,如果这个计划能在德国实现,那就为其他国家树立了一个样板,”RWE主任经济学家Graham Weale说,该公司正在处理的问题是如何在关闭核电站的情况下还能继续让电灯亮着。“如果不能成功,那将会对德国经济乃至整个欧洲造成很大破坏。”他说。

障碍

由实验室和工厂组成的能源巨子Siemens的工业建筑群坐落在Nuremberg往北20公里的Erlangen城,到访者在严密的安保监测下走进这个园区。西门子公司也是Energiwende的参与者。在其中的一个建筑里,有一个巨大的由钢铁和铜组成的嗡嗡作响机器,可以将30兆瓦的交流电转变成直流电。这个东西最终要安装到海上平台上,在那里,这些海上平台需要经受住几十年强劲的北海风暴。

德国需要这项技术,因为只在海上才有这种稳定的风能,而目前标准的交流传输电线却不能工作。目前,德国只在离岸90公里范围,不到40米的水深,安装了仅500兆瓦的海上风电。如今,能源公司计划安装10,000兆瓦的风电,离岸距离到160公里,水深达到70米。变电站将千兆瓦的交流电转化成直流电,这样做的好处是即使传输很长距离,能量损失也会较低。“世界上还没有哪个地方这样做,以这样的方式,这样的量级建立电网和连接,”荷兰电力公司Tennet公司发展主任Lex Hartman说。该公司也负责德国百万量级的北海项目的一部分。

当然,所有这些也只是把电输送到了岸边。电力的传输需要横贯德国到达南部的主要工业中心。这新需要3800公里的输电线,而目前只建成了200公里,不愿意腾出土地的地主以及地方的政治人物阻碍了项目的进展。拖延和新技术使得德国的海上风电项目本身成了一次赌博。“没有人知道Energiwende的成本会有多少,”Munich大学的能源经济学家Karen Pittel说,“不过尤其是这些风电项目,多少是试点工程”。

不确定性并不止于此。即使是现有的风电水平,在大风的日子,电网操作员也必须关闭机轮,因为没地方来储存这些能量。当阴云覆盖德国南部地区时,该地区的很多太阳能电池板的输出就会减少几百兆瓦,这样的效果就好像关闭了一座中型火力发电厂,增加了大停电的可能。

没有了足够廉价、可靠的电力来支持高科技工业和交通系统,德国的经济,连同整个欧洲就会陷入窘境。一些德国公司已经建立了一些新的设施。比如,去年化工公司Wacker Chemie决定在Tennessee建立一座多晶硅太阳能发电站,部分原因是德国的电费实在是太高了。Weale说,“供电的质量只要恶化一点点,对于高科技企业来说就是很严重的问题;我们已经看到,即使不停电,企业就已经变得很紧张了。”

为了避免灾难,德国将来必须大范围的开始布置储电技术和负载平衡策略。德国现有31座抽水蓄能站,晚间将水流抽到高处的蓄水池,然后利用向下的流水冲击涡轮发电。总计起来,这些储电站能储存38千兆瓦时的电能,这个听起来好像有很多,不过也超不过德国风力农场高峰输出90分钟的电能。

电池或许能帮上忙,不过目前的成本太高了,难以担当重任。在Erlangen的另一座建筑里,Siemens正采用三种不同的锂离子技术,建造几个拖车大小的电池。每个电池可以供40个德国家庭使用一天,不过电池太过于昂贵了,几乎做不了后备能源。相反,高科技企业都是拿这种电池来安然度过限电,比如8兆瓦的输出开上15分钟就能避免一些专门的设备昂贵的重新启动一次。锂电池的价格至少还得降一半,才能以一种经济的方式将风轮几个小时所产出的多余电能储存起来。

其他的集中储点的技术正在发展中,如果可行,也要几年才能变得实用。比如Siemens的一种新技术就是通过用多余的电来电解水产生氢气,不过目前还处于试验阶段且很贵。

当欧洲的电力系统面临压力之时,炎热的七月适时而至(文章写于2012年7月);当德国刚好要用空调的时候,涡轮机却停了。除非大规模且廉价的储电技术成熟,能迅速有效启动的燃气电厂才是应付这种情形的最实用的方式。不过,却没有多少激励措施来建立这样的电厂。如果想满足高峰用电的话,燃气电厂显然不能单靠运行几个小时就可以,因为在可预见的工作日的下午用电需求不会降低,可太阳和风能发电却是这会来,下一会就走了。

在Potsdam城的气候影响研究所的主任经济学家Ottmar Edenhofer说,“电力市场的设计将发生根本变化,你有一个浮动的需求,同时供应也是浮动的;这两方面的联系与相互作用已经是热门研究课题。新兴的市场有可能会失败”。

虚拟发电

在Essen西部的Duisburg是一个坚韧的城市,是二战时期的一个主要的军火制造中心,后遭盟军轰炸成为废墟。德国四大发电公司之一RWE就坐落在这里,如今正发展另一项关键的技术:虚拟电厂。计算机智能化的控制大量的小的电力资源(最终将电输送至储电站),统筹协调输出,拿到电力市场上出售。这个目标是克服单个新能源站点不可靠的缺点,将上千个新能源站转化成一个巨大的网络供公共设施使用。这是一个令人炫目的概念,不过仍是在襁褓中的技术。

在一座外形如巫婆的尖帽,由纳粹时期建造的防空洞前的是RWE的一个实验室,研究人员正在对十几个燃气炉和燃料电池进行测试,这些设备能同时产生热与电。理论上,可以要求成百上千个家庭单元,或更大一些的公寓或办公楼来用这样方式产生电能。以这种方式可以产生5%的电能,正好可以抵得上新的海上风电的产能。

要达到这点需要花费几十年的时间,等住户和商业逐渐替换掉现有的锅炉,然后安装设施到位来使这成百上千的能源点达到同步。不过,在Duisburg往东一小时车程,在Dortmund边上的一座1960年代的办公楼内,作为一个新的起点,工程师们正在测试一个更靠谱的网络。一座地下室服务器机房是120个小的发电站的通讯枢纽,这些电站主要依靠风能,也有生物能和太阳能等新能源,总计能产生160兆瓦的电。软件将天气预测计算在内,将一系列从风和太阳能产生的电力组合在一起,必要的时候关闭或开启生物能电站以此来平衡波动的输出,从而创造一种稳定的电能。

这样的早期阶段的项目为今后进一步的包括需求管理在内的复杂系统奠定了基石。比如,如果消费者同意在用电高峰时段允许系统自动减少其用电量的话,就可以获得公共电力的补助。将来,系统还可以从停靠的电动车的电池中自动抽取电能,或将多余的电能注入电动车电池作为风能减少时的补偿。

GE和其他公司也在寻求这样的概念。“今天我们知道能源市场将更分散化,将会是更为碎片化的市场。”GE的Reimelt说。“之前,我们有四个电力公司,今天,我们有350个电站,今后将会上升到千,如果你把拥有太阳能板的每个住户都算上的话,还会上升到百万。

所以,其中一个趋势就是将来会越来越强调电力的管理而不是发多少电。”

巴伐利亚的困惑

从Gungremmingen的巴伐利亚人小镇市长Wolfgang Mayer书桌后的落地窗望去,景色一览无余。一公里外伫立着Gungremmingen核电站单元B和C的两座冷却塔。这个核电站是德国最大的核能基地,恰如其分的建在两个工业中心城市Stuttgart和Munich中间,年产电量2.6千兆瓦。.Energiwende计划让Mayer感到担忧,如果施行将威胁镇上上百人的工作,税收也会减少。“他们说,2017年会关闭B单元,2021年关闭C单位,”他眼望着核电厂说,“但这两个单位是在1989年才一起建好的,一般人怎么都理解,停运的逻辑在哪里?”

【Gundremmingen的一个核电站冷却塔可以见到是在一户在利用太阳能发电补贴电力的人家后面,该核电站被标记将要关闭,图片来源:David Talbot | Technology Review】

像Mayer这样感到疑惑的还有很多人。对当今政策的不合理处依然有很多说辞。至少短期来看,关闭核电站意味着Energiwende实际上促使电厂更严重的依赖于煤炭。去年,比如RWE就利用Belgian边界附近的原有的设施新建了两座锅炉,可烧的却是最脏的化石燃料:黄褐煤。尽管这些锅炉比之前的要环保很多,这个煤矿毕竟是世界上同类型最大的一座,而在电力紧张的这些日子必须鼓足马力发电。

“如果你关闭碳排放为零的八个核电站,那么一夜之间,就必然会增加碳排放,”Weale说,“德国必然比之前更加的依赖于煤炭,那就很难尽快的减少二氧化碳的排放”。到底现在要建设哪种类型的电站对未来几十年会有巨大的影响,他说:“要突然从一种类型的电站变成另一种几乎是不可能”。

第二个问题是,即使最后实现了可替代能源,德国也不可能实现碳减排。进一步我们看到,德国的政策倾向于补助一些特定的技术:对一千瓦时的太阳能的补助份额要大于对海上风电的补助份额,海上风电的补助又大过陆上风电。尽管与Leurs买进的那时候比起来,给予太阳能的补助份额降低了很多,不过仍然比其他类型的要高。如果要着眼于降低碳排放,那么大量的钱已经转向降低能耗。“如果你想选择最佳的投资组合以相对低的成本实现减排目标的话,你就不应该关注可再生能源而应该多关注提高能效,”Munich的能源经济学家Pittel说。

与提高现有技术的可盈利能力相比,当今的补助政策也没有很大程度上激励创新。比如,在发展更新更好的光伏技术上就没有什么激励,尽管发展这些新技术可能是唯一最终能促使非补助的太阳能发电的成本降低到与化石燃料可以竞争的地步。

在一些德国的经济学家看来,这个国家的能源政策的导向根本就是错误的。Munich大学lfo经济研究所主任Hans Werner Sinn的批评尤其的严厉:“Energiwende最终会穷途末路,因为绿色技术有效的替代现有技术来满足现代社会的能量需求”,他说“关闭核电站是错误的,因为这是一种廉价的能源,太阳能和风能却不可能代替核能。它们都太贵了,输出的能量质量也较低。如此下去,能量密集型的产业会流失,德国制造业的竞争力会下滑,收入会减少”。

当然,德国的政治家会打赌说,Sinn是错的。很多积极的信号说明不必这样悲观。太阳能电池板的价格下降了很多,这意味着太阳能会变的更有竞争力。电池的价格或许也会跟着下降。如果化石燃料越来越贵,可再生能源就会显得更有吸引力。“四十年是一个很长的时间,一个人会不断的为更好的技术的发展感到惊奇,比如,就像太阳能晶体的价格正在下降,”Weale说。“我认为,我更愿意强调Energiwend面临的挑战很多。当下,看起来好像很难。但只要激励对头,人们又理由相信技术的进步会比我们预期的快很多。”

用bShare分享或收藏本文



on 科学松鼠会: http://songshuhui.net/archives/69878

2013年1月9日星期三

应该知道的Linux技巧

应该知道的Linux技巧

这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。 首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自动化。如果你看过《你可能不知道的Shell》以及《28个Unix/Linux的命令行神器》你就会知道Linux有多强大,这个强大完全来自于命令行,于是,就算你不知道怎么去做一个环保主义的程序员,至少他们可以让你少熬点夜,从而有利于你的身体健康和性生活。下面是一个有点长的列表,正如作者所说,你并不需要知道所有的这些东西,但是如果你还在很沉重地在使用Linux的话,这些东西都值得你看一看。 (注:如果你想知道下面涉及到的命令的更多的用法,你一定要man一点。对于一些命令,你可以需要先yum或apt-get来安装一下,如果有什么问题,别忘了Google。如果你要Baidu的话,我仅代表这个地球上所有的生物包括微生物甚至细菌病毒和小强BS你到宇宙毁灭)

基础

  • 学习 Bash 。你可以man bash来看看bash的东西,并不复杂也并不长。你用别的shell也行,但是bash是很强大的并且也是系统默认的。(学习zsh或tsch只会让你在很多情况下受到限制)
  • 了解 ssh。明白不需要口令的用户认证(通过ssh-agent, ssh-add),学会用ssh翻墙,用scp而不是ftp传文件,等等。你知道吗?scp 远端的时候,你可以按tab键来查看远端的目录和文件(当然,需要无口令的用户认证),这都是bash的功劳。
  • 熟悉bash的作业管理,如: &, Ctrl-Z, Ctrl-C, jobs, fg, bg, kill, 等等。当然,你也要知道Ctrl+\(SIGQUIT)和Ctrl+C (SIGINT)的区别。
  • 简单的文件管理 : ls 和 ls -l (你最好知道 “ls -l” 的每一列的意思), less, head, tail 和 tail -f, ln 和 ln -s (你知道明白hard link和soft link的不同和优缺点), chown, chmod, du (如果你想看看磁盘的大小 du -sk *), df, mount。当然,原作者忘了find命令。
  • 基础的网络管理: ip 或 ifconfig, dig。当然,原作者还忘了如netstat, ping, traceroute, 等
  • 理解正则表达式,还有grep/egrep的各种选项。比如: -o, -A, 和 -B 这些选项是很值得了解的。
  • 学习使用 apt-get 和 yum 来查找和安装软件(前者的经典分发包是Ubuntu,后者的经典分发包是Redhat),我还建议你试着从源码编译安装软件。

日常

  • 在 bash 里,使用 Ctrl-R 而不是上下光标键来查找历史命令。
  • 在 bash里,使用 Ctrl-W 来删除最后一个单词,使用 Ctrl-U 来删除一行。请man bash后查找Readline Key Bindings一节来看看bash的默认热键,比如:Alt-. 把上一次命令的最后一个参数打出来,而Alt-* 则列出你可以输入的命令。
  • 回到上一次的工作目录: cd –  (回到home是 cd ~)
  • 使用 xargs。这是一个很强大的命令。你可以使用-L来限定有多少个命令,也可以用-P来指定并行的进程数。如果你不知道你的命令会变成什么样,你可以使用xargs echo来看看会是什么样。当然, -I{} 也很好用。示例:
  find . -name \*.py | xargs grep some_function    cat hosts | xargs -I{} ssh root@{} hostname  
  • pstree -p 可以帮你显示进程树。(读过我的那篇《一个fork的面试题》的人应该都不陌生)
  • 使用 pgrep 和 pkill 来找到或是kill 某个名字的进程。 (-f 选项很有用).
  • 了解可以发给进程的信号。例如:要挂起一个进程,使用 kill -STOP [pid]. 使用 man 7 signal 来查看各种信号,使用kill -l 来查看数字和信号的对应表
  • 使用 nohup 或  disown 如果你要让某个进程运行在后台。
  • 使用netstat -lntp来看看有侦听在网络某端口的进程。当然,也可以使用 lsof。
  • 在bash的脚本中,你可以使用 set -x 来debug输出。使用 set -e 来当有错误发生的时候abort执行。考虑使用 set -o pipefail 来限制错误。还可以使用trap来截获信号(如截获ctrl+c)。
  • 在bash 脚本中,subshells (写在圆括号里的) 是一个很方便的方式来组合一些命令。一个常用的例子是临时地到另一个目录中,例如:
  # do something in current dir  (cd /some/other/dir; other-command)  # continue in original dir  
  • 在 bash 中,注意那里有很多的变量展开。如:检查一个变量是否存在: ${name:?error message}。如果一个bash的脚本需要一个参数,也许就是这样一个表达式 input_file=${1:?usage: $0 input_file}。一个计算表达式: i=$(( (i + 1) % 5 ))。一个序列: {1..10}。 截断一个字符串: ${var%suffix} 和 ${var#prefix}。 示例: if var=foo.pdf, then echo ${var%.pdf}.txt prints “foo.txt”.
  • 通过 <(some command) 可以把某命令当成一个文件。示例:比较一个本地文件和远程文件 /etc/hosts: diff /etc/hosts <(ssh somehost cat /etc/hosts)
  • 了解什么叫 “here documents” ,就是诸如 cat <<EOF 这样的东西。
  • 在 bash中,使用重定向到标准输出和标准错误。如: some-command >logfile 2>&1。另外,要确认某命令没有把某个打开了的文件句柄重定向给标准输入,最佳实践是加上 “</dev/null”,把/dev/null重定向到标准输入。
  • 使用 man ascii 来查看 ASCII 表。
  • 要来debug Web,试试curl 和 curl -I 或是 wget 。我觉得debug Web的利器是firebug,curl和wget是用来抓网页的,呵呵。
  • 把 HTML 转成文本: lynx -dump -stdin
  • 如果你要处理XML,使用 xmlstarlet
  • 对于 Amazon S3, s3cmd 是一个很方便的命令(还有点不成熟)
  • 在 ssh中,知道怎么来使用ssh隧道。通过 -L or -D (还有-R) ,翻墙神器。
  • 你还可以对你的ssh 做点优化。比如,.ssh/config 包含着一些配置:避免链接被丢弃,链接新的host时不需要确认,转发认证,以前使用压缩(如果你要使用scp传文件):
  TCPKeepAlive=yes  ServerAliveInterval=15  ServerAliveCountMax=6  StrictHostKeyChecking=no  Compression=yes  ForwardAgent=yes  
  • 如果你有输了个命令行,但是你改变注意了,但你又不想删除它,因为你要在历史命令中找到它,但你也不想执行它。那么,你可以按下 Alt-# ,于是这个命令关就被加了一个#字符,于是就被注释掉了。

数据处理 

  • 了解 sort 和 uniq 命令 (包括 uniq 的 -u 和 -d 选项).
  • 了解用 cut, paste, 和 join 命令来操作文本文件。很多人忘了在cut前使用join。
  • 如果你知道怎么用sort/uniq来做集合交集、并集、差集能很大地促进你的工作效率。假设有两个文本文件a和b已解被 uniq了,那么,用sort/uniq会是最快的方式,无论这两个文件有多大(sort不会被内存所限,你甚至可以使用-T选项,如果你的/tmp目录很小)
  cat a b | sort | uniq > c   # c is a union b 并集    cat a b | sort | uniq -d > c   # c is a intersect b 交集    cat a b b | sort | uniq -u > c   # c is set difference a - b 差集  
  • 了解和字符集相关的命令行工具,包括排序和性能。很多的Linux安装程序都会设置LANG 或是其它和字符集相关的环境变量。这些东西可能会让一些命令(如:sort)的执行性能慢N多倍(注:就算是你用UTF-8编码文本文件,你也可以很安全地使用ASCII来对其排序)。如果你想Disable那个i18n 并使用传统的基于byte的排序方法,那就设置export LC_ALL=C (实际上,你可以把其放在 .bashrc)。如果这设置这个变量,你的sort命令很有可能会是错的。
  • 了解 awk 和 sed,并用他们来做一些简单的数据修改操作。例如:求第三列的数字之和: awk ‘{ x += $3 } END { print x }’。这可能会比Python快3倍,并比Python的代码少三倍。
  • 使用 shuf 来打乱一个文件中的行或是选择文件中一个随机的行。
  • 了解sort命令的选项。了解key是什么(-t和-k)。具体说来,你可以使用-k1,1来对第一列排序,-k1来对全行排序。
  • Stable sort (sort -s) 会很有用。例如:如果你要想对两例排序,先是以第二列,然后再以第一列,那么你可以这样: sort -k1,1 | sort -s -k2,2
  • 我们知道,在bash命令行下,Tab键是用来做目录文件自动完成的事的。但是如果你想输入一个Tab字符(比如:你想在sort -t选项后输入<tab>字符),你可以先按Ctrl-V,然后再按Tab键,就可以输入<tab>字符了。当然,你也可以使用$’\t’。
  • 如果你想查看二进制文件,你可以使用hd命令(在CentOS下是hexdump命令),如果你想编译二进制文件,你可以使用bvi命令(http://bvi.sourceforge.net/ 墙)
  • 另外,对于二进制文件,你可以使用strings(配合grep等)来查看二进制中的文本。
  • 对于文本文件转码,你可以试一下 iconv。或是试试更强的 uconv 命令(这个命令支持更高级的Unicode编码)
  • 如果你要分隔一个大文件,你可以使用split命令(split by size)和csplit命令(split by a pattern)。

系统调试

  • 如果你想知道磁盘、CPU、或网络状态,你可以使用 iostat, netstat, top (或更好的 htop), 还有 dstat 命令。你可以很快地知道你的系统发生了什么事。关于这方面的命令,还有iftop, iotop等(参看《28个Unix/Linux的命令行神器》)
  • 要了解内存的状态,你可以使用free和vmstat命令。具体来说,你需要注意 “cached” 的值,这个值是Linux内核占用的内存。还有free的值。
  • Java 系统监控有一个小的技巧是,你可以使用kill -3 <pid> 发一个SIGQUIT的信号给JVM,可以把堆栈信息(包括垃圾回收的信息)dump到stderr/logs。
  • 使用 mtr 会比使用 traceroute 要更容易定位一个网络问题。
  • 如果你要找到哪个socket或进程在使用网络带宽,你可以使用 iftop 或 nethogs。
  • Apache的一个叫 ab 的工具是一个很有用的,用quick-and-dirty的方式来测试网站服务器的性能负载的工作。如果你需要更为复杂的测试,你可以试试 siege。
  • 如果你要抓网络包的话,试试 wireshark 或 tshark。
  • 了解 strace 和 ltrace。这两个命令可以让你查看进程的系统调用,这有助于你分析进程的hang在哪了,怎么crash和failed的。你还可以用其来做性能profile,使用 -c 选项,你可以使用-p选项来attach上任意一个进程。
  • 学会到 /proc 目录中查看信息。这是一个Linux内核运行时记录的整个操作系统的运行统计和信息,比如: /proc/cpuinfo, /proc/xxx/cwd, /proc/xxx/exe, /proc/xxx/fd/, /proc/xxx/smaps.
  • 如果你调试某个东西为什么出错时,sar命令会有用。它可以让你看看 CPU, 内存, 网络, 等的统计信息。
  • 使用 dmesg 来查看一些硬件或驱动程序的信息或问题。

作者最后加了一个免责声明:Disclaimer: Just because you can do something in bash, doesn’t necessarily mean you should. ;) (全文完)


(转载本站文章请注明作者和出处 酷壳 – CoolShell.cn ,请勿用于任何商业用途)

————————============ 感谢 42qu.com 为本站提供 VPS ============————————

相关文章



on 酷壳 - CoolShell.cn: http://coolshell.cn/articles/8883.html