Wednesday, March 31, 2010

Dropbox on my Linux, Mac & Windows, cool.

http://antrix.net/journal/techtalk/dropbox_kde.html

这篇文章介绍了如何在linux上不依赖nautilus使用dropbox。
所以现在把3个系统的一个dropbox文件夹同步起来了。很方便。

今天收到消息:dropbox的免费用户可以通过邀请注册增加容量。
有兴趣的同学使用这个link就能帮我增加500MB,谢谢~

Monday, March 29, 2010

How to solve it 里面的第一個問題

注:這里說的是這本How to Solve It: Modern Heuristics by Zbigniew Michalewicz

在圖書館想重溫一下經典的How to solve it,發現了這本書。
這本書的序號稱Polya那本好是好,但是那時計算機算法還沒發展起來,今天已經有很多新的東西可以通過算法來解決了。
看了一下,覺得還挺不錯,尤其覺得它提出的一個觀點:
它認為課本上的教育是有問題的,因為解題時,我們更需要的是訓練自己想到一個解題的方法的思維,而不是訓練我們解題的某種特殊技術。
舉例來說,在線性規劃的章節里,我們做課后練習其實是很簡單的,因為我們已經知道該用什么方法去做了。
然而,如果給出了我們一個題目,我們也許博覽群書,知道N種技術,卻往往不知道該用什么方法去做!

這個想法正與我多年來的疑問不謀而合——為什么牛B的人會想到這道題該這么做呢?
為什么他們知道這個可以用貪心、那個可以用動態規劃,而另一個題又能用搜索?
我想這就是所謂的解題思路的訓練,這才是我心目中的真正牛B。

書里面的第一個問題就很有趣,據說作者拿這題問了很多理工科的大學生、教授,很多人竟然在一小時內也做不出答案。
所以書里建議,如果你不能在很短時間come up一個solution,那你的確該看看這本書了 :)

給定一個三角形,試證明AD+BD<AC+BC。

看不到圖的話點這里

Sunday, March 28, 2010

用tar 来备份数据

最近在看关于迁移数据到LVM上的文章,发觉它们的copy都是用tar,而且用法很古怪,研究了一下,顿觉牛B。
情景分析:
假设我有一个partition,/dev/sda1,里面装有跟要复制的内容,把它挂载到/mnt;
另外一个partition是/dev/sda2,挂载到了/backup
则现在要做的是,复制/mnt下的所有内容到/backup
使用tar的命令如下(假设pwd=/mnt,并有root权限)

/bin/tar cpBf - . | ( cd /backup && /bin/tar xvpBf - )

看起来很怪异,但是可以稍微分析一下:
c是创建压缩文件
p是保持文件的权限
B是?
f是指定输入,这里使用了 '-',即标准输入,后面的.表示当前目录

然后通过管道传给 下一个代码块。这里使用了一双括号,使得命令能在子shell里执行,因为我们要进入新的目录/backup再会到/mnt
后面tar的选项作用是:
x是解压缩
v是verbose输出
B,f,-同上

据说这样做的好/坏处是,
1) 符号链接会被正确设置(因此也许指向了不存在的地方)
2) 硬连接会被复制成文件,后面复制的指向同一个文件的硬连接将会指向第一个复制过来的文件
3) 保留文件的权限

还没搞清楚用cp -r 会有什么后果,恩。

参考:

Friday, March 26, 2010

关于qterm的一个很傻的事实

qterm 0.4.1用的qt应该是gbk编译的。
于是在我utf8的系统上有这么个问题:
按钮工具栏里面,如果我自定义了一个按钮
里面输入了一些中文,post到bbs上会出现乱码。
我发觉可以这么解决:

打开一个console, echo一个需要的字符串到iconv转换为gbk,然后复制到剪贴板。
比如:
echo "灌水机" | iconv -f utf8 -t gbk | dcopcat

其中dcopcat是我写的kde复制到剪贴板的一个管道命令。
然后把剪贴板的内容粘贴到qterm的文本框里,虽然看起来是一片空白,但事实上是可以work的……
非常sb的一个做法。。。

Sunday, March 21, 2010

被雷到了

跟房间的一个丹麦小伙聊得不错。
突然他问我有没gf,我说没有。
然后他说他是gay,我问他are you kidding?
然后旁边的人说他也是。
"This is san francisco!"

囧。

Saturday, March 20, 2010

Announcement: 关于看不到我上一篇post的图片

这是因为我在某个网站上贴了后,直接copy到gmail然后发送的。
一开头我以为gmail会自动复制并且发送过去,现在发觉只是简单地用url而已。
迟点整理一下再upload一些好的相片吧,我保证,真的很不错。


Friday, March 19, 2010

加州阳光


怪不得那么多人死皮赖脸地往加州申请。

环境真的很好,在stanford呆了一会,蔚蓝的天空下,在草地上享受着加州阳光与爱人相拥,真是舒服死了。

不多说了,随便上点图。

















































美国的青年旅馆很赞。

我住的是位于三藩市Fort Mason的那间。感觉很不错!


环境:

环境无敌。fort mason本来就是一个绿化非常高的地方,一眼望过去全是草地,童话般的地方。然后这间HI位于最深处,于是毗邻海滨,一样望出去就是沙滩以及海平线,左边是金门大桥,右边是通往Oakland的Bay bridge。

地址是这里:

http://goo.gl/xxQj


住宿:

一天$25美金在一间男女混住的10人间,不过貌似现在才住进了6个人,而且都很安静地早早地睡觉了。我的床位正对窗位,下铺,白天的话外面的人来来往往稍微有点吵。床底下有一个lock位,花了$4在counter买了个锁头,可以把行李箱塞进去。


伙食:

花$4买了一个Salad soup special,汤是很典型的西汤,有两块饼干、两个面包再加一个沙拉。吃得非常饱。餐厅的老头子也很热情地给你建议旅游路线。另外餐厅有免费早餐吃。


卫生:

厕所很干净,有两个一大一小的洗澡房,不过只有一个帘子隔着。大的洗澡房估计是给残疾人用的。美国很尊重残疾人,hostel里面所有设施都有给残疾人用的。刚才很不厚道地去了大的那个洗。


设施:

counter可以问到一切东西。有厨房,厨房里面有两台table football。从厨房里拿了个杯子可以到饮水机接水喝,解决了美国没有水喝的老大难问题,顺便还可以当刷牙的杯子用。有一个reading room,一群人在里面学习——没错,我看到老美竟然在里面做功课。。。太牛b了出来玩还做功课。还有人在下象棋。里面有五台PC,还有一台打印机,非常贴心地给你打印旅游攻略等。哦里面还有一个书柜不过我没看里面有什么。我现在一个人躺在一个沙发上敲字,对面的哥们在看旅游手册。周围的人都在用mac,我没带来显得很不合群,更不好意思用显得穷酸的linux了。顶上的音箱放着soul/funk。


活动:

没想到青年旅馆这么牛B,每天都organize不同的活动。今晚的活动有两个,一个是到downtown不知干嘛,忘了;一个是看电影where the wild things are。在counter里面有一个list。


暂时explore到的有这么多,有什么新发现接着写。

Thursday, March 11, 2010

用automator完成osx itunes import 中文mp3的简单处理

由于历史问题,在verycd上download回来的中文歌曲mp3往往在itunes里不能正确显示其tag。
原因在我之前的帖子已经讨论过。这里提供一个简单的办法解决:

首先,安装mid3iconv
然后在automator里新建一个service
其中:
service receives selected 选择 audio files
in 选择 Finder.app

然后,拖Run Shell Script 到工作区,从Pass input选择"as argument",在编辑框输入:
/usr/local/bin/mid3iconv -e gbk --remove-v1 "$@"

其中 $@代表接受的参数。这里是selected item。

最后,保存workflow。


然后选择mp3文件,右键菜单里会多了一项服务,就是我们刚才新加的。It's done!

拓展实现:
1. 把这个功能也加给文件夹
2. 添加"根据文件名更新"tag的service

以后有时间再写这个。

