Linux应用心得(二)

写这篇文章是为了方便自己,也同时为了方便他人。

目前的开源软件盛行,很多的README文档都是以英文的形式出现,很多懒人不愿意去读此类的文章,所以遇到问题也不会知道怎么去解决。

在这之前,《linux宝库》的站长陈绪先生的《linux一句话》已经概括得很经典,而我追求的是linux中的FAQ形式,只要你有心,没有解决不了的问题。

如果你对太多的 A、Q 不知所措,可以Ctrl+F查找你所需要的问题。

Q00053:
怎么使用Berkeley DB来cache内存呢?
A00053:

sudo mkdir /rfs
sudo mount -t ramfs ramfs /rfs
sudo chmod a+w,o+t /rfs
即可使用内存cache,查看用了多少内存就看/rfs目录的大小就是你使用的内存大小,该内存大小可以超过物理内存。

Q00054:
在安装Oracle 10g XE on Debian/Ubuntu中,在 apt 安装 oracle-xe-client 时,有可能会出现如下的错误,提示 Swap 分区没有达到要求的大小,安装无法继续。那么怎么增加系统Swap分区呢?

This system does not meet the minimum requirements for swap space. Based on the amount of physical memory available on the system, Oracle Client 10g Express Edition requires 1024 MB of swap space. This system has 951 MB of swap space. Configure more swap space on the system and retry the installation.
A00054:
1,首先用命令free查看系统内 Swap 分区大小。
free -m
2,在/目录下创建一个1G的swapfile文件。
sudo dd if=/dev/zero of=swapfile bs=1024 count=1048576
3,把生成的swapfile文件转换成 Swap 文件
sudo /sbin/mkswap swapfile
4,激活 Swap 文件。
sudo /sbin/swapon swapfile
5,再次查看 free -m 的结果,是不是已经添加上了?
注意:
1,如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo /sbin/swapoff swapfile
2,如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。
swapfilepath swap swap defaults 0 0

Q00055:
在PHP5.2的编译的过程中,如果遇到

checking for MySQL support… yes
checking for specified location of the MySQL UNIX socket… no
checking for MySQL UNIX socket location… no
configure: error: Cannot find libmysqlclient_r under /usr/local/mysql.
Note that the MySQL client library is not bundled anymore!
A00055:
如果在编译APACHE的时候,使用–with-mpm模块,请在编译MYSQL的时候加上 –enable-thread-safe-client.
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程。

Q00056:
我在执行 svn co http://xxx.xxx.net/repo/xxx/trunk 的时候,出现了svn: Unrecognized URL scheme的错误,该怎么办?
A00056:
首先,大家可以在SVN 官方的FAQ的翻译中找到如下问题说明:
subversion使用外挂系统来存取档案库。
目前有三个这样的外挂:
1,ra_local可以存取本地档案库
2,ra_dav可以透过webdav存取档案库
3,ra_svn可以透过svn server服务器来进行本地或远端的存取
当你想要在subversion进行一个作业时,用户端会试著依urlschema动态载入一个外挂.file://url会试著载入ra_local,而http://url会试著输入ra_dav,以此类推,你看到的这个错误,表示动态连结器/载入器无法找到要载入的外挂。这个发生的原因,通常是因为你以共享程式库的方式编译subversion,但是还没有执行make install就要执行它。另一个可能就是你执行了make install,但是程式库把它存在动态连结器/载入器不认得的地方。在linux下,你可以把那个库目录加进/etc/ld.so.conf,然后执行ldconfig,让连结器/载入器可以找到该库。如果你不想这么作,或是你没有root存取权限,你可以在LD_LIBRARY_PATH环境变数指定该库目录。
其次,我们可以执行一下SVN,看看ra_dav 是否加载:

svn –version
接着,我们发现那个模块并没有加载,经过查看configure 的过程,我们发现我们需要安装一个NEON的插件:
NEON 下载地址: http://www.webdav.org/neon/
安装neon后,重新编译subversion-1.x.x即可。

Q00057:
怎么在linux下打开7zip压缩的文件?
A00057:

sudo yum install p7zip p7zip-plugins -y
安装完成后,运行命令7z x xxx.7z即可。
我看与unrar命令大同小异。

Q00058:
用NetworkManager进行无线连接的时候,发现死活也连接不上无线网络,连接方式、用户名、密码都很正常,但是为什么连接不上呢?
A00058:
右键点击NetworkManager,编辑连接,在出现的对话框里选择“无线”,删除里面的所有无线连接,然后重新输入正确的无线网络用户名和密码,就可以连接上了。
需要注意的是,有时候需要输出域,域可以加在用户名前,用“”号分开,如:

yahoo-bjcnangel

Q00059:
怎么在bash里面得到一串字符的md5值?
A00059:
有人很可能想到:

echo “string” | md5sum
由于echo本身是带换行的,所以这不是这个string字串真正的md5值,这个结果是错误的。
真正的答案应该如下:
echo -n “string” | md5sum

Q00060:
使用cpan来安装相对应的软件时,出现安装不了,提示说:

Your urllist is empty! The urllist can be edited. E.g. with ‘o conf urllist
该如何解决?
A00060:
首先解决urllist为空的问题:
$sudo cpan
cpan>o conf urllist unshift http://www.perl.com/CPAN/
Please use ‘o conf commit’ to make the config permanent!
cpan>o conf commit
commit: wrote ‘/home/cnangel/.cpan/CPAN/MyConfig.pm’
然后安装
cpan>i /FCGI/
cpan>install FCGI

Q00061:
一进程确定占用某一tcp端口,如何杀掉该进程?另外,两应用程序service1和service2,service2依赖service1,即得等service1启动后才能启动,若service1应用占用一确定的tcp端口,如何实现该操作呢?
A00061:

kill -9 $(netstat -tlnp 2>/d