2011年10月12日星期三

Linux删除MBR

基于各种linux发行版的USB Live Key越来越多,由于USB优盘的MBR被Linux写过,不适用于其他的一些情况,在Linux移除MBR的方法如下(dd命令),

# dd if=/dev/zero of=/dev/sdc bs=512 count=1

输出如下,
1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00308483 s, 166 kB/s 

注意:/dev/sdc是你的USB盘设备,硬盘一般是/dev/sda, 优盘等移动设备为 /dev/sdb, /dev/sdbc ...

2011年8月15日星期一

太长时间没有来更新Blog了……














时间,我们最抓不住的东西,大概就是时间……
秀两张Fedora 15的桌面,这是在苏州自由软件用户组活动上的PPT里面的.


2009年3月13日星期五

像Last命令一样列出history命令内容

history对于了解过往命令历史比较有用,默认的history只列出number和命令来,如果能列出想last那样的格式会更有用!
root pts/0 10.240.68.141 Wed Mar 11 20:56 - 20:56 (00:00)
root pts/0 d-shc-361236.cor Wed Mar 11 20:48 - 20:48 (00:00)
root pts/0 d-shc-kaliu.corp Wed Mar 11 09:19 - 10:30 (01:11)
root pts/4 d-shc-361236.cor Tue Mar 10 13:26 - 19:14 (05:47)
root pts/3 10.249.72.23 Tue Mar 10 13:09 still logged in

使用这个指令,就可以输出这样的history了,
export HISTTIMEFORMAT="%F %T "

history,
1217 2009-03-12 14:51:57 ls -l
1218 2009-03-12 14:51:58 ls -l
1219 2009-03-12 14:52:07 rm -rf old
1220 2009-03-12 14:52:08 ls
1221 2009-03-12 14:52:10 ls -l
1222 2009-03-12 14:52:15 rm -f *.old
1223 2009-03-12 14:52:16 ls
1224 2009-03-12 14:52:18 ls -l
1225 2009-03-12 14:52:24 ls -l
1226 2009-03-12 14:52:25 ls -l
1227 2009-03-12 14:52:27 ls -l
1228 2009-03-12 14:52:28 ls -l
1229 2009-03-12 14:57:41 ls -l
1230 2009-03-12 14:57:44 ls -l
1231 2009-03-12 14:57:45 ls -l
1232 2009-03-12 14:57:46 ls -l
1233 2009-03-12 14:57:47 ls -l
1234 2009-03-12 14:57:49 ls -l
1235 2009-03-12 14:57:51 cd ..
1236 2009-03-12 14:57:51 ls
1237 2009-03-12 14:57:59 cd common/
1238 2009-03-12 14:58:00 ls
1239 2009-03-12 14:58:03 cd var
1240 2009-03-12 14:58:03 ls
1241 2009-03-12 14:58:05 cd log
1242 2009-03-12 14:58:06 ls
1243 2009-03-12 14:58:09 cd syslog-ng/
1244 2009-03-12 14:58:09 ls
1245 2009-03-12 14:58:12 ls -l
1246 2009-03-12 14:58:14 cd ..

2009年1月8日星期四

Fedora每日一篇:用yum-fastestmirror加快yum

Fedora在全球有众多的镜像服务器(在中国好像不多,至少没有很快的),Fedora系统在用YUM进行软件包管理时,首先会从服务器得到一份镜像列表。


yum-fastestmirror 包可以提供对镜像服务器列表中的服务器测速和排序,得出速度最快的镜像服务器,该插件可以很大程度上加速YUM。

安装命令: yum install yum-fastestmirror
图形安装: 无,在搜索标签中搜索 yum-fastestmirror
菜单:没有,该插件会由YUM或其他基于YUM的package工具自动使用;
命令: 无,通过命令/usr/bin/yum and /usr/bin/pkcon自动使用
网站: http://yum.baseurl.org/

2008年12月20日星期六

正则表达式之道!

老早就知道这篇好文,如今再次阅读下来,方知正则表达式之道!精辟!
精选这张表格,真正能领悟这张表格的内容的才是正则表达式使用之道的一点精华!置于此以备查!

Command or
Environment
. [ ] ^ $ \( \) \{ \} ? + | ( )
vi X X X X X




Visual C++ X X X X X




awk X X X X

X X X X
sed X X X X X X



Tcl X X X X X
X X X X
ex X X X X X X



grep X X X X X X



egrep X X X X X
X X X X
fgrep X X X X X




perl X X X X X
X X X X


英文原文 http://jmason.org/software/sitescooper/tao_regexps.html

什么是正则表达式
一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用——很不幸,这篇文章也不能够改变这一点,不过,经过一点点练习之后我就开始觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。正则表达式被各种文本编辑软件、类库(例如Rogue Wave的tools.h++)、脚本工具(像awk/grep/sed)广泛的支持,而且像Microsoft的Visual C++这种交互式IDE也开始支持它了。

我们将在如下的章节中利用一些例子来解释正则表达式的用法,绝大部分的例子是基于vi中的文本替换命令和grep文件搜索命令来书写的,不过它们都是比较典型的例子,其中的概念可以在sed、awk、perl和其他支持正则表达式的编程语言中使用。你可以看看不同工具中的正则表达式这一节,其中有一些在别的工具中使用正则表达式的例子。还有一个关于vi中文本替换命令(s)的简单说明附在文后供参考。
正则表达式基础
正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,我们下面会给予解释。

在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,,它可以匹配"testing"和"123testing"等字符串,但是不能匹配"Testing"。

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。

元字符 描述

.
匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
$
匹配行结束符。例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。
^
匹配一行的开始。例如正则表达式^When in能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"。
*
匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
\
这是引用府,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符。
[ ]
[c1-c2]
[^c1-c2]
匹配括号中的任何一个字符。例如正则表达式r[aou]t匹配rat、rot和rut,但是不匹配ret。可以在括号中使用连字符-来指定字符的区间,例如正则表达式[0-9]可以匹配任何数字字符;还可以制定多个区间,例如正则表达式[A-Za-z]可以匹配任何大小写字母。另一个重要的用法是“排除”,要想匹配除了指定区间之外的字符——也就是所谓的补集——在左边的括号和第一个字符之间使用^字符,例如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。
\< \>
匹配词(word)的开始(\<)和结束(\>)。例如正则表达式\Replace,然后选择"Regular expression"选择框,Find What输入框对应上面介绍的vi命令:%s/pat1/pat2/g中的pat1部分,而Replace输入框对应pat2部分。但是,为了得到vi的执行范围和g选项,你要使用Replace All或者适当的手工Find Next and Replace(译者按:知道为啥有人骂微软弱智了吧,虽然VC中可以选中一个范围的文本,然后在其中执行替换,但是总之不够vi那么灵活和典雅)。
sed

Sed是Stream EDitor的缩写,是Unix下常用的基于文件和管道的编辑工具,可以在手册中得到关于sed的详细信息。

这里是一些有趣的sed脚本,假定我们正在处理一个叫做price.txt的文件。注意这些编辑并不会改变源文件,sed只是处理源文件的每一行并把结果显示在标准输出中(当然很容易使用重定向来定制):

sed脚本 描述

sed 's/^$/d' price.txt 删除所有空行
sed 's/^[ \t]*$/d' price.txt 删除所有只包含空格或者制表符的行
sed 's/"//g' price.txt 删除所有引号
awk
awk是一种编程语言,可以用来对文本数据进行复杂的分析和处理。可以在手册中得到关于awk的详细信息。这个古怪的名字是它作者们的姓的缩写(Aho,Weinberger和Kernighan)。

在Aho,Weinberger和Kernighan的书The AWK Programming Language中有很多很好的awk的例子,请不要让下面这些微不足道的脚本例子限制你对awk强大能力的理解。我们同样假定我们针对price.txt文件进行处理,跟sed一样,awk也只是把结果显示在终端上。

awk脚本 描述

awk '$0 !~ /^$/' price.txt 删除所有空行
awk 'NF > 0' price.txt awk中一个更好的删除所有行的办法
awk '$2 ~ /^[JT]/ {print $3}' price.txt 打印所有第二个字段是'J'或者'T'打头的行中的第三个字段
awk '$2 !~ /[Mm]isc/ {print $3 + $4}' price.txt 针对所有第二个字段不包含'Misc'或者'misc'的行,打印第3和第4列的和(假定为数字)
awk '$3 !~ /^[0-9]+\.[0-9]*$/ {print $0}' price.txt 打印所有第三个字段不是数字的行,这里数字是指d.d或者d这样的形式,其中d是0到9的任何数字
awk '$2 ~ /John|Fred/ {print $0}' price.txt 如果第二个字段包含'John'或者'Fred'则打印整行
grep
grep是一个用来在一个或者多个文件或者输入流中使用RE进行查找的程序。它的name编程语言可以用来针对文件和管道进行处理。可以在手册中得到关于grep的完整信息。这个同样古怪的名字来源于vi的一个命令,g/re/p,意思是global regular expression print。