Wednesday, March 10, 2010

被比赛

一年一度的CS CUP又要开始了。
这是我们系的一个"特色项目",每个年级出一支队伍参加各种比赛,研究生和老师们是一支队(P&T),最后取所有项目的总分评奖。
按道理来说是一个好的传统,问题是我却有种"被比赛"的感觉。
首先,宣传与组织不到位。负责这个活动的Comp Society,总是在半夜2,3点才发比赛schedule,通知第二天下午的比赛,让人根本没时间准备,也难怪连professor也看不过眼了。
其次,比赛的时间我怀疑根本就没有找P&T商量过,也没有人找过P&T为每一个项目找一个负责人。每次比赛的时间都是自己指定,结果拿我有兴趣/责任参加的篮球来说,就与自己的schedule冲突了,而且冲突的还不止我一个。

总的来说让人感觉很形式化,没想到HK也这么形式化,还是学生。
当然还有一个原因是他们不care P&T,如果是这样,归根结底也是形式化,不care的话从一开头就不要为P&T弄一个队。

烦。

Tuesday, March 9, 2010

花二十分钟明白什么是民主

democrazy

 
 

Sent to you by Iveney via Google Reader:

 
 

via GFW BLOG by GFW Blog on 3/1/10

来源:IWMS

民主是什么呢?很多人一定会说,这个问题很简单嘛,民主就是代表大多数人的意愿,比如有 5 个人去旅游, 4 个人想游泳, 1 个人想打球, 那么民主的决策一定是去游泳,如果最后的决策是去打球,那就变成专制了。  

可别忙,当我们把上面的例子稍微改变一下,你就会惊愕地发现,这个 " 民主 " 竟然是只披着羊皮的大尾巴狼:比如 5 个人中有 4 人认为 1 人该死,那么民主的决策就是 " 合法 " 地把那个可怜的家伙杀死!
 
你也许会说,这没什么错啊,如果大家都认为一个人该死,那他怎么可能没罪呢?不幸的是,的确有这种可能。事实上,民主的内涵远非 " 大多数 " 这么简单,为了弄清楚这个问题,我们只好把那些陈旧的历史书从垃圾桶里翻出来,仔细读一读。
 
公元前六世纪,在民主的发源地——古希腊城邦雅典,一个名叫克利斯梯尼的政治家发明了一种人类历史上最早的民主制度的雏形: " 贝壳放逐法 " 。所谓 " 贝壳放逐法 " ,就是雅典人 为了对付某个破坏民主、实施专制的独裁者,可以召开公民大会,对其进行投票(因用贝壳投票而得名,不过后来改用陶片了),如果这个人得票超过 6000 ,那么对不起,管你有没有错,立即离开雅典,去外面呆上 10 年再回来吧。
 
这种惩罚制度有点类似中国古代的流放,当然二者性质截然不同,前者是公民大会的集体投票,后者是专制君主的个人意志。不过,在 " 贝壳放逐法 " 这座祭坛上,固然有独裁者的鲜血,也飘荡着无辜者的冤魂。在古希腊历史上,曾经有多位优秀的政治家、军事家因 " 贝壳放逐法 " 而被流放,客死他乡,比如著名的马拉松战役英雄亚利斯泰提,以廉洁、正直而著称,就曾被贪婪、腐败的地米斯托克利以 " 企图独裁 " 的罪名提交公民大会审判。
 
等一下,也许你又会说,民众的选择虽然有时不一定正确,但那毕竟是自己的选择嘛,即使付出代价,也只能由民众自己承受。  
可是,我不得不告诉你,在这个问题上你犯了个逻辑错误,因为付出代价的主体并不是占多数的民众,而是那个处于少数的可怜的倒霉蛋。如果一个人因为别人的错误而被迫接受惩罚,那这种 " 民主 " 又怎么能够让人放心呢? 你也看到了,古希腊的这个 " 贝壳放逐法 " 尽管打着 " 大多数 " 的幌子,但却是个很可怕的东西,并不能算做真正的民主,实际上,它有另外一个名字,叫做 " 大多数暴政 "   
因此,我们有必要修正一下最开始的那个例子:有 5 个人去旅游, 4 个人想游泳, 1 个人想打球,那么民主的决策还是去游泳,但要加上个限制条件,就是想去打球的那个人,有说 "NO" 的权利,而且那 4 个去游泳的人,必须学会尊重这个 "NO"  

可是,你先不要着急,民主并不是仅仅说个 "NO" 字就算 OK 了,它还有许多要求和条件呢。你想想看,虽说那 4 个去游泳的人不反对别人去做自己想做的事情,可是 1 个人怎么打球呢,总要有个对手陪他一起打吧?这时候问题就出来了:我们 4 个人是要去游泳的,不强迫你去已经很不错了,怎么着?还想让我们大家陪你打球?你小子皮痒吧~  
你会不会觉得那 4 个人的想法挺合理的?是啊,凭什么要大家都陪那小子去打球?不是民主吗?怎么又变成多数服从少数了?且慢,你要晓得,仅仅表示尊重少数人的意见,而不为少数人提供一个公平的环境,那么离真正的民主还差得远呢。为了说清楚这一点,我要给你讲个真实的故事,唉,看来想去游泳还真挺不容易啊。
 
时间在六十年代,地点在美国密西西比州,事件的起因,是有个叫杰姆斯·麦瑞迪斯的黑人学生,向密西西比大学申请入学。你要知道,当时的密西西比州是个种族歧视非常严重的南方州,在那里,尽管黑人理论上有上大学的权利,可是在现实却根本办不到,因为那个州的 州长本人就是个种族主义者,该州的民意舆论也支持州长的种族言论,结果不难想象,那个可怜的杰姆斯被大学校委会莫名其妙地拒绝了,理由很简单,他是黑人。
 
这下杰姆斯可不干了,他马上找到全美有色人种协会,由他们出钱聘请了律师,控诉密西西比大学违反宪法,践踏人权,并且把这场官司打到了上诉巡回法庭。经过长达一年的审判,杰姆斯终于胜诉了,法庭给密西西比大学下达强制令,强迫学校接收杰姆斯入学。
 
那时的美国社会,正处于民权运动的高潮,以马丁·路德·金为首的黑人民权组织,组织了一系列大型的非暴力抗议聚会,给整个美国社会带来了前所未有的冲击,当时的美国总统肯 尼迪,是个非常有魄力和远见的人,他很同情黑人的民权运动,而且也很关注杰姆斯的案件 ,但同时,他也明白在种族歧视 非常严重的南方州,黑人学生想要入学恐怕是件非常困难和危险的事情,所以,当他听到法庭判杰姆斯胜诉时,马上派出联邦官员,带着执法队去保护杰姆斯入学。
 
可是,法庭的这个强制令,立刻激怒了密西西比州长,在杰姆斯入学的那天,他授意副州长站在学校大门口进行阻拦,并且很嚣张地宣布,联邦政府的人要是敢来支持杰姆斯与州政 府对抗,来一个抓一个!
 
说到这里我不得不简单交代一下,美国政府的组织机构与我们国家不同,国家的权力是很分散的,每个州都像个独立王国,谁也不买中央政府的帐,各州的州长也不是由总统来任命,而是在各州竞选上的,只对本州人负责,所以,各个州对中央政府的态度是:我想怎么过就 怎么过,联邦政府你管不着,可我要出了事,你得给我顶着。
 
因此,当肯尼迪一听到密西西比州州长的强硬态度时,立刻头皮发麻,他很清楚,这下肯定要出事了。果不其然,就在杰姆斯入学那天,被州长煽动起来的民众与联邦执法队与校警发生严重的冲突,他们四处寻找杰姆斯,一边找还一边发泄(这场景是不是有点面熟?),暴 力事件越演越烈,造成了大量的流血和死亡,直到第二天的早上才逐渐平息。
 
最后,这场可怕的流血,使州长开始思索他身上所负的历史责任,于是他退让了,那个被吓得失魂落魄的杰姆斯,终于在联邦执法队的保护下,结束了密西西比州禁止黑人上大学的历 史。
 
