"áá®ááŸá¬ááŒáá·áºáá«" áá¯ááŒá±á¬ááŒá®áž á ááááºáá±á«áºááŸá áá¬ááºáá±á¬ááºáá áºáŠážááᯠááœáŸááºááŒááŒá®áž "áá«áá±ážááá¯ááºáá²á· áŠážáá¯ááºá¡áá®ááᯠáá®ááŸá¬ááá·áºááẠáá«áá±á¬ááºážáááº" - áá¯ááºáá²á· á¡ááŒá¬ážá¡ááá¯ááºážááᯠááœáŸááºááŒááŒá®áž "á¡ááŸá¬ážááá¯áᬠááŸááá±á¬á·ááŸá¬ ááá¯ááºáá°áž" ááŒááá«á"
áááºážáááºážááá±ááááŒá
áºááŒá®áž áááºáááºážáá«áááºá áá»áœááºáá±á¬áº áááᬠáá¯ááºáá±á¬ááºáá²á·áá²á· sed statement ááá¯ááŒá±á¬ááºážáá«á ááá¯ááºááá¯ááááºážááŒá®áž run áá« systemctl varnish reload
. error message áá»á±á¬ááºááœá¬ážáá«ááŒá®...
âááá¯ááºá á¬ážááŸááºáá±á¬ááºážáá²á· áá»áœááºáá±á¬áº áááŸááºáá¬ážáá²á· á¡á®ážáá±ážááºááœá±â ááá¯á· áá»áœááºáá±á¬á·áºáá¯ááºáá±á¬áºááá¯ááºáááºá áááºááŒá±á¬ááŒá®áž áá°á·áá²á· ááŒá¯á¶ážááœáŸááºááŸá¯á¡ááŒáá·áºáá²á· á á áºááŸááºáá²á· á¡ááŒá¯á¶ážáá áºáá¯áá²á· âáá«á áá®ááŒá¿áá¬á á¡áá°áá°áá«áá²ááá¯á· áá¯ááºáááẠáá»áœááºáááᯠááá·áºááá¯ážáá¬áááº!â
á¡á¬ážáá¯á¶ážáááºááá¯á áááºáá²á·áá²á
áá±á¬ááºážáá«ážááẠbashá awká sed ááŸáá·áº systemd á¡áá¯ááºáá¯ááºáá¯á¶ááᯠáá¬ážáááºááá±á¬áá±á«ááºáááºáᯠáá°ááá«áááºá á¡áá±á¬ááºáááºáá®ááá¯ááºáᬠá¡ááááá¬ááᯠáŠážá
á¬ážáá±ážáá±á¬áºáááºáž áááá¯á¡ááºáá«á
á¡ááá¯á¡ááœá¬áá»á¬ážááœáẠá¡áá»áááºáá¶ááááºáá¯á¶ážáá»á¬ážááᯠááŒá±á¬ááºážáá²áá¬ážáááºá
ááŒáá·áº áá±ážáá¬ážáá¬ážáááºá
á€á
á¬áá¬ážááẠááœááºáá²á·áá±á¬ ááŸá
áºáááºá á¡ááºá¹áááááºáá¬áá¬ááŒáá·áº áá¯ááºáá±áá²á·áá±á¬ áá°áááºážáá¬áá¬ááŒááºáá»ááºááŒá
áºáááºá áá¬áá¬ááŒááº
áá°ááœá±ážáá±á¬áá±á¬ááºážáŠážáá¬áá®áá¶áááºáááºážááœáẠááŒááºááœááºážáá»ááºááŒáááºážáá±á«ááºáá»á¬ážááŸáá±áá±á¬ááºááẠáá±á¬ááºááá±áá¬á áááºáááºáá±á¬áááááºážáá¬ááºáá«áá±á¬áá»á±á¬áºáááºáá áºááœááºááẠáá®ážáá¯ááºááá±ážááœáẠáááºááŸááá±áá¬á á ááºáá®ážáá¯ááºáá»á¬ážáá±á«áºá០áá¬ážááŒááºáá±á«áºááŸá áá¬ážááŒááºáá»á¬ážááœáẠááŸá áºáááºáá±á¬áá¶á ááºáá¶áááºááá¯áá®áá áºáá¯á ááŸáá·áº ááááŠážáá¯á¶ážáááºáá±á¬ááºááŸá¯ kanban board áá±á«áºááŸá backlog áááºááŸááºáá»á¬ážá á¬áááºážááẠáá¶ááŒáá¹áá¬áá±á«ááºážá áẠâInvestigate varnishreload sh: echo: I/O error in stagingâ (âvarnishreload sh: echo: I/O errorâ áá°áá±á¬ áá±á«ááºážá ááºááŒáá·áº ááœáŸááºáááºážáááºááŒáœá áœá¬ áá±á¬ááºááá±áá«áááºá á¡áá±á¬ááºáááºáá®ááŸáá·áºáááºáááºáá¬áá±á¬á¡áá«á á€ááá á¹á ááœááºáá²á·ááá¯á·áááºáááºááá·áºááŒá¿áá¬áá»áŸáááŒá áºáá±á«áºáá±á¬áºáááºážá á¡ááŸá¬ážá¡ááœááºážáá»á¬ážáááŸáááá¯ááºáá«á
ááááá±ážáá²á·áá°ááœá±á¡ááœááºáá«á
áááºááŸááºááá±á«ááºážá ááºá¡ááŒá¶ááŒá¯áá¬ážááá·áºá¡ááá¯ááºážá á ááºááŒáá·áºááŸááá¬áá¬áá»á¬ážáá²ááŸáá áºáá¯ááœáẠerror ááŒá áºááœá¬ážáá²á·ááŒá®ážá á ááºááŒáá·áºááŸáá¡áá±á¬ááºáááºáá®ááááºážááŒá±á¬ááºážááŸááºááŸááºáááºáááºá¡áá¯ááºáá¯ááºáááºáá¯áá¯á¶ááŒááºáá±á¬ááŒá±á¬áá·áºá áááºážáááºá¡áá±ážá¡ááœá²á¡ááŸá¬ážáá áºáá¯ááŒá áºáááºáá¯áá»áœááºáá±á¬áºáá°ááá²á·áááºá ááá¯á·ááŒá±á¬áá·áº ááááºáá¬ážááŒá®ážáá¬áž á¡ááœááºá á®ážááŒá±á¬ááºážááá¯á· áá±á¬ááºááŸááá¬ááá·áº áááºáá±á·áá»áºáá áºáá¯áá¬ááŒá áºáááºá áááá Ạ30 áááŒáá·áºáá® á¡áááºááá·áºááŒá áºáááºáᯠáá¯á¶ááŒááºáá»ááºá¡ááŒáá·áºááŒáá·áº áááºááŸááºáá áºá á±á¬ááºááᯠáá°ááá¯ááºááŒá®áž áá±á¬ááºá¡ááŸáá¯ááºáá¯ááºááᯠááŸááºážáááºážááẠááá¯á¶ážáá±á«áºáááºáᬠááá¯á¡áá±ážááŒá®ážáá±á¬á¡áá¬áá»á¬ážáá®ááá¯á· ááŒááºáá±á¬ááºááœá¬ážáá«áááºá
áá áºáá¬áá® áá®ááá¯áá®áᬠááá ááŸá¯ááºážáá²á· áá¶áá¶ááᯠááá¯ááºááááœá¬ážáááºá
ááá¯ááºáá
áºáá¯ááœáá·áºááŒááºážá varnishreload
Debian Stretch ááá¯á¡áá¯á¶ážááŒá¯ááá·áºáá¬áá¬áá»á¬ážáá²ááŸáá
áºáá¯ááœááºá á
á¬ááŒá±á¬ááºáž 200 áááºáááºážáá±á¬ shell script ááá¯áá»áœááºáá±á¬áºááœá±á·áá²á·áááºá
áá¬ááºááœáŸááºážááᯠááŒááºáááºážáá±á ááºá áááºážááᯠterminal á០ááá¯ááºááá¯ááºá¡ááŒáááºááŒááẠáá¯ááºáá±á¬ááºááá·áºá¡áá« ááŒá¿áá¬ááŒá áºá á±ááá¯ááºááá·áº áááºááá·áºá¡áá¬ááá¯áá»áŸ áááœá±á·áá²á·ááá«á
áá±á¬ááºáá¯á¶ážáá±á¬á·á áá®áá¬ááºá ááºáᬠáá»ááºááœá¬ážáááºáá±á¬áẠáááºáá°á០áááºážáá°áá±ááŸá¬ ááá¯ááºáá«áá°ážâŠ ááááºá¡áá»á¬ážááŒá®áž ááá¯ááºáá«áá°ážá áá¬ááºááœáŸááºážááᯠrun ááŒá®áž terminal ááœáẠáá±ážáá±ážááá·áºá¡áá¬ááᯠááŒáá·áºáá±á¬áºáááºáž á¡ááŸá¬ážáá»á¬ážááᯠáááŒááºááá¯ááºáá±á¬á·áá«á
á¡ááá¯á¡á¬ážáá¯ááºááŸá¯áááŸááá² á¡ááŸá¬ážááᯠáááºááá¯ááºááá¯ááºá á±ááẠáá±áá»á¬á á±ááẠáá±á¬ááºááẠááŸá áºááŸá áºáááºááŒá±ážááŒá®áž á€áá¬ááºááœáŸááºážááᯠáááºááá¯á·ááŒá±á¬ááºážáá²ááááºááᯠá áááºá ááºážá á¬ážááŒá®áž áááºážááᯠá¡ááŸá¬ážá¡ááœááºážááŒá áºá á±áá²ááŒá áºáááºá
Script ááẠSTDOUT ááᯠááááºááá¯á·ááá¯ááºáá«ááá¬ážá > &-
)? áá«ááŸááá¯áẠSTDERR? á¡áá¯á¶ážááœáẠá¡áá¯ááºáááŒá
áºáá²á·á
á
áá
áºá
áá
áºááẠáááºáááºáá±áá±á¬ áááºáááºážáá»ááºááᯠáá
áºáááºážáááºážááŒáá·áº ááŒá±á¬ááºážáá²á
á±áááºááŸá¬ áááºááŸá¬ážáá±á¬áºáááºáž áááºááá¯á·ááŸáá·áº á¡áááºááŒá±á¬áá·áºáááºážá
vim ááá¯ááœáá·áºááŒá®áž áááºážááŒááºáá«áááºá varnishreload
, áá±á«ááºážááá·áº set -x
shebang á¡á±á¬ááºááœááºá áá¬ááºááœáŸááºážá output ááᯠá¡ááŸá¬ážááŸá¬ááŒááºážááŸá¬ á¡áááºážáá±á¬ááºá¡áááºážáááºáááºážáá¬áááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
ááá¯ááºááᯠááŒá¯ááŒááºááŒá®ážááŒá®ááá¯á· á¡áá±á¬ááºáááºáá® ááŒááºáááºááá¯ááºáá±á¬á· ááŒá±á¬ááºážáá²ááŸá¯á á¡áá¯ááºáá»ááºááœá¬ážáá¬ááᯠááœá±á·ááá¯ááºááááº... á¡áááºáá±á¬á áá¯á¶ážá ááŸá¯ááºááœáá±ááŒá®áž á¡á²áá®áá²ááŸá¬ C-like áá¯ááºááœá± á¡áá»á¬ážááŒá®ážáá«áá«áááºá terminal ááœáẠscrolling áááºáááºá
áááºááá·áºáá±áá¬ááá¯ááŸá¬áááºááá¯á¶áá±á¬ááºáá«á áá¯á¶ážáá¯á¶ážááŸá¯ááºáá±áááºá á¡ááŸá¬ážááŸá¬áá¯ááºááẠáá¬ááºááœáŸááºážáá
áºáá¯ááœáẠáá¯ááºáá±á¬ááºááá·áº áááá¯ááááºáá»á¬ážá á¡áá¯ááºá¡áá±á«áº áááºáá±á¬ááºááŸá¯ááŸáááá¯ááºáá«ááá¬ážá ááá¯ááºáá°ážá ááá¯ááºáá²áááºá áá°ážááœá¶áá²ááŸá¬ ááá¯ážáá±á¬ááºáá¬ážá ááŒá
áºááá¯ááºááŒá±ááŸááá²á· á¡ááŒá
áºá¡áá»ááºáá±á«ááºážáá»á¬ážá
áœá¬á ááá¯ážáááºááœá±ááᯠáááºážááŒá±á¬ááºážá¡áá»áá¯ážáá»áá¯ážááŸá¬ áá»á¶áááºážáá±áááºá áááááºážáá¬ááºá¡ááŒáá·áºáá«áá²á· áá±á¬ááºá
áᬠáá
áºááœáẠáá»ááºáá»ááºáž ááœááºááœá¬ážáááºá ááŒááºááŒáá·áºááá¯á· áá®ážááá¯áá»á±á¬ááºááᯠá¡ááŒáẠááá®ážááœááºááŒá®áž... ááœá¬ážááŒáá¡á±á¬ááºá áá»áœááºáá±á¬áº áá¬ááºááœáŸááºážááá¯ááœáá·áºááŒá®áž shebang ááᯠá¡áá®ážáááºáá±á·áá¬ááŒáá·áºáá«- #!/bin/sh
.
/bin/sh
- áááºážááẠbash symlink áá
áºáá¯áá¬ááŒá
áºáá«áááºá ááá¯á·ááŒá±á¬áá·áº script ááᯠPOSIX-áááá¬ááá¯ááºááœáẠáá¬áá¬ááŒááºááá¯áá¬ážáá«áááºá á¡á²áá®ááŸá¬ ááá¯ááºáá°áž! Debian ááŸá default shell ááẠ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 ááŸá
áááºááá·áº multiline ááá
áºá
áááºáá
áºááá¯ááºážá¡áá±ááŒáá·áº error ááŒá
áºáá²á·áááºáᯠáá»áœááºáá±á¬áºáá°áááá¯ááºáááºá
áá±á¬ááºáá¯á¶ážáá±á¬á· variable ááŸá¬ áá¬ááœá±áá±ážáá¬ážáá²á VCL_FILE
á¡áááºáá« sub-shell ááá¯áá¯ááºáá±á¬ááºááŒááºážáááááºá¡ááŒá
�
á¡á
ááœááºá áááºážááẠvariable áá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááá¯áá±ážááá¯á·áááºá VLC_SHOW
ááá¯ááºááŸáááá·áº áá±á¬ááºááẠcommand áá®ááá¯á· á
á¬ááŒá±á¬ááºáž 115 ááœáẠáááºáá®ážáá¬ážáááºá ááŒá®ážáá±á¬á· á¡á²áá®ááŸá¬ áá¬ááŒá
áºááœá¬ážáá¬áá²á
ááááŠážá
áœá¬á¡áá¯á¶ážááŒá¯áááºá varnishadm
ááŒááºáááºá
áááºááŒááºážáááŒá¯áá² á¡áá±á¬ááºáááºáá®áááºáááºááŒááºáž áááºáá±á·áá»áºá áá
áºá
áááºáá
áºááá¯ááºážááŒá
áºáá±á¬áá
subcommand vcl.show -v
áááºááŸááºáá¬ážáá±á¬ VCL configuration áá
áºáá¯áá¯á¶ážááᯠáá¯ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá ${VCL_NAME}
STDOUT ááá¯á·á
áááºááŸáá¡áá¯á¶ážááŒá¯áá±áá±á¬ 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}
á¡áá±á¬ááºáááºáá®á¡ááœáẠááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ááœá²á·á
ááºážáá¯á¶áá«ááŸááááºá ááá¯á¡áá»áááºá¡áá ááŸááºážáá«áááºá á¡áá¯áá±á¬á· dash output áá²á·áá¬ááŒá±á¬áá·áºáá²ááá¯áᬠáá±á¬ááºáá¯á¶ážáá±á¬á· áá¬ážáááºáá«ááŒá®á set -x
áá»áá¯ážáá²á·ááœá¬ážááẠ- áááºážááœááºááááºááœá²á·á
ááºážáá¯á¶áá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážáá« á ááºáááºá
ááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ VCL configuration ááᯠááá¯ááºáá»á¬ážá
áœá¬á០áááŒá¬áá áá±á«ááºážá
ááºááá¯ááºáááºááᯠáá¬ážáááºááẠá¡áá±ážááŒá®ážáá«áááºá C-style ááŸááºáá»ááºáá»á¬ážááᯠá¡ááŒá¬ážáá
áºáá¯ááœáẠconfiguration file áá
áºáá¯ááá·áºááœááºážáá¬ážááá·áºáá±áá¬á¡á¬áž áááºááŸááºáááºá¡áá¯á¶ážááŒá¯ááŒá®áž áááºážááẠá¡á±á¬ááºáá«áá¯ááºá¡ááá¯á¡ááœá¬á á
á¬ááŒá±á¬ááºážáá
áºáá¯áá¯á¶ážá¡ááŒá±á¬ááºáž á¡ááá¡áá»ááŒá
áºáááºá
áá«áááºáá±á¬ááá¯ááºáá»á¬ážááá¯áá±á¬áºááŒááá·áº ááŸááºáá»ááºáá»á¬ážá¡ááœáẠá¡áá¬ážá¡ááá¯ááŸá¬ á¡á±á¬ááºáá«áá±á¬áºáááºáá»á¬áž ááŸááá«áááºá
// VCL.SHOW <NUM> <NUM> <FILENAME>
á€á¡ááŒá±á¬ááºážá¡áá¬ááŸá áá¶áá«ááºáá»á¬ážááẠá¡áá±ážáááŒá®ážáá«á áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºá¡áááºááᯠá áááºáááºá á¬ážáá«áááºá
áá«ááᯠá
á¬ááŒá±á¬ááºáž 116 ááŸá¬ á
áááºáá²á· command ááœá±áá²á· á
ááá·áºáá²ááŸá¬ áá¬ááŒá
áºááœá¬ážááá²á
á¡ááŒá±ááŸá¬ááŒáá·áºáá¡á±á¬ááºá
command ááœáẠá¡ááá¯ááºážáá±ážááá¯ááºáž áá«áááºáá«áááºá
- ááœááºáá°áá±á¬
echo
variable ááááºááá¯ážááá¯ááŒááá±ážáá±á¬á${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 á¡á¬ážáá¯á¶ážááᯠsub-shell áá
áºáá¯ááœáẠááá·áºááœááºážáá¬ážáá±á¬ááŒá±á¬áá·áºá áááºááá¯ážá output ááá¯
$FILE
variable áá áºáá¯ááá¯á· áá±ážáá«áááºáVCL_FILE
.
á á¬ááŒá±á¬ááºáž 119 áá±á«áºááŸá ááŸááºáá»ááºááœáẠá¡ááŒá¶ááŒá¯áá¬ážááá·áºá¡ááá¯ááºážá áááºážááẠVCL ááẠáááºážááá¯á·áá¡áááºáá»á¬ážááœáẠáá±áá¬ááœááºá¡áá¹ááá¬áá»á¬ážáá«ááá·áº ááá¯ááºáá»á¬ážááᯠáááºááœáŸááºážááá·áº ááá á¹á áááºáá»á¬ážááᯠáá¯á¶ááŒááºá áááºáá»á áœá¬ ááá¯ááºááœááºááŒá±ááŸááºážááẠáá áºáá¯áááºážáá±á¬ áááºááœááºáá»ááºááᯠáá±á¬ááºááœááºáá±ážáá«áááºá
áá°áááºáž processing logic ááᯠáá»áœááºáá±á¬áº ááŸááºáá»ááºáá±ážáá²á·áá«áááºá ${VCL_FILE}
command áá»á¬ážá sequence ááá¯ááŒá±á¬ááºážáá²áááºááŒáá¯ážá
á¬ážáá±á¬áºáááºážá áááºážáááºáá¬ááá¯ááŸáááŒá
áºáá±á«áºá
á±áá«á á¡áá¬á¡á¬ážáá¯á¶ážááẠáá»áœááºá¯ááºá¡ááœáẠááá·áºááŸááºážá
áœá¬ áá¯ááºáá±á¬ááºáá²á·ááŒá®áž áááºáá±á¬ááºááŸá¯ááᯠá
áááºááá·áºá¡áá«ááœáẠá¡ááŸá¬ážá¡ááœááºážáá
áºáᯠááŒá
áºá
á±áá²á·áááºá
áá¬ááºááœáŸááºážááᯠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááá·áºá¡áá«ááœáẠá¡ááŸá¬ážá¡ááœááºážááẠááŒááºáááºáá¯ááºáá¯ááºááááá±á¬á·áá² ááá·áºááŸááºážááŒá± áááá
Ạ30 ááẠááŒá±á¬ááºááŒáááºááá·áº ááŒá®ážáá¯á¶ážááœá¬ážáá²á·ááŒá®ááŒá
áºááŒá®ážá ááá¯á·á¡ááŒááºá áá»ááºááá
á¹á
áá»á¬ážááᯠáá±ážáááºáá¬ážááẠááá¯ááá¯ááŒáá·áºáá¬ážáá±á¬ áŠážá
á¬ážáá±ážáá¯ááºáá±á¬ááºá
áá¬áá
áºáᯠáá±á«áºáá¬áá«áááºá áá»ááºáá²á·áááºááá¹ááááºáᬠá¡áá¯ááºáá»áá¯ážá
á¯á¶áá²á· ááŒáá·áºááŸááºáá±ááŒá®áž sed áá²á· ááœá±ážááœá±ážááŸá¯ááœá±áá²á· ááá¯ááºá
á¬ážááŸááºáá±á¬ááºážáá²á· á¡ááºáá¬áá»á°ážáá²á· á¡áááºážááẠáá»á±á¬á·áá»á±á¬ááºážáá±áá²á·áá«áááºá á¡ááŸá¬ážá¡ááœááºážááŒá¿áᬠvarnishreload
á¡áá»áááºáá¬áá áá²áá²ááœáẠáá»á±á¬ááºááœááºááœá¬ážááẠá
áááºážáá²á· sed-fu ááá¯á·áá±á«áºáááº... ááááºáá±á¬á·... á¡ááŸáá¯ááº
áá±á¬ááºááááºá áá±á¬áºáá±á¬áºá¡á¬ážáááºáá²á·áá±á·ááá¯áá±á¬á· áá®áááºááŸááºááᯠáááºáá°ááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá áá«á·áŠážááŸá±á¬ááºáá²ááŸá¬ áá®áá áºáá»áááºáá¯á¶áž áá±á¬ááºáá¶ááŒá áºá ááºá¡áá»áá¯á·á áá®ááŒá¿áá¬á¡ááœáẠá¡ááŒá±ááá¯ááŸá¬áá±áá¬á áá®áá áºáá«áá±á¬á· áá«áá¬ááŸá¬ážáá±ááŒá®áá²ááá¯áᬠáá«áá±áá»á¬áá±á«ááºáá¬ážáááºáááá·áºáááºááá¯á· áá«áá»áŸá±á¬áºááá·áºáááºá
áá¯ááºááá¯ááŒá±á¬ááºážááá¯ááºáá¯á¶áá²á· áá±á¬ááºáá¯á¶ážá¡ááŒáááºá ááá°áá®ááá¯ááºáá²á·áá²á·á¡ááœáẠ116 ááá¯ááºážááá±á
ááŒá®áž ááŒááºáá±ážááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá áááºááá¯á·áááºááá¯á
á±á ááŸáááŒá®ážáá¬ážáá¯ááºááẠááá¯ááºáá«áááºá ááŒá®ážáá±á¬á· áá¯á¶ážááá¯á¶ážá
áá¬áááá¯áá«áá°ážá read
.
á¡ááŸá¬ážááá¯ááŒááºááŒáá·áºáááº-
sh: echo: broken pipe
- á€á¡áááá·áºáá±á¬áºááœááºá áá²á·áááºáá¶ááẠáá±áá¬ááŸá
áºáá¯ááœááºááŸááááºá ááá¯á·áá±á¬áº ááááá
áºáá¯ááẠááá¬ážáá¶ááŒá
áºááá¯ááºáá»á±ááá¯áá»á¬ážááẠ(áá±á¬ááºážá ááá¯á·ááá¯áẠá¡áááºážáá¯á¶áž ááŒá¶áá¬áá«) áᯠáá»áœááºá¯ááºáá¶ááááŸááááºá Awk á áá¯á¶ááŒááºááŸá¯áááºáž ááá±ážáá«áá°ážá ááŒá
áºáááºááŸááºá ááááºáá«á awk | {read; echo}
áá®ááá¯ááºážááẠá€ááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠááŒá
áºáá±á«áºá
á±áááºá á¡áááºááŒá±á¬áá·áº áááºážááᯠá¡á
á¬ážááá¯ážááááºážá á€áá
áºááŒá±á¬ááºážáááºážá¡áááá·áºáá±ážááŸá¯ááẠawk áá¡ááºá¹áá«áááºá¡á¬ážáá¯á¶ážááŸáá·áº á€á¡ááá¯áá±á¬ááºážááá¯ááẠá¡áá¯á¶ážáááŒá¯áá«á read
áá±á¬ááºáááºááœá²á
ááŒá®ážáá²á·áá²á· á¡áááºáá
ááá¯á· á¡á
á®áááºáá¶á
ᬠááœááºáá¬áááºá sed
á¡áá
áºáááŸááá¬ážáá±á¬ áá»áœááºážáá»ááºááŸá¯áá»á¬ážááŸáá·áº ááá¯ážááŸááºážá¡á±á¬áẠááŒáá¯ážá
á¬ážáá»ááºáá«áááºá echo | awk | { read; echo}
ááá¯áá¬ážáááºááá¯ááºááẠecho | sed
. áá«áᬠbug ááá¯áááºážááá¯á· áá±áá»á¬áá±á«áẠá¡áá±á¬ááºážáá¯á¶ážáááºážáááºážááá¯ááºáá±ááá·áºá á¡áááºážáá¯á¶ážáá±á¬á· áá«á·áá²á· sed-fu ááᯠá
ááºážáá¯á¶ážááŒáá·áºááŒá®áž ááŒá¿áá¬áá²á· áááºáááºááŒá®áž á¡áá
áºáá
áºáá¯áᯠáááºáá°áááºááá¯á· áááºáá«áááºá áááºážáá
áºáá»áŸá±á¬ááºááœááºá áá»áœááºá¯ááºááá¯ááºáá±á¬áºááá¯ááºáááºááŒá
áºáá±á¬ sed talk áá±ážáá°á¡á¬áž ááá¯ááá¯áááá±á¬ááºáá±á¬ sed áá¬ááºááœáŸááºážáá
áºáá¯áááẠáá»áœááºá¯ááºá¡á¬áž á¡áá°á¡áá®áá±á¬ááºážáá²á·áááºá
á¡ááŒá±á¬ááºážá¡áá¬ááᯠááœáŸáá·áºáá
áºááá¯ááºáááºá varnishadm vcl.show -v "$VCL_NAME"
service restart áá¯ááºá
áá¬áááá¯áá² sed script ááᯠáá±ážááá¯á· á¡á¬áá¯á¶á
áá¯ááºááá¯ááºáá¬ááŒá±á¬áá·áº ááá¯ááºáá
áºáá¯áá²ááᯠáá±á¬ááºááœá¬ážáá«ááŒá®á
sed input ááᯠáááºáá²á·ááá¯á· ááá¯ááºááœááºáá¯á¶ á¡ááá¡áá»ááᯠá¡áá»ááºážáá»á¯áẠáá±á¬áºááŒáá»ááºááœáẠááœá±á·ááá¯ááºáááºá n
áá»ááºážááŒá±á¬ááºážááŒá¬ážááŒááºážá¡ááŒá
Ạá¡ááá¡áááºážáááºááŸááºáá¬ážáááºá
ááŒááºáááºážááŸá¯áá»á¬ážá áœá¬ááœááºá áá»áœááºá¯ááºááá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážá á¡ááŒá¶áá¬ááºááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá°áááºážá á¬ááŒá±á¬ááºáž 116 áá áºáá¯áá¯á¶ážááŸáá·áº áá°áá®áá±á¬ááááºááá¯áá±ážáá±á¬ sed script ááᯠáá±ážáá¬ážáá²á·áááºá
á¡á±á¬ááºááœáẠinput data áá«áá±á¬ ááá°áá¬ááá¯ááºáá áºáá¯ááŒá áºáááºá
> 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
ááŸáá·áº input data ááœáẠáááºážááá¯á·áá²á០á¡áá»á¬ážá¡ááŒá¬áž ááŸáááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áááááœá²á¡ááŒá®ážááœáẠáá°áááºáž awk ááẠáááºááá¯ááºážááœá¬ážáááŒááºáž ááŒá
áºáááºá
# Ñаг пеÑвÑй, вÑвеÑÑО ÑПлÑкП ÑÑÑПкО Ñ ÐºÐŸÐŒÐŒÐµÐœÑаÑОÑЌО
# ОÑпПлÑзÑÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑО 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 script á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááẠá€áá²á·ááá¯á· ááŒá áºáááº-
VCL_FILE="$(echo "$VCL_SHOW" | sed -En '#// VCL.SHOW#{s#.*[0-9]+ [0-9]+ (.*)$#1#p;q;};')"
á¡áááºáá±á¬áºááŒáá« áá¯áá¹áááá±áááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž á¡áá»ááºážáá»á¯á¶ážááá¯ááºáááºá
string ááẠáá¯á¶ááŸáẠexpression ááŸáá·áºááá¯ááºáá®áá«á // VCL.SHOW
ááá¯á·áá±á¬áẠááá¯á
á¬ááŒá±á¬ááºážááŸá áá¶áá«ááºááŸá
áºáá¯áá«ááŸááá±á¬ á
á¬áá¬ážááᯠáá±á¬áááŒá®ážá
áœá¬ áá«ážááŒáá¯ááŒá®áž á€áá¯ááºáá±á¬ááºáá»ááºááŒá®ážáá±á¬áẠáá»ááºáá²á·ááá»áŸááᯠááááºážáááºážáá«á ááááºážáááºážáá¬ážáá±á¬ áááºááá¯ážááᯠáá¯ááºááŒá®áž áááá¯ááááºááᯠá¡áá¯á¶ážáááºáá«á
ááá¯ážááŸááºážááẠááá¯ááºáá¬ážá
sed script ááŸáá·áº áá°áááºážáá¯ááºá¡á¬ážáá¯á¶ážááᯠá¡á
á¬ážááá¯ážááá·áºá¡áá»ááºááᯠáá»áœááºá¯ááºááá¯á· áá»á±áááºáá«áááºá áá»áœááºá¯ááºáá
ááºážáááºááŸá¯á¡á¬ážáá¯á¶ážááẠááá¯áá»ááºáá±á¬ááááºáá»á¬ážááá¯áá±ážáááºá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááẠáá¬áá¬áá±á«áºááŸá "varnishreload" ááᯠááŒá±á¬ááºážááŒá®áž ááŒááºááŒá±ážááẠsystemctl reload varnish
. áá
áºáááºáá²á·á¡ááŸá¬áž echo: write error: Broken pipe
áá«ááá¯á·áá»ááºááŸá¬ááŸá¬ áááºáá±ááŒááºáááºá terminal á ááŸá±á¬ááºááá¯ááºáá±á¬ ááœááºáááºááœáẠcommand á¡áá
áºáá
áºáᯠááá·áºááœááºážááẠááŸáááºáá¯ááºááŸáááºáá¯ááºááŒáá±áá±á¬ áá¬áá¬ááẠá
á±á¬áá·áºááá¯ááºážáá±áááº...
source: www.habr.com