下面的例子中我们假定在文件phone.txt中包含以下的文本,——其格式是姓加一个逗号,然后是名,然后是一个制表符,然后是电话号码:

Francis, John 5-3871
Wong, Fred 4-4123
Jones, Thomas 1-4122
Salazar, Richard 5-2522

grep命令 描述

grep '\t5-...1' phone.txt 把所有电话号码以5开头以1结束的行打印出来,注意制表符是用\t表示的
grep '^S[^ ]* R' phone.txt 打印所有姓以S打头和名以R打头的行
grep '^[JW]' phone.txt 打印所有姓开头是J或者W的行
grep ', ....\t' phone.txt 打印所有姓是4个字符的行,注意制表符是用\t表示的
grep -v '^[JW]' phone.txt 打印所有不以J或者W开头的行
grep '^[M-Z]' phone.txt 打印所有姓的开头是M到Z之间任一字符的行
grep '^[M-Z].*[12]' phone.txt 打印所有姓的开头是M到Z之间任一字符,并且点号号码结尾是1或者2的行
egrep
egrep是grep的一个扩展版本,它在它的正则表达式中支持更多的元字符。下面的例子中我们假定在文件phone.txt中包含以下的文本,——其格式是姓加一个逗号,然后是名,然后是一个制表符,然后是电话号码:

Francis, John 5-3871
Wong, Fred 4-4123
Jones, Thomas 1-4122
Salazar, Richard 5-2522

egrep command Description

egrep '(John|Fred)' phone.txt 打印所有包含名字John或者Fred的行
egrep 'John|22$|^W' phone.txt 打印所有包含John 或者以22结束或者以W的行
egrep 'net(work)?s' report.txt 从report.txt中找到所有包含networks或者nets的行
正则表达式语法支持情况
Command or
Environment
. [ ] ^ $ \( \) \{ \} ? + | ( )
vi X X X X X




Visual C++ X X X X X




awk X X X X

X X X X
sed X X X X X X



Tcl X X X X X
X X X X
ex X X X X X X



grep X X X X X X



egrep X X X X X
X X X X
fgrep X X X X X




perl X X X X X
X X X X



vi替换命令简介
Vi的替换命令:

:ranges/pat1/pat2/g

其中

: 这是Vi的命令执行界面。

range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。

s 表示其后是一个替换命令。

pat1 这是要查找的一个正则表达式,这篇文章中有一大堆例子。

pat2 这是希望把匹配串变成的模式的正则表达式,这篇文章中有一大堆例子。

g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。

网上有很多vi的在线手册,你可以访问他们以获得更加完整的信息。

2008年12月4日星期四

Linux Kernel网络参数调优

在/etc/sysctl.conf 中加入下面的配置,

# 开启TCP滑动窗口以便程序可以使用TCP数据包扩展位来增大滑动窗口的大小,提高网络性能 Fedora和很多发行版已经默认开启
net.ipv4.tcp_window_scaling = 1

# 开启SYN Cookie,以便更好的应付SYN洪水之类过多连接请求的情况,一些发行版已经开启该项,Fedora默认没有开启
net.ipv4.tcp_syncookies = 1
# 下面四项增大TCP发送和接收缓冲区,以便网络程序更快的处理网络数据
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

前两项有些发行版已经打开,分别是开启TCP滑动窗口和SYN Cookie的功能;后面的四项加大了TCP的发送接收缓冲区大小!比较关乎网络的性能!

针对Linux Kernel 2.6的新特性,不缓存ssthresh连接
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1 # Fedora 默认开启

sysctl -p /etc/sysctl.conf
命令来使设置生效

sysctl -q 可以用来查询某个具体kernel选项的当前值!
切记:SysCtl 的任何调整都要非常小心!

2008年12月2日星期二