呼,例子终于讲完了,我想说的是,通过这个事件,你可以很清楚的看到,尊重少数人的意见,不过是一个空洞的口号而已,想要让少数人真正的享受他们与大多数一样的权利,有时候,是要付出惨重的代价的。
 
呃,这么说来, 我们好像又要修改那个例子了:有 5 个人去旅游, 4 个人想游泳, 1 个人想打球,那么民主的决策就是, 4 个人去游泳, 1 个人去打球,然后再雇个人来陪那个小混蛋去打球,至于雇佣的钱嘛,由大家一起分摊。
 
但是且慢——抱歉 虽然文章已经够长了可我还是要说且慢——为什么为了尊重少数人就要牺牲我们 4 个人的利益?难道那小子一个人比我们 4 个还重要?如果我不想出钱,那是不是你也要尊重一下我的意见啊?可你不要忘记,这次你也许占在 " 多数 " 一边,说声拜拜就跑去游泳了,可是啊,保不准下次就轮到你要去打球了,到那时你找谁去?所以,为了下次你也能找到人陪你一起打球,为了让我们能够找到真正的民主,你一定要付出这个代价,尽管这意味着你也许要付出像密西西比州那样惨重的代价。
 
现在你一定已经看到,所谓民主,不是多数人意志的体现,也不是尊重少数人的意见,而是赋予每个人平等的权利,另外也不要忘了,这个民主可不是免费的午餐,你想得到他,是要花钱的。
 
知道了民主是什么,并不等于就可以马上实现民主了,因为了解一件事情与实施它,这中间是有很大的差别的。
 
如果问大家一个简单的问题,你认为民主是构建在一个怎样的基础上的?我想,十有八九得到的回答是 " 三权分立 " ,这个答案对不对呢?对,但不完整,因为想要实现民主,远远不是那么简单。为了说明这个问题,还是让我们回到那个经典的例子上吧。
 
5 个人去旅游, 4 个人想游泳, 1 个人想打球,那么民主的决策就是, 4 个人去游泳, 1 个人去打球, 然后再雇个人来陪那个混蛋小子去打球。可是,你也清楚,大家想要解决这个问题,光有个决策是不够的,还要有人去执行这个决策,于是,大家决定把钱交给 4 个人当中的某一个(假定是小 A ),由他去雇人。
 
可你瞧,这时候问题就出来了,虽然我们都明白为什么大家要出笔钱去雇人陪打球,可是真的到了行动的 时候,不是每个人都有那么高的觉悟,也不是每个人对这笔钱都无动于衷,小 A 心里没准会想,好嘛,你们几个舒舒服服地坐享其成,让我一个人东奔西跑,休想啊休想 ,这可是个千载难逢的好机会,谁不利用谁就是傻瓜。
 
经验告诉我们,凡是牵扯到钱的问题,指望某个人的道德和良心,肯定靠不住,要是大家把自己的钱都交给某一个人,那么我们怎么保证这个人一定会按照大家的要求去雇人打球而不是中饱私囊呢?
 
其实,这个问题倒也不难解决,让我们来试试下面这个办法:
 
我们一致同意把钱给小 A ,让他去雇人,不过等一下,在给他钱之前,先要由小 B 来计算一下应该给多少,再把数字对大家公布出来,然后分文不差交给小 A ,可是,如果雇人的过程中出现了中饱私囊或其他的问题,那就该由小 C 来负责审查了,并且,其他人绝对不能干预他的审查。
 
你觉得这个办法怎么样?还不错吧?其实,这种方法有个名字,就是我们前面提到过的 " 三权分立 " 。小A 负责做事,他代表行政机构, 小B 负责计算大家出的钱应该是多少,代表立法机构,最后要是出了问题,就由小C 负责审查,他代表司法机构。
 
也许你会说,这不挺容易的嘛,问题解决了。可是先别忙,你想想看,如果小 A 想私吞我们的钱,他会笨到让大家发觉自己做了手脚吗?不要忘记,当我们把自己的希望都托付给某个人时,他就具有了一定的权力,并且可以任意支配这种权力,这是件很可怕的事情。比如,他可以利用大家的钱来贿赂以形成多数,或是干脆用这笔钱来雇一个保镖而不是陪打球的,这样就使得我们在暴力面前不敢再理直气壮地讨回本属于大家的钱。
 
你看,尽管我们在讨论民主是什么时显得头头是道,可一具体实施起来马上就变了味道,如果你认为我是在危言耸听,那么就来看看一战后的德国是如何从民主变质为专制的吧。
 
1918 年,德国战败了,沦落到了被协约国任意摆布的地步。这时,各协约国对怎样处理德国的态度是不同的,法国人由于是德国的近邻,在历史上多次被德国入侵,因此坚决主张削弱德国,英国人虽然对此不反对,但却不愿意看到一个衰落的德国,他们的政策是维持欧洲大陆的势力平衡,至于美国人,他们与德国隔着一条宽阔的大西洋,又有英法在欧洲顶着德国,所以感受不到切身的威胁,但是,美国人意识到,一个拥有 8000 万人口及雄厚工业基础的国家,仅仅靠土地或军事限制,不可能制止它的复兴,也绝对无法保证日后欧洲的安全,所以,美国总统威尔逊坚持要把德国改造为一个民主自由的共和国,以防止德国再次成为战争的策源地。
在这种背景下,同时也为了防止共产主义的侵蚀,德国于 1918 11 月成立了历史上第一个民主政府,并在随后的国会上通过了一部民主宪法——魏玛宪法。这里我想强调的是,这部宪法的民主程度,几乎可以和美国宪法相媲美,它借鉴了当时各个民主国家的经验,把国家权力分成国会、法院和政府三个部分,并且赋予了德国人各种基本的公民权利, " 这是 20 世纪所曾经见到过的这 种文件中最妙、令人羡慕的条文,看起来似乎足以保证一种几乎完善无疵的民主制度的实行 " " 世界上没有任何人可能比德 国人更加自由,没有任何国家政府比德国人的政府更加民主和自由,至少,在纸面上是如此 " (《第三帝国的兴亡》, P60 )。
 
你也看到了,这时 的德国魏玛共和国,可算得上是一个民主制度的典型,即便是像阿道夫·希特勒这样胆大妄为的家伙,也不得不在啤酒馆政变失败后选择合法竞选一途。那么,这个 民主的国家为什么会走向独裁呢?德国人又是如何放弃自己手中的权利呢?还是让我们揭开 历史的帷幕,仔细看看事情的究竟吧。
 
1933 年早春的一个夜晚,确切的说是227930分,在德国的首都柏林,天色晴朗,空气清新,一点也没有风高放火夜黑杀人的迹象——尽管这一天注定要 载入史册——有个神学院的学生放学回家,路过国会大厦时,突然听到大厦内有打碎玻璃的声音,接着就看见一条黑影窜出,手里还拿着火把,他吃了一惊,马上跑去报警。恰在这时,德国最有权势的 4 个人,总统兴登堡、总理希特勒、副总理巴本、宣传部长戈培尔,正在国会大厦对面的贵族俱乐部吃饭,首先是戈培尔接到了一个报警电话,说大厦已经着火了,可戈培尔以为是个玩笑,根本不相信,他连一个字都没有 向希特勒提及,但巴本却看到了火光,马上告诉了兴登堡,同时,戈培尔也开始觉得不对劲,因为街上正有人在叫喊,随后他打了几个电话进行核实,才确信国会大厦的确着火了,于是他和希特勒立刻赶往现场。
 
