IBM小型机AIX操作系统总结16–AIX常用shell脚本

(需要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

猜你喜欢

转载自blog.csdn.net/zejunwzj/article/details/86185718