几个Linux管理员应该注意的习惯问题

最近整理了一些自己的思路和过往的工作,也有空看了一些别人的建议,发觉一些作为Linux管理员或者对于其他系统管理员也有益的要点。温故而知新,起所以然也。

尽量采用一致的方法安装软件,除非有有特殊情况;
很多人会像我以前一样,一上来很喜欢用源代码装东西,觉得很酷,其实对于一个管理员,在自己管理的系统,特别是一些生产系统上使用源代码安装软件有很多坏处,不统一是最大的问题。尽管Open Source固然可以让我们一切从头开始,如果这样的话,发行版出了LFS之外,都没什么意义了不是。
我比较遵循的原则是尽可能使用官方的发布软件包,其次是比较有名第三方软件库,这些并不太难找!像REDHAT系统,CentOS之类的,Fedora EPEL EPEL Extra Packages for Enterprise Linux是首选,其次有很多第三方的库可以选择,如Perl模块,DAG的库就很全;最次就是寻找软件包发行的SRC包,自行编译相应的二进制包,不过这一步对于比较重要的系统,还是建议在测试环境上编译,安装测试。最次才是使用源代码安装。不过,对于WEB应用这类东西,源代码安装很多时候也是唯一的选择!未来维护源代码安装的软件是需要规划的!使用统一的包管理方式安装软件无论无何你的首选。

及时更新系统,注意系统安全
Linux是很安全的,但是请不要无视安全更新!这样的代价或许是你无法承担的。
注意系统安全,启用简单的防火墙(iptables默认一般是开启的,没有什么坏处),使用强壮的根用户密码;对于比较新的的系统,稍加注意,完全可以启用SELinux或者AppArmor这些扩展安装机制,不用惧怕而轻易的disable它们,安全问题远比你我想象的复杂!

惧怕命令行
很多人惧怕命令行,其实命令行是很多管理员在很多时候唯一的选择(特别是远程维护管理的系统),惧怕是没有用的。驯服命令行是必修课。我的经验是驯服命令行一定要学会使用man和在线联机帮助。几乎所有的命令都有详细的手册和使用帮助,与其查阅其他文档,何不使用联机帮助,随用随查,多查查,自然就熟悉了!

备份重要文件
备份重要文件,不一定非要制定详细的备份计划,并严格的执行,当然那是产品系统的必须!很多时候,好的管理员知道随时备份自己的重要文件,诸如桌面的X配置文件,服务器的web配置文件,mysql参数文件,php的ini文件和很多自己的管理脚本,很多看似根本谈不上要采用完整备份方案或备份计划执行备份的文件,其实对你很重要,不要忘了它们。至于备份方式,不一而足,USB盘都可以,还有一种我经常采用的方式,快捷而有效,就是在不同的主机间相互备份重要的文件。当然这些事情很多时候并不会被作为工作业绩汇报给你的老板,其实这是为了管理员自己,这是一种习惯和态度!

注意文件权限
经常看到有人动不动把文件属性都改成777,这样的坏处我就不想列举了,其实在SELinux或者ACL启用的系统上,此举未必真的有效。理解文件属性和合理的权限!当然,请也学习一点关于ACL,SELinux规则以及AppArmor设置的知识,至少不让自己显得那么业余!归根到底,还是安全和良好的习惯。

不要只使用root
我在很多时候也是只使用root用户的人,这样不好!这个坏习惯真的很讨厌!

关注你的日志
日志文件不是一种摆设,请关注一下你的日志。分析日志的工具实在很多,Fedora和RedHat系统带有一些最简单的分析工具。

2008年11月26日星期三

Fedora 10和RPM Fusion