一到现场,希特勒就马上宣布一把火是共产党放的,这时,德国国会议长戈林、副总理巴本、普鲁士内政部政警主任狄尔斯(就是秘密警察头子)全都赶到了,戈林兴奋得有点失常,赌咒发誓说这是共产党反对政府的罪行,尽管巴本不是纳粹党人,但他却也没对希特勒和戈 林的结论表示丝毫的怀疑,只有狄尔斯老老实实的说,纵火犯已经抓到了,他看不出和共产党有什么联系,那家伙不过是个疯子而已。这可不是希特勒想要的答案,他顿时勃然大怒,把共产党臭骂了一顿,随后跑去召开内阁紧急会议去了。而戈林则到普鲁士官方报社,要求写报道的记者把纵火者所带的燃火材料从100提高到1000,可那个记者很有点新闻独立精神,他拒绝说,一个人怎能抗动1000的东西呢?这种笑话他可写不出来,戈林马上反驳说,干嘛说是一个人干的? 10 个不就行了?要知道这可是共产党的阴谋!于是那个记者便要求戈林在这篇报道上签字,因为这已经不是新闻报道而是政治文件了,戈林心里着实有点发虚,虽然他为此策划很久了,可这时希特勒毕竟还没有拿到国会 2/3 的多数,也没有得到内阁的授权,公然破坏宪法的责任他可承担不起,但事已至此,不签也不行,于是他很狡猾地在报道上画了一个大大的 G 字,算是签名(戈林名字的第一个字母)。
 
我想你已经注意到了,我说戈林 " 为此策划很久了 " ,这是怎么回事呢?原来,那个纵火犯名字叫做范·德·卢勃,是个荷兰国际共产党人,他既不喜欢纳粹,也对莫斯科没什么好感,是个头脑简单的 " 爱国青年 " ,他觉得,德国革命只有在某种惊人的历史事件的推动下才 能爆发,他想用国会大厦的熊熊燃烧的烈火来唤醒麻木不仁的德国人。可是,这个可怜的倒霉蛋还不晓 得,希特勒早就期盼着共产党人能做点什么蠢事,好让他能找到借口清除异己,这个没头脑的纵火狂简直是上帝送给纳粹党人的,希特勒、戈林、也许还有戈培尔, 早就知道卢勃将要在国会纵火,他们安排纳粹冲锋队悄悄潜伏在国会大厦内,等着大厦燃烧起来时再给它 " 添点油 " ,把事情闹大,不然,就凭卢勃那区区100的纵火材料,怎么也无法引起那么一场大火,当然戏也就演砸了。
 
等到召开内阁会议时,希特勒大肆宣扬这一事件的严重性,竭力攻击共产党人,尽管在内阁里纳粹党人并不占多数,可大家都被希特勒那极具煽动性的言辞给搞懵了,既紧张又恐惧,生怕共产主义革命爆发,几乎没怎么考虑就一致通过了希特勒的要求,结果一下子就把葬送民主的悼歌给吹响了。
 
那么,希特勒要求的是什么东西呢?听起来好象很滑稽,他要求采取某种措施来保护 " 德国公民的文 献资料 " ,是不是觉得有点可笑?可别急,关键在那 " 某种措施 " ,希特勒要求,德国政府有限制公民个人自由、言论自由的权力,包括限制出版自由、集会自由和结社自由 ,有权对公民的邮件、电话、电报进行检查,有权给警察颁发搜查公民住宅的许可证,有权没收公民的私人财产,有权对持有武器的公民判处死刑,甚至政府在必要时可以接管德国各州的自治权力。
 
这下你一定笑不出来了吧?不管怎么说,希特勒终于拿到了他梦寐以求的内阁授权,下一步,就要考虑怎样才能使授权生效了。根据德国宪法,想要通过一项与宪法本身相抵触的法律或政策,必须得到国会 2/3 的多数票,但希特勒很清楚他的纳粹党不可能在国会获得 2/3 的席位,而且对于其他党派赞同与否,他也一点把握都没有,因此,他狡猾地走了一个捷径。
 
这个捷径是什么呢?那就是德国宪法第 48 条有一个规定,总统在国家紧急状态下可以行使暂时的独裁权,这本来是为应付战争或革命而设计的,但宪法并没有详细解释所谓 " 紧急状态 " 究竟应该是个什么状态,因此希特勒非常巧妙地利用了这一点,他找到总统,要求后者行使宪法赋予的独裁权,绕过国会强行通过他的法案。这时的德国总统,是上次大战中的老 英雄兴登堡,一个保守、正直的老普鲁士军官,他压根就瞧不起希特勒和他领导的国社党,可是,兴登堡很也清楚,不管怎么说,国社党毕竟是当时的第一大党,作为总统,他相信德 国民众的选择,也有义务支持自己的总理——虽然他根本就不晓得自己究竟在支持什么——希特勒对兴登 堡说,为了防止共产主义革命,通过法案是必须的,而且他保证不会滥用这一权力,于是兴登堡也就不再说什么,签字同意了。通向独裁的大门就此打开。
 
希特勒狡猾地利用德国宪法的一个隐晦的漏洞,把总统的独裁权牢牢地掌握在自己手里,从而开始了野蛮、血腥的政治清洗。
 
希特勒首先拿德国共产党开刀,大批共产党人遭到逮捕——请注意,是"合法"的逮捕——甚至包括有豁免权的国会议员,一群群穿着褐色衫的冲锋队暴徒们未经许可便破门而入,强行搜 查,把无辜者从睡梦中拖起,扔进冲锋队的营房,严刑拷打,逼迫其供认对德国的罪行 。与此同时,希特勒对于他的竞争 对手,社会民主党及其他自由主义党派也毫不留情,各种集会被勒令停止,所属报刊被取缔,公民权利亦被取消,德国头一次领教了纳粹独裁的滋味。
 
经过短短几天的暴力恐怖,德国政治已经面目全非了,公民不敢再随便议论政治,不敢再在公众场合嘲弄国社党的种种丑陋与罪行,生怕哪天走到大街上会被莫名其妙地逮捕。可 是,希特勒并不以此为满足,他不想躲在总统授予的"暂时独裁权"下过日子,他要成为德国名副其实的统治者,由于他认为经过几天的清洗,反对的声音应该都已经消失了, 重新举行大选以获得国会2/3多数的时机已经成熟,于是便于193335举行了德国二战前最后一次全国大选。
 
可是,让希特勒大失所望的是,尽管有种种许诺、恐怖和暴力威胁,但他的国社党仍然没有得到足够的多数票,虽然纳粹党人以1700万张选票遥遥领先,比第二大党社会民主党足足高出一倍之多,可却仅占总票数的44%,组织一个联合政府倒还可以,离2/3多数还差得远呢。
 
值得注意的是,希特勒并不打算利用非法手段来达到自己的目的,他要为自己的独裁披上合法的外衣,因此,希特勒并没有否定这次选举,或是干脆再重新来一次,他承认了选举的真 实性,而且也不打算再去捞取那个该死的2/3多数票了。可是,如果没有2/3的多数,希特勒又如何修改宪法呢?万般无奈之下,他只有求助于在国会中占多数席位的民主党派,希望他们信任自己,给予自己独裁的权力。
 
看到这里,你一定会说,这不是在开玩笑吧?希特勒还会这么天真,希望别人赞同自己独裁?那些占多数席位的民主党派,怎么会愚蠢到去葬送自己的政治生命?可是,我不得不告诉你,事情就是这么荒谬,这一切都是真实的,希特勒在新一届国会上,发表了也许是他 毕生中最精彩、最虚伪的一次演说,他承诺一切旧有的秩序都会维持不变,国会所赋予他的独裁权,仅仅在某些狭小的特定范围适用,绝不会导致国家权力结构的改变,也不会限制任何公民权利,他唯一的目的,就是领导德国重新建立在一战后的世界地位。希特勒在演说中,竭 力想煽动起德国人强烈的民族主义情绪——这一点也不困难,无论是对希特勒还是对德国人——他呼吁全体德国人"从自私自利的党争中解脱出来,在民族自觉中团结起来,建立一个自豪的自由的统一的德国"
 
几乎所有的民主党派都被希特勒的花言巧语所打动,德国人的那种特有的黩武精神,以及对荣誉、对"铁与血"的热切渴望,指引着他们在自己的死刑判决书上签了字,国会一致同意把自己的立法权移交给政府,为期是4年。这些在民主 制度下浸泡了15年的国会议员们似乎还不懂得,一旦你培育出了独裁的种子,它就会像可怕的瘟疫一样四处蔓延不受控制,不要说是4年,即便是4天也足以摧毁一个 健全的民主制度。
 
