2010年8月22日

eval

今天看了rc.subr,发现shell的一个用法eval不是很懂,于是在网上查了下,发现一牛人的说法是:
eval执行后面的字符串,这里实际上完成了两命令替换!
上面我理解的意思是:重复执行一行代码两次.

而我看到rc.subr里面的一段代码是

eval _value=\$${1}

会不会是以下的意思呢?
例如${1}是name,那_value就储存$name的值.因为是eval,它执行了\$${1}.也就是先执行了${1}(例如是name),然后再执行\$name, 不过在eval看来,\$被再次执行时就变成了$,也就是变成了$name.

下面一个小脚本可以说明上面我的看法

#!/bin/sh
File="/etc/resolv.conf"
echo "File is \${File}"
eval echo "File is \${File}"

2010年8月20日

lighttpd2

今天来尝下新东西:lighttpd2.0 -- 是一个未开发完整的WEB服务器。

lighttpd2与1.xx首个不同的地方就是配置文件。两种完全不同的配置方式。lighttpd2的配置文件就像一个C语言程序:有函数,要调用已在配置文件中已写的函数才可以远行。有特定的关键字(如一个压缩的函数,我使用了deflate开头并调用,这些会导致lighttpd启动不久后会自己自kill.)它有特定的区域去干特定的事。有些配置信息像varnish(如req.host, req.localip等等).
还有一个有趣的地方就是使用到mod_status这个模块,它会打印出一个人性化的界面,而且您可以自己定义这个界面的,在2里面关于mod_status的配置项只有一个,就不够1.xx丰富了,不知在接下来他们会不会增加一些配置项呢。下面就是使用status的一个生成信息了.

下面是lighttpd1.4.27的status,主要是让它们可以对比一下:
这只是最简单配置后得到的信息。

还有很多很多有趣的事等着我去发掘!

注,status的初始样式都写在mod_status.c源码里面的。

2010年8月19日

今晚做了几件错事

不知是人老啦还是想要睡觉,今晚竟然做了两件错事!

1 安装了logzilla.在网上看到了关于logzilla的介绍,里面说到这个软件可以记录和分析系统的日志,以图形的方式显示出来,可以在任意情况下看到系统的信息.我就安装来玩下,哪知道花了一个晚上的时候搞定了它.不过它弹出来的框雷住了我" 没有flash或者您的flash版本太低" 我真的被吓住了!竟然还得flash才能看啊!不过软件是不会想到我的系统是没有flash的,html5就可以.不过还是算啦吧!等我以后有其它需求时再使用您吧:logzilla!

2 为了logzilla,我把安装来做测试的lighttpd1.5给删除了.我一开始还以为是自己曾经安装varnish作怪,导致在lighttpd无论怎样修改root目录都是显示之前的root目录.然后我就把lighttpd给删除了.对不起啊lighttpd,都怪我没常识把您删除了.原来是我的浏览器缓存在作怪.从现在开始要对自己说:谨用浏览器缓存!

2010年8月18日

用expect给mysql创建用户

之前一直为mysql要创建用户而奔波到去翻mysql手册,现在看来不用了。自己写了一个mysql自己创建用户的expect脚本,那以后就不用那么麻烦了。下面是刚安装完mysql后给它添加root密码和创建新的用户。
代码如下:

#!/usr/local/bin/expect

set timeout 10
set host 172.16.249.126
set password 12345
set user hoho

spawn ssh -l $user -p22 $host
expect "*assword*"
send "$password\n"
sleep 2
spawn mysql -u hohoho -p1234567
expect "mysql>"

send "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "GRANT ALL PRIVILEGES ON *.* TO 'haha'@'localhost' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "FLUSH PRIVILEGES;\n"
send "GRANT ALL PRIVILEGES ON *.* TO 'haha'@'127.0.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "FLUSH PRIVILEGES;\n"
#expect "*OK*"
send "exit\n"
interact

这里就给了mysql创建个一个叫haha的用户,它拥有mysql所有的权限(不过这些可以自己去修改的).我是使用hoho用户去创建的,其中hoho用户也是拥有mysql所有权限的。
详细情况有时候再慢慢调整和做解释。

注:当使用到expect后,当输出的字符符合expect里面内容的话,他就会将send里面的内容显示出来。而不是等到执行时才会进去处理。

2010年8月12日

FreeBSD X不使用hald和dbus

hald使用太多进程了,搞得我看得都烦!于是想把它禁了,在网上看到了可以实现的办法:

1 在/etc/rc.conf里面写入
moused_enable="YES" #在系统启动后就启用mouse.
如果里面有写上hald_enable="YES" 和dbus_enable="YES"那就请注释吧,它们将不会在接下来的top中出现的。

2 在/etc/X11/xorg.conf里面定入

在serverlayout一节中输入:
Option "DontZap" "off"

Option "AllowEmptyInput" "off" #如果启用,就不会增加标准的键盘和mouse驱动。
#如果都没有输入驱动到配置文件,将会使用启用默认配置,如果
#AudoAddDevices和AutoEnableDevices是启用的。那它就不启用。如果
#AllowEmptyInput是启用,那kbd,mouse或者虚拟mouse驱动都会被忽略。

Option "AutoAddDevices" "off" #如果AutoAddDevices是不启用的,当没有驱动时就会从hal事件中增加,启用是使用
#其默认的配置。


完成。

这样当启用X后用top查看,您会看到只多了一个moused进程,那hald*将不会再出现了!

我的N900

很喜欢有键盘手机,因为尝试过全触屏的手机,用起来有点压抑!所以就选择了N900.

N900是的操作系统是maemo,是基于debian的,也就是它也是linux来的,有一个可以拿来玩的terminal。 默认的terminal在输出时是不带色。所以先得给它安装带色的ls,在下面的URL中可以下载
http://www.nitapps.com/dists/chinook/user/binary-armel/color_ls_1.0-1_armel.deb
下载到本地直接使用dpkg -i来安装即可。这里输入ls你会看到色彩的了。

清除其它的locale
清除其它的locale可以给N900省下很多空间(本来N900的rootfs已经很小了)!
只要安装上了localepurge_0.5.8_all.modfied.modfied.deb就可以了,不过在安装上它前必须得先安装两个依赖,分别是
http://repository.maemo.org/pool/maemo4.1.1/free/p/pcre3/libpcre3_6.7-1osso1_armel.deb
http://repository.maemo.org/pool/maemo4.1.1/free/p/pcre3/pcregrep_6.7-1osso1_armel.deb
安装完成就下载localepurge来安装吧
http://forums.internettablettalk.com/attachment.php?attachmentid=2653&d=1225038890
先别急于运行localepurge这个命令,您得先配置/etc/locale.nopurge,这个文件是配置应该去留下哪个locale。你可以增加zh_CN在里面,它默认只留下
en
en_GB
en_US
现在您可以使用localepurge来清除一些locale了。

注: 上面的要下载的软件都可以用命令dpkg -i 来安装。