当前位置:首页 > 技术与方案 > Linux及应用

UNIX shell 脚本在系统管理中的使用技巧

(2012-09-26 15:46:22)

对UNIX系统管理员来说,日常例行要做的系统维护、管理工作是非常多而繁琐的,虽然现在各UNIX版本都有了图形界面,但对我们这些中Windows病毒太深的人来说,使用起来自然不是那么得心应手。其实UNIX也有自己的独到之处,那就是方便灵活、功能强大的UNIX shell 脚本(shell script,在有的文章中也叫shell程序)。

UNIX shell脚本是用户创建的ASCII码文件,在文件中包含着UNIX 或 shell命令,这些命令是可以在命令行提示符后键入的任何命令,包括管道、过滤器和重定向等操作。shell脚本还具有高级程序语言的一切特征,而且不需要编译和另外的命令解释程序支持。Shell脚本的强大功能不仅使简化管理员的日常工作成为可能,而且还可以实现UNIX管理工具所不能提供的功能(由于UNIX的版本很多,本文仅以HP-UX为例)。

实现不同终端登录同一帐号时执行不同的程序

一般情况下,系统管理员和普通用户登录同一帐号的目的是不同的,系统管理员登录后要进行的是系统维护,通常是在shell命令提示符下工作,而普通用户则希望登录后直接进入有关业务系统,而退出业务系统时同时退出登录。在网络终端接入模式下可以用下面的办法可以解决这个问题:
我们把系统管理员所使用的网络终端在/etc/hosts文件中定义为adm,普通用户所使用的网络终端依次定义为client1,client2,client3.......,然后在要登录的帐号的自动脚本文件.profile的适当位置添加以下代码:
who am i -R |cut -d"(" -f2|cut -d")" -f1| grep '^adm'>/dev/null 
#过滤出当前用户主机名为adm的行
if  [  $? = 0  ]
#判断过滤输出是否为空
then
exec  sh           
#进入命令提示符
else
exec  业务系统程序 
#运行业务系统
fi
如果不同的用户在同一帐号中所使用的业务系统也不同,那么上面的代码可扩充为:
term_name=` who am i -R|cut -d"(" -f2|cut -d")" -f1`
#取当前用户主机名
case "$term_name"
in
adm)  exec sh;;
client1) exec业务系统执行程序1;;
client2) exec业务系统执行程序2;;
esac

在两台主机间合理分配资源

假设有hosta、hostb两台主机,hosta上有一帐号user1用来运行一大型应用系统main,同时该系统使用的数据库也在hosta的数据库服务器dbserver中,由于受硬件资源所限,最多只能有10个用户登录到user1使用该系统,第11个用户登录后使用该系统时,出现系统资源不足的相关提示。我们可以利用UNIX远程登录信任机制和数据库网络访问模式,结合shell脚本,在hosta和hostb之间自动分配资源。
1、 把hosta和hostb分别设成数据库的服务器和客户机;
2、 在hosta中添加帐号user1,并将hosta的user1设为信任帐号(以上两步的具体步骤非本文讨论范围)
3、 在hostb的帐号user1中安装相同的应用系统;
4、 在hosta帐号user1的.profile的适当位置,加入以下脚本代码:
max_user_no = 10  #定义最大用户数
user_no=`w|grep  '^user1'|wc  -l`
#当前用户数
if  test  $user_no  -gt  $max_user_no
then
rlogin  -8  hostb user1
#自动登录到hostb
else
exec main     #在本机运行main
fi

自动删除core文件

core文件一般作为严重错误或QUIT信号的结果,产生在进程被异常中止时。程序员可以使用它来确定当进程被终止时的情况。Core文件可能很大,当不再需要时应该从系统上删除。可以执行含有以下代码的脚本来发现和清除系统上的core文件:
echo "正在搜索并删除core文件......"
find / -name core -print -exec rm {} ;  #显示并删除所有的core文件
你还可以通过corn定期执行这个脚本。
以上只是我总结工作中使用shell脚本的几个典型的例子,其实它的功能之强大远远不止这些,希望大家能够利用《网管员世界》这个空间,多多交流,互相提高。

作者:李炜

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号