bash-awk文件比较
通过bash脚本读取,使用awk解析文件并获取变量bash-awk文件比较,bash,file,compare,Bash,File,Compare,通过bash脚本读取,使用awk解析文件并获取变量 I have a config [LogicalUnit1] UnitInquiry "NFSN00Y5IP51ZL" LUN0 /mnt/extent0 64MB [LogicalUnit2] UnitInquiry "NFSN00N49CQL28" LUN0 /mnt/extent1 64MB [LogicalUnit3] UnitInquiry "NFSNBRGQOCXK" LUN0 /mnt/extent4 10MB [Lo
I have a config
[LogicalUnit1] UnitInquiry "NFSN00Y5IP51ZL" LUN0 /mnt/extent0 64MB
[LogicalUnit2] UnitInquiry "NFSN00N49CQL28" LUN0 /mnt/extent1 64MB
[LogicalUnit3] UnitInquiry "NFSNBRGQOCXK" LUN0 /mnt/extent4 10MB
[LogicalUnit4] UnitInquiry "NFSNE7IXADFJ" LUN0 /mnt/extent5 25MB
这将在启动时正确初始化lun,但是如果添加lun,它将重新创建所有lun。如何比较正在运行的lun和已配置的lun,并仅重新初始化尚未运行的lun?有一个命令列出设备
awk '/UnitInquiry/ {print $1, $3, $5, $6}' $ctld_config | while read a b c d ; do
if [ -f $a ]
then
ctladm create -b block -o file=$c -S $b -d $a
ctladm devlist -v > $lun_config
else
truncate -s $d $c ; ctladm create -b block -o file=$c -S $b -d $a
fi
为什么不在
之后添加以下内容
:
ctladm devlist -v
LUN Backend Size (Blocks) BS Serial Number Device ID
0 block 131072 512 "NFSN00Y5IP51ZL [LogicalUnit1]
lun_type=0
num_threads=14
file=/mnt/extent0
1 block 131072 512 "NFSN00N49CQL28 [LogicalUnit2]
lun_type=0
num_threads=14
file=/mnt/extent1
2 block 20480 512 "NFSNBRGQOCXK" [LogicalUnit3]
lun_type=0
num_threads=14
file=/mnt/extent4
3 block 51200 512 "NFSNE7IXADFJ" [LogicalUnit4]
lun_type=0
num_threads=14
file=/mnt/extent5
这将
- 运行显示当前活动设备的命令
- 检查是否已列出要注册的LogicalUnit名称,如果是
- 跳过循环的其余部分
如果
$a
(逻辑单元名称)不够唯一,您还可以grep
获取另一个更唯一的标识符,例如序列号。很好,这很好。。。现在了解如何删除配置中不再配置的LUN:)
ctladm devlist -v | grep -q "$a" && continue