ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 杀虫记录(1)-都是Shell惹的祸

杀虫记录(1)-都是Shell惹的祸

原创 Linux操作系统 作者:crazypeter2005 时间:2011-11-23 10:59:41 0 删除 编辑
世有织工,善织布;布者,丝也,乃虫口腹之物。捉虫者,虽技不如织工,不敢藏拙,亦献与读者。
古老的Unix,强悍的Unix/Linux Shell脚本是很强大的...
如果遇到一个Shell的问题,麻烦事情也就来了...

1 某项目ABC. Server端的安装是在AIX DB2上面的,客户端是安装在Window上面。
2 其中有个工作流的某个功能叫做自动发布,就是你在客户端的工作流上面选择某个节点,然后下一步下一步,就会看到节点从白色变成红色。然后就在后台自动发布了。

但是在某次测试的时候,都到了要发布的那个点很久了,还是没有出错,在相关的logs文件夹下面也没有错误生成。
于是把服务器端机器信息,客户端机器信息,DB2和Websphere以及各种OS的信息都给开发人员...

开发人员一看也不知道咋回事
开发自己搭环境也麻烦,直接在我的系统上面重现了
开发的根据程序逻辑定位到AutoPublish.java和AutoPublish.cpp 2个程序了...
但是由于ABC是基于A系统的二次开发,只能发邮件问问A的开发人员自动发布这块有没有问题?
答案是A产品是没有问题的...

那么问题就来了,原型A没有问题,衍生产品ABC出了问题。
在AIX上面,开发人员重新编译了AutoPublish.cpp,发现AutoPublish.a(AIX上面的*.a链接库)完全没有被调用,最后发现是AutoPublish.sh执行的结果似乎是异常的...

最后发现是、
DB2ENVLIST='EXTSHM'
应该修改为
DB2ENVLIST='EXTSHM ABC_HOME'
这样才能让程序找到若干*.a

到这儿,似乎应该结束了。
这个不是一个缺陷,而是测试人员安装设置变量的疏忽。
这个缺陷应该取消,然后开发测试人员继续。

但是好的产品会更近一步。
AutoPublish.cpp被重新编译了,加入了对ABC_HOME没有设置的处理,程序界面可以不出错,但是日志加了描叙。
rc=-2

这是我5年前发现的,在测试系统里面提交的第一个缺陷。
那时候刚实习不久,学着熟悉产品,学着学安装,学着写自动化脚本...心里也是心浮气躁。实习工资被2家外包公司还有导师剥削,天天都觉得自己干的没啥技术含量...
现在想想,那时候自己是海绵,在某家大公司学习各种技术和为人,扯远了,言归正传。

Chmod 777只是让某些用户有读写执行的权限,而在Shell或者.profile 记录的各种PATH,JAVA_HOME等等才是让程序或者脚本知道某些执行文件或者链接库的位置的...
下面转一下
何必呢 的常用Shell的总结...

提供一些常用的Shell命令供大家查询使用,如果你经常使用Linux命令行,那本文请自动忽略。
如果你对以下命令不明白,请单独加我Gtalk:hebine.com#gmail.com咨询。(不过别抱太大的希望,因为我也不是啥子高手)

1.Linux文件管理命令
$ls 列出当前文件夹下所有内容$ls -o 列出当前文件夹中所有内容,含详细信息,但不列出group
$ls -l 同上,含group信息
$ls -a 列出当前文件夹中所有内容,包含以”.”开头的文件
$ls -t 按更改时间排序
$ls -v 按版本先后排序
* -cd 文件夹名称 进入文件夹(比如进入web文件夹,输入 cd web 就可以)
* -pwd 显示当前路径
* -mkdir [dir] 新建文件夹(比如新建一个blog文件夹,输入 mkdir blog就可以)
* -chmod 更改文件/文件夹权限$chmod [Mode] [dir],其中Mode形如”755″或”777″等。
$chmod [Mode] [file]
$chmod -R [Mode] [dir],递归形式,即将目标文件夹内所有文件均改变权限
Mode还有另一种表达方式,”755″即为”-rwxr-xr-x”,不列举了。
* -rm [file] 删除文件/文件夹$rm -f [file] 强行删除,忽略不存在的文件,无提示
$rm -r [file] 递归删除所有内容
* -cp 拷贝$cp [options] [source] [destination]
其中[options]可以为-f(强行拷贝)或-r(递归拷贝)
常用-a选项来复制整个目录树,常用于备份或者复制安装程序
* -mv 重命名或移动$mv [options] [source] [destination]
[options]常用:-f(强行移动/重命名), -i(移动/重命名前尝试), -u(更新)
例如
$mv wwwroot/cgi-bin . 将/cgi-bin目录移动到当前目录下
$mv cronfile.txt myfile.txt 将cronfile.txt重命名为myfile.txt

2.wget下载工具

wget是一种非交互式的网络文件下载工具,在linux下可以使用该工具快速地从网络上下载所需要的文件而不需要经由本地硬盘中转,而且速度极快。以下是一些使用方法:

最简单的用法:

$wget http://wap.ydo.me/wap1.zip
3.解压缩
* tar命令.tar, .tar.gz等文件的解压(比如解压 blog.tar,输入 tar blog.tar就可以)
使用方法如下:
tar [参数列表] [文件名]参数列表:
-c 生成新的备份,并同时覆盖旧的备份文件
-x 从备份文件中解压缩
-t 列出备份文件内的文件目录
-v 显示所有被操作文件列表
-f 在指定位置生成备份
-u 将不存在于备份中的文件,或将已经被更改的文件加入该备份中。举例说明:
tar cvf filename.tar /*制作备份*/
tar cvf tarfile.tar ./filename /*将filename的文件备份到tarfile.tar里面*/
tar tvf filename.tar /*列出tar文档的内容*/
tar xvf filename.tar /*从tar文档中导出文件*/
tar zxpvf filename.tar.gz /*从tar.gz文档中导出文件*/
tar zxvf filename.tar.gz /*同上*/
tar xvf tarfile.tar ./filename /*导出tar文件中的单个文件*/
* unzip命令unzip filenema.zip
4.vi编辑器

Linux下很易用的一种编辑器,只需要稍微知道几个指令即可应用。打开vi:
$vi [filename]:打开或新建文件,并将光标置于第一行首
$vi +n [filename] :打开文件,并将光标置于第n行首
$vi + [filename] :打开文件,并将光标置于最后一行首
$vi +/pattern [filename]:打开文件,并将光标置于第一个与pattern匹配的串处
$vi -r [filename] :在上次正用vi编辑时发生系统崩溃,恢复filename
$vi [filename]….[filename] :打开多个文件,依次编辑

如果filename不存在,则自动生成一个名字filename的新文件。

vi共有两种状态:命令状态/编辑状态

编辑状态下:
第一次按下insert键为”insert”模式,再按一下为”replace”模式,使用ESC返回命令状态;
在此状态下键盘的PgUp/PgDn/Insert/Delete/Home/End/方向键,均处于正常功能状态。

命令状态下:
输入的字符串作为命令处理,使用”insert”键切换到编辑状态;
以下是命令状态下的命令清单:

移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字j至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令 :
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指
定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行 。

最后,安装Wordpress的例子,Joomla/phpMyAdmin等类似:

1. 首先获取安装文件wget http://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -rpf ./wordpress/* ./wordpress directory
2. 修改配置文件vi wp-config.php
3. 设定文件/目录属性chmod -c755 file.php
4. 执行安装程序http://your-wp-address/

命令引用自网络,部分解释由何必呢完成。




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9562545/viewspace-711829/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 十年论道
请登录后发表评论 登录
全部评论

注册时间:2010-03-31

  • 博文量
    6
  • 访问量
    21350