Fedora在发布的时候最大程度的去除了RedHat认为有问题的软件,主要是出于License的考虑,这个问题一直是很多桌面用户对Fedora的诟病,RPM Fusion将会很大程度上弥补Fedora官方库缺乏的一些“问题”软件。
首先RPM Fusion是原来三大第三方仓库的融合,

  • RPM Fusion也不仅仅针对Fedora,还针对RedHat企业版linux及其兼容的系统如CentOS等支持。
  • 配置RPM Fusion
    RPM Fusion分成Free软件库和nonfree软件库,这个和Ubuntu类似,
    针对最新版的Fedora(8,9,10),下载和安装Free nonfree的;
    对于RedHat企业版和CentOS等,下载和安装 Freenonfree 的;
    直接命令行安装,
    Fedora 8, 9 or 10:
    su -c 'rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'

    Fedora Alpha, Beta, Preview, Rawhide, RC, Snapshot:
    su -c 'rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-rawhide.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-rawhide.noarch.rpm'

    RHEL5 or compatible like CentOS:
    su -c 'rpm -ivh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm'
    对于CentOS等系统,需要先激活EPEL的仓库,
    关于EPEL, EPEL Extra Packages for Enterprise Linux,是Fedora的项目,旨在提供高品质的RedHat企业版Linux的兼容扩展软件,以方便更好的部署Open Source应用。
  • 验证RPM Fusion的签名证书

2008年11月24日星期一

'tar'出系统全备份

简单的用tar做Linux等系统的全备份是比较快速和便捷的备份方法,特别是当备份介质是大容量的USB硬盘或其他网络硬盘的话,这看起来更加合理有效和快速。
下面的命令很简单,也很实用,
tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/media --exclude=/sys /
这里的命令参数只是exclude,无须多少解释!有时候可能/dev等目录也未必需要,所以你可能需要一个更长的exclude列表。
而恢复上面的备份看起来似乎更加方便,命令如下,
tar xvpfz backgup.tgz -C /
而对于exclude列表中的目录或许你需要手动创建.
此外,从这个全备份中恢复部分数据也相当方便,命令,
tar -zxvpf backup.tgz /path/filename
对于一个系统,除了这个全备份之外,再备份个MBR就比较完整了。

2008年10月18日星期六

升级到Ubuntu 8.10面对的几个问题!

本来有计划升级自己的桌面系统到8.10版本的Ubuntu去,在检视了升级文档之后,觉得暂时停止行动,有待8.10正式发布后再看!
从我的系统来看,使用的第三方的软件库不是很多,用到了medibuntu的媒体库和banshee那个特定发行,现在还不确定banshee是不是可以移去,medibuntu是很重要的第三方库,就看它的速度如何?检视medibuntu的官方页面,http://packages.medibuntu.org/,发现针对8.10的包已经可用!

针对已经的一些问题,主要分析不利因素有,
对于日常使用,不能从Evolution等GNOME程序直接点开连接将是很不舒服的一件事情,而且这个fix应该只是wrapper脚本的问题,很快可以解决的;
而对于选择升级的用户必须谨慎对待 NetworkManager 0.7和当前网络配置(/etc/network/interfaces)不兼容的问题,解决方法是停止 NetworkManager服务;
对于nVidia用户需要注意的是一个问题,无法正常识别不被支持的显卡;

等待8.10的正式发布,时间应该不多了!

2008年9月9日星期二

Some Ukulele Music(Clara Belle)

I found the Music author when I am searching funny music on YouTube.
This is the first time I listen some Ukulele music.
I think it is very nice!









2008年9月3日星期三

Google浏览器Chrome和开源项目Chromium

Google终于发布了它的浏览器--Chrome以及Chrome基于的开源项目Chromium。
Chrome是怎样的一个产品呢!
首先Chrome基于WebKit的浏览器解析引擎,加上Google全新开源项目V8的Javascript解析器,技术上来说没有太多其他新的东西引入,但是Google的整合功力从Chrome上可见一斑,Chrome无论是速度还是一般的解析效果都没话说!只是还处于测试版本的Chrome对于一些特殊的页面和应用还有些问题,这也是正常的!
一些关于浏览器技术的资料,

Chrome属性页面,类似Firefox的about:config

  • "about:network": 查看网络状态。
  • "about:stats": 查看浏览器状态。
  • "about:cache":查看缓存。
  • "about:histograms": 可能是比较各种运行数据。
  • "about:plugins":插件管理。
  • "about:dns"dns查看。
  • "about:version": 版本
  • "about:memory": 内存使用
  • "about:crash": 浏览器崩溃页


  • 三大Web解析引擎:
    IE -- 微软独家技术垄断;
    Gecko -- Mozilla解析引擎,从Netscape的解析引擎演化而来;
    WebKit -- Apple的Safari,KDE的浏览器以及Google的Chrome所使用的引擎;




    Allen Chen 2004 - 2011

    A3Linux AT GMail.com