unix常用命令手册.docx

上传人:b****3 文档编号:3782868 上传时间:2023-05-06 格式:DOCX 页数:32 大小:40.15KB
下载 相关 举报
unix常用命令手册.docx_第1页
第1页 / 共32页
unix常用命令手册.docx_第2页
第2页 / 共32页
unix常用命令手册.docx_第3页
第3页 / 共32页
unix常用命令手册.docx_第4页
第4页 / 共32页
unix常用命令手册.docx_第5页
第5页 / 共32页
unix常用命令手册.docx_第6页
第6页 / 共32页
unix常用命令手册.docx_第7页
第7页 / 共32页
unix常用命令手册.docx_第8页
第8页 / 共32页
unix常用命令手册.docx_第9页
第9页 / 共32页
unix常用命令手册.docx_第10页
第10页 / 共32页
unix常用命令手册.docx_第11页
第11页 / 共32页
unix常用命令手册.docx_第12页
第12页 / 共32页
unix常用命令手册.docx_第13页
第13页 / 共32页
unix常用命令手册.docx_第14页
第14页 / 共32页
unix常用命令手册.docx_第15页
第15页 / 共32页
unix常用命令手册.docx_第16页
第16页 / 共32页
unix常用命令手册.docx_第17页
第17页 / 共32页
unix常用命令手册.docx_第18页
第18页 / 共32页
unix常用命令手册.docx_第19页
第19页 / 共32页
unix常用命令手册.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

unix常用命令手册.docx

《unix常用命令手册.docx》由会员分享,可在线阅读,更多相关《unix常用命令手册.docx(32页珍藏版)》请在冰点文库上搜索。

unix常用命令手册.docx

unix常用命令手册

3构建Unix命令

有的时候Unix的命令看上去很复杂,其实有可能是多个命令合在一起的。

1.分解一个复杂的Unix命令:

ps-ef|grep"ora_"|grep-vgrep|awk'{print$2}'|xargskill-9

乍看这条命令,给人很复杂神秘的感觉。

然而,这实际上是通过管道符(|)来合在一起的一组简单命令。

写成下面的格式更易懂一些:

ps-ef

|

grep"ora_"

|

grep-vgrep

|

awk'{print$2}'

|

xargskill-9

这条命令总的目的是杀掉所有Oracle的进程。

ps-ef列出所有的进程,而grep"ora_"只列出ps-ef中的ora_开头的进程;grep-vgrep的作用是进程中不列出命令本身,awk'{print$2}'的作用是只列出显示的进程的第2部分。

xargs将前面列出的内容传给后面的命令,kill-9命令会强制关闭列出来的进程。

为了更好的理解这条命令,我们不妨逐步执行这个命令,查看输出结果:

HBZW>ps-ef

UID      PID  PPID  CSTIME  TTY        TIMECMD

root      0    0  1.213:

48:

38?

?

        0:

36.18[kernelidle]

root      1    0  0.013:

48:

38?

?

        0:

00.05/sbin/init-a

root      3    1  0.013:

48:

39?

?

        0:

00.02/sbin/kloadsrv

root      5    1  0.013:

48:

40?

?

        0:

00.00/sbin/hotswapd

root      53    1  0.013:

48:

56?

?

        0:

00.00/sbin/update

root      170    1  0.013:

49:

00?

?

        0:

00.16/usr/sbin/evmd

......

oracle    2445    1  0.014:

48:

35?

?

        0:

00.36ora_ckpt_gaxz

oracle    2447    1  0.014:

48:

35?

?

        0:

00.38ora_smon_gaxz

oracle    2449    1  0.014:

48:

36?

?

        0:

00.07ora_reco_gaxz

oracle    2451    1  0.014:

48:

36?

?

        0:

00.19ora_cjq0_gaxz

oracle    2453    1  0.014:

48:

36?

?

        0:

02.20ora_qmn0_gaxz

oracle    2455    1  0.014:

48:

36?

?

        0:

00.06ora_s000_gaxz

oracle    2457    1  0.014:

48:

36?

?

        0:

00.07ora_d000_gaxz

HBZW>ps-ef|grep"ora_"

oracle    2439    1  0.014:

48:

35?

?

        0:

00.08ora_pmon_gaxz

oracle    2441    1  0.014:

48:

35?

?

        0:

00.09ora_dbw0_gaxz

oracle    2443    1  0.014:

48:

35?

?

        0:

00.11ora_lgwr_gaxz

oracle    2445    1  0.014:

48:

35?

?

        0:

00.40ora_ckpt_gaxz

oracle    2447    1  0.014:

48:

35?

?

        0:

00.40ora_smon_gaxz

oracle    2449    1  0.014:

48:

36?

?

        0:

00.07ora_reco_gaxz

oracle    2451    1  0.014:

48:

36?

?

        0:

00.23ora_cjq0_gaxz

oracle    2453    1  0.014:

48:

36?

?

        0:

02.46ora_qmn0_gaxz

oracle    2455    1  0.014:

48:

36?

?

        0:

00.06ora_s000_gaxz

oracle    2457    1  0.014:

48:

36?

?

        0:

00.07ora_d000_gaxz

oracle    2530  2310  0.015:

10:

56pts/1      0:

00.00grepora_

HBZW>ps-ef|grep"ora_"|grep-vgrep

oracle    2439    1  0.014:

48:

35?

?

        0:

00.08ora_pmon_gaxz

oracle    2441    1  0.014:

48:

35?

?

        0:

00.09ora_dbw0_gaxz

oracle    2443    1  0.014:

48:

35?

?

        0:

00.11ora_lgwr_gaxz

oracle    2445    1  0.014:

48:

35?

?

        0:

00.41ora_ckpt_gaxz

oracle    2447    1  0.014:

48:

35?

?

        0:

00.40ora_smon_gaxz

oracle    2449    1  0.014:

48:

36?

?

        0:

00.07ora_reco_gaxz

oracle    2451    1  0.014:

48:

36?

?

        0:

00.24ora_cjq0_gaxz

oracle    2453    1  0.014:

48:

36?

?

        0:

02.53ora_qmn0_gaxz

oracle    2455    1  0.014:

48:

36?

?

        0:

00.06ora_s000_gaxz

oracle    2457    1  0.014:

48:

36?

?

        0:

00.07ora_d000_gaxz

HBZW>ps-ef|grep"ora_"|grep-vgrep|awk'{print$2}'

2439

2441

2443

2445

2447

2449

2451

2453

2455

2457

HBZW>ps-ef|grep"ora_"|grep-vgrep|awk'{print$2}'|xargskill-9

HBZW>

2.find命令常用方法

find命令是一个重要的工具,用来查找文件。

下面是列出几个常用的方法:

----当前路径下及所有子目录下查找文件名是netmgr的文件

#find.-namenetmgr

----在/usr及所有子目录下查找名字是vi的文件

#find/usr-namevi

----在当前目录及所有子目录下查找文件名包含net的文件

#find./-name"net*"

----在当前目录及所有子目录查找整个文件名或路径(包含路径)包含特定字符串rdbms的文件或者路径

#find./-print|greprdbms

----查找当前目录及所有目录下的文件的文件内容中含有特定字符串

比如我们要查找当前目录下哪个文件的内容里含有good这个单词:

#find./-print|xargsgrep-igood

总而言之,通过管道符|,将一个命令的输出作为另外一个命令的输入,是Unix下Oracle管理中常用的方法。

========================================================

4Unix服务器环境

本节内容有助于你轻松掌握Unix环境。

本节首先介绍当你作为Oracle用户登录到Unix中会自动被执行的命令。

在主目录下有一个特殊的文件,这个文件中可以写入一些当该用户登录到系统后就自动运行的命令。

如果使用Kornshell,那么文件名就是.profile。

如果使用Cshell,那么文件名就是.cshrc。

1.设置标准Unix提示符(ksh)

将下面的代码放到.profile中,就会得到一个包含服务器名称、数据库名称和当前工作目录的提示符。

这样可以防止我们执行误操作。

PS1="`hostname`*\${ORACLE_SID}-\${PWD}>"

下面是具体的效果:

corphp*PROD-/home/oracle>pwd

/home/oracle

corphp*PROD-/home/oracle>cd/u01/oradata/PROD

corphp*PROD-/u01/oradata/PROD>

在上面的例子中,corphp是主机名,PROD是Oracle实例名,后面跟的是当前目录。

注意,这个方法在ksh下一般都有效,如果是别的shell可能不行。

2.获取Oracle主目录(ksh):

$cat/etc/oratab|grep^$ORACLE_SID:

|cut-f2-d':

'

/poll/oracle/ora92

3.为Oracle创建有用的unix别名

alias命令可以用一个短小的名字来代表一长的Unix命令。

例如:

aliaslog='cd$ORACLE_HOME/$ORACLE_SID/bdump'

rm命令在删除数据的时候默认不确认,这就非常危险,为了避免误删除,我们可以用下面的办法:

aliasrm='rm-i'

这样,执行rm的时候相当于执行的rm-i,就会确认是否删除。

我们可以通过这样的方法,把常用的命令组合用别名来代替,放到.profile文件中。

需要调用的时候调用别名即可。

下面在.profile中定义了一些常用的别名:

#Aliases

#

aliasalert='tail-100\$ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.lo

g|more'aliasarch='cd$ORACLE_HOME/admin/$ORACLE_SID/arch'

aliasbdump='cd$ORACLE_HOME/admin/$ORACLE_SID/bdump'

aliascdump='cd$ORACLE_HOME/admin/$ORACLE_SID/cdump'    

aliaspfile='cd$ORACLE_HOME/admin/$ORACLE_SID/pfile'

aliasrm='rm-i'

aliassid='env|grepORACLE_SID'

aliasadmin='cd$ORACLE_HOME/admin'

4.将SQL*Plus脚本放入Unixshell中

这个例子中的脚本叫做run_sql.ksh,该脚本调用了SQL*Plus来执行一条SQL语句,然后执行/home/oracle/sql/longscriptl.sql

#!

/bin/ksh

#请用正确的sid替换下面的sidname

ORACLE_SID=sidname

exportORACLE_SID

ORACLE_HOME=`cat/etc/oratab|grep^$ORACLE_SID:

|cut-f2-d':

'`

exportORACLE_HOME

PATH=$ORACLE_HOME/bin:

$PATH

exportPATH

$ORACLE_HOME/bin/sqlplussystem/manager<

SELECTnameFROMv\$datafile;

@/home/oracle/sql/longscript.sql

exit

!

然后要用chmod755run_sql.ksh来将此脚本改成可执行。

接下来就可以直接在提示符下调用了(假设该脚本位于当前目录下):

#./run_sql.ksh

当然,我们也可以在提示符下用下面的命令来执行SQL*Plus脚本:

#sqlplussystem/manager@/home/oracle/sql/longscript.sql

5.将任务提交到后台执行

nohup命令可以作为一个后台进程来提交任务。

这对长时间执行的Oracle作业尤其有用,因为这可以释放命令提示符,从而你可以进行其他工作。

例如:

nohuprun_sql.ksh>logfile.lst2>&1&

上面这条命令中不光nohup,还有其他内容,让我们来了解一下各部分的含义:

nohup

  将这个任务提交,让其持续运行,甚至你断开终端会话。

run_sql.ksh

  指定想在后台中运行的Unix脚本

>logfile.lst

  指定存放输出的文件名

2>&1

  将标准错误信息输入到标准输出设备上。

2代表标准错误信息。

1代表标准输出设备。

&

  在后台运行这条命令,释放提示符。

通过在nohup命令的最后加一个空格和ampersand(&

字符,这个命令会以后台任务来运行。

nohup命令会将常用到,因为它避免了当你退出Unix后程序就终止的问题。

6.监控后台运行的进程的执行情况

如果你将后台作业的输出重定向到了一个文件,那么你可以通过tail-f命令来监控后台进程的运行情况。

例如:

tail-flogfile.list

tail-f命令不断的显示输出文件中的新的行,从而让你很轻松的可以看到进程的执行情况。

为了终止tail-f命令,可以随时按下Ctrl-C。

7.确保合适的参数传递给OracleShell脚本

下面的代码展示怎样阻止不合适的参数传递给Oracle的shell脚本。

你可以利用此技术来防止意外的破坏。

在这个例子中,check_param.ksh脚本需要两个参数:

一个OracleSID和一个大于100的数字值。

if语句的作用是条件不满足的时候退出脚本。

#Exitifnofirstparameter$1.

if[-z"$1"]

then

echo"Usage:

check_parms.ksh\

<#_days>(wherevalueis>100)"

exit99

fi

#Exitifnosecondparameter$2.

if[-z"$2"]

then

echo"Usage:

check_parms.ksh\

<#_days>(wherevalueis>100)"

exit99

fi

#Exitifparmisnotgreaterthan100.

tmp=`expr$2`#Convertstringtonumber.

if[$tmp-lt101]

then

echo

echo"Argumenttwoislessthan100.\

AbortingScript."

echo

exit99

fi

echo"Rightpara"

在这个脚本中,$1和$2代表第一个和第二个传递给脚本的参数。

if语句中的-z参数检查是否返回null参数,也就是是否没有输入参数。

头两个if检查是否传递了参数,第3个if检查第二个参数是否大于100。

8.保证只有Oracle用户可以运行脚本

#!

/bin/ksh

if[`whoami`!

='oracle']

then

echo"Error:

Youmustbeoracletoexecute."

exit99

fi

上面的语句只允许oracle用户来执行脚本。

虽然unix文件权限可能允许任何用户来执行,但是经验丰富的DBA应该在脚本上加上限制,只允许oracle用户来运行特定的脚本,如关闭数据库等操作。

9.检查是否传递了正确的SID

这个脚本显示了怎样检查传递的OracleSID是否有效。

这个脚本假设第一个参数是传入的SID,然后检查是否是有效的SID。

接下来脚本会检查/etc/oratab文件,这个文件中会存有有效的SID。

#!

/bin/ksh

#Exitifnofirstparameter$1passed.

if[-z"$1"]

then

echo"PleasepassavalidORACLE_SID\

tothisscript"

exit99

fi

#ValidatetheOracledatabasenamewith

#lookupin/etc/oratab.

TEMP=`cat/etc/oratab|grep\^$1:

|cut-f1-d':

'|wc-l`

tmp=`exprTEMP`#Convertstringtonumber.

if[$tmp-ne1]

then

echo"Yourinput$1isnotavalidORACLE_SID."

exit99

fi

这个脚本可以检查传递的参数是否是有效的OracleSID。

注意,如果你使用Solaris,那么oratab参数文件将是/var/opt/oratab。

另外,有的unix中可能不需要转换TEMP变量。

如果上面的脚本不能运行,那么将tmp=`exprTEMP`语句去掉。

10.理解cat/etc/oratab|grep\^$1:

|cut-f1-d':

'|wc-l的含义

在上面的这个脚本中,对于初次接触unix脚本的人来说最难于理解,所以我们来解释一下。

cat/etc/oratab|

grep\^$1:

|

cut-f1-d':

'|

wc-l

cat/etc/oratab的作用是显示/etc/oratab的全部内容。

#cat/etc/oratab

#

#ThisfileisusedbyORACLEutilities.  Itiscreatedbyroot.sh

#andupdatedbytheDatabaseConfigurationAssistantwhencreating

……

*:

/poll/oracle/oracle/OraHome1:

N

*:

/poll/oracle/ora92:

N

gaxz:

/poll/oracle/ora92:

N

grep\^$1:

是在前面的结果中过滤。

$1代表第一个传递的参数的值,\^代表要是1行的开头,总的意思就是,要查找一行的开头是$1和:

的行。

假设$1是gaxz,我们替代一下看看效果:

#cat/etc/oratab|grep\^gaxz:

gaxz:

/poll/oracle/ora92:

N

cut-f1-d':

'的作用是去除掉:

和:

后面的内容:

#cat/etc/oratab|grep\^gaxz|cut-f1-d':

'

gaxz

wc-l的作用是统计前面的内容出现的次数

#cat/etc/oratab|grep\^gaxz|cut-f1-d':

'|wc-l

1

所以可以看出,如果我们将gaxz作为脚本的参数传递,那么将判断是正确的SID

11.在UNIX服务器间的循环操作(LOOP)

Unix的forloop结构可以用来遍历服务器上的某个文件中的所有内容。

例如,你可以写一个Unix脚本来读取oratab文件中的所有内容,并且访问文件中的所有列出的数据库。

进一步利用这个功能,我们可以访问包含你的数据库名称的文件,遍历每一个服务器。

我们可以写一个脚本,访问你的企业环境中的每一个服务器中的每一个数据库。

这个脚本在所有的Unix服务器都是可信任(trusted)的,也就是允许远程脚本命令的时候尤其有用。

Unix的rsh命令可以提交远程脚本命令。

rsh命令通过在.rhosts文件中加入一个条目,允许你访问远程主机。

例如,如果你希望你的Oracle用户允许访问一个远程服务器,名字叫做prodwest,那么prodwest服务器中需要在oracle用户的主目录下有.rhosts文件,如何配置这个文件可以和系统DBA联系。

一般在这个文件中加入++即表示允许其它所有远程用户访问。

如果只允许特定的ip地址访问,可以参考我的.rhosts文件:

#.rhosts

#allowotherservertoremotelyusethisserver

192.168.128.200+

192.168.128.201+

下面是一个访问各个服务器上的数据库的一个示例,这个脚本并不真正做什么,只是显示每个服务器下的oratab文件中的SID。

但是我们可以据此来完善这个脚本。

#Loopthrougheachhostname...

forhostin`cat~oracle/.rhosts|\

cut-d"."-f1|awk'{print$1}'|sort-u`

do

echo""

echo"************************"

echo"$host"

echo"************************"

#Loopthrougheachdatabasename

#/etc/oratab(AIX&HP-UX)or

#/var/opt/oracle/oratabinSolaris.

fordbin`rsh$host\

"cat/etc/oratab|egrep':

N|:

Y'|\

grep-v\*|cut-f1-d':

'"`

do

#GettheORACLE_HOMEforeachdatabase.

home=`rsh$host"cat/etc/oratab|\

egrep':

N|:

Y'|grep-v\*|grep${db}|\

cut-f2-d':

'"`

echo""

echo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2