โแแ แแฅ,โ แแแแแแก แแก แแ แแแฃแแแแแแก แแแ แแแแ แแ แ-แแ แ แกแแแแแแแแ, โแแ แแแแแแ แฉแแแก แฌแแแแ แฅแฃแแก, แ แแ แแฃ แแฅ แแแแแแแขแแแ แแแแก, แ แแช แแฎแแ แแแแแแแแแแแแแโ, แแแฃแแแแแแก แแแแแก แกแฎแแ แแแแงแแคแแแแแแแ, โแจแแชแแแแ แแฆแแ แแฅแแแแ. แแแฉแแแแแแ แแฅแแแแโ.
แชแแขแ แกแแแแแแแแแจแ แฉแแแแ แแแแแ แแ แแแฆแแแแ, แแแชแแแ sed แแแแแแแแฅแแแแก, แ แแแแแแแช แชแแขแ แฎแแแ แแแฃแจแแแแแแ, แจแแแแแฎแ แคแแแแ แแ แแแฃแจแแแ systemctl varnish reload
. แจแแชแแแแแก แจแแขแงแแแแแแแ แแแฅแ แ...
โแแ.แฌแแ แแแ, แ แแแแแแช แแแแชแแแแ แแแแแแแแขแแแ,โ แแแแแแ แซแ แฉแแแแ แแแแแแแ, แ แแแแกแแช แแแกแ แฆแแแแแ แแแแแแแแ แแ แกแแฎแแ แฃแแแก แแฃแแฌแ แคแแ แฆแแแแแจแ, โแฃแชแแ แแแแฎแแแ, แ แแ แแก แแ แแก แแฃแกแขแแ แแแแแ แแ แแแแแแ!โ
แ แแแแ แแแแฌแงแ แแก แงแแแแแคแแ แ
แกแขแแขแแ แแแแแแแกแฌแแแแแก แแแแก แแแแแแแก, แแฃ แ แแแแ แแฃแจแแแแก bash, awk, sed แแ systemd. แแแฅแแก แชแแแแ แกแแกแฃแ แแแแแ, แแแแ แแ แแ แ แกแแแแแแแแฃแแ.
แแ แแแแ แแแแแแญแแแแ แกแแแแแขแแแจแ แจแแแชแแแแ.
แแแฌแแ แแแ แแ แแแ
แแก แขแแฅแกแขแ แแ แแก แแ แ แแแแ แแก แฌแแ แแแแแแกแฃแ แแแแแ แแแแแชแแแฃแแ แแ แแแแแแแแก แแแ แแแแแ; แแแ แแแแแ
แแแ แแแแแแแก แแแแแ แแแฃแแ แคแแแฏแ แแแแแแ แจแแแแแแแแแก แแแแแ แแ แ แแแแ แแแแแก, แแฎแแแ แแแแแแแแแฃแแ แแแคแแแแแ แแแแแแ แ แกแแกแแแแ แแแแแแแขแฃแ แแก แแแจแแ แแแแ แแงแ แแแแแ, แงแฃแ แกแแกแแแแแแจแ แแฆแแ แก แแฅแแแแ แกแแงแแแ แแแ แแแแ แแแแก แกแแแคแแแแ, แแฎแจแแแก แแแฅแแแแแฃแ แ แแแแแแแขแฃแ แแแแก แจแ แแแแก แแ แแแ แแแแ แฉแแแแฌแแ แ แฉแแแแ แฉแแแแแ แแแแแแแแแก แกแแแจแ แแแแแแแแก แแแคแแแ แแฎแแแ แฃแแแ แแแแแแแก แกแแแแแแกแฌแแ แ แกแแแแฃแ แแ โInvestigate varnishreloadโ sh: echo: I/O error in stagingโ (แแแแแแแแแแแ โvarnishreload sh: echo: I/O แจแแชแแแแโ แแแแแแแจแ). แ แแช แจแแแฎแแแ แแแฅแก, แจแแชแแแแแแแกแแแแก แแ แแก แแ แแ แจแแแซแแแแ แแงแแก แแแแแแ, แแแจแแแแช แแ, แแฃ แแกแแแ แแ แฌแแ แแแฅแแแแแ แ แแแแ แแ แแแแแแแก, แ แแแแ แช แแ แจแแแแฎแแแแแจแ.
แแแแแแแก, แแแแช แแ แแชแแแแก
แ แแแแ แช แแแแแแแก แกแแแแฃแ แแแแ แฉแแแก, แจแแชแแแแ แแแฎแแ แกแชแแแแแ แแแแแแ แ แแ แ-แแ แ แกแแ แแแ แแ แแ แ แแแแแ แแแ แฌแแฃแแแแฃแแ แแแงแแแ, แ แแ แกแชแแแแแ แแแฅแแก แแแ แจแ แฃแขแ แแแแแ แแฃแแแ แแฃแจแแแแแ, แฉแแแแแแแ, แ แแ แแก แแฅแแแแแแ แฃแแแแจแแแแแ แจแแชแแแแ. แแกแ แ แแ, แแฎแแแแ แจแแขแงแแแแแแแ, แ แแแแแแช แแแกแ แฃแแแ แฃแแแ แแแฎแฃแ แฃแ แแแแแแแแแ แแแแแแจแ. แแแแแแก แแแฆแแ แฉแแแแแแก, แกแ แฃแแ แแแ แฌแแฃแแแแแ, แ แแ 30 แฌแฃแแแ แแแแแแ แแ แแจแ แแแแแแจแแแ แแแแแงแแคแแแก, แแฃแ แแแ แแแคแแ แแแ, แ แแ แแแคแ แแแแแ แแ แแ แแแแแแกแแแ แแแแฌแแแแแ แแ แฃแคแ แ แแแแจแแแแแแแแ แกแแแแแฎแแแก แแฃแแ แฃแแแแแ.
แแแแแแก แแแแฏแแฎแ 200 แแ/แกแ แกแแฉแฅแแ แแ
แคแแแแแก แแแฎแกแแ varnishreload
, แแ แ-แแ แ แกแแ แแแ แแ, แ แแแแแแช แแฃแจแแแแก Debian Stretch-แแ, แแแแฎแ shell แกแแ แแแขแ 200 แกแขแ แแฅแแแแ แแแแแแแ แกแแแ แซแแ.
แกแแ แแแขแแก แแแแแแก แจแแแแแ, แแ แแแ แจแแแแแฉแแแ แแกแแแ แ แแ, แ แแแแช แจแแแซแแแแ แแแแแแฌแแแแก แแ แแแแแแแแ, แ แแแแแแฏแแ แแ แแแ แแแแแ แขแแ แแแแแแแแแ แแแจแแแแแกแแก.
แแก แฎแแ แกแชแแแแ, แ แแแช แแแขแงแแแก, แแ แแแแ แฌแฃแฌแฃแแแแก, แแแ แแ... แแ แช แแกแ แแแแ แ. แกแแ แแแขแก แแฃแจแแแ แแ แแแแฎแแ แ แ แฉแแแฌแแ แแแ แขแแ แแแแแแจแ, แแแแ แแ แจแแชแแแแแแ แแฆแแ แฉแแแก.
แแแแแ แ แแแแแแแแ แแแจแแแแ, แ แแแ แแแแ แฌแแฃแแแ, แ แแ แจแแชแแแแแก แ แแแ แแแฃแชแแ แแแ แแ แจแแแแซแแแ แแแแแขแแแแแ แซแแแแกแฎแแแแแก แแแ แแจแ แแ แแแฌแงแแ แแแแก แแแ แแแแแแก, แแฃ แ แแแแ แจแแแชแแแแ แแก แกแแ แแแขแ แแ แแก แแแแแช แแแแแแแแแก แจแแชแแแแแจแ.
แจแแฃแซแแแ แแฃ แแ แ แกแแ แแแขแก แแแแแแแฎแแก STDOUT (แแแแแงแแแแแแ > &-
)? แแ STDERR? แแแแแก แแ แชแแ แแแ แแ แแแฃแจแแแ.
แ แแแแ แช แฉแแแก, systemd แ แแขแแแฆแแช แชแแแแก แกแขแแ แขแแ แแแ แแแแก, แแแแ แแ แ แแแแ แแ แ แแขแแ?
แแฎแกแแ vim-แก แแ แแแกแฌแแ แแ varnishreload
, แแแกแซแแแ set -x
แแฃแกแขแแ shebang-แแก แฅแแแจ, แแ แแแแแแ, แ แแ แกแแ แแแขแแก แแแแแ แแแแก แจแแแแแ แแแ แแแแฃแ แจแฃแฅแก แแแฐแคแแแก.
แคแแแแ แแแกแฌแแ แแแฃแแแ, แแกแ แ แแ แแแแแแขแแแ แแแ แแแฅแก แแ แแฎแแแแ, แ แแ แชแแแแแแแแ แแแแแแแแ แแแแ แฆแแแ แงแแแแแคแแ แ... แแแแแแแแแแฅแแ แแ แแก แกแ แฃแแ แแ แแฃแแแแ, แ แแแแแจแแช แแ แแก แขแแแ C-แแก แแกแแแแกแ แแแแ. แขแแ แแแแแแจแ แแแแแฎแแแแแช แแ แแ แแ แแก แกแแแแแ แแกแ แแแแกแแแแก, แ แแ แแแแแแ แแก, แกแแแแแ แแฌแงแแแ. แกแ แฃแแแแ แแแแแแฃแแ แแแ . แจแแฃแซแแแ แแฃ แแ แ แแแแแ แแแแก แ แแแแแก แแแแแแแ แแแแฎแแแแแก แกแแ แแแขแจแ แแแจแแแแฃแแ แแ แแแ แแแแแแก แแฃแจแแแแแแ? แแ แ, แกแแกแฃแแแแแ. แฎแแ แแแแ แญแฃแ แแแจแ? แ แแแแแแแแ แจแแกแแซแแ แกแชแแแแ แ แขแแ แแแแแแแแแ แแแขแ แแแแแแก แแแแจแ แกแฎแแแแแกแฎแแ แแแแแ แแฃแแแแแ. แแแคแแแแแก แจแแแชแแแแ แกแแกแแแแแก แญแแฅแ แแงแแกแแแ แแ แแชแแแแ, แกแฌแ แแคแ แแแแแแแแ แแแ แกแแแแแ แแฃแแแจแ แแแ แแแแก แจแแกแแแกแแแแ แแ... แฌแแแแแแ. แแ แแฎแกแแ แกแแ แแแขแก แแ แฃแคแ แ แแฎแแแก แแแแแแแแแ แแ แจแแแแแแก: #!/bin/sh
.
/bin/sh
- แแก แแฎแแแแ แแแจแแก แกแแแแแแฃแ แ แแแฃแแแ, แแกแ แ แแ, แกแแ แแแขแแก แแแขแแ แแ แแขแแชแแ แฎแแแแ POSIX-แแแ แแแแกแแแแ แ แแแแแจแ, แแ แ? แฒแกแ แแ แ! Debian-แแ แแแแฃแแแกแฎแแแแ แแแ แกแ แแ แแก dash แแ แแฃแกแขแแ แแกแ แแแแแแงแฃแ แแแ. /bin/sh
.
# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan 24 2017 /bin/sh -> dash
แขแแกแขแแ แจแแแชแแแแ แจแแแแแแ #!/bin/bash
, แฌแแจแแแแแ set -x
แแ แแกแแ แกแชแแแ. แกแแแแแแแ, แแแฅแแก แจแแแแแแแ แแแแแขแแแ แแแแกแแก, แแแแแแแแแแจแ แแแแแฉแแแ แขแแแแ แแแขแฃแแ แจแแชแแแแ:
Jan 01 12:00:00 hostname varnishreload[32604]: /usr/sbin/varnishreload: line 124: echo: write error: Broken pipe
Jan 01 12:00:00 hostname varnishreload[32604]: VCL 'reload_20190101_120000_32604' compiled
แฎแแแ 124, แแฅ แแ แแก!
114 find_vcl_file() {
115 VCL_SHOW=$(varnishadm vcl.show -v "$VCL_NAME" 2>&1) || :
116 VCL_FILE=$(
117 echo "$VCL_SHOW" |
118 awk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}' | {
119 # all this ceremony to handle blanks in FILE
120 read -r DELIM VCL_SHOW INDEX SIZE FILE
121 echo "$FILE"
122 }
123 ) || :
124
125 if [ -z "$VCL_FILE" ]
126 then
127 echo "$VCL_SHOW" >&2
128 fail "failed to get the VCL file name"
129 fi
130
131 echo "$VCL_FILE"
132 }
แแแแ แแ, แ แแแแ แช แแ แแแแแ, แฎแแแ 124 แกแแแแแแ แชแแ แแแแแ แแ แแ แแ แแก แกแแแแขแแ แแกแ. แแ แจแแแแซแแ แแฎแแแแ แแแแแ แแฃแแ, แ แแ แจแแชแแแแ แแแฎแแ 116-แ แกแขแ แแฅแแแแแแ แแแฌแงแแแฃแแ แแ แแแแแฎแแแแแแแ แกแขแ แแฅแแแแก แแแฌแแแแ.
แ แ แแฌแแ แแแ แชแแแแแจแ? VCL_FILE
แแแแแแฆแแแจแแฃแแ แฅแแ-แจแแแก แจแแกแ แฃแแแแแก แจแแแแแแ?
แแแกแแฌแงแแกแจแ แแก แแแแแแแแก แชแแแแแแก แจแแแแแ แกแก VLC_SHOW
, แจแแฅแแแแแแ 115 แฎแแแแ, แแแแแก แแแจแแแแแแ แแ แซแแแแแแก แจแแแแแ. แแ แแแ แ แ แ แฎแแแแ แแฅ?
แแแ แแแ แ แแแจแ, แแก แแฅ แแแแแแงแแแแแ varnishadm
, แ แแแแแแช แแ แแก แแแฅแแก แกแแแแแขแแแ แแแแแขแแก แแแฌแแแ, แแแฅแแก แแแแแขแแแ แแแแก แแแ แแจแ แแแกแแงแแแแแแแ.
แฅแแแแฃแแแ vcl.show -v
แแแแแแงแแแแแ แแแแแ VCL แแแแคแแแฃแ แแชแแแก แแแแแกแแขแแแแ, แ แแแแแแช แแแแแแแแฃแแแ ${VCL_NAME}
, STDAUT-แแแ.
แแแแแแแแ แ แแฅแขแแฃแ แ VCL แแแแคแแแฃแ แแชแแแก, แแกแแแ แ แแแแ แช แแแฅแแก แแแ แจแ แฃแขแแก แแแแคแแแฃแ แแชแแแก แ แแแแแแแแ แฌแแแ แแแ แกแแแก แกแแฉแแแแแแแแ, แ แแแแแแแช แฏแแ แแแแแ แแแฎแกแแแ แแแแจแแ, แจแแแแซแแแแ แแแแแแงแแแแ แแ แซแแแแแ varnishadm vcl.list
, แ แแแแแก แแแแแแแแแแ แแฅแแแแ แฅแแแแแ แแแชแแแฃแแแก แแกแแแแกแ:
discarded cold/busy 1 reload_20190101_120000_11903
discarded cold/busy 2 reload_20190101_120000_12068
discarded cold/busy 16 reload_20190101_120000_12259
discarded cold/busy 16 reload_20190101_120000_12299
discarded cold/busy 28 reload_20190101_120000_12357
active auto/warm 32 reload_20190101_120000_12397
available auto/warm 0 reload_20190101_120000_12587
แชแแแแแ แแแแจแแแแแแแ ${VCL_NAME}
แแแแแกแขแแแแ แแแฃแแแ แกแแ แแแขแแก แกแฎแแ แแแฌแแแจแ varnishreload
แแแแแแแ แแฅแขแแฃแ แ VCL-แแก แกแแฎแแแแ, แแฃ แแ แกแแแแแก. แแ แจแแแแฎแแแแแจแ แแฅแแแแ "reload_20190101_120000_12397".
แแแแ, แชแแแแแแแแ ${VCL_SHOW}
แจแแแชแแแก แแแฅแแก แกแ แฃแ แแแแคแแแฃแ แแชแแแก, แแฎแแ แแแแแแแ. แแฎแแ แกแแแแแแแ แแแกแแแก, แ แแขแแ แแ แแก แขแแ แ แแแแแแแแแแ set -x
แแฆแแแฉแแแ, แ แแ แแกแ แแแขแแฎแแแ แแงแ - แแแกแจแ แจแแแแแแ แแแฆแแแฃแแ แแแแคแแแฃแ แแชแแแก แจแแแแแ แกแ.
แแแแจแแแแแแแแแแ แแแแกแแแแแก, แ แแ VCL-แแก แกแ แฃแแ แแแแคแแแฃแ แแชแแ แฎแจแแ แแ แจแแแซแแแแ แ แแแแแแแแ แคแแแแแแแ แแงแแก แแแแแ แแแแแแฃแแ. C แกแขแแแแก แแแแแแขแแ แแแ แแแแแแงแแแแแ แแแแก แแแกแแแแแแแ, แแฃ แกแแ แแ แแก แจแแขแแแแแ แแแ แแแแฃแแ แแแแคแแแฃแ แแชแแแก แคแแแแแแ แกแฎแแแแจแ แแ แกแฌแแ แแ แแก แแ แแก แแแแแก แคแ แแแแแแขแแก แจแแแแแแ แฎแแแ.
แฉแแ แแฃแแ แคแแแแแแแก แแฆแฌแแ แแก แแแแแแขแแ แแแแก แกแแแขแแฅแกแ แจแแแแแแ แคแแ แแแขแแ แแ แแก:
// VCL.SHOW <NUM> <NUM> <FILENAME>
แแ แแแแขแแฅแกแขแจแ แ แแชแฎแแแแ แแ แแ แแก แแแแจแแแแแแแแแ, แฉแแแ แแแแแแขแแ แแกแแแก แคแแแแแก แกแแฎแแแ.
แ แ แฎแแแแ แกแแแแแแแ 116-แ แกแขแ แแฅแแแแ แแแฌแงแแแฃแแ แแ แซแแแแแแแแก แญแแแแจแ?
แแแแ แแแแฎแแ.
แแฃแแแ แจแแแแแแ แแแฎแ แแแฌแแแแกแแแแ:
- แแแ แขแแแ
echo
, แ แแแแแแช แแแญแแแแก แชแแแแแแก แแแแจแแแแแแแแก${VCL_SHOW}
echo "$VCL_SHOW"
awk
, แ แแแแแแช แแซแแแก แฎแแแก (แฉแแแแฌแแ แก), แกแแแแช แแแ แแแแ แแแแ, แขแแฅแกแขแแก แแแขแแฎแแแก แจแแแแแ, แแ แแก โ//โ, แฎแแแ แแแแ แ แแ แแก โVCL.SHOWโ.
Awk แแแฌแแ แก แแแ แแแ แกแขแ แแฅแแแก, แ แแแแแแช แจแแแกแแแแแแแ แแ แจแแแแแแแแก แแ แจแแแแแ แแแฃแงแแแแแแแแ แจแแฌแงแแแขแก แแแแฃแจแแแแแแก.awk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}'
- แแแแแก แแแแแ, แ แแแแแแช แแแแฎแแแก แแแแแก แแแแจแแแแแแแแแก แฎแฃแ แชแแแแแแ, แแแแแงแแคแแแ แกแแแ แชแแแแแ. แแแฎแฃแแ FILE แชแแแแแ แแฆแแแก แแแ แฉแแแแ แฎแแแก. แกแแแแแแแ, แแแแ แแฅแ แฌแแ แก แชแแแแแแก แจแแแแแ แกแก
${FILE}
.{ read -r DELIM VCL_SHOW INDEX SIZE FILE; echo "$FILE" }
- แแแแแแแแ แงแแแแ แแแแแฏแ 1-แแแ 3-แแแ แแ แแก แฉแแกแแฃแแ แฅแแแจแแแจแ, แแแแแแแก แแแแจแแแแแแแ
$FILE
แฉแแแฌแแ แแแ แชแแแแแแVCL_FILE
.
แ แแแแ แช แกแขแ แแฅแแแแ 119-แแก แแแแแแขแแ แ แแแแแแแแแแก, แแก แแแกแแฎแฃแ แแแ แแ แแแแ แแแแฃแ แแแแแแก แกแแแแแแแ แแแฃแแแแแแแแก แกแแฅแแแแแก, แ แแแแกแแช VCL แแแฃแแแแแแก แคแแแแแแก แจแแ แแก แแแขแแ แแแแแ แแแ แกแแฎแแแแแจแ.
แแ แแแแแแแแแแขแแ แ แแ แแแแแแแฃแ แ แแแแฃแจแแแแแแก แแแแแแ ${VCL_FILE}
แแ แชแแแแแแแ แแ แซแแแแแแก แแแแแแแแแแ แแแแก แจแแชแแแแก, แแแแ แแ แแแแ แแแ แแคแแ แ แแแแแแฌแแแ. แงแแแแแคแแ แ แแแ แแแ แแฃแจแแแแแ, แแแแ แแ แ แแชแ แกแแ แแแกแ แแแแแฌแงแ, แจแแชแแแแ แแแฃแจแแ.
แ แแแแ แช แฉแแแก, แกแแ แแแขแแก แฎแแแแ แแแจแแแแแกแแก แจแแชแแแแ แฃแแ แแแแ แแ แแฌแแ แแแแแ, แแแจแแ แ แแชแ แกแแแแ แแฃแแ 30 แฌแฃแแ แฃแแแ แแฅแแกแฏแแ แแแแแฌแฃแ แ แแ, แแแ แแ แแแแกแ, แแแฉแแแ แฃแคแ แ แแ แแแ แแขแแขแฃแแ แแแแแแแแ, แ แแแแแแช แกแฎแแ แกแแแแแฎแแแก แแแแแ แแงแแแแแก. แแแแ แแก แแแแแ แฉแแแ แแแ แแแแ แกแแแกแ แแงแ แกแฎแแแแแกแฎแแ แแแแชแแแแแแ แแ แแฎแแแแ แแแแแ แแแแแแแแแฃแแ แแงแ แกแแแแ แแแฎแกแแแแแแ แแ แแแแแแแแขแแแ แแแกแแฃแแ แแแแ. แแ แแแแแแ แจแแชแแแแแ varnishreload
แจแแฃแฅแชแแแแ แแแแแแ แแ แแ แแแก แฅแแแจแแจแ.
แจแแแ แแแ แแแฌแแแแแฃแแ แกแแ-แคแฃ... แกแแแแแแแแแแจแ... แแแแแแแ
แแแแแแแแ แแแแ แแก แแ แแ แกแแแแแแ แแแแแกแฃแคแแแ แแฆแ แแฅแแแแ, แแแแขแแ แแแแแแฌแงแแแขแ แแ แแแแแแแก แฎแแแแฎแแ แแแซแแแแ. แแแแแ แแฅแแแแ, แ แแ แฉแแแก แขแแแแจแ แ แแฆแแช แคแแแฃแ แ แแ แแชแแกแ แแแแแ แแ แฎแแแก แแแแแแแแแแแจแ แแซแแแแ แแ แแ แแแแแแแก แแแแแฌแงแแแขแแก แแ แแแฏแแ แแ แแฃแชแแแแแแแ แแแแแแแแแ แ แ แฎแแแแแแ.
แแแแแแแแ แแแแแก แฃแแ แแแแ แจแแชแแแ แแ แแแแแฎแแแ แ แแแแ แฏแแ แแ, แแ แฃแแ แแแแ แแแแแแฌแงแแแขแ แแแกแ แแแแแฌแแ แ 116-แ แกแขแ แแฅแแแแแแ แแแฌแงแแแฃแแ. แงแแแแ แจแแแแฎแแแแแจแ, แแ แกแแแฃแแ แแแแ แกแฃแแแแฃแ แ แแงแ. แแ แแแกแแแฃแขแฃแ แแ แแ แแ แแก แกแแญแแ แ แแแกแ แแแแแงแแแแแ read
.
แแแแแ แแ แแฎแแ แแฃแงแฃแ แแ แจแแชแแแแแก:
sh: echo: broken pipe
- แแ แแ แซแแแแแแจแ แแฅแ แแ แแแแแแแก แฉแแแแแ, แแแแ แแ แแ แแญแแ แแแฅแแก, แ แแ แแแ แแแแ แฃแคแ แ แกแแแแ แแฃแแ แแแแแแจแแแแ (แแ แแฃแแแแช แแแแแแแแแฌแแแ). Awk แแ แช แแแแแแก แจแแแแแแแแแก. แแ แแฃ แแแ แแแ แแกแแ awk | {read; echo}
แแแแแแแ แแฌแแแแก แงแแแแ แแ แแ แแแแแแแก, แ แแขแแ แแ แฃแแแ แจแแชแแแแแ แแแ? แแก แแ แแกแขแ แแฅแแแแแแ แแ แซแแแแแ แแ แแงแแแแแก awk-แแก แงแแแแ แแแฎแแกแแแแแแแแก แแ แแฃแแแแช แแ แแแแแขแแแแ read
แแแ แแ แแแแกแ.
แแแกแฃแ แแแแ แแก แแงแ แแแฎแกแแแแแ sed
, แแแแแแแ แแแแแแแชแแแ แแฎแแแ แจแแซแแแแแ แฃแแแ แแแ แแ แแแแแแแ แขแแแแแแแ echo | awk | { read; echo}
แฃแคแ แ แแแกแแแแแแ echo | sed
. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แแแแแแแแแ แแ แแ แแก แกแแฃแแแแแกแ แแแแแแแ แฎแแ แแแแแก แแแแแขแแคแแชแแ แแแแกแแแแก, แแ แแแคแแฅแ แ, แ แแ แกแฃแ แชแแขแ แฉแแแ sed-fu แแแแแแแชแแแ แแ แแฅแแแ แ แแแแ แแฎแแแ แแแกแฌแแแแ แแ แแแแแแแก แจแแกแแฎแแ. แแแแจแ แฉแแแก แแแแแแแก, แกแแ แแแแฎแแแแแก แแแขแแ แก แแแฎแแแ, แแแแแฎแแแ แ แฃแคแ แ แแคแแฅแขแฃแ แ แกแแ แกแชแแแแ แแก แจแแแฃแจแแแแแแจแ.
แจแแแแแแกแ แฉแแแแแงแแ แ varnishadm vcl.show -v "$VCL_NAME"
แคแแแแแ, แแกแ แ แแ แแ แจแแแแซแแ แคแแแฃแกแแ แแแ sed แกแแ แแแขแแก แแแฌแแ แแแ แกแแ แแแกแแก แแแแแขแแแ แแแแก แแแ แแจแ.
แแแแแ แแฆแฌแแ แ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แแแฃแจแแแแแก sed แจแแงแแแแแก, แจแแแแซแแแแ แแแฎแแ n
แชแแแกแแฎแแ แแแแแแแแฃแแ, แ แแแแ แช แฎแแแแก แแแแงแแคแ.
แ แแแแแแแแ แแแกแจแ แแ แฉแแแ แแแแแแแก แ แแแแแแแแแชแแแ, แฉแแแ แแแแฌแแ แแ sed แกแแ แแแขแ, แ แแแแแแแช แแแแแ แจแแแแแ แแแแแแฆแ, แ แแแแ แช แแแแแแแ แแ แแแแแแแฃแ แ แฎแแแ 116.
แฅแแแแแ แแแชแแแฃแแแ แคแแแแแก แแแแฃแจแ แจแแงแแแแแก แแแแแชแแแแแแ:
> cat vcl-example.vcl
Text
// VCL.SHOW 0 1578 file with 3 spaces.vcl
More text
// VCL.SHOW 0 1578 file.vcl
Even more text
// VCL.SHOW 0 1578 file with TWOspaces.vcl
Final text
แแก แจแแแซแแแแ แแ แแงแแก แแจแแแ แ แแแแแ แแแชแแแฃแแ แแฆแฌแแ แแแแแแแแ, แแแแ แแ แฉแแแ แแฎแแแแ แแแ แแแแ แแแแแแขแแ แ แแแแแแขแแ แแกแแแก // VCL.SHOW
, แแ แจแแแซแแแแ แแงแแก แ แแแแแแแแ แแแแแแแ แจแแงแแแแแก แแแแแชแแแแแจแ. แกแฌแแ แแ แแแแขแแ แแแแแ แแแแ แแ แแแแแแแฃแ แ แแแแ แแแ แแแแ แแแขแฉแแก แจแแแแแ.
# ัะฐะณ ะฟะตัะฒัะน, ะฒัะฒะตััะธ ัะพะปัะบะพ ัััะพะบะธ ั ะบะพะผะผะตะฝัะฐัะธัะผะธ
# ะธัะฟะพะปัะทัั ะฒะพะทะผะพะถะฝะพััะธ sed, ะพะฟัะตะดะตะปัะตััั ัะธะผะฒะพะป-ัะฐะทะดะตะปะธัะตะปั ั ะฟะพะผะพััั ะบะพะฝััััะบัะธะธ '#' ะฒะผะตััะพ ะพะฑััะฝะพ ะธัะฟะพะปัะทัะตะผะพะณะพ '/', ะทะฐ ัััั ััะพะณะพ ะฝะต ะฟัะธะดัััั ัะบัะฐะฝะธัะพะฒะฐัั ะบะพััะต ะฒ ะธัะบะพะผะพะผ ะบะพะผะผะตะฝัะฐัะธะธ
# ะพะฟัะตะดะตะปัะตััั ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต โ// VCL.SHOWโ, ะดะปั ะฟะพะธัะบะฐ ัััะพะบ ั ะพะฟัะตะดะตะปะตะฝะฝัะผ ัะฐะฑะปะพะฝะพะผ
# ัะปะฐะณ -n ะฟะพะทะฐะฑะพัะธััั ะพ ัะพะผ, ััะพะฑั sed ะฝะต ะฒัะฒะพะดะธะป ะฒัะต ะฒั
ะพะดะฝัะต ะดะฐะฝะฝัะต, ะบะฐะบ ะพะฝ ััะพ ะดะตะปะฐะตั ะฟะพ ัะผะพะปัะฐะฝะธั (ัะผ. ัััะปะบั ะฒััะต)
# -E ะฟะพะทะฒะพะปัะตั ะธัะฟะพะปัะทะพะฒะฐัั ัะฐััะธัะตะฝะฝัะต ัะตะณัะปััะฝัะต ะฒััะฐะถะตะฝะธั
> cat vcl-processor-1.sed
#// VCL.SHOW#p
> sed -En -f vcl-processor-1.sed vcl-example.vcl
// VCL.SHOW 0 1578 file with 3 spaces.vcl
// VCL.SHOW 0 1578 file.vcl
// VCL.SHOW 0 1578 file with TWOspaces.vcl
# ัะฐะณ ะฒัะพัะพะน, ะฒัะฒะตััะธ ัะพะปัะบะพ ะธะผั ัะฐะนะปะฐ
# ะธัะฟะพะปัะทัั ะบะพะผะฐะฝะดั โsubstituteโ, ั ะณััะฟะฟะฐะผะธ ะฒะฝัััะธ ัะตะณัะปััะฝัั
ะฒััะฐะถะตะฝะธะน, ะพัะพะฑัะฐะถะฐะตััั ัะพะปัะบะพ ะฝัะถะฝะฐั ะณััะฟะฟa
# ะธ ััะพ ะดะตะปะฐะตััั ัะพะปัะบะพ ะดะปั ัะพะฒะฟะฐะดะตะฝะธะน, ัะฐะฝะตะต ะพะฟะธัะฐะฝะฝะพะณะพ ะฟะพะธัะบะฐ
> cat vcl-processor-2.sed
#// VCL.SHOW# {
s#.* [0-9]+ [0-9]+ (.*)$#1#
p
}
> sed -En -f vcl-processor-2.sed vcl-example.vcl
file with 3 spaces.vcl
file.vcl
file with TWOspaces.vcl
# ัะฐะณ ััะตัะธะน, ะฟะพะปััะธัั ัะพะปัะบะพ ะฟะตัะฒัะน ะธะท ัะตะทัะปััะฐัะพะฒ
# ะบะฐะบ ะธ ะฒ ัะปััะฐะต ั awk, ะดะพะฑะฐะฒะปัะตััั ะฝะตะผะตะดะปะตะฝะฝะพะต ะทะฐะฒะตััะตะฝะธั ะฟะพัะปะต ะฟะตัะฐัะธ ะฟะตัะฒะพะณะพ ะฝะฐะนะดะตะฝะฝะพะณะพ ัะพะฒะฟะฐะดะตะฝะธั
> cat vcl-processor-3.sed
#// VCL.SHOW# {
s#.* [0-9]+ [0-9]+ (.*)$#1#
p
q
}
> sed -En -f vcl-processor-3.sed vcl-example.vcl
file with 3 spaces.vcl
# ัะฐะณ ัะตัะฒะตัััะน, ัั
ะปะพะฟะฝััั ะฒัั ะฒ ะพะดะฝะพัััะพัะฝะธะบ, ะธัะฟะพะปัะทัั ะดะฒะพะตัะพัะธั ะดะปั ัะฐะทะดะตะปะตะฝะธั ะบะพะผะฐะฝะด
> sed -En -e '#// VCL.SHOW#{s#.* [0-9]+ [0-9]+ (.*)$#1#p;q;}' vcl-example.vcl
file with 3 spaces.vcl
แแกแ แ แแ, varnishreload แกแแ แแแขแแก แจแแแแแ แกแ แแกแ แแแแแแงแฃแ แแแ:
VCL_FILE="$(echo "$VCL_SHOW" | sed -En '#// VCL.SHOW#{s#.*[0-9]+ [0-9]+ (.*)$#1#p;q;};')"
แแแแแ แแแงแแแแแแ แแแแแแ แแแแแแ แจแแแซแแแแ แแแแแแฎแแขแแก แจแแแแแแแแแ แแ:
แแฃ แกแขแ แแฅแแแ แแแแฎแแแแ แ แแแฃแแแ แฃแ แแแแแกแแฎแฃแแแแแก // VCL.SHOW
, แจแแแแแ แฎแแ แแแ แแแแแงแแแแแ แขแแฅแกแขแ, แ แแแแแแช แจแแแชแแแก แแ แแแ แ แแชแฎแแก แแ แกแขแ แแฅแแแจแ แแ แจแแแแแฎแแ แงแแแแแคแแ แ, แ แแช แแ แแแแ แแชแแแก แจแแแแแ แ แฉแแแ. แแแแแฃแจแแแ แจแแแแฎแฃแแ แแแแจแแแแแแแ แแ แแแแกแ แฃแแแ แแ แแแ แแแ.
แแแ แขแแแแ, แแ แ?
แฉแแแ แแแแงแแคแแแ แแแงแแแแ sed แกแแ แแแขแแ แแ แแแแ, แ แแ แแแ แจแแชแแแแ แงแแแแ แแ แแแแแแแฃแ แ แแแแ. แฉแแแแ แงแแแแ แขแแกแขแแ แกแแกแฃแ แแแ แจแแแแแก แแซแแแแแ, แแแแขแแ แจแแแชแแแแ แกแแ แแแ แแ โvarnishreloadโ แแ แแกแแ แแแแฃแจแแ. systemctl reload varnish
. แชแฃแแ แจแแชแแแแ echo: write error: Broken pipe
แแกแแ แฉแแแแแชแแแ แกแแฎแแแแจแ. แแแแแแกแแแแญแ แแแ แแฃแ แกแแ แ แแแแแ แขแแ แแแแแแแก แแแแ แกแแชแแ แแแแแจแ แจแแงแแแแแก แแฎแแ แแ แซแแแแแแก...
แฌแงแแ แ: www.habr.com