如何使用 grep/regex/cut/awk/sed 等提取 drbd 状态
How to extract drbd status using grep/regex/cut/awk/sed etc
从 /proc/drbd 的输出中,我试图提取每个设备(0 和 1)的此输出的 'UpToDate/UpToDate' 部分。我试过了:
cat /proc/drbd | grep ' 0:' | grep -Eo 'ds:(.*)'
但这给了我:
ds:UpToDate/UpToDate C r-----
这不是我要找的东西(寻找 UpToDate/UpToDate 传播的插槽)或者基本上是 'UpToDate/UpToDate' 的 return。无论如何,这是输出的 /proc/drbd:
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
您可以使用以下 grep
命令:
grep -o 'ds[^[:space:]]\+' /proc/drbd
如果你不想前面的ds:
,你可以在perl
模式下使用grep(如果你有GNUgrep
):
grep -oP 'ds:\K[^\s]+' /proc/drbd
\K
清除之前匹配的所有内容 - 在本例中为 ds:
.
如果你没有 GNU grep
,你可以使用 awk
:
awk -F'[: ]' '{print }' /proc/drbd
或sed
:
sed 's/.*ds:\([^[:space:]]\+\).*//' /proc/drbd
使用下面的正则表达式:
grep -o 'ds:([^ ]*)'
您可以使用以下命令查询DRBD设备的状态:
# drbdadm role <resource>
# drbdadm cstate <resource>
# drbdadm dstate <resource>
从 /proc/drbd 的输出中,我试图提取每个设备(0 和 1)的此输出的 'UpToDate/UpToDate' 部分。我试过了:
cat /proc/drbd | grep ' 0:' | grep -Eo 'ds:(.*)'
但这给了我:
ds:UpToDate/UpToDate C r-----
这不是我要找的东西(寻找 UpToDate/UpToDate 传播的插槽)或者基本上是 'UpToDate/UpToDate' 的 return。无论如何,这是输出的 /proc/drbd:
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
您可以使用以下 grep
命令:
grep -o 'ds[^[:space:]]\+' /proc/drbd
如果你不想前面的ds:
,你可以在perl
模式下使用grep(如果你有GNUgrep
):
grep -oP 'ds:\K[^\s]+' /proc/drbd
\K
清除之前匹配的所有内容 - 在本例中为 ds:
.
如果你没有 GNU grep
,你可以使用 awk
:
awk -F'[: ]' '{print }' /proc/drbd
或sed
:
sed 's/.*ds:\([^[:space:]]\+\).*//' /proc/drbd
使用下面的正则表达式:
grep -o 'ds:([^ ]*)'
您可以使用以下命令查询DRBD设备的状态:
# drbdadm role <resource>
# drbdadm cstate <resource>
# drbdadm dstate <resource>