值得一提的是,国会中并非所有党派都被希特勒所蛊惑,社会民主党领袖,可敬的奥托·威尔斯议员,昂 然不屈地站出来反对希特勒的独裁,他代表他的党投反对票,并庄严地宣布,"在这有着历史意义的时刻,我们德国社会民主党人庄严地保证要维护人道和正义、自由和 社会主义的原则。任何授权法都不能给予你摧毁永恒的、不可摧毁的思想的权力!
让我们记住这个人,这个名字,以及这个宣言,尽管社会民主党在国会仅有84个席位,远远不及投赞成票的441之多,尽管他们的反对对大局来说无足轻重,可即便是在如此黑暗的时刻,我们也依然可以看到在那些迸闪着的绚丽的火花。
 
不过,今天的我们大概很难去谴责德国人当初的选择,"饿肚子的自由"的滋味,大概不会太好受,更何况,自从1918年一战失败后,德国人已经受了长达15年的窝囊气,一旦有人提出要把德国重建为全欧洲乃至全世界的强国,又怎能不把尊严顶在脑袋上好好爽一 下呢(作为中国人应该不难理解)。
 
要说德国人的这种心态,看起来倒也真是蛮合理的,可不是吗,我这儿连一日三餐都发愁呢,你还在那里唠唠叨叨、罗里八嗦地奢谈什么自由,那不是扯淡吗?要是我真饿死了,别说自由,恐怕连棺材都没有呢。我想即便是在今天,也依然有不少人这样看待问题,没有生存权,哪儿来的人权?
 
可是,话又说回来,无论是你选自由还是选面包,最后的结局恐怕都不见得如何美妙,选了自由,自然免不了要挨饿,可一旦失去自由,面包能不能保得住,却也难说的很,1933年的德国人 不就是个很好的例子吗?
 
那么,我们该如何抉择呢?我想,这种两难的抉择之所粤钊烁械嚼Щ螅(原文乱码,幸好不影响理解全 文)不知你是否看过成龙主演的一部影片,名字叫作《我是谁》,片中有一场戏很有点类似的味道。成龙为了保护一张刻有秘密武器资料的光碟,被两个武术高手困 在大厦天台上,那两个坏蛋对成龙说,现在给你两个选择,一是把光碟留下,然后你自己跳下楼去,二是我们把光碟抢回来,然后把你给扔下去。乍一听起来,这两 个选择好像给了成龙一个机会,可以决定自己的命运,可再一想,无论他选哪个,结果都一样,都免不了丢掉光碟跳下楼去,看来成龙也和我们一样遇到了麻烦。那么,成龙又是如何选择的呢?其实他的想法很简单,我干嘛要听你的?成龙回答说,我还有第三个选择,光碟我留 下,然后把你们俩个扔下去。
 
成龙的这个有趣的答案也许多少给了我们某些提示,就是说两难抉择的前提不一定成立,事实上可能还存 在第三种选择,即,面包我要了,可那个自由你也得给我留着。问题是,这第三种选择在现实中有存在的可能性吗?我们能既要面包又保住自由吗?还是老办法—— 把陈 旧的历史书从垃圾桶里翻出来,然后仔细地读它一读。
 
19291024日——对于美国人来说,如果有世界末日,那一定是这一天——这天早上,纽约证劵市场毫无征兆地全面崩溃,股价跌降之疯狂,连股票交易记录机都无法跟踪,无论是经济学家、资本家、还是 白宫的那些政治家,全部目瞪口呆,毫无思想准备,更可怕的是随之而来的信用彻底消失,银行出现挤兑风暴,国家财政陷入混乱,工厂停工,货品滞压,失业率迅 猛攀升,这些现象都预示着,有史以来最严重的一场经济危机爆发了。
 
有人曾问英国最有名望的经济学家约翰·凯恩斯,人类历史上是否有类似的事情?凯恩斯想了想,认真回答道,有的,那是在中世纪的黑暗时代,前后共400年。在美国,大批被债务逼得走投无路的人选择了自杀或是逃亡,就连那些大资本家们的日子也异常难熬, 因为他们在银行的钱根本就拿不出来。到了1933年春季,美国国内18600家银行全部停止营业,联邦政府黄金外流已经超过2.5亿美元,财政储备还不到应付款项的1/7,这个国家实际上已经破产了,当时的美国总统胡佛甚至惨痛地说,我们已经山穷水尽。
 
现在回过头来看看,1929年的美国经济危机,可以说是人类历史上意义最深远的一次经济危机,这场前所未有的、令人绝望的危机一直持续了3年多,波及日本、美洲、乃至全欧洲(苏联除外,因为它的经济与世界并不接轨),使得欧洲国家关系空 前紧张,令日本、德国民族主义急速膨胀,间接导致了第二次世界大战的爆发,希特勒领导的纳粹党,就是利用这场经济危机中人们要"面包"的欲望,从国会中最小的一个党派,一跃成为全国第一大党。
 
如果你问独裁最容易出现在什么时候,那我可以很肯定地回答你,就是在那个时代。历史总是惊人的相似,如果我们把1933年美、德两国政治领域的事件拿出来做对比的话,就不难发现其中的雷同之处。
 
这是怎么回事呢?原来,罗斯福在实行新政时,经常受到最高法院的肘制,每每令他万分恼火。在罗斯福刚刚当政时,这一情况还不明显,因为美国尚处在风雨飘摇的经济风暴 中,大家都在齐心协力熬过这段艰难的岁月,所以他的各项法案几乎没怎么费力就可以得到国会多 数票及最高法院的支持,可是,经过百日新政,美国经济有了较明显的起色,大家也都回过劲来,缓了口气,这时矛盾就来了。罗斯福的民主党是在南北 战争时期发展起来的,在美国政治中一直是少数党,仅仅凭借1929年的经济危机罗斯福才入主白宫,因此,作为对手 共和党把持的最高法院,当然不肯给他面子,更要命的是,最高法院的几位&&&&官,基本都是林肯时代的人,用罗斯福的话来讲,是一群"马车时代"的人,保守是他们 共同的特点,面对罗斯福左一个新政又一个新政,被搞得眼花缭乱,委实接受不了,起先因为经济危机而 不得不授予罗斯福各项权力,那是没有办法的办法,现在到了该收回权力的时候了。
 
19351月,最高法院以81的票数,宣布罗斯福的《全国工业复兴法》违宪,从此拉开了法院与政府的权力战争。紧接着,最高法院又 于5月一口气判3项新政法律违宪, 到了1936年初,又废掉了6项法律,这样一来,罗斯福颁布的各项法律,已经被废除了1 0多项,新政基本陷于瘫痪状态。
 
我们不难想象, 罗斯福是何等的窝火,要说这帮人可真是些忘恩负义的家伙,如果不是百日新政挽救了美国的经济,他们哪儿还会有闲情逸致来对新政说三道四?再说,被废除的这些法律,都是为了保障美国公民的权利才出台的,就像前面所说的那个帕里什诉西岸旅馆案, 《最低工资法》是为了救济贫民穷人,要说起来最高法院你算站在哪头的?
 
1936年,罗斯福再次以绝对优势当选第33任美国总统,这下有了民众的支持,罗斯福认为自己有实力回应最高法院的挑战了,他要改变最高法院的敌对态度,把后者致于自己的势力之内。可是,司法独立,是三权分立的前提,也是美国立国的基石,想打破传统,是件非常困难的事情。按照美国宪法,想扭转最 高法院的乾坤,只有两种办法,一是让国会修改宪法,二是由总统直接任命自己的亲信当&&&官,罗斯福很清楚,想得到国会2/3多数就这一问题支持自己修改宪法,简直就如同作梦,根本不能想,因此他企图走个捷径,由自己任命比较听话法官来主持最高法院,但这一点也很不容易做到,因为美国&&&官是终身制,除非犯下严重罪行,否则任何人都无权解除他们的职务。于是,罗斯福开始秘密酝 酿一项前所未有的政治改革方案,那就是改组最高法院的组成机构,这一计划提出,凡是年满70岁的&&&官,如果不自动退出最高法院,那么总统就有权再任命一名法官进最高法院,简单的说就是罗斯福来了个"逼宫退位",想利用增补多数的办法来控制最高法院。
 
