当前位置: 技术问答>linux和unix
高级脚本分析-求助
来源: 互联网 发布时间:2016-08-20
本文导语: 本帖最后由 qihuanfengyun 于 2010-04-19 16:17:19 编辑 #!/bin/sh #$1 md device #exit 1 scsi1 disk is faulty #exit 2 scsi2 disk is faulty #exit 0 disks=`ls /sys/block/$1/md | grep dev-sd*` gotfaulty(){ for i in $disks do if $(grep faulty /sys/block/$1/md/$i/state >...
#!/bin/sh
#$1 md device
#exit 1 scsi1 disk is faulty
#exit 2 scsi2 disk is faulty
#exit 0
disks=`ls /sys/block/$1/md | grep dev-sd*`
gotfaulty(){
for i in $disks
do
if $(grep faulty /sys/block/$1/md/$i/state > /dev/null)
then
bad=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
if [ -e /sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad ]
then
exit 1
else
exit 2
fi
fi
done
exit 0
}
#No faulty disk found, faulty disk has been removed
nofaulty(){
for i in $disks
do
if $(grep in_sync /sys/block/$1/md/$i/state > /dev/null)
then
good=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
if [ -e /sys/bus/scsi/devices/0:0:0:0/block:sd*/$good ]
then
exit 2
else
exit 1
fi
fi
done
}
if [ $2 == "no" ]
then
nofaulty $1
else
gotfaulty $1
fi
if [ -e /sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad ]
|
1.if $(grep faulty /sys/block/$1/md/$i/state > /dev/null)
这个条件也就是如果grep faulty /sys/block/$1/md/$i/state > /dev/null这个命令返回值不为0,也就是在/sys/block/$1/md/$i/state中没有"faulty"这个单词.
2. bad=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
这个是以"-"为分隔符,输出$i的第二列
$i是disks=`ls /sys/block/$1/md | grep dev-sd*`这个命令输出中的某一行
3.if [ -e /sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad ]
判断/sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad文件存不存在,""是转义符
这个条件也就是如果grep faulty /sys/block/$1/md/$i/state > /dev/null这个命令返回值不为0,也就是在/sys/block/$1/md/$i/state中没有"faulty"这个单词.
2. bad=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
这个是以"-"为分隔符,输出$i的第二列
$i是disks=`ls /sys/block/$1/md | grep dev-sd*`这个命令输出中的某一行
3.if [ -e /sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad ]
判断/sys/bus/scsi/devices/0:0:0:0/block:sd*/$bad文件存不存在,""是转义符
|
剩下一句
$(ls /sys/devices/platform/oxnassata.0/host0/target0:0:0/0:0:0:0/ | grep block: | sed 's/^.*://g')
查找/sys/devices/platform/oxnassata.0/host0/target0:0:00:0:0:0/目录下文件名含有block: 的文件 然后把找到的文件名以任意字符开始到:结束的部分去掉(替换为空) 输出
a=$(B) 就是把B执行的结果赋给a 相当于a=`B`
$(ls /sys/devices/platform/oxnassata.0/host0/target0:0:0/0:0:0:0/ | grep block: | sed 's/^.*://g')
查找/sys/devices/platform/oxnassata.0/host0/target0:0:00:0:0:0/目录下文件名含有block: 的文件 然后把找到的文件名以任意字符开始到:结束的部分去掉(替换为空) 输出
a=$(B) 就是把B执行的结果赋给a 相当于a=`B`
|
看来不是对脚本不懂 你是想问一些不常见的文件是干什么的吧
|
学习了。