首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

高级脚本分析

2012-03-03 
高级脚本分析-求助C/C++ code#!/bin/sh#$1md device#exit 1 scsi1 disk is faulty#exit 2 scsi2 disk is f

高级脚本分析-求助

C/C++ code
#!/bin/sh#$1    md device#exit 1 scsi1 disk is faulty#exit 2 scsi2 disk is faulty#exit 0disks=`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 removednofaulty(){    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 $1else    gotfaulty $1fi

C/C++ code
 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文件存不存在,"\"是转义符



[解决办法]
看来不是对脚本不懂 你是想问一些不常见的文件是干什么的吧
[解决办法]
剩下一句 
$(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`
[解决办法]
学习了。

热点排行