罗斯福这一方案刚一宣布,立刻引起美国舆论大哗,不仅是对手共和党,就连民主党自己也觉得不可思议,因为这几乎等于把最高法院的权力拱手让给了联邦政府,失去了最珍贵的独立性,前任总统胡佛怒气冲冲地叫嚷着"不许碰最高法院",各家媒体难得一 致地抨击罗斯 福实际是想搞独裁,就连一向支持新政的国会也充满了一片反对讨伐声,狂风暴雨般的抗议信更是接连不断寄往白宫,那些在新政中获得收益的人,无论大资本家还是平民百姓,很多都站到罗斯福对立面去了,后者实在没有想到,这次可真是捅了个马蜂窝,但罗斯福岂是 常 人,他不为所动,坚信民众站在自己这边,他在39日的"炉边谈话"中,把矛头直接对准最高法院的&&&官们,试图说明自己不是针对最高法院这一机构,而是那些保守派,想澄清他不要独裁仅仅是要维护新政的观点,并希望能够通过公众压力来制服对手。
 
也就在美国政治出 现严重危机,很有可能倒向独裁的最关键时刻,帕里什这个小小的女工,把诉西岸旅馆案打到了最高法院,这就把九位&&&官直接推到了斗争的最前沿。以休斯为首的&&&官们,这时面临了一个两难的抉择,是判《最低工资法》违宪以维护最高法院的威信 ?还是选择退让以阻止罗斯福找到迈向独裁的借口?
 
最终,最高法院理智地选择了妥协,判帕里什胜诉,&&&官们考虑到,如果宣布《最低工资法》违宪,那么罗斯福很有可能以维护新政为借口,积极寻求改革最高法院,不管怎么说,百日新政毕竟拯救了美国,罗斯福在美国不乏支持者,要是有人不能看到独裁的危害性,一 个劲跟着罗斯福跑,那美国的民主制度就真的彻底完蛋了,于是,最高法院就这样以战术上的失败换来了战略上的胜利,挫败了罗斯福改组最高法院的企图。
 
且慢,你不是说还有第三种选择吗?怎么&&&官们没有找到?其实,你仔细想想&&&官们判决的后果,就明白第三种选择在哪里了。判帕里什胜诉,意味着罗斯福新政的胜利,给那些陷于贫困的人们带来了面包,但同时,这一判决又在事实上驳斥了罗斯福说最高法院企图阻碍新政的观点,使后者的政治改革方案胎死腹中,维护了美国司法的独立性,就是说,美国人尽管有点"过河拆桥"的嫌疑,却得到了实惠,既拿到了面包,又保住了自由。
 
说到这里,你一定还记得我们曾经提到过的那个倒霉的魏玛共和国,它的那个建立在纸面上的民主制度是多么的弱不禁风,希特勒仅用手指轻轻捅了一下,整座精心构筑的大厦便轰然倒塌,连块砖头都没剩下。现在你已经看到,历史老人并没有特别厚待美国人,在那个混乱 、恐怖的时代,他们遇到了与德国人同样的问题:如何维持一个脆弱的民主制度的正常运转?或者说,民主的基础究竟是什么?
 
德国人面对"面包"的诱惑,面对天堂般的美好前景,轻易相信了希特勒的承诺,忘记或有意忘记了还有"我干嘛要听你的"这个选择,不相信也不愿靠自己的能力去解决问题,只是期待尼采式的"超人"来解救他们,为他们承担所有的痛苦、困难和义务。
 
但美国人可不是这么考虑问题的,他们认识到,无论罗斯福的新政挽救了多少美国人,无论罗斯福本人多么的英明、正确,也绝对不能把手中的权利交给他,自己的命运一定要掌握 在自己手中(还记得成龙的回答吗?)。如果总统通过紧急时期国会所赋予他的权力任意影响 司法独立性,甚至是违背《权利法案》的立法初衷,那么无论这位总统是否出于善意,都会导致民主制度的崩塌,更何况,独裁制度最大的缺点是缺乏制 约机制,即便罗斯福真的是想"为人民服务",也不能肯定他的 后任就是个"",那些为了眼前的利益而拱手让出自 己权利的人,恰恰没有看到独裁的长远危害,把希望都寄托在一个人身上而非制度上,指望某个人的"恩赐"过活,这可不是美国人想要的,他们绝对不允许自己的国家里出现个希特勒。这种对专制制度的深刻认识,对自由权利的不懈维护,使得美国终于没有像德国一样走 向独裁。
 
我想,文章至此,答案已经浮出水面,清晰可见了,每个公民的自由权利,都是构成民主大厦的基石。如果一个民主制度不能保障公民的自由,不能保证大家都有获得面包的平等机会,哪怕再有一千条理由,也将会不可避免地走向毁灭,民主的意义,正在于此。
敬请订阅GFW Blog:http://feeds2.feedburner.com/chinagfwblog,邮件订阅:https://groups.google.com/group/gfw-blog。在twitter跟随我们:http://twitter.com/cdt。更多翻墙工具介绍和下载: 推客浏览器(http://twitbrowser.net/blog/,墙内镜像:http://tbm001.mooo.com/),Sesawe(http://www.sesawe.org/和http://www.sesawwe.net/)。翻墙互助小组邮件列表: http://groups.google.com/group/bypassgfw。中国数字时代(China Digital Times)免翻墙版:https://caonima.ws/。译者:http://yyyyiiii.blogspot.com/。

 
 

Things you can do from here:

 
 

Friday, March 5, 2010

最近整理的一些M-theory 相关的东西

为了防止链接失效,我存到google docs里了。

M理论之雾

广义相对论---量子理论---超弦理论

闲聊宇宙学——李淼

曹天元:弦理论的历史简介
http://docs.google.com/View?id=dt63773_281gnktr2hp

此外,据说The elegant universe是本写得不错的科普书,中文名是《宇宙的心弦》
不过发觉图书馆的竟然被reserve了 -.-

Eason Chan 陳奕迅 《陀飛輪》MV

Tuesday, March 2, 2010

KDE 3.5.9 自动挂载的问题

不知道从何开始,我的KDE就不能自动挂载了。
刚才插上一个移动硬盘,就顺道解决了这个问题,主要参考了这里:

[1]Archlinux 关于 HAL 部分的文档
[2]这篇文章。

关于[1]是解决挂载时出现权限不足的问题的。
似乎是HAL跟PolicyKit这两个东东打架。按照[1]里面的做了即可。

关于[2],我主要是知道了几个事实,与里面所说的FAT32的shortname(8.3)问题无关。
(1)KDE的自动挂载工具读取的文件是:~/.kde/share/config/mediamanagerrc
这个文件记录了挂载的设备的一些挂载选项
(2)对于要挂载的设备,在System Menu->Storage Media里面(konqueror里面输入media:/)
右键选择那个设备的属性,并查看挂载一栏可以设置挂载的位置,以及是否自动挂载等。

现在我的KDE可以正常地挂载,并且光盘弹出能自动卸载了!
其实完全不用自己设定挂载的地方,KDE会自动帮你载/media建立一个临时目录,目录名跟设备的label一致,
卸载后自动删除。


类似地,ntfs的解决方案载[1]里也有记载。

Monday, March 1, 2010

20 Linux System Monitoring Tools Every SysAdmin Should Know

很好很详细。

 
 

Sent to you by Iveney via Google Reader:

 
 

via 《Ourlinux》杂志 by bixuan on 2/8/10

原文:http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html
by VIVEK GITE

