我需要知道有多少应用程序连接到我的数据库。为此,我应该运行一个存储过程。输出是这样的:
CMD_EXEC: 1
IFCA_RET: 0
IFCA_RES: 0
XS_BYTES: 0
IFCA_GRES: 0
GXS_BYTES: 0
RETURN_CODE: 0
MSG: NULL
ROWNUM TEXT
1 DSNL200I -DSNC DISPLAY LOCATION REPORT FOLLOWS-
2 LOCATION PRDID T ATT CONNS
3 ::170.0.0.236 SQL09079 S 277
4 ::170.0.0.243 SQL10057 S 0
5 ::170.0.0.249 JCC04160 S 0
6 ::170.0.0.252 JCC03660 S 0
7 ::170.0.0.204 JCC04160 S 0
8 ::170.0.0.20 SQL10057 S 1
9 ::170.0.0.21 JCC03660 S 0
10 ::170.0.1.21 JCC04080 S 1440
11 ::170.0.1.231 JCC03660 S 1
12 ::170.0.7.2 JCC03640 S 0
13 ::170.0.8.241 JCC03640 S 0
14 ::170.0.8.142 JCC03690 S 0
15 ::192.168.7.2 SQL09079 S 0
16 ::192.168.1.4 JCC03650 S 5
17 ::192.168.1.5 JCC03650 S 6
18 ::192.168.1.0 JCC03690 S 0
19 ::192.168.4.0 JCC03610 S 7
20 ::192.168.4.0 JCC03610 S 2
21 ::192.168.4.0 JCC04080 S 504
22 ::192.168.1.7 SQL10055 S 1
23 DISPLAY LOCATION REPORT COMPLETE
"ADMIN_COMMAND_DB21" RETURN_STATUS: 0
该列CONNS
显示连接数。我需要用这个列创建一个数组并找到它的最大值。例如这样的:
#/bin/bash
#number of logs to offload
#number of ADBAT
#number of QUEDBAT
#number of DSCDBAT
#nmber of connections
DB2PATH=/home/db2inst1/sqllib/bin/db2
$DB2PATH connect to mydb >> /dev/null
conn_arr=$($DB2PATH "CALL SYSPROC.ADMIN_COMMAND_DB21 ('-dis
location',17,LOC,NULL,?,?,?,?,?,?,?,?)" )
echo "$conn_arr" | ????
$DB2PATH connect reset >> /dev/null
每次这个脚本的结果和行号都会改变。我应该用什么?
要获得最大连接数并将数字保存在变量
mx
中,请尝试:这个怎么运作
默认情况下,awk 一次读取一行文件。
/COMPLETE/{exit}
如果当前行与 regex 匹配
COMPLETE
,则停止读取更多行并退出到END
命令组。f{if($5+0>x)x=$5}
如果变量
f
为真(非零),则如果第 5 列中的数字大于变量x
,则设置x
为第 5 列中的值。/CONNS/{f=1}
如果当前行包含字符串 (regex)
CONNS
,则将变量设置f
为 1。这标志着表格的开始。END{print x}
在我们读完所有行之后,打印 的值
x
。<<<"$conn_arr"
告诉 awk 从 bash 变量中读取其输入
conn_arr
。这种构造称为此处字符串。