2009年2月25日星期三

有关Red Hat Enterprise Linux 5.3 AS DVD for x86 下载

我在Redhat的官网注册了也下载不了 Redhat Enterprise Linux 5.3

找了很多地方,终于在老外的网站找到了BT的种子下载,正下载中,速度很行,大家一起来加速

下载网址 http://www.mininova.org/tor/2211699

如下是资源描述

RED HAT ENTERPRISE LEVEL 5.3 Advanced Server, DVD for x386 (32 bits)

Red Hat, Inc. has announced the release of Red Hat Enterprise Linux (RHEL) 5.3, the latest update to the RHEL 5 series:

"Red Hat, Inc. today announced the global availability of Red Hat Enterprise Linux 5.3, featuring the latest open source, commercial-strength technology innovations. In the third update to Red Hat Enterprise Linux 5, customers will receive a wide range of enhancements, including significantly increased virtualization scalability, expanded hardware platform support and incorporation of OpenJDK Java technologies."

Full system, with installation number.

including documentation in PDF

- RHEL5.3_Release_Notes.pdf
- RHEL5.3_Installation_Guide.pdf (A MUST READ!!!)
- How-To_Generate_Installation_Numbers_for_RHEL5.pdf


MD5SUM:
371c62851611fd32ead440df6f24a296 rhel-5.3-server-i386-dvd.iso

2009年2月23日星期一

tac和rev的倒排倒写方式

tac是cat的倒写,意思也和它是相反的。cat是从第一行显示到最后一行,而tac是从最后一行显示到第一行,而rev 则是从最后一个字符显示到第一个字符。

$rev

则进入一个等待输入字符的状态,随便输入一段字段后回车,返回的结果将是这段字段的反转结果。按下Ctrl+C退出等候状态。

bash-3.2$ cat 2.txt

}
;0 nruter
;)"n\!dlrow olleh"(ftnirp
{
)(niam tni
>h.oidts< edulcni#

******************************
bash-3.2$ cat 2.txt | rev

}
return 0;
printf("hello world!\n");
{
int main()
#include

******************************
bash-3.2$ tac 2.txt | rev

#include
int main()
{
printf("hello world!\n");
return 0;
}

Emacs入门

1.关于 Emacs

it’s much more than an editor.
Emacs 的功能太强大了,但我们这里不偏离基础,只把它当作 windows 里的记事本来用。
寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从许多角度看,
这就等于你在直接编辑这个文件,只是你所做的修改只有在“存盘”的时候才会
被写入文件。也正因为如此,你可以丢弃一个写到一半的文件而不必把这个残缺
文件也保存到计算机上。在存盘的时候,Emacs 会把存盘前的文件重命名保存,
以防你改完之后又想反悔。重命名的规则通常是在原文件名之后添加一个“~”字符。
【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令:
M-x customize-variable make-backup-files

存盘结束后,Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这
可以减少系统崩溃和死机给你带来的损失。

在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,行首通常是一些诸如
“--:-- TUTORIAL.cn”的文字,这些文字代表了你当前正在访问的文件。比如你
现在正在访问的文件叫“TUTORIAL.cn”,它只是一个给你临时使用的拷贝。每当
Emacs 寻找到一个文件,文件名就会出现在这个位置。


2.打开 Emacs

$ emacs >>>> 无参数的输入emacs命令,emacs 会为你打开一个新file
$ emacs hello.c >>>> 如果hello.c 存在,则打开次文件;如果不存在,则新建hello.c文件。

Note: 在图形终端上打开的emacs, 上面有一排类似windows的文件菜单,点选 File -> Open File …, 然后输入文件名
在纯命令行的shell 里面,鼠标点击是不起作用的。这时候打开文件需要就需要用键盘键入命令(我们之后谈到的命令都是运用键盘的,鼠标点击大家都会)

3.Emacs中通过键盘输入命令
命令的输入,通常需要 Ctrl (Control键) 加上字母键 完成。有一些是Alt(又名 Meta 键) 与 字母 组合。如果你看了 emacs 的帮助指南,命令的表示通常是这样的:C-x C-c >>>> 先按住 Ctrl 键不放,按下 x,松开 x, 按下 c, 松开 c, 松开 Ctrl
M- >>>> Meta-, 或 Alt-, 或 Esc
C-M- >>>> Control-Alt-

(有一系列命令都是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、
缓冲区【缓冲区(buffer)会在后文详细介绍】”等等诸如此类的东西有关,其
中有些命令可能包含了 2 个、3 个或者 4 个字符。)
4. 在Emacs 打开一个文件
刚才我们是在打开emacs 的时候同时打开了一个文件,如 hello.c
那如何在emacs里打开另一个文件呢?(就象在 windows的 notepad 中的“新建”“打开”项)C-x C-f filename >>>> 打开一个filename文件

…... (输入文本) ……


5. 保存,退出操作

C-x C-s >>>> 保存文件
C-x C-c >>>> 退出Emacs
C-z 或者
C-x C-z >>>> 挂起Emacs


( 挂起的意思就是把程序放到后台操作,前台回到 shell 提示符上,输入fg 回到emacs 界面 )
(在没有提供挂起功能的系统中,C-z 会在 Emacs 之下创建一个子 shell 来让你
运行其它程序,并且再次“回到”Emacs 中――虽然我们并没有真正离开过。这
种情况下,通常用 shell 命令“exit”从子 shell 回到 Emacs。)

6.在输入文本过程中经常要用到的几个命令C-v >>>> 向下滚动窗口
M-v >>>> 向上滚动窗口
C-x u >>>> 取消上一次操作

7. * 自动保存(AUTO SAVE)
-----------------------

如果你已经修改了一个文件,但是还没来得及存盘你的计算机就罢工了,那么你
所做的修改就很可能会丢失。为了避免这样的不幸发生,Emacs 会定期将正在编
辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个
“#”字符,比如你正在编辑的文件叫“hello.c”,那么它的自动保存文件就叫
“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除。

所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
存文件)然后输入 M-x recover file 来恢复你的自动保存文件。在提
示确认的时候,输入 yes
--------------------------------------------------------------------------------

进一步自学 Emacs

如果已经成功使用了以上的基本操作,那么进行简单的文本编辑,保存,就没有什么问题了。
但是不是觉得 emacs 很不方便呢?网上有很多资源可以帮助进一步的学习emacs的使用。

btw, 偶觉得在实际需要中学习可以真正的掌握emacs的使用,不止是 emacs 的学习.
当你想完成某个快捷功能,比如同时打开两个窗口( C-x 2 ),有一个 命令列表 是很方便的。


每天要用到的命令

希望你的身边已经打开了一个emacs的编辑器,依次操作下面的命令,可以获得更直观的认识和理解。

查找功能
C-s 在文件中实现查找功能

* 搜索(SEARCHING)
-------------------

Emacs 可以向前或向后搜索字符串。搜索命令是一个移动光标的命令:搜索成功
后,光标会停留在搜索目标出现的地方。

Emacs 的搜索命令的独特之处在于,它是“渐进的(incremental)”。意思是搜
索与输入同时进行:你在键盘上一字一句地输入搜索词的过程中,Emacs 就已经
开始替你搜索了。

C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。

在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
于“渐进搜索”状态,并等待你输入搜索字串。按 可以结束搜索。

>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
慢慢输入“cursor”这个词,每敲一个字都停顿一下并观察光标。
现在你应该已曾经找到“cursor”这个词了。
>> 再按一次 C-s,搜索下一个“cursor”出现的位置。
>> 现在按四次退格键,看看光标是如何移动的。
>> 敲 结束搜索。

看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
现 C-g 会让光标回到搜索开始的位置,而 则让光标留在搜索结果上,
这是很有用的功能。】

注意:在某些终端下,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,使你看
不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能拦截了 C-s 并
冻结了屏幕。用 C-q 可以解除屏幕冻结。要解决这个问题,请参考 Emacs 手册
里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能还没
有中文翻译】,那里提供了一些有用的建议。

在渐进式搜索中,按退格键会删除目标字符串的最后一个字符,并且光标会回到
最近一次搜索的命中位置。比如你已经输入了“c”,光标就停在“c”第一次出
现的位置,再输入“u”,光标停在“cu”第一次出现的位置,这时再按退格键,
“u”就从搜索字串中消失了,然后光标会回到“c”第一次出现的位置。

另外,如果你在搜索的时候输入了 CONTROL 或者 META 组合键的话,搜索可能会
结束。(也有例外,比如 C-s 和 M-r 这些用于搜索的命令。)

前面说的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 与 C-s
相比除了搜索方向相反之外,其余的操作都一样。

同时打开多个文件:
C-x 2 水平分割主窗口
C-x 3 垂直分割
note: 操作这两个命令后,你会发现两个窗口显示的是同样的文本,在任一窗口进行的内容修改,都会改变两个窗口上的相同内容,因为他们就是同一个文件。 >>>> 这个功能非常好用,尤其是需要对一个很长的文件进行编辑,同时又需要查找内容的时候。
当然你也可以在新开的窗口 C-x C-f 打开另一个文件。

C-x o 在多个窗口之间进行切换 >>>> 也就是将光标移到当前要进行操作的窗口
C-x 1 将光标所在的窗口最大化 >>>> 相当于又回到了原来一个窗口的状态

新手可能会问的一些问题

Q: 如何在Linux上检查是否安装了emacs?
A: 在命令行提示符后输入 emacs, 如果什么都没有发生或者提示:“command not found”.
那么你可能还没有安装 emacs 或者安装的路径有问题

Q: C-x C-c 退出时的提示选项是什么意思?
A: 如果没有保存过文件,就是用 C-x C-c 退出,会出现以下提示信息:
Save file /home/software/carol/tmp/test.c? (y, n, !, ., q, C-r or C-h)
输入 y 保存文件并退出
输入 ! 不保存就退出
输入 Ctrl-h 获得帮助信息

Q: 如何使用emacs提供的快速入门手册
A: 用 C-h t (help tutorial) 可进入快速入门手册

* 获得更多帮助(GETTING MORE HELP)
-----------------------------------

本快速指南的目的仅仅是帮助你在 Emacs 的海洋里下水,不至于束手无策望洋兴
叹。有关 Emacs 的话题可谓汗牛充栋,这里自然是难尽万一。不过 Emacs 很理
解你求知若渴的心情,因为它提供的强大功能实在是太多了。为此,Emacs 提供
了一些命令来查看 Emacs 的命令文档,这些命令都以 CONTROL-h 开头,这个字
符也因此被称为“帮助(Help)字符”。

要使用帮助(Help)功能,请先输入 C-h,然后再输入一个字符以说明你需要什
么帮助。如果你连自己到底需要什么帮助都不知道,那么就输入 C-h ?,Emacs
会告诉你它能提供了哪些帮助。如果你按了 C-h 又想反悔,可以用 C-g 取消。

(有些主机改变了 C-h 的意义,这种以己度人外加一刀切的做法确实不太好,不
过倒是让你可以义正辞严地抱怨他们的系统管理员。话说回来,如果你按 C-h 之
后没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help 。)

最基本的帮助功能是 C-h c。输入 C-h c 之后再输入一个组合键,Emacs 会给出
这个命令的简要说明。

>> 输入 C-h c C-p。

显示的消息应该会是这样:

C-p runs the command previous-line

这条消息显示了 C-p 命令对应的函数名,函数名主要用来定制和扩展 Emacs。命
令的功能由函数完成,所以函数名本身也可以被看成是最简单的文档――至少对
于你已经学过的命令来说,它们的函数名足以解释它们的功能了。

多字符命令一样可以用 C-h c 来查看。

想得到更多的信息,请把 C-h c 换成 C-h k 试试看。

>> 输入 C-h k C-p。

上面的命令会新打开一个 Emacs 窗格以显示函数的名称及其文档。你读完之后可
以用 C-x 1 关掉这个帮助窗格。当然你并不需要立即这样做,你完全可以先在编
辑窗格里做点别的事情,然后再关掉帮助窗格。

还有一些其它有用的 C-h 命令:

C-h f 解释一个函数。需要输入函数名。

>> 试试看,输入 C-h f previous-line
Emacs 会给出它所知道的所有有关“实现 C-p 命令功能的函数”的信息。

C-h v 用来显示 Emacs 变量的文档。Emacs 变量可以被用来“定制 Emacs 的行
为”。同样,你需要输入变量的名称。

C-h a 相关命令搜索(Command Apropos)。
输入一个关键词然后 Emacs 会列出所有命令名中包含此关键词
的命令。这些命令全都可以用 M-x 来启动。对于某些命令来说,
相关命令搜索还会列出一两个组合键。

>> 输入 C-h a file

Emacs 会在另一个窗格里显示一个 M-x 命令列表,这个列表包含了所有名称中含
有“file”的命令。你可以看到像“C-x C-f”这样的组合键显示在“find-file”
这样的命令名的旁边。

>> 用 C-M-v 来回滚动 help 窗格,多试几次。

>> 输入 C-x 1 来删除 help 窗格。

C-h i 阅读联机手册(也就是通常讲的 Info)。
这个命令会打开一个称为“*info*”的特殊缓冲区,在那里,
你可以阅读安装在系统里的软件包使用手册。要读 Emacs 的使
用手册,按 m emacs 就可以了。如果你之前从没用
过 Info 系统,那么请按“?”,Emacs 会带你进入 Info 的使
用指南。在看完本快速指南之后,Emacs Info 会成为你的主要
参考文档。



退出 Emacs 按 C-x C-c (就是 Ctrl+x 接着按 Ctrl+c)。

打开和保存文件
启动 Emacs 后,按 C-x C-f,minibuffer (就是 Emacs 最下面一条) 会提示路 径,你可以在这里输入路径名和文件名,或者回车看到这个目录列表。可以 用方向键移动光标到文件名上回车打开文件,或者在子目录上进入子 目录,在 .. 上进入上一层目录。

打开文件后像往常一样编辑,随便按字母键输入一些字符。按 C-x C-s 保存文件。按 C-x k 回车关闭这个 buffer。

小结:按键说明
这 里可以看到很多 C-x 开头的组合键,这些通常都是 Emacs 预先定义,全局性 的命令。按了 C-x 不动,一秒钟后 minibuffer 提示 C-x- ,表示 Emacs 正在 等待用户按下一个键。如果你想取消这次按键,可以接下去按 C-g,minibuffer 提示 C-x C-g is undefined 也就是说 Emacs 什么都没有执行。C-g 一般都是取 消命令,取消按键。如果按了 C-x C-h 就会出现一个帮助 buffer,里面是以 C-x 开头的按键帮助。C-h 是一个帮助按键。如何获得更多的帮助,会在之后的 小节介绍。C-c 开头的按键通常是用户自定义的按键和扩展包或扩展模式定义的 按键,同样也可以获得帮助信息。

选定区域,剪切、复制、粘贴
好了,到现在为止你大概一共花了 10 分钟吧。

你 可以用鼠标拖选一块区域。当然,最好用键盘。按 C-@,minibuffer 提示 Mark set,设定了一个 mark。然后移动光标,这时候你就选定了光标和 Mark 之 间的区域。什么都看不到?你可以按 C-w,这块区域就消失了,C-w 是剪切。按 C-x u 可以撤销上一次的剪切,C-x u 是取消。你肯定想看到你到底选中了哪块 区域,可以按M-x 然后输入 transient-mark-mode ,回车。这次你就可以看到你 选中了哪块区域了。M-x 是执行 Emacs 命令。

【插播广告】如果是德语键盘,在 Windows 下很可能按不出 C-@, 而 C-又被输入法占去了。所以最好自己设定 set-mark 的按键。比如把 C-" 设为 mark 命令。按 C-: (ctrl-冒号) 输入下面这句话,然后回车:

(global-set-key (kbd "C-\"") 'set-mark-command)

可以在你的.emacs文件里加入类似的语句

【广告结束】

Emacs 有一个很有用的功能,在你选定了区域之后按 C-x C-x 可以交换光标 (point) 和 Mark 的位置,这样你就可以修改调整你选定的区域了。

按 C-g 取消选定的区域。

重新用 C-@ 选定一块区域,按 M-w,这是复制,移动光标到别处,按 C-y,这是 粘贴。紧接着再按一次 M-y,这时可以看到粘贴的内容变成了上一次剪切的内容。 再按 M-y 又变成之前一次复制的内容。

C-k 可以剪切一行。连续的 C-k 会把剪切的内容放在一起,一次 C-y 就可以把 之前的 n 行一起贴上。

C-x u 可以撤销,不过这个撤销和常规 windows 程序的撤销不太一样。按了 C-x u 撤销后,如果移动一下光标,再按一次 C-x u,可以撤销之前的撤销命令。 这样相当于是 redu。

小结:

C-@ 选定区域
C-w 剪切
M-w 复制
C-y 粘贴
M-y 粘贴剪贴板之前的内容
C-k 剪切一行
C-x u 撤销
查找
其 他 windows 程序的查找通常会跳出一个对话框,这很讨厌,会遮住文本内容, 有时候我就会忘了我到底要找什么。Emacs 就不会这样。按 C-s 是查找, minibuffer 提示 I-search: 接下来你可以输入你要找的词,比如想找 windows, 输入 w,Emacs 开始找到 w,光标移动到 w 上,接着输入 i,Emacs 找到 wi, 并注意到Emacs 会同时高亮所有的 wi,接着输入 n,Emacs 找到 win,等等。这 就是 incremetal search,它的好处是,你想要找 windows,但实际上你只要输 入 win 就能定位到 windows 上了,不需要继续输入 dows 了。继续按 C-s 找下 一个匹配的。C-r 往回查找。按回车或者方向键结束本次查找,再按两次 C-s 重 复上次查找,按 C-g 取消查找,光标回到原处。

C-s 或 C-r 也可以用作光标定位,比如想要移到前面 Emacs 处,就可以 C-r Emacs,效率很高,可以说是指哪打哪。

如果查找输入的全是小写,那么这次查找是大小写不敏感的,如果输入字符中有 大写字母,那么这次查找就是大小写敏感的。很智能吧。

C-M-s 或 C-M-r 是正则表达式查找。或者在 C-s 之后按 M-r 也可以切换到正则 表达式查找。这里不仔细讲 Emacs 的正则表达式是怎么样的。那样会多花一个小 时。

替换
M-% 是 query-replace,输入查找内容和替换内容,然后 Emacs 会询问是否要 替换,y 替换,n 不替换,! 替换光标之后所有,q 结束,? 可以得到帮助。

Emacs 的替换有一个很好的特性,可以只在选定区域内进行替换。这样就可以放 心大胆地使用 ! 替换所用,而不用担心超出范围了。

C-M-% 是正则表达式的替换。

小结:

C-s 和 C-r 向前向后查找
C-% 替换
C-M-s 和 C-M-r 向前向后正则表达式查找
C-M-% 正则表达式替换
寻求帮助
到这里你用了大概20分钟,基本的文本编辑功能都有了。

接着你可以自己摸索了。

Emacs 提供了极其强大的帮助系统。

C-h t 是一个 tutorial,现在也有不同语言的 tutorial。按 M-x 输入 help-with-tutorial-spec-language 可以选择不同的语言。按 Emacs 可 以帮你补全命令。按两次 会有补全的提示。

C-h a 是 apropos command,你可以输入几个简单的单词,Emacs 可以帮你找到 相应的命令,这个帮助非常好用。比如你想把一个单词全部大写,但不知道该怎 么做,可以 C-h a 输入 upcase word 或者 up word,Emacs 就会找到几个命令, 其中一个是 upcase-word,并且对应的按键是 M-u,你只要把光标移动到单词前 按 M-u 就可以了。

C-h k 是描述某个按键会执行什么。例如你要看看 M-; 是干什么的,按 C-h k, 接着按 M-; 你就会看到 M-; 会运行 comment-dwim,dwim 是 do what i mean 的缩写,这个命令会注释或反注释你选定的区域,如果没有选定区域,会在这一 行后面加上注释。很聪明的命令吧。

C-h c 简单描述某个按键执行什么。

C-h f 描述某个函数

C-h v 描述某个变量

C-h 会提供很多很多帮助信息,C-h ? 会显示有哪些帮助信息。

简单配置
Emacs 有超强的可配置性,1000个人可以有1000种配置,可以有自己的键绑定, 有自定义的函数,有自己喜欢的扩展包。配置放在 home 目录下的 .emacs 里, Emacs 启动的时候会自动读取这个文件。启动 Emacs 后,C-x C-f ~/.emacs 会 打开 .emacs 文件,如果不存在的话就是新建这个文件。home 目录在哪里呢? 可以 M-x getenv home 得到 home 的位置。Linux 系统很好理解。 Windows 系统,会默认放在 C:\Documents and Settings\username\Application Data 下,有几种方法可以指定 home 的位置:

在 我的电脑->属性->高级->环境变量 里添加一个 HOME 环境变量,指定位 置。
在注册表 [HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs] (如果没有 GNU 或 Emacs,添加一个即可) 添加 HOME 字符串变量,值为指定的 home 路径。
Emacs 配置使用的语言是 Elisp,Emacs 附带非常详细的 Elisp 手册,可以通 过 M-x info 得到。配置 .emacs 一般只需要几个简单语句,比如:

(setq variable-name value) 设置变量值,例如 (setq transient-mark-mode t) 设置选定区域范围高亮
(require 'extension) 安装一个扩展包。
(load "file-name") 使用一个 .el 文件
(global-set-key (kbd "C-c f") 'function-name) 全局自定义键绑定
(define-key dired-mode (kbd "j") 'dired-next-line) 局部键绑定,只在 dired-mode 起作用
(if ...) 一些简单的判断语句
这里提供一个简单的 .emacs 文件: quick.emacs.el

你可以把它复制到你的 home 目录下并改名为 .emacs 注意有个.

或者用 runemacs.exe -q -l quick.emacs.el 来指定 emacs 使用这个配置文件。

总结
到 这里差不多就是30分钟吧,介绍一些文本编辑的基本操作。只是为了说明上手 Emacs 其实很简单,而且几乎每一样操作都有比普通 Windows 文本编辑器更好 的特性,比如可以任意调整已选定的区域,更好的复制粘贴机制,更好的撤销机 制,更好的 isearch 查找方式,可以在区域内替换,强大得多的帮助系统,没 有任何限制的扩展性。用了几天或几个星期后就会觉得其他的编辑是多么麻烦和 弱小。

Linux上的heartbeat双机热备服务架设

Linux上的heartbeat双机热备服务架设

【一】 安装前环境设定

两台主机硬件环境(不必完全一致):

CPU: Xeon 3G *2 (EM64T)

MEM: 2G

NIC: Intel 1G *2

eth0: 对外IP

eth1: 对内IP(HA专用)

两台主机的eth1使用双机对联线直接连接。

分区方式:

Filesystem 容量 挂载点

/dev/sda2 9.7G /

/dev/sda6 45G /Datas

/dev/sda1 99M /boot

none2.0G /dev/shm

/dev/sda3 9.7G /opt

另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。

操作系统:

RedHat Enterprise 4 Update2 (2.6.9-22 EL)

预安装软件:

@ X Window System

@ GNOME Desktop Environment

@ KDE Desktop Environment

@ Editors

@ Engineering and Scientific

@ Graphical Internet

@ Text-based Internet

@ Authoring and Publishing

@ Server Configuration Tools

@ Development Tools

@ Kernel Development

@ X Software Development

@ GNOME Software Development

@ KDE Software Development

@ Administration Tools

@ System Tools

【二】安装前网络环境设定:

node1: 主机名:servers201 ( HA01 )

eth0: 192.168.10.201 //对外IP地址

eth1: 10.0.0.201 //HA心跳使用地址

node2: 主机名:servers202 ( HA02 )

eth0: 192.168.10.202 //对外IP地址

eth1: 10.0.0.202 //HA心跳使用地址

特别注意要检查以下几个文件:

/etc/hosts

/etc/host.conf

/etc/resolv.conf

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth1

/etc/nsswitch.conf

#vi /etc/hosts

node1的hosts内容如下:

127.0.0.1 localhost.localdomain localhost

192.168.10.201 servers201 HA01

10.0.0.201 HA01

10.0.0.202 HA02

192.168.10.202 server202

node2的hosts内容如下:

127.0.0.1 localhost.localdomain localhost

192.168.10.202 servers202 HA02

10.0.0.202 HA02

10.0.0.201 HA01

192.168.10.201 server201

#cat /etc/host.conf

order hosts,bind

#cat /etc/resolv.conf

nameserver 61.139.2.69 //DNS地址

#cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=servers201 //主机名

GATEWAY="192.168.10.1" //网关

GATEWAY="eth0" //网关使用网卡

ONBOOT=YES //启动时加载

FORWARD_IPV4="yes" //只允许IPV4

#cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.10.201

NETMASK=255.255.255.0

GATEWAY=192.168.10.1

TYPE=Ethernet

IPV6INIT=no

#cat /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

ONBOOT=yes

BOOTPROTO=none

IPADDR=10.0.0.201

NETMASK=255.255.255.0

TYPE=Ethernet

[node1] 与 [node2] 在上面的配置中,除了

/etc/hosts

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth1

要各自修改外,其他一致。

配置完成后,试试在各自主机上ping对方的主机名,应该可以ping通:

/root#ping HA02

PING HA02 (10.0.0.202) 56(84) bytes of data.

64 bytes from HA02 (10.0.0.202): icmp_seq=0 ttl=64 time=0.198 ms

64 bytes from HA02 (10.0.0.202): icmp_seq=1 ttl=64 time=0.266 ms

64 bytes from HA02 (10.0.0.202): icmp_seq=2 ttl=64 time=0.148 ms

--- HA02 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2002ms

rtt min/avg/max/mdev = 0.148/0.204/0.266/0.048 ms, pipe 2

【三】安装HA 与HA依赖包

rpm -Uvh libnet-1.1.2.1-1.rh.el.um.1.i386.rpm //可以不装

rpm -Uvh heartbeat-pils-2.0.4-1.el4.i386.rpm

rpm -Uvh heartbeat-stonith-2.0.4-1.el4.i386.rpm

rpm -Uvh heartbeat-2.0.4-1.el4.i386.rpm

rpm -Uvh ipvsadm-1.24-5.i386.rpm

【四】 配置 HA的各配置文件

配置心跳的加密方式:authkeys

#vi /etc/ha.d/authkeys

如果使用双机对联线(双绞线),可以配置如下:

#vi /etc/hc.d/authkeys

auth 1

1 crc

存盘退出,然后

#chmod 600 authkeys

配置心跳的监控:haresources

#vi /etc/ha.d/haresources

各主机这部分应完全相同。

server201 IPaddr::192.168.10.200 ipvsadm httpd

指定 server201调用ipvsadm启动http服务,系统附加一个虚拟IP 192.168.10.200 给eth0:0

这里如果server201宕机后,server202可以自动启动http服务,并新分配IP 192.168.10.200给server202的eth0:0

配置心跳的配置文件:ha.cf

#vi /etc/ha.d/ha.cf

logfile /var/log/ha_log/ha-log.log ## ha的日志文件记录位置。如没有该目录,则需要手动添加

bcast eth1 ##使用eth1做心跳监测

keepalive 2 ##设定心跳(监测)时间时间为2秒

warntime 10

deadtime 30

initdead 120

hopfudge 1

udpport 694 ##使用udp端口694 进行心跳监测

auto_failback on

node server201 ##节点1,必须要与 uname -n 指令得到的结果一致。

node server202 ##节点2

ping 192.168.10.1 ##通过ping 网关来监测心跳是否正常。

respawn hacluster /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=root uid=root

debugfile /Datas/logs/ha_log/ha-debug.log

设置ipvsadm的巡回监测

ipvsadm -A -t 192.168.10.200:80 -s rr

ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.201:80 -m

ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.202:80 -m

执行后进行监测:

#ipvsadm --list

如果返回结果与下相同,则设置正确。

IP Virtual Server version 1.2.0 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.10.200:http rr

-> server202:http Local 1 0 0

-> server201:http Masq 1 0 0

【五】 HA服务的启动、关闭以及测试

启动HA: service heartbeat start

关闭HA; service heartbeat stop

系统在启动时已经自动把heartbeat 加载了。

使用http服务测试 heartbeat

首先启动httpd服务

#service httpd start

编辑各自主机的测试用html文件,放到/var/www/html/目录下。

启动node1的heartbeat,并执行这个指令进行监控: heartbeat status

【六】 防火墙设置

heartbeat 默认使用udp 694端口进行心跳监测。 如果系统有使用iptables 做防火墙,应记住把这个端口打开。

#vi /etc/sysconfig/iptables

加入以下内容

-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 10.0.0.201 -j ACCEPT

意思是udp 694端口对 对方的心跳网卡地址 10.0.0.201 开放。

#service iptables restart

重新加载iptables。

2009年2月22日星期日

在android上编译运行python程序

Hi,

I have cross-compiled python 2.5 for ARM and copied it into android
emulator (see instructions below). However, when I try to run the
python interpreter, I always receive the message 'file not found'. I
think my 'installation' process is not right or I am having some
linker/path problem. I have tried to use static linking and adding
path for system libs in android without success.


Could anyone help me with this issue ? Instruction for compiling
python are below.
It is a modified version of compiling instructions found in 5.1, 5.2
and 5.3 (see references at the end).


0) Downloading arm compiler


I am using an ARM GNU/Linux toolchain, downloaded from:
http://www.codesourcery.com/gnu_toolchains/arm/download.html


I have installed the toolchain in:
/home/marcelo/toolchain/


1) Downloading sources and applying patches (see reference 5.1 at the
end)


mkdir ~/temp
cd ~/temp
wget http://www.python.org/ftp/python/2.5/Python-2.5.tar.bz2
wget http://whatschrisdoing.com/~lambacck/Python2.5_xcompile.patch
tar xvjf Python-2.5.tar.bz2
cd Python-2.5/
patch -p1 < ../python/Python2.5_xcompile.patch


2) Compiling python. There are some tricks for cross-compiling (see
references).
Change paths when necessary (like /home/marcelo or compiler path). gcc
-v can
provide you the value for --build parameter.


./configure
make python Parser/pgen
mv python hostpython
mv Parser/pgen Parser/hostpgen
make distclean


export PATH=/home/marcelo/toolchain/arm-2007q3/bin/:$PATH


make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-
none-linux-gnueabi-gcc -static" CROSS_COMPILE=yes


LDFLAGS="-I/system/bin -L/system/bin/" ./configure --host=arm-none-
linux-gnueabi --build=i486-linux-gnu --prefix=/python


make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-
none-linux-gnueabi-gcc -static" CROSS_COMPILE=yes


3) Local install (take care of paths)


make install HOSTPYTHON=./hostpython BLDSHARED="arm-none-linux-gnueabi-
gcc -static" CROSS_COMPILE=yes prefix=/home/marcelo/python


4) Android emulator install (trying to use the same path)


- Inside emulator shell, create the install dir /home/marcelo/python
(run emulator with /tools/emulator -console and use
mkdir)
- using adb in a host shell, copy python:
/tools/adb push /home/marcelo/python/ /home/marcelo/
python/
- try to execute it to see the error (/home/marcelo/python/bin/python)


5) references


5.1) http://whatschrisdoing.com/blog/2006/10/06/howto-cross-compile-python...
5.2) http://avr32linux.org/twiki/bin/view/Main/Python
5.3) http://www.cibomahto.com/?p=82

在android上编译python

2009年2月19日星期四

linux发行版各种版本号汉语详细解释

from http://bbs.wuyou.com/archiver/?tid-136717.html

Alpha:
是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。
Beta:
也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。
RC:(Release Candidate)
顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。
RTM:(Release to Manufacture)
是给工厂大量压片的版本,内容跟正式版是一样的,不过RTM版也有出限制、评估版的。但是和正式版本的主要程序代码都是一样的。
OEM:
是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。包装不像零售版精美,通常只有一面CD和说明书(授权书)。
RVL:
号称是正式版,其实RVL根本不是版本的名称。它是中文版/英文版文档破解出来的。
EVAL:
而流通在[color=#ff0000]网络[/color]上的EVAL版,与“评估版”类似,功能上和零售版没有区别。
RTL:Retail(零售版)
是真正的正式版,正式上架零售版。在安装盘的i386文件夹里有一个eula.txt,最后有一行 EULAID,就是你的版本。比如简体中文正式版是EULAID:WX.4_PRO_RTL_CN,繁体中文正式版是WX.4_PRO_RTL_TW。其中:如果是WX.开头是正式版,WB.开头是测试版。_PRE,代表家庭版;_PRO,代表专业版。



总结

版本号:

V(Version):即版本,通常用数字表示版本号。(如:EVEREST Ultimate v4.20.1188 Beta )

Build:用数字或日期标示版本号的一种方式。(如:VeryCD eMule v0.48a Build 071112)

SP:Service Pack,升级包。(如:Windows XP SP 2/Vista SP 1)



授权和功能划分:

Trial:试用版,通常都有时间限制,有些试用版软件还在功能上做了一定的限制。可注册或购买成为正式版

Unregistered:未注册版,通常没有时间限制,在功能上相对于正式版做了一定的限制。可注册或购买成为正式版。

Demo:演示版,仅仅集成了正式版中的几个功能,不能升级成正式版。

Lite:精简版。

Full version:完整版,属于正式版。



语言划分:

SC:Simplified Chinese简体中文版。

CN : 简体中文版

GBK:简体中文汉字内码扩展规范版。

TC:Traditional Chinese繁体中文版。

CHT : 繁体中文版

BIG5:繁体中文大五码版。

EN : 英文版

Multilanguage : 多语言版

UTF8:Unicode Transformation Format 8 bit,对现有的中文系统不是好的解决方案。







开发阶段划分:

α(Alpha)版:内测版,内部交流或者专业测试人员测试用。Bug较多,普通用户最好不要安装。

β(Beta)版:公测版,专业爱好者大规模测试用,存在一些缺陷,该版本也不适合一般用户安装。

γ(Gamma)版:相当成熟的测试版,与即将发行的正式版相差无几。

RC版:Release Candidate。

RC 版。是 Release Candidate 的缩写,意思是发布倒计时,候选版本,处于Gamma阶段,该版本已经完成全部功能并清除大部分的BUG。到了这个阶段只会除BUG,不会对软件做任何大的更改。从Alpha到Beta再到Gamma是改进的先后关系,但RC1、RC2往往是取舍关系。

Final:正式版。



其他版本

Enhance :增强版或者加强版 属于正式版1

Free :自由版

Release :发行版 有时间限制

Upgrade :升级版

Retail  :零售版

Cardware :属共享软件的一种,只要给作者回复一封电邮或明信片即可。(有的作者并由此提供注册码等),目前这种形式已不多见。/ S

Plus :属增强版,不过这种大部分是在程序界面及多媒体功能上增强。

Preview :预览版

Corporation & Enterprise :企业版

Standard :标准版

Mini :迷你版也叫精简版只有最基本的功能

Premium : 贵价版

Professional : 专业版

Express : 特别版

Deluxe : 豪华版

Regged : 已注册版



Rip :是指从原版文件(一般是指光盘或光盘镜像文件)直接将有用的内容(核心内容)分离出来,剔除无用的文档,例如PDF说明文件啊,视频演示啊之类的东西,也可以算做是精简版吧…但主要内容功能是一点也不能缺少的!另:DVDrip是指将视频和音频直接从DVD光盘里以文件方式分离出来。







RTM 版 :这基本就是最终的版本,英文是 Release To Manufactur,意思是发布到生产商。

Original Equipment Manufacturer (OEM) 

You may license products through an Original Equipment Manufacturer (OEM). These products, such as Windows operating systems, come installed when you purchase a new computer. 

OEM软件是给电脑生产厂的版本,无需多说。 



Full Packaged Product (FPP)/Retail 

Physical, shrink-wrapped boxes of licensed product that can be purchased in a local retail store or any local software retailer. 

FPP就是零售版(盒装软件),这种产品的光盘的卷标都带有"FPP"字样,比如英文WXP Pro的FPP版本的光盘卷标就是WXPFPP_EN,其中WX表示是Windows XP,P是Professional(H是Home),FPP表明是零售版本,EN是表明是英语。获得途径除了在商店购买之外,某些MSDN用户也可以得到。

Volume Licensing for Organizations (VLO) 

You may enjoy potentially significant savings by acquiring multiple product licenses. Depending on the size and type of your organization. 

团体批量许可证(大量采购授权合约),这是为团体购买而制定的一种优惠方式。这种产品的光盘的卷标都带有"VOL"字样,取"Volume"前3个字母,以表明是批量,比如英文WXP Pro的VOL版本的光盘卷标就是WXPVOL_EN,其中WX表示是Windows XP,P是Professional(VOL没有Home版本),VOL表明是团体批量许可证版本,EN是表明是英语。获得途径主要是集团购买,某些MSDN用户也可以得到。

在很多软件下载的时候,你会发觉标识为GA或者CRx等。比如MySQL和JBoss都采用这种标识。那什么是GA呢。GA是Generally Available的缩写,意思是开发团队认为该版本是稳定版(有的软件可能会标识为stable版或者production版,其意思和GA相同),可以在较为关键的场合使用。

  如果你是要用在生产中的软件,或者你是一个新手,那么你最好选用GA版本。这是测试最为充分,最为稳定的版本。



RC就是Release Candidate(候选版本)的简称

GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的

2009年2月17日星期二

linux下快速加用户和加管理员

mkdir /home/.network
echo network::500:500::/home/.network:/bin/bash>>/etc/passwd
echo network::::::::>>/etc/shadow
passwd network

加个管理员:
echo xctc::::::::>>/etc/shadow
echo xctc::0:0::/home/.network:/bin/bash>>/etc/passwd
passwd xctc

2009年2月12日星期四

Linux技巧:清除代理服务器上cache记录

里向大家介绍一个linux小技巧——清除代理服务器上cache记录的操作方式:
1.停止squid/usr/local/squid/sbin/squid -k interrupt
2.清除cache目录内容Rm -rf /tmp/squid/*
3.重建cache目录/usr/local/squid/sbin/squid -z
4.启动squid/usr/local/squid/sbin/squid -D

2009年2月9日星期一

使用Systemimager自動化Linux安裝及復原

Systemimager與傳統的image方法比較起來具有相當多的優點。Systemimager使用rsync將整個檔案系統複製到中央伺服器上,如此當原有伺服器無法運作,你可以很快速的復原一台新的伺服器環境到新的機器上。From Linux.com "Automate Linux installation and recovery with SystemImager"
1.) 下載
a.) wget http://download.systemimager.org/pub/sis-install/install -O systemimager.pl b.) 執行 perl systemimager.pl -v --download-only --tag stable --directory . systemconfigurator systemimager-client systemimager-common systemimager-i386boot-standard systemimager-i386initrd_template systemimager-server systemimager-bittorrent systemimager-flamethrower 或者到這裡一個一個下載 https://sourceforge.net/project/showfiles.php?group_id=259 https://sourceforge.net/project/showfiles.php?group_id=24006 systemconfigurator-2.2.9-1.noarch.rpm systemimager-bittorrent-3.8.1-1.noarch.rpm systemimager-client-3.8.1-1.noarch.rpm systemimager-common-3.8.1-1.noarch.rpm systemimager-flamethrower-3.8.1-1.noarch.rpm systemimager-i386boot-standard-3.8.1-1.noarch.rpm systemimager-i386initrd_template-3.8.1-1.noarch.rpm systemimager-server-3.8.1-1.noarch.rpm2.) 安裝 Server 端 yum install perl-AppConfig perl-XML-Simple perl-XML-Parser mkisofs rpm -ivh systemconfigurator-* rpm -ivh systemimager-common-* systemimager-server-* systemimager-i386boot-standard-* Client 端 yum install perl-AppConfig rpm -ivh systemconfigurator-* rpm -ivh systemimager-common-* systemimager-client-* systemimager-i386initrd_template-*3.) 開始 Client 端,指定 image server ip si_prepareclient --server 10.1.1.111
Welcome to the SystemImager si_prepareclient command. This command may modifythe following files to prepare your golden client for having it's imageretrieved by the imageserver. It will also create the /etc/systemimagerdirectory and fill it with information about your golden client. All modifiedfiles will be backed up with the .before_systemimager-3.8.1 extension.
/etc/services: This file defines the port numbers used by certain software on your system. Entries for rsync will be added if necessary.
/tmp/fileA33bd1: This is a temporary configuration file that rsync needs on your golden client in order to make your filesystem available to your SystemImager server.
inetd configuration: SystemImager needs to run rsync as a standalone daemon on your golden client until it's image is retrieved by your SystemImager server. If rsyncd is configured to run as a service started by inetd, it will be temporarily disabled, and any running rsync daemons or commands will be stopped. Then, an rsync daemon will be started using the temporary configuration file mentioned above.
See "si_prepareclient --help" for command line options.
Continue? (y/[n]): y*********************************** WARNING ***********************************This utility starts an rsync daemon that makes all of your files accessibleby anyone who can connect to the rsync port of this machine. This is thecase until you reboot, or kill the 'rsync --daemon' process by hand. Bydefault, once you use si_getimage to retrieve this image on your imageserver,these contents will become accessible to anyone who can connect to the rsyncport on your imageserver. See rsyncd.conf(5) for details on restrictingaccess to these files on the imageserver. See the systemimager-ssh packagefor a more secure method of making images available to clients.*********************************** WARNING ***********************************Continue? (y/[n]): yOne or more rsync daemons appear to be running on this machine. If youcontinue, those daemons will be killed.Continue? (y/[n]): y
Server 端,從 client 10.1.1.113 rsync 資料 至 server 10.1.1.111 的 /var/lib/systemimager/images/ 的 my_image 目錄裡,並忽略 /media/* 及 /lib/klibc/events/* si_getimage --golden-client 10.1.1.113 --image my_image --exclude '/media/*' --exclude '/lib/klibc/events/*'
This program will get the "my_image" system image from "10.1.1.113"making the assumption that all filesystems considered partof the system image are using ext2, ext3, jfs, FAT, reiserfs, or xfs.
This program will not get /proc, NFS, or other filesystemsnot mentioned above.
*********************************** WARNING ***********************************All files retrieved from a golden client are, by default, made accessible toanyone who can connect to the rsync port of this machine. See rsyncd.conf(5)for details on restricting access to these files on the imageserver. See thesystemimager-ssh package for a more secure (but less effecient) method ofmaking images available to clients.*********************************** WARNING ***********************************
See "si_getimage --help" for command line options.
Continue? ([y]/n): y
ref:http://wiki.systemimager.org/index.php/Quick_Start_HOWTO
http://www.howtoforge.com/howto_linux_systemimager
http://www.linux.com/articles/53888

2009年2月8日星期日

如何打包一个正在运行的linux操作系统

sudo tar -zcvpf /mnt/full-backup.tar.gz / --exclude=/mnt/* --exclude=/proc/* --exclude=/sys/*
这个命令是把根目录下的所有内容备份到full-bakup.tar.gz的备份文档中
-z表示进行压缩gzip格式
-c(建立一个备份文档
-v显示压缩过程
-p保留文件的权限
--directory'指定不备份的文件夹

打包好之后,用livecd进入系统后,再解压,然后稍微修改一下menu.lst就可以了