Need to monitor Linux server performance? Try these built-in command and a few add-on tools. Most Linux distributions are equipped with tons of monitoring. These tools provide metrics which can be used to get information about system activities. You can use these tools to find the possible causes of a performance problem. The commands discussed below are some of the most basic commands when it comes to system analysis and debugging server issues such as:

  1. Finding out bottlenecks.
  2. Disk (storage) bottlenecks.
  3. CPU and memory bottlenecks.
  4. Network bottlenecks.

#1: top - Process Activity Command

The top program provides a dynamic real-time view of a running system i.e. actual process activity. By default, it displays the most CPU-intensive tasks running on the server and updates the list every five seconds.

Fig.01: Linux top command

Fig.01: Linux top command

Commonly Used Hot Keys

The top command provides several useful hot keys:

Hot Key Usage
t Displays summary information off and on.
m Displays memory information off and on.
A Sorts the display by top consumers of various system resources. Useful for quick identification of performance-hungry tasks on a system.
f Enters an interactive configuration screen for top. Helpful for setting up top for a specific task.
o Enables you to interactively select the ordering within top.
r Issues renice command.
k Issues kill command.
z Turn on or off color/mono

=> Related: How do I Find Out Linux CPU Utilization?

#2: vmstat - System Activity, Hardware and System Information

The command vmstat reports information about processes, memory, paging, block IO, traps, and cpu activity.
# vmstat 3
Sample Outputs:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  0  0      0 2540988 522188 5130400    0    0     2    32    4    2  4  1 96  0  0  1  0      0 2540988 522188 5130400    0    0     0   720 1199  665  1  0 99  0  0  0  0      0 2540956 522188 5130400    0    0     0     0 1151 1569  4  1 95  0  0  0  0      0 2540956 522188 5130500    0    0     0     6 1117  439  1  0 99  0  0  0  0      0 2540940 522188 5130512    0    0     0   536 1189  932  1  0 98  0  0  0  0      0 2538444 522188 5130588    0    0     0     0 1187 1417  4  1 96  0  0  0  0      0 2490060 522188 5130640    0    0     0    18 1253 1123  5  1 94  0  0

Display Memory Utilization Slabinfo

# vmstat -m

Get Information About Active / Inactive Memory Pages

# vmstat -a
=> Related: How do I find out Linux Resource utilization to detect system bottlenecks?

#3: w - Find Out Who Is Logged on And What They Are Doing

w command displays information about the users currently on the machine, and their processes.
# w username
# w vivek

Sample Outputs:

 17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT root     pts/0    10.1.3.145       14:55    5.00s  0.04s  0.02s vim /etc/resolv.conf root     pts/1    10.1.3.145       17:43    0.00s  0.03s  0.00s w

#4: uptime - Tell How Long The System Has Been Running

The uptime command can be used to see how long the server has been running. The current time, how long the system has been running, how many users are currently logged on, and the system load averages for the past 1, 5, and 15 minutes.
# uptime
Output:

 18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

1 can be considered as optimal load value. The load can change from system to system. For a single CPU system 1 - 3 and SMP systems 6-10 load value might be acceptable.

#5: ps - Displays The Processes

ps command will report a snapshot of the current processes. To select all processes use the -A or -e option:
# ps -A
Sample Outputs:

  PID TTY          TIME CMD     1 ?        00:00:02 init     2 ?        00:00:02 migration/0     3 ?        00:00:01 ksoftirqd/0     4 ?        00:00:00 watchdog/0     5 ?        00:00:00 migration/1     6 ?        00:00:15 ksoftirqd/1 .... .....  4881 ?        00:53:28 java  4885 tty1     00:00:00 mingetty  4886 tty2     00:00:00 mingetty  4887 tty3     00:00:00 mingetty  4888 tty4     00:00:00 mingetty  4891 tty5     00:00:00 mingetty  4892 tty6     00:00:00 mingetty  4893 ttyS1    00:00:00 agetty 12853 ?        00:00:00 cifsoplockd 12854 ?        00:00:00 cifsdnotifyd 14231 ?        00:10:34 lighttpd 14232 ?        00:00:00 php-cgi 54981 pts/0    00:00:00 vim 55465 ?        00:00:00 php-cgi 55546 ?        00:00:00 bind9-snmp-stat 55704 pts/1    00:00:00 ps

ps is just like top but provides more information.

Show Long Format Output

# ps -Al
To turn on extra full mode (it will show command line arguments passed to process):
# ps -AlF

To See Threads ( LWP and NLWP)

# ps -AlFH

To See Threads After Processes

# ps -AlLm

Print All Process On The Server

# ps ax
# ps axu

Print A Process Tree

# ps -ejH
# ps axjf
# pstree

Print Security Information

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

See Every Process Running As User Vivek

# ps -U vivek -u vivek u

Set Output In a User-Defined Format

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan

Display Only The Process IDs of Lighttpd

# ps -C lighttpd -o pid=
OR
# pgrep lighttpd
OR
# pgrep -u vivek php-cgi

Display The Name of PID 55977

# ps -p 55977 -o comm=

Find Out The Top 10 Memory Consuming Process

# ps -auxf | sort -nr -k 4 | head -10

Find Out top 10 CPU Consuming Process

# ps -auxf | sort -nr -k 3 | head -10

#6: free - Memory Usage

The command free displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel.
# free
Sample Output:

            total       used       free     shared    buffers     cached Mem:      12302896    9739664    2563232          0     523124    5154740 -/+ buffers/cache:    4061800    8241096 Swap:      1052248          0    1052248

=> Related: :

  1. Linux Find Out Virtual Memory PAGESIZE
  2. Linux Limit CPU Usage Per Process
  3. How much RAM does my Ubuntu / Fedora Linux desktop PC have?

#7: iostat - Average CPU Load, Disk Activity

The command iostat report Central Processing Unit (CPU) statistics and input/output statistics for devices, partitions and network filesystems (NFS).
# iostat
Sample Outputs:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 	06/26/2009  avg-cpu:  %user   %nice %system %iowait  %steal   %idle            3.50    0.09    0.51    0.03    0.00   95.86  Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn sda              22.04        31.88       512.03   16193351  260102868 sda1              0.00         0.00         0.00       2166        180 sda2             22.04        31.87       512.03   16189010  260102688 sda3              0.00         0.00         0.00       1615          0

=> Related:Linux Track NFS Directory / Disk I/O Stats

#8: sar - Collect and Report System Activity

The sar command is used to collect, report, and save system activity information. To see network counter, enter:
# sar -n DEV | more
To display the network counters from the 24th:
# sar -n DEV -f /var/log/sa/sa24 | more
You can also display real time usage using sar:
# sar 4 5
Sample Outputs:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 		06/26/2009  06:45:12 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle 06:45:16 PM       all      2.00      0.00      0.22      0.00      0.00     97.78 06:45:20 PM       all      2.07      0.00      0.38      0.03      0.00     97.52 06:45:24 PM       all      0.94      0.00      0.28      0.00      0.00     98.78 06:45:28 PM       all      1.56      0.00      0.22      0.00      0.00     98.22 06:45:32 PM       all      3.53      0.00      0.25      0.03      0.00     96.19 Average:          all      2.02      0.00      0.27      0.01      0.00     97.70

=> Related:How to collect Linux system utilization data into a file

#9: mpstat - Multiprocessor Usage

The mpstat command displays activities for each available processor, processor 0 being the first one. mpstat -P ALL to display average CPU utilization per processor:
# mpstat -P ALL
Sample Output:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)	 	06/26/2009  06:48:11 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s 06:48:11 PM  all    3.50    0.09    0.34    0.03    0.01    0.17    0.00   95.86   1218.04 06:48:11 PM    0    3.44    0.08    0.31    0.02    0.00    0.12    0.00   96.04   1000.31 06:48:11 PM    1    3.10    0.08    0.32    0.09    0.02    0.11    0.00   96.28     34.93 06:48:11 PM    2    4.16    0.11    0.36    0.02    0.00    0.11    0.00   95.25      0.00 06:48:11 PM    3    3.77    0.11    0.38    0.03    0.01    0.24    0.00   95.46     44.80 06:48:11 PM    4    2.96    0.07    0.29    0.04    0.02    0.10    0.00   96.52     25.91 06:48:11 PM    5    3.26    0.08    0.28    0.03    0.01    0.10    0.00   96.23     14.98 06:48:11 PM    6    4.00    0.10    0.34    0.01    0.00    0.13    0.00   95.42      3.75 06:48:11 PM    7    3.30    0.11    0.39    0.03    0.01    0.46    0.00   95.69     76.89

=> Related:Linux display each multiple SMP CPU processors utilization individually.

#10: pmap - Process Memory Usage

The command pmap report memory map of a process. Use this command to find out causes of memory bottlenecks.
# pmap -d PID
To display process memory information for pid # 47394, enter:
# pmap -d 47394
Sample Outputs:

47394:   /usr/bin/php-cgi Address           Kbytes Mode  Offset           Device    Mapping 0000000000400000    2584 r-x-- 0000000000000000 008:00002 php-cgi 0000000000886000     140 rw--- 0000000000286000 008:00002 php-cgi 00000000008a9000      52 rw--- 00000000008a9000 000:00000   [ anon ] 0000000000aa8000      76 rw--- 00000000002a8000 008:00002 php-cgi 000000000f678000    1980 rw--- 000000000f678000 000:00000   [ anon ] 000000314a600000     112 r-x-- 0000000000000000 008:00002 ld-2.5.so 000000314a81b000       4 r---- 000000000001b000 008:00002 ld-2.5.so 000000314a81c000       4 rw--- 000000000001c000 008:00002 ld-2.5.so 000000314aa00000    1328 r-x-- 0000000000000000 008:00002 libc-2.5.so 000000314ab4c000    2048 ----- 000000000014c000 008:00002 libc-2.5.so ..... ...... .. 00002af8d48fd000       4 rw--- 0000000000006000 008:00002 xsl.so 00002af8d490c000      40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so 00002af8d4916000    2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b15000       4 r---- 0000000000009000 008:00002 libnss_files-2.5.so 00002af8d4b16000       4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b17000  768000 rw-s- 0000000000000000 000:00009 zero (deleted) 00007fffc95fe000      84 rw--- 00007ffffffea000 000:00000   [ stack ] ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ] mapped: 933712K    writeable/private: 4304K    shared: 768000K

The last line is very important:

  • mapped: 933712K total amount of memory mapped to files
  • writeable/private: 4304K the amount of private address space
  • shared: 768000K the amount of address space this process is sharing with others

=> Related:Linux find the memory used by a program / process using pmap command

#11 and #12: netstat and ss - Network Statistics

The command netstat displays network connections, routing tables, interface statistics, masquerade connections, and multicast memberships. ss command is used to dump socket statistics. It allows showing information similar to netstat. See the following resources about ss and netstat commands:

#13: iptraf - Real-time Network Statistics

The iptraf command is interactive colorful IP LAN monitor. It is an ncurses-based IP LAN monitor that generates various network statistics including TCP info, UDP counts, ICMP and OSPF information, Ethernet load info, node stats, IP checksum errors, and others. It can provide the following info in easy to read format:

  • Network traffic statistics by TCP connection
  • IP traffic statistics by network interface
  • Network traffic statistics by protocol
  • Network traffic statistics by TCP/UDP port and by packet size
  • Network traffic statistics by Layer2 address
Fig.02: General interface statistics: IP traffic statistics by network interface

Fig.02: General interface statistics: IP traffic statistics by network interface

Fig.03 Network traffic statistics by TCP connection

Fig.03 Network traffic statistics by TCP connection

#14: tcpdump - Detailed Network Traffic Analysis

The tcpdump is simple command that dump traffic on a network. However, you need good understanding of TCP/IP protocol to utilize this tool. For.e.g to display traffic info about DNS, enter:
# tcpdump -i eth1 'udp port 53'
To display all IPv4 HTTP packets to and from port 80, i.e. print only packets that contain data, not, for example, SYN and FIN packets and ACK-only packets, enter:
# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
To display all FTP session to 202.54.1.5, enter:
# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
To display all HTTP session to 192.168.1.5:
# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
Use wireshark to view detailed information about files, enter:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

#15: strace - System Calls

Trace system calls and signals. This is useful for debugging webserver and other server problems. See how to use to trace the process and see What it is doing.

#16: /Proc file system - Various Kernel Statistics

/proc file system provides detailed information about various hardware devices and other Linux kernel information. See Linux kernel /proc documentations for further details. Common /proc examples:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts

17#: Nagios - Server And Network Monitoring

Nagios is a popular open source computer system and network monitoring application software. You can easily monitor all your hosts, network equipment and services. It can send alert when things go wrong and again when they get better. FAN is "Fully Automated Nagios". FAN goals are to provide a Nagios installation including most tools provided by the Nagios Community. FAN provides a CDRom image in the standard ISO format, making it easy to easilly install a Nagios server. Added to this, a wide bunch of tools are including to the distribution, in order to improve the user experience around Nagios.

18#: Cacti - Web-based Monitoring Tool

Cacti is a complete network graphing solution designed to harness the power of RRDTool's data storage and graphing functionality. Cacti provides a fast poller, advanced graph templating, multiple data acquisition methods, and user management features out of the box. All of this is wrapped in an intuitive, easy to use interface that makes sense for LAN-sized installations up to complex networks with hundreds of devices. It can provide data about network, CPU, memory, logged in users, Apache, DNS servers and much more. See how to install and configure Cacti network graphing tool under CentOS / RHEL.

#19: KDE System Guard - Real-time Systems Reporting and Graphing

KSysguard is a network enabled task and system monitor application for KDE desktop. This tool can be run over ssh session. It provides lots of features such as a client/server architecture that enables monitoring of local and remote hosts. The graphical front end uses so-called sensors to retrieve the information it displays. A sensor can return simple values or more complex information like tables. For each type of information, one or more displays are provided. Displays are organized in worksheets that can be saved and loaded independently from each other. So, KSysguard is not only a simple task manager but also a very powerful tool to control large server farms.

Fig.05 KDE System Guard

Fig.05 KDE System Guard {Image credit: Wikipedia}

See the KSysguard handbook for detailed usage.

#20: Gnome System Monitor - Real-time Systems Reporting and Graphing

The System Monitor application enables you to display basic system information and monitor system processes, usage of system resources, and file systems. You can also use System Monitor to modify the behavior of your system. Although not as powerful as the KDE System Guard, it provides the basic information which may be useful for new users:

  • Displays various basic information about the computer's hardware and software.
  • Linux Kernel version
  • GNOME version
  • Hardware
  • Installed memory
  • Processors and speeds
  • System Status
  • Currently available disk space
  • Processes
  • Memory and swap space
  • Network usage
  • File Systems
  • Lists all mounted filesystems along with basic information about each.
Fig.06 The Gnome System Monitor application

Fig.06 The Gnome System Monitor application

Bounce: Additional Tools

A few more tools:

  • nmap - scan your server for open ports.
  • lsof - list open files, network connections and much more.
  • ntop web based tool - ntop is the best tool to see network usage in a way similar to what top command does for processes i.e. it is network traffic monitoring software. You can see network status, protocol wise distribution of traffic for UDP, TCP, DNS, HTTP and other protocols.
  • Conky - Another good monitoring tool for the X Window System. It is highly configurable and is able to monitor many system variables including the status of the CPU, memory, swap space, disk storage, temperatures, processes, network interfaces, battery power, system messages, e-mail inboxes etc.
  • GKrellM - It can be used to monitor the status of CPUs, main memory, hard disks, network interfaces, local and remote mailboxes, and many other things.
  • vnstat - vnStat is a console-based network traffic monitor. It keeps a log of hourly, daily and monthly network traffic for the selected interface(s).
  • htop - htop is an enhanced version of top, the interactive process viewer, which can display the list of processes in a tree form.
  • mtr - mtr combines the functionality of the traceroute and ping programs in a single network diagnostic tool.

Did I miss something? Please add your favorite system motoring tool in the comments.


 
 

Things you can do from here: