常用工具及命令手册(5)

2019-08-30 17:03

perlpath.pl 当 perl的路径不是/usr/local/bin/perl 时,替换perl脚本中的#!/usr/local/bin/perl

6 排错样例: 6.1 iptables无法运行故障的排错

环境:RH7.3,kernel:2.4.18-3

问题:加载iptables模块完成后,无法启动,系统提示:无法加载模块,可能是系统中断号及参数配臵错误(原文是E文,当时没有cc一下,翻译过来大致就是这个意思)。 查找问题过程:

考虑到模块没有加载成功,那么系统中断号及参数配臵错误的报警应放在第二位,由于主要情况是iptables启动未完成,所以我: more /etc/rc.d/init.d/iptables

在此脚本中注意到下面这些与iptables启动相关的代码: if [ ! -x /sbin/iptables ]; then exit 0 fi

KERNELMAJ=`uname -r | sed -e 's,\\..*,,'` KERNELMIN=`uname -r | sed -e 's,[^\\.]*\\.,,' -e 's,\\..*,,'`

if [ \ exit 0 fi

if [ \ exit 0

上海格尔软件股份有限公司

上海市北京西路1399号建京大厦5楼 Tel: (86-021) 62891100 Fax: (86-021) 62892215 URL: http://www.koal.com

21

fi

if /sbin/lsmod 2>/dev/null |grep -q ipchains ; then # Don't do both exit 0 fi

从以上语句可以看出程序退出有四种可能,下面逐一分析:

1. 此语句是对/sbin/iptables是否可运行的判断,到相应目录用ls -ll命令即可验证,结果正常。

2. 第二、三if语句主要为验证kernel版本,用uname –r即可验证,RH7.3为2.4.18-3满足其要求;

3. 最后一个if语句是查找是否加载了ipchains模块,用lsmod命令查看,发现模块的确已经加载,说明在linux默认安装中是安装了ipchains的,而iptables和ipchains不能共存,所以造成iptables模块无法加载。 解决方法: #停止ipchains服务 service ipchains stop #卸载ipchains模块 rmmod ipchains #修改系统启动文件: ls /etc/init.d/ -ll 可以看到启动文件中有:

-rwxr-xr-x 1 root root 5549 Mar 4 2002 ip6tables -rwxr-xr-x 1 root root 3313 Feb 22 2002 ipchains -rwxr-xr-x 1 root root 5528 Mar 4 2002 iptables #禁止ipchains启动,ip6tables也没有必要启动(这种方法linux启动时会有个ipchains加载出错的提示,要防止这个提示出现,可以更改其它相关启动文

上海格尔软件股份有限公司

22

上海市北京西路1399号建京大厦5楼 Tel: (86-021) 62891100 Fax: (86-021) 62892215 URL: http://www.koal.com

件)

chmod –x ipchains chmod –x ip6tables reboot 问题解决。

6.2 windows下写的脚本在linux下使用

据说程序员有个天性,喜欢偷懒,? 不错,大家都喜欢将脚本拷来拷去。从windows下copy过去到linux下的的脚本文件里面的代码语法绝对没错,可就是不能运行。往往产生百思不得其解的感觉。其实是因为有隐藏的DOS特殊符号导致不能运行。解决办法是在Linux下将该文件打开,然后将其所有的内容在linux下拷贝到另一个文件里即可,运行这个新生成的文件就不会报错。

6.3 Rc.local文件中脚本执行

在linux下往往希望在 /etc/rc.d/rc.local写入自己添加的命令或脚本,以便系统在启动后就能自动执行这些脚本命令。但据报经常发现写入的脚本没有得到执行的情况。

这里往往有如下原因:

1. 要保证在整个rc.local文件中,你想执行的命令以前的脚本的正确性,如

果前面的脚本不正确,有可能会导致系统启动执行rc.loal碰到错误就不再往下执行了。(不能确认)

2. 有些命令的依托于另一个命令得到执行后才能执行成功,这时就一定要注

意不要遗漏命令或将命令顺序搞错。比如我们常希望在rc.loal里自动启动tomcat,而此命令的执行必须要在环境变量JAVA_HOME定义后,export JAVA_HOME=/usr/java,才能成功执行。另外,我们往往把这种环境变量的定义放在根用户主目录下的.profile里定义,而实际上rc.local文件的执行要早于.profile的执行,结果就会出现还未定义JAVA_HOME,就执行

上海格尔软件股份有限公司

23

上海市北京西路1399号建京大厦5楼 Tel: (86-021) 62891100 Fax: (86-021) 62892215 URL: http://www.koal.com

tomcat的启动命令,自然不能成功,也自然会觉得rc.local怎么不听使唤,不按要求执行命令了。

3. 虚拟机rc.loal的执行有时会出现命令没有得到应有执行的现象,原因尚不

清楚。

7 小技巧: 1. 查看uid和gid命令:

方法一:可以在文件在/etc/passwd及/etc/group中查看 方法二:可以用id命令查看 2. rpm包安装出错问题解决:

安装rpm包常见一个问题:rpm -ihv perl-5.8.0-55.i386.rpm 系统提示需要perl-5.8.0-55.rpm,这个问题只需要用下列命令解决: rpm -ihv perl-5.8.0-55.i386.rpm --nodeps –force

(rpm包安装常有dependencies问题,可以考虑采用 –nodeps –force强制安装,够野蛮…. 不过不能保证包治百病-李翔) 3. 常用查找命令locate

locate是一个比find命令更快更全面的工具,它基于一个索引库来搜索,所以速度非常快,该索引库可以用updatedb命令来升级,locate命令使用很简单,只需“locate 文件名”即可。但是新安装或copy进系统的文件,必须updatedb一下,才能搜索到。(我想花这点小时间是值得的) 4. rpm –rebuild.

采用rpm的安装可以免去自己手工配臵、编译、安装的烦恼,并且很容易进行软件的管理,但如果直接采用.i386.rpm的安装包,往往会产生令人更烦恼的dependencies的问题,因此可以通过下载 .src.rpm的源码rpm文件,并采用: rpm –rebuild 命令来编译,成功后会在/usr/src/redhat/RPMS/i386目录下生成相应版本的.i386.rpm二进制安装文件,由于该文件是在本机系统环境下编程生成的,因此一般可以解决掉dependencies的问题。

上海格尔软件股份有限公司

上海市北京西路1399号建京大厦5楼 Tel: (86-021) 62891100 Fax: (86-021) 62892215 URL: http://www.koal.com

24

8 备注 注

上海格尔软件股份有限公司

25

上海市北京西路1399号建京大厦5楼 Tel: (86-021) 62891100 Fax: (86-021) 62892215 URL: http://www.koal.com


常用工具及命令手册(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:施工组织设计B

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: