注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

创思通信官网:www.csgsm.com

创思通信-引领物联网新时代 520ic.taobao.com

 
 
 

日志

 
 
 
 

Linux应用心得(二)(2009/09/13版) zz  

2010-04-14 17:28:16|  分类: 操作系统windows, |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

目前的开源软件盛行,很多的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 ./*

即可。


Q00066:
写入文件时,大小超过4G就崩溃了,机器32-bits,已加编译选项包括

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__GLIBC_HAVE_LONG_LONG
,Google无果,求高手帮忙解答一下?
A00066:
分析原因,有可能是:程序中链接了别的静态库,而这个静态库生成时没有加支持大文件的编译选项;可以尝试把fopen函数改成fopen64函数打开文件后,然后写入,曾经尝试写过8G的文件都没有出错;另外,检查变量类型是否正确,如果不正确也可能导致莫名其妙的错误。


Q00067:
ssh登录服务器时出现:

ssh_exchange_identification: Connection closed by remote host

该怎么办解决这个问题呢?
A00067:
主要是/etc/hosts.allow/etc/hosts.deny的问题。用ifconfig和tracerount找出对应的ip出口范围,然后直接编辑/etc/hosts.allow(当然不建议这么做,一般用iptables等工具),添加相对应的ip范围即可,例如:
ALL : 12.0.29.24/255.255.255.224 : allow

值得注意的是,要添加到deny 之前。
最后别忘记重启sshd哟!
service sshd restart


Q00068:
在Linux系统下,怎么用命令查看CPU、内存信息,怎么查看CPU的温度?
A00068:
值得注意的是,系统硬件的一些缓存信息保存在/proc目录下,比如查看cpu信息:

cat /proc/cpuinfo
查看内存(包括swap)状况:
cat /proc/meminfo
查看cpu温度状况
cat /proc/acpi/thermal_zone/*/temperature

另外,还有一个小工具lm-sensors可以查看Linux系统硬件信息。


Q00069:
有人要是在Linux下使用amarok播放不了mp3,到底差些什么播放不了呢?
A00069:
对比一下本人的系统(fedora 9 Gnome):

[cnangel@localhost docroot]$rpm -qa|grep amarok
amarok-extras-nonfree-1.4.8-1.lvn9.i386
amarok-1.4.10-1.fc9.i386
amarok-visualisation-1.4.10-1.fc9.i386
[cnangel@localhost docroot]$rpm -qa|grep xine
xine-plugin-1.0.1-4.fc9.i386
xine-lib-1.1.15-1.fc9.i386
xine-lib-extras-1.1.15-1.fc9.i386
totem-xine-2.23.2-8.fc9.i386
xinetd-2.3.14-20.fc9.i386
xine-lib-pulseaudio-1.1.15-1.fc9.i386
xine-lib-devel-1.1.15-1.fc9.i386
xine-lib-extras-nonfree-1.1.15-1.lvn9.i386
[cnangel@localhost docroot]$rpm -qa|grep libdvd
libdvdnav-devel-4.1.3-1.fc9.i386
libdvdcss-1.2.9-5.lvn9.i386
libdvdread-4.1.3-1.fc9.i386
libdvdread-devel-4.1.3-1.fc9.i386
libdvdnav-4.1.3-1.fc9.i386

其实libdvd系列与mp3是没有关系的,这个主要是为了amarok或者totem-xine播放dvd影碟而安装,其实针对amarok有两种引擎 可以用helix engine和 xine engine,helix引擎对应的是realplay引擎,这个可以安装realplay的解码就可以了,而针对xine,找到和我一样的包就可以了。
对于老版本(fedora8及以下)、其他播放器(如:Rhythmbox、Audacious等)、以及KDE环境下,这里来自fedorafaq的一个参考:
# For Rhythmbox or Totem:
yum install gstreamer-plugins-ugly

# For Audacious (which is like XMMS or Winamp):
yum install audacious-plugins-nonfree-mp3

#For KDE MP3 players, like Noatun or Juk:
yum install kdemultimedia-extras-nonfree


Q00070:
我已经安装了flash-plugin和jre,为什么flash和java小控件在firefox下仍然显示不了呢?

[cnangel@Cnangel flash-plugin]$rpm -qa|grep flash-plugin
flash-plugin-10.0.12.36-release.i386
[cnangel@Cnangel flash-plugin]$rpm -qa|grep jre
jre-1.6.0_10-fcs.i586

A00070:
flash-plugin安装的路径是:
[cnangel@Cnangel flash-plugin]$ll /usr/lib/flash-plugin/
总计 9848
-rwxr--r-- 1 root root 3116 10-05 11:13 setup*
-rw-r--r-- 1 root root 34516 10-05 11:13 LICENSE
-rwxr--r-- 1 root root 1367 10-05 11:13 homecleanup*
-rw-r--r-- 1 root root 3184 10-08 03:38 README
-rwxr-xr-x 1 root root 10017140 10-09 04:54 libflashplayer.so*

其实setup是安装文件,可以使用sh进行调试安装,发现:
sh -x ./setup

程序运行结果,把其动态连接库做了一个快捷方式,放在/usr/lib/mozilla/plugins目录下面了,我们只需要将其连接再软连接过来即可:
ln -sf /usr/lib/flash-plugin/libflashplayer.so /usr/lib/firefox-3.0.4/plugins/libflashplayer.so

同理,在sun公司的主页下载了jre,安装jre的二进制包后,找到/usr/java/jre-xxxxx目录,在plugins目录中找到相关平台的动态连接库,做一个快捷方式,放到/usr/lib/firefox-3.0.4/plugins/即可。


Q00071:
第71问仍然谈谈firefox的问题,某些时候,打开带有java applet等小控件的页面时,经常出现浏览器莫名其妙的退出,如果在linux下以命令行输出,那么显示:

/usr/lib/firefox-3.0.5/run-mozilla.sh: line 131: 4223 段错误 "$prog" ${1+"$@"}

该怎么解决这个问题呢?
A00071:
在Ubuntu论坛上查到主要是因为SCIM输入法与Firefox等软件冲突的缘故,解决办法也很简单,在.bash_profile上加上一句或者在firefox运行的bash脚本(比如:/usr/bin/firefox)里面加入一句:
export GTK_IM_MODULE=xim

注意的是,这句加在/usr/bin/firefox文件中时,需要加在bash的前面申明。


Q00072:
从硬盘安装Fedora10时,将镜像里面的vmlinuz和initrd.img文件取出,然后按照硬盘安装方式,用grub启动:

kernel root (hdX,Y)/vmlinux
initrd root (hdX,Y)/initrd.img
boot

确发现到了load硬盘镜像的时候,怎么也找不到iso里面的images/install.img文件,该怎么办?
A00072:
这个根据笔者经验,可能是厂商的硬件与操作系统的兼容性问题,解决办法是将Fedora-10-i386-DVD.iso里面的images目录也同时提取出来,注意这些文件都需要安放到fat32分区即可。


Q00073:
在linux下,rpm包安装不了,一直halt中,怎么回事呢?
A00073:
其原因有很多,先总结一下:
可以使用

rpm -vv -ivh
来查看详细的情况,一般是由于扫描所有分区时,因为一个分区数据有点问题导致的,可以使用参数--ignoresize来解决,具体命令如下所示:
rpm -vv -ivh --ignoresize

另外,可以重启一下机器解决或者umount一下。


Q00073:
请问.iso.gz的文件如何解?
A00073:
先file一下看看文件类,然后确定用tar还是gzip或gunzip解压成.iso文件,然后用mount加参数-o loop挂载。


Q00074:
firefox3的插件安装不上,提示不支持该版本或者没有安全的验证升级,该怎么办呢?
A00074:
一般firefox的插件安装不上,可以修改其插件的配置信息达到兼容为目的。
一般firefox的插件文件的后缀是.xpi格式,其实,他是一个zip的压缩格式,可以使用zip命令或者winrar解压。解压出来的文件一般有install.rdf这个文件,这个就是安装的一个配置文件,下面以FirefoxExtensionAddOn2.06.xpi为例:
install.rdf内容中

<em:minVersion>1.7</em:minVersion>
<em:maxVersion>3.5+</em:maxVersion>

标记着至少什么版本的firefox才能使用,有一个最小支持的版本和最大支持的版本;

<em:homepageURL>http://twiki.org/cgi-bin/view/Plugins/FirefoxExtensionAddOn</em:homepageURL>
<em:updateURL>https://twiki.org/p/pub/Plugins/FirefoxExtensionAddOn/update.rdf</em:updateURL>

标记了使用安全验证升级模式的网络地址,一般出现问题是因为上面的地址没有使用https的协议方式,改成https协议方式即可,聪明的读者,您可以试试您安装不上的firefox插件吧。


Q00075:
fedora10发布之后,其开启3D效果后,一直闪屏,真不让人满意,怎么解决这个问题呢?
A00075:
编辑/etc/grub.conf文件:
在kernel命令启动/vmlinuz-x.x.x最后,加上

rhgb quiet vga=792
rhgb quiet vga=0x318
即可,792和0x318分别为十进制和十六进制,其表示屏幕分辨率大小为1024x768,其他VESA模式下内核分辨率与色彩的对应关系如下:
| 640x480 800x600 1024x768 1280x1024
----+-------------------------------------
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M | 0x312 0x315 0x318 0x31B


Q00076:
在nautilus中如何解决ftp目录中文乱码的问题?
A00076:
解决办法如下:

curlftpfs ftp@host:/ /path -omodules=iconv,from_code=gbk,to_code=utf8

感谢grassofhust提供解决办法。


Q00077:
如果使用vim命令像shell方式那样直接编辑文件?
A00077:
用-c选项,比如替换文件中的所有hello字串为world字串:

vim -c "%s/hello/world/g" file

插入hello,world字串
vim -c "normal ihello,world" file


Q00078:
自动化编译中,make dist的时候,提示错误输出:

name is too long (max 99); not dumped

该怎么办呢?
A00078:
在configure.in或者configure.ac当中加入
AM_INIT_AUTOMAKE([tar-ustar])
,这样在tar命令的时候,会加入参数-ustar,防止打包的名称过长,另外还要加上
AM_PROG_CC_C_O
来标识一下。


Q00079:
如果让svn每次输入密码呢?或者想让取消的时候就取消掉呢?
A00079:
在用户的HOME目录下,有一个叫.subversion目录,这个目录下记录着一些svn的配置,当然用户可以修改这些配置,达到可以让用户svn up的时候,每次输入连接svn服务器的用户名和密码,但是这里cnangel提供一个好的方法,就是将这个目录权限改成root权限,即可达到要求。当 然用户本身不是root。


Q00080:
用libtool编译程序时,调用使用libanet.so的时候,出现警告

libtool: link: warning: /usr/lib64/libanet.la seems to be moved

怎么去除这个警告呢?
A00080:
出这个情况的原因是,libanet.la这个文件已经被更新了,指定路径的地方已经变了,只要手动改回来即可,如库路径指定为
libdir='/usr/local/lib64'

来源:http://archives.devshed.com/forums/development-94/libtool-link-warning-libexpat-la-seems-to-be-moved-1957466.html
FYI, those .la files are textfiles that describe where a library expects to be installed, what other libs it depends on etc. The warning means that the library was moved to a different place than the one it expected to be, possibly causing it to not function or not function properly.

Lastly, you can install Subversion from source without any root privileges at
all, the only thing you need is to pass e.g. ' ~/svn-install' to
configure and adapt a few things like PATH and LD_LIBRARY_PATH. This helps
keeping this install from affecting other stuff on the system. In fact that
is a feature of autotools, so every program that comes with a configure
script should be installable like that.


感谢刘强


Q00081:
mplayer,使用一直都很不正常,每次打开都会弹出

Cannot prepare subtitle font

的错误提示,播放任何文件就不停地弹出对话框,并且占用很高的CPU资源,该如何解决?
A00081:
google了一下,在一篇文章中找到如下:
the default setting on 'fontconfig' of mplayer.conf in /etc/mplayer/ is yes. however the documentation tells us :
'If MPlayer was compiled with fontconfig support, the above methods won't work, instead -font expects a fontconfig font name and defaults to the sans-serif font

似乎这个问题和fontconfig有关系
vim /etc/mplayer/mplayer.conf

fontconfig = yes --->no,可以暂时避免这个问题导致的cpu资源过高问题。


Q00082:
FreeBSD如果进入桌面?
A00082:
首先确认安装上了gnome或者kde,如果没有,请用安装光盘mount后,sysinstall命令安装,然后:

echo "exec startkde" > ~/.xinitrc


echo "exec gnome-session" > ~/.xinitrc

再执行 startx 就进入kde 或 gnome界面了。


Q00083:
如何在fedora10下实现用户自动登录?
A00083:
在/etc/gdm/custom.conf文件中加入

[daemon]
TimedLoginEnable=true
TimedLogin=X
TimedLoginDelay=0

注:X为自动登录用户,保存后重启。
  评论这张
 
阅读(1340)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018