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-bj\cnangel


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>/dev/null|grep 8080|awk '{print $7}'|awk -F '/' '{print $1}')

其中8080为端口号。注意:
* 得写出完整端口号,否则易错杀其他进程。
* 7是进程信息所处的列号,不同Linux可能不同,需要调整。
对于第二个问题,可以使用shell循环判断端口即可,如下:
echo "service1 start..."
./service1.sh

netstat -tlnp|grep 8080
until [ "$?" -eq "0" ]
do
echo "waiting service1 to startup..."
sleep 1
netstat -tlnp|grep 8080
done
echo "service1 started."
./service2.sh
echo "service2 started."

来源于guyongpeng。


Q00062:
怎么查看内存的增长情况?
A00062:
简单的可以使用free、vmstat等来查看,监控一段时间可以使用:

watch -n 1 -d free

Q00063:
使用sar命令时出现:

Cannot open /var/log/sa/sa10: No such file or directory

无法查看机器以往的状况,该怎么做?
A00063:
Installing sar is not enough, you need to set it up too.

Data needs to be collected and (optional) daily reports have to be made. The first part is needed to use the sar command and to be able to look at older data.

Here are a few examples (should go in the root or admin crontab):


# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &

# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &

# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &

# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &


See man sar / man sa1 and man sa2 for details.
thanks druuna.
另外,可能是crond服务没有启动,导致sa命令进程一直不在其中,直接启动crond服务是最好的解决办法。
service crond start


Q00064:
如何清掉last命令显示的东西?
A00064:
使用fwtmp命令将/var/adm/wtmp转为文件,编辑这个文件将以前的删掉,在使用fwtmp将修改后的文件转换为wtmp。
如果是清掉所有的显示,对/var/adm/wtmp文件置空就可以了。


Q00065:
我忘记了nm-applet的密钥环密码了,有什么办法找出或者清空么?
A00065:

$cd ~/.gnome2/keyrings
$rm -rf ./*

即可。

Categories

, ,
| | 评论(0)

Post a comment

关于此日记

此日记由Cnangel发表于2008年7月14日 12:17

此Blog上的上一篇日记wine1.0.1的发布

此Blog上的下一篇日记推荐远程桌面工具VNC

主索引归档页可以看到最新的日记和所有日记。

2008年9月

Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
Powered by Movable Type 4.21-zh-cn