コマンドから情報を取得し、gpstate -s
削除するデバッグ情報を印刷します。特に保存したい行が一つありますが、まさにこのMaster Host
行です。環境変数として保存できるように、デフォルトホストの値(HostNameに変更)が必要です。
20210805:00:02:22:025334 gpstate:HostName:gpadmin-[INFO]:-Obtaining Segment details from master...
20210805:00:02:22:025334 gpstate:HostName:gpadmin-[INFO]:-Gathering data from segments...
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-----------------------------------------------------
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:--Master Configuration & Status
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-----------------------------------------------------
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:- Master host = HostName
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:- Master postgres process ID = 5000
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:- Master data directory = /data/master/gpseg-1
マスターホストからすべてのコンテンツをインポートして追加のコンテンツを試しましたが、gpstate -s | sed -n -e 's/^.*Master\sHost //p'
空の結果が出ました。ホスト名を取得するには、cut
afterコマンドを使用する予定です。sed
答え1
sedスクリプトに関してMaster\sHost
失敗する可能性がある理由は2つあります。
- 入力は
host
小文字で始まるため、h
一致しHost
ません。 \s
GNU sedでのみサポートされている略語で、[[:space:]]
POSIX sedまたは[ \t]
すべてのsedで使用できます。
あなたはそれを使用することができますawk
:
$ gpstate -s | awk -F'= ' '/Master host/ { print $2 }'
HostName
そしてsed
:
$ gpstate -s | sed -n '/Master host/s/.*= //p'
HostName