我必须找出属于 OmniOS (Solaris 10) 存储阵列中每个设备的物理磁盘编号。我可以通过
获取设备列表cfgadm -al | grep disk-path | cut -c 6-21 | tr 'a-z' 'A-Z'
输出可能是这样的
5000C5005CF65F14
5000C5004F30CC82
...
所以我的想法是编写一个脚本,在其中dd
每个设备并观察 LED,然后输入闪烁的 LED 的编号。由于存储阵列的两侧都有 LED,我需要能够多次运行脚本,并且每次输入磁盘位置时,我不必再次输入。
我当前的想法是循环遍历从上述命令获得的设备名称列表,然后执行类似的操作
system("dd if=/dev/dsk/c1t${device}d0p0 of=/dev/null bs=1k count=100");
print "which led flashed: ";
my $disk = <STDIN>;
chomp $disk;
system("echo $disk $device >> disk.sorted");
这会产生这样的行
21 5000C5005CF65F14
09 5000C5004F30CC82
...
我在第一种情况下看到 LED 21 闪烁,在第二种情况下看到 LED 9 闪烁。有 70 个磁盘。
我的问题
我想不出如何编写一个可以多次运行的脚本,并且每次运行它都不会破坏我之前输入的值。
有什么想法可以做到这一点吗?
我正在 Linux 上对其进行原型(prototype)设计。
最佳答案
对于每次运行 skript,将输出写入不同的文件,例如 out.1
、out.2
等。然后运行
排序-k +2。*
您将依次获得一张磁盘的所有结果。排序将根据第二列(即磁盘 ID)对给定的所有文件的内容进行排序。
关于linux - 如何对行进行多次排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913318/