Shell脚本语言在AIX服务器中的应用

时间:2022-09-17 06:47:03

Shell脚本语言在AIX服务器中的应用

摘要:在AIX系统日常运维和PDM等应用系统的业务管理中,经常会涉及到后台的计划任务管理、服务器自启动维护、业务处理、批量脚本处理等大量繁杂的工作,通过人工处理往往要消耗大量的人力成本。本文试通过AIX系统中的Shell脚本常用方法和实际运用的例子简要说明Shell脚本语言与AIX系统结合的操作技巧和能达到的效果,从而使业务系统的管理人员从繁重的日常维护工作中解脱出来。

关键词:AIX操作系统 samba SWTA 远程映射 客户端访问

中图分类号:TQ028 文献标识码:A 文章编号:1007-9416(2015)05-0000-00

1 Shell脚本

1.1 Shell简介

AIX操作系统和其它的类UNIX操作系统一样,都需要通过某种方式与内核进行通信。服务器管理员能通过使用Shell来实现。管理员可以使用各种不同的Shell,比如Korn Shell 和 bash Shell等,各种Shell各有优劣,由于Korn Shell 是AIX系统所使用的缺省Shell,所以本文所涉及的例子都基于Korn Shell来实现。

在AIX系统中编写Shell脚本,大多会使用到一种文本编辑器,虽然现在的主流AIX操作系统,如AIX6.1提供了类似windows操作系统记事本的常规编辑器,并支持类似windows系统的快捷键。但实际操作过程中,如不是使用类似Xmanager这样的远程虚拟软件,大多时间管理员可能会直接使用telnet字符命令对配置文件和Shell脚本进行修改和编辑,而VI编辑器的强大之处在于字符界面也能提供比传统文本编辑器更为强大的功能。因为这种编辑器的强大,在类unix系统环境中,vi编辑器是一种使用最广泛的文本编辑器,关于如何使用vi,网上有大量相关技术文档可以进行查阅,本文不再过多阐述。

1.3简单Shell语句示例

图1显示了几个系统最简单的Shell命令。

# date //显示当前系统时间

# hostname //显示当前主机名称

#time //显示某一条语句执行的时间

1.4脚本

Shell命令最强大的一项功能是可以将多个命令组合在一个脚本文件中(后缀名sh,类似windows系统中的cmd或bat脚本,但功能更为强大)。当我们需要在某一时间重复运行相同命令的时候,使用脚本将使得我们的工作事半功倍。同时脚本支持变量输入,在输入参数不同的时候通过输入可以更加简化我们的操作。在本文中不会涉及到太多有关于Shell的语法,该部分内容可以查询相关学习资料。

2 Shell脚本在业务中的运用

2.1启动Oracle数据库

Oracle数据库是大多AIX系统管理员要处理的系统,开启数据库的操作步骤虽然并不是十分繁琐,但通过脚本一次性启动视乎是更简便的方法。以下是一个启动数据库的简单例子:

echo "begin to start oracle"

export ORACLE_SID = scott

lsnrctl start

sqlplus /nolog

connect / as sysdba

startup

exit

exit

echo "oracle started"

将以上文字用VI编辑器保存为一个文件startdb.sh文件,设置好文件的运行权限直接在系统中执行就能启动制定的scott数据库了。

2.2关闭数据库并备份

关闭数据库的脚本示例如下dbstop.sh(假设数据库SDI为scott):

export ORACLE_SID = scott

lsnrctl stop

sqlplus /nolog

conn / as sysdba

shutdown immediate

以当前年月日为名称备份数据库至/DBBAK下并用compress命令进行压缩(dirInit为之前在数据库中定义的路径)dbbak.sh:

expdate=`date +"%Y%m%d"`

su - oracle -c expdp username/password@scott directory=dirInit content=all dumpfile=${expdate}.dmp

cd /DBBAK

compress ./*.dmp

2.3数据清理

数据备份后需要及时清理(假设保留最新的3次备份,将多余备份进行删除)oradel.sh

cd /DBBAK

num=`ls -t *.dmp.Z| wc -l`

echo $num2

if [ $num2 -gt 3 ]

then

echo "dmp are more then 3 , Del the old!"

num=`expr $num2 - 3`

ls -tr /DBBAK |grep dmp | head -n $num | xargs -i rm -f {}

else

echo "dmp are less then 3 !"

fi

3 与开机任务的结合应用

一般来说Shell脚本具有重复利用的价值,但如果仍然需要通过手工执行的话无疑并不能达到令人满意的效果,一些任务脚本需要在系统启动时就进行加载,以达到业务一键启动的无缝连接状态,比如2.1章节提到的启动数据库。AIX的启动项是通过/etc/inittab文件进行配置的,该文件中已经记载了系统默认状态下应该加载的应用进程,可以直接修改该文件达到开机启动数据库的目的。步骤如下。

由于inittab默认使用的是系统root用户权限,而启动数据库应该是在oracle用户下进行,所以可以先编写一个中间文件rc.dbstartdb,以oracle用户的名义运行数据库:

su - oracle "-c/home/oracle/startdb.sh"

然后用VI在inittab文件中添加如下信息即可:

startdb:2345678:wait:/etc/rc.startdb

4 与计划任务的结合应用

有一些任务并不是在开机的时候执行,而是在某一个周期性内重复,这就需要用到AIX的计划任务机制。AIX的每一个用户都有单独的计划任务,可以在该用户下通过以下命令进行查询已有的计划命令:

# crontab -l

亦可以通过如下命令对计划任务进行增、删改:

# crontab -e

以2.2章节的清理数据为例,假设需要定时在每天的凌晨0点10分执行脚本进行清理,则可以通过crontab -e编辑如下命令(假设清理脚本oradel.sh存放位置为/DBBAK):

10 0 * * * /DBBAK/oradel.sh

5 带参数的Shell脚本

参数变量是Shell脚本语言的一个重要特性,能够预留变量参数使得脚本的适应性更加广泛和灵活。Shell支持多个变量,变量在脚本中以$1,$2,$3……的形式进行标注,在执行脚本时直接在脚本名称后接上参数值即可。

以2.2章节关闭数据库为例,如果需要关闭多个SID不同的数据库,只需要将

export ORACLE_SID = scott

替换为

export ORACLE_SID = $1

在调用该脚本的时候,输入

# ./dbstop.sh scott

# ./dbstop.sh pdmdb

……

这样可增加脚本的灵活性。

6 结语

Shell脚本是一种功能强大的处理工具,通过与AIX服务器开机任务和计划任务的结合使用,并通过多脚本联合调用,可以展现更为强大的多任务处理能力。从而最终实现业务的自动化,大大降低了服务器管理员及应用系统管理员的重复工作量,减少了重复工作中的出错概率,也保证了业务系统的稳定性和安全性。

上一篇:GPON网络中的ONU设备代码故障处理分析 下一篇:基于哈希算法的以太网网桥的设计与实现