1

使用 bash 脚本,我试图从 /proc/diskstats 获取所有物理磁盘

   8       0 sda 14256 20634 1376722 133628 279800 2362075 21135024 2133492 0 261052 2259536
   8       1 sda1 14105 20634 1375514 133520 279800 2362075 21135024 2133492 0 261036 2259432
   2       0 fd0 0 0 0 0 0 0 0 0 0 0 0

并以如下格式回显他们的名字

{
  "data":[
  { "{#DISK}":"sda"},
  { "{#DISK}":"sdb"},
  ]
}

我正在尝试以 Linux 2.6+ 系统支持的方式执行此操作。我还想避免可能出现在 diskstats 中的分区,这些分区有 4 个字段而不是磁盘的 11 个字段。

编辑:

我可以得到磁盘名称

cat /proc/diskstats | awk '{print $3}'

或者

cat /proc/diskstats | head -1 | awk '{print $3}'

但我不确定如何迭代和格式化它。

4

1 回答 1

2

假设您的设备名称中没有双引号(trollface.jpg),您可以为此坚持使用 awk。

BEGIN {
  print "{"
  printf "  \"data\": ["
  first=1
}

!first {
  printf ","
}

NF == 14 {
  printf "\n  { \"{#DISK}\":\""$3"\"}"
  first=0
}

END {
  print "\n  ]"
  print "}"
}
于 2012-09-18T19:13:57.923 回答