(需要Word版笔记的请私信留邮箱)
【IBM小型机AIX操作系统总结16–AIX常用shell脚本】
脚本运行
假设脚本:/mnt/test.sh
ksh /mnt/test.sh --指定shell运行文档,文档可无执行权限
chmod a+x /mnt/test.sh --给脚本增加执行权限
/mnt/test.sh --绝对路径运行脚本
以上两种方式:都是新开一个shell来运行脚本,运行完毕后,shell关闭
所以在脚本中环境变量的设置不生效。
source /mnt/test.sh --source表示,在当前shell下运行脚本,不开新shell
. /mnt/test.sh --点"."的功能和source功能一样
语法
read ming --请求从键盘输入数据赋值给变量,ming是变量
ming=`lsuser -a ALL` --当命令结果为多行数据时 ,赋值给变量,不换行存储
echo $ming
read ming < /mnt/f1 --读取文档中的第一行文字,赋值给变量
运算:
expr 和
let 求和
bc 计算器
大于,等于,小于
shell范例1:如下
shu=1
while read hang --组合结构,逐行读取文档内容,并赋值给变量
do
echo No. $shu $hang
let shu=$shu+1
done < /mnt/f1
shell范例2:如下
逐行读取文档内容,并把每列的值赋值给对应的变量
while read c1 c2 c3
do
echo $c2
done < /mnt/f1
例1:巡检CPU,当使用率超过70%时,记录占CPU最高的前10个进程
date +"20%y-%m-%d %H:%M:%S" >> /mnt/cpu.log
shu=`sar 1 1 | tail -n 1 | awk '{print $5}'`
if [ $shu -le 30]; then
ps aux | sort -rn -k3 | head -n 10 >> /mnt/cup.log
fi
echo "" >> /mnt/cpu.log --目的输入空行,看着清晰
例2:巡检文件系统,查找使用率超过70%的FS,记录日志
##去除左侧字符
%%去除右侧字符
date +"20%y-%m-%d %H:%M:%S" >> /mnt/fs.log
df -g | sort -rn -k4 | head -n -3 > /tmp/fs.tmp
while read hang
do
shu =`echo $hang | awk '{print $4}'`
shu2 =${shu%%\%*} (用cut也可以实现)
if [$shu2 -ge 70 ];then
echo $hang >>/mnt/fs.log
fi
done < /tmp/fs.tmp
echo "" >> /mnt/fs.log
rm -f /tmp/fs.tmp
例3:杀死内存中的僵尸进程
date +"20%y-%m-%d %H:%M:%S" >> /mnt/process.log
ps -ef | grep defunc >> /tmp/process.tmp
cat /tmp/process.tmp >> /mnt/process.log
while read hang
do
pid=`echo $hang | awk '{printt $2}'`
kill -9 $pid
done < /tmp/process.tmp
echo "" >> /mnt/process.log
rm -f /tmp/process.tmp