こんにちは私はawkで/proc/ Interruptsファイルからeth割り込みの数を読み取り、CPUコアごとの割り込みの総数を見つけるためのスクリプトが必要です。それから私はそれらをbashで使用したいと思います。ファイルの内容は次のとおりです。
CPU0 CPU1 CPU2 CPU3
47: 33568 45958 46028 49191 PCI-MSI-edge eth0-rx-0
48: 0 0 0 0 PCI-MSI-edge eth0-tx-0
49: 1 0 1 0 PCI-MSI-edge eth0
50: 28217 42237 65203 39086 PCI-MSI-edge eth1-rx-0
51: 0 0 0 0 PCI-MSI-edge eth1-tx-0
52: 0 1 0 1 PCI-MSI-edge eth1
59: 114991 338765 77952 134850 PCI-MSI-edge eth4-rx-0
60: 429029 315813 710091 26714 PCI-MSI-edge eth4-tx-0
61: 5 2 1 5 PCI-MSI-edge eth4
62: 1647083 208840 1164288 933967 PCI-MSI-edge eth5-rx-0
63: 673787 1542662 195326 1329903 PCI-MSI-edge eth5-tx-0
64: 5 6 7 4 PCI-MSI-edge eth5
私はこのコードでawkを使用してこのファイルを読んでいます:
#!/bin/bash
FILE="/proc/interrupts"
output=$(awk 'NR==1 {
core_count = NF
print core_count
next
}
/eth/ {
for (i = 2; i <= 2+core_count; i++)
totals[i-2] += $i
}
END {
for (i = 0; i < core_count; i++)
printf("%d\n", totals[i])
}
' $FILE)
core_count=$(echo $output | cut -d' ' -f1)
output=$(echo $output | sed 's/^[0-9]*//')
totals=(${output// / })
このアプローチでは、スクリプトで並べ替えるために、コアごとの合計コア数を処理してから、COREごとの合計割り込みを処理しますが、これでは、合計配列の数のみを処理できます。
totals[0]=22222
totals[1]=33333
しかし、CPUコアの名前を持つタプルとしてそれらを処理する必要があります。
totals[0]=(cPU1,2222)
totals[1]=(CPU',3333)
名前を配列に割り当て、themnを読み取ってSEDのタプルとしてbashする必要があると思います。どうすればこれを達成できますか?