ããããèŠãŠãã ããããšåœŒã¯ç»é¢äžã®èšå·ã® XNUMX ã€ãæããŠèšããããã£ãšããªãã¯èµ€ãåžœåããã¶ã£ãŠããã§ããããç§ãããã«éã£ãå 容ãè¿œå ããã°ããšã©ãŒã¯è¡šç€ºãããªããªããŸãããšã³ãŒãã®å¥ã®ã»ã¯ã·ã§ã³ãæãããŸãã
å°ãåœæããŠç²ããã®ã§ããã°ããäœæ¥ããŠãã sed ã¹ããŒãã¡ã³ããå€æŽãããã¡ã€ã«ãä¿åããŠå®è¡ããŸãã systemctl varnish reload
ã ãšã©ãŒã¡ãã»ãŒãžãæ¶ããŠããŸããŸããâŠ
ãåè£è ãšããåãããã¡ãŒã«ã§ãããšååã¯ç¶ããç¬ã声ââãåã³ã«æºã¡ãæ¬ç©ã®ç¬é¡ã«å€ãããŸããããããããŸãã«åãåé¡ã§ããããšã«çªç¶æ°ã¥ããŸããïŒã
ãã¹ãŠã¯ã©ã®ããã«å§ãŸã£ãã®ã
ãã®èšäºã¯ãbashãawkãsedãsystemd ã®ä»çµã¿ãç解ããŠããããšãåæãšããŠããŸãã ã¯ãã¹ã®ç¥èãããããšãæãŸããã§ãããå¿
é ã§ã¯ãããŸããã
ã¹ããããã®ã¿ã€ã ã¹ã¿ã³ããå€æŽãããŸããã
ã§æžãã
ãã®æç« ã¯ XNUMX é±éåã«è±èªã§åºçãããåæã®ç¿»èš³ã§ãã 翻蚳
å¥ã®æããç§ã®æãããã©ãã®çªãã倪éœãèŒããæ·¹ãããŠã®ã«ãã§ã€ã³å ¥ãããªã³ã¯ãããŒããŒãããé¢ãããæ°ã«å ¥ãã®é³ã®ã·ã³ãã©ããŒãããããã©ã³ã®ã¡ã«ãã«ã«ããŒããŒãã®ã«ãµã«ãµé³ã«ä¹ã£ãŠæµããã«ã³ãã³ããŒãäžã®ããã¯ãã°ãã±ãããªã¹ãã®æåã®ãšã³ããªãããµãããŠéåœçãªã¿ã€ãã«ãInvestigate varnishreload sh: echo: I/O error in stagingãã§èŒããŸãïŒãInvestigate varnishreload sh : echo: I/O error in stagingãïŒã ãã®èå°ïŒã ã¯ãã¹ã«é¢ããŠã¯ãä»åã®ããã«åé¡ãçããªãã£ããšããŠããééãã¯ãããŸãããããã£ãŠã¯ãªããªãã®ã§ãã
ãªãã¿ã®ãªã人ã®ããã«
ãã±ããã®ã¿ã€ãã«ã瀺ãããã«ãã¹ããŒãžå ã®ãµãŒããŒã® 30 ã€ã§ãšã©ãŒãçºçããŸãããã¹ããŒãžå ã§ã® varnish ã®ã«ãŒãã£ã³ã°ãæ£ããæ©èœããŠãããšç¢ºä¿¡ããŠããã®ã§ãããã¯è»œåŸ®ãªãã¹ã ãããšæ³å®ããŠããŸããã ãããã£ãŠããã§ã«éããããåºåã¹ããªãŒã ã«å ¥ã£ãã¡ãã»ãŒãžã ãã§ãã ç§ã¯èªåã®ããã«ãã±ãããåãåããXNUMX å以å ã«æºåå®äºã®ããŒã¯ãä»ãã次ã®ãžã£ã³ã¯ãããŒãããçä»ããŠãããéèŠãªäœæ¥ã«æ»ãããã«èªåã®è©ãããããŠèªä¿¡ãæã£ãŠããŸãã
æé200kmã§å£ã«è¡çª
ãã¡ã€ã«ãéã varnishreload
ãDebian Stretch ãå®è¡ããŠãããµãŒããŒã® 200 ã€ã§ãé·ãã XNUMX è¡æªæºã®ã·ã§ã« ã¹ã¯ãªãããèŠã€ããŸããã
ã¹ã¯ãªãããå®è¡ãããšãããã¿ãŒããã«ããçŽæ¥è€æ°åå®è¡ãããšãã«åé¡ãåŒãèµ·ããå¯èœæ§ã®ãããã®ã¯äœãèŠã€ãããŸããã§ããã
çµå±ã®ãšãããããã¯èå°ã§ããããšãå£ãããšããŠã誰ãæå¥ãèšããŸããããŸã...ããŸãã«ãå€ãã¯ãããŸããã ã¹ã¯ãªãããå®è¡ããŠç«¯æ«ã«äœãæžãåºããããã確èªããŸããããšã©ãŒã¯è¡šç€ºãããªããªããŸããã
ããã«æ°åå®è¡ããŠãç¹å¥ãªåªåãããªããšãšã©ãŒãåçŸã§ããªãããšã確èªãããã®ã¹ã¯ãªãããå€æŽããŠåŒãç¶ããšã©ãŒãã¹ããŒãããæ¹æ³ãèãå§ããŸãã
ã¹ã¯ãªãã㯠STDOUT ããããã¯ã§ããŸãã (äœ¿çš > &-
ïŒïŒ ãããšãæšæºãšã©ãŒ? çµå±ã©ã¡ããæ©èœããŸããã§ããã
systemd ãäœããã®æ¹æ³ã§å®è¡ç°å¢ãå€æŽããã®ã¯æããã§ãããã©ã®ããã«ããããŠãªããªã®ã§ãããã?
vimãèµ·åããŠç·šéããŸã varnishreload
ãè¿œå set -x
ã¹ã¯ãªããã®åºåããããã°ããããšã§äœããã®å
ãåœããããšãæåŸ
ããŠãã·ãã³ã®ããäžã«ãããŸãã
ãã¡ã€ã«ã¯ä¿®æ£ãããã®ã§ãã¯ãã¹ããªããŒããããšãå€æŽã«ãã£ãŠãã¹ãŠãå®å
šã«å£ããŠããããšãããããŸã...ææ°ã¯å®å
šã«æ··ä¹±ããŠãããC ã®ãããªã³ãŒãã倧éã«å«ãŸããŠããŸãã ã¿ãŒããã«å
ãã¹ã¯ããŒã«ããŠããã©ãããå§ãŸãã®ããèŠã€ããã®ã«ååã§ã¯ãããŸããã ç§ã¯å®å
šã«æ··ä¹±ããŠããŸãã ãããã° ã¢ãŒãã¯ãã¹ã¯ãªããã§å®è¡ãããããã°ã©ã ã®åäœã«åœ±é¿ãäžããå¯èœæ§ããããŸãã? ãããã§ãããã ã ã·ã§ã«ã®ãã°? èããããããã€ãã®ã·ããªãªãããŽãããªã®ããã«é ã®äžã§ããŸããŸãªæ¹åã«é£ã³äº€ã£ãŠããŸãã ã«ãã§ã€ã³ãã£ã·ãã®é£²ã¿ç©ã¯ããã«ç©ºã«ãªããããã«ãããã³ã«è¡ã£ãŠã«ãã§ã€ã³ãè£çµŠããŠâŠãããåºçºã§ãã ã¹ã¯ãªãããéããŠã·ãã³ã詳ããèŠãŠã¿ãŸãããã #!/bin/sh
.
/bin/sh
- ããã¯åãªã bash ã·ã³ããªãã¯ãªã³ã¯ãªã®ã§ãã¹ã¯ãªãã㯠POSIX äºæã¢ãŒãã§è§£éãããŸããã ããã«ã¯ãªãã£ãã®ã§ãïŒ Debian ã®ããã©ã«ãã®ã·ã§ã«ã¯ããã·ã¥ã§ããããã¯ãŸãã«ããã§ãã /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
varnish ã€ã³ã¹ããŒã« ããã±ãŒãžã®äžéšã§ãããåèµ·åããã« varnish ãæ§æããŸãã
ãµãã³ãã³ã vcl.show -v
ã§æå®ããã VCL èšå®å
šäœãåºåããããã«äœ¿çšãããŸãã ${VCL_NAME}
ãSTDOUTã«ã
çŸåšã¢ã¯ãã£ã㪠VCL èšå®ãšãã¡ã¢ãªå
ã«ãŸã æ®ã£ãŠããããã€ãã®ä»¥åã®ããŒãžã§ã³ã® varnish ã®ã«ãŒãã£ã³ã°èšå®ã衚瀺ããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã 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 è¡ç®ããå§ãŸã倧éã®ã³ãã³ãã§ã¯äœãèµ·ããã®ã§ãããã?
ããã«çŽé¢ããŠã¿ãŸãããã
ã³ãã³ã㯠XNUMX ã€ã®éšåã§æ§æãããŸãã
- åçŽãª
echo
ãå€æ°ã®å€ã衚瀺ããŸã${VCL_SHOW}
echo "$VCL_SHOW"
awk
ãè¡ (ã¬ã³ãŒã) ãæ€çŽ¢ããŸããããã¹ããåå²ããåŸã®æåã®ãã£ãŒã«ãã¯ã//ããXNUMX çªç®ã®ãã£ãŒã«ãã¯ãVCL.SHOWãã«ãªããŸãã
awk ã¯ããããã®ãã¿ãŒã³ã«äžèŽããæåã®è¡ãæžãåºããŠãããã«åŠçãåæ¢ããŸããawk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}'
- ã¹ããŒã¹ã§åºåããã XNUMX ã€ã®å€æ°ã«ãã£ãŒã«ãå€ãæ ŒçŽããã³ãŒãã®ãããã¯ã XNUMX çªç®ã®å€æ° FILE ã¯è¡ã®æ®ããåãåããŸãã æåŸã«ãæåŸã®ãšã³ãŒã¯å€æ°ã®å
容ãæžã蟌ã¿ãŸãã
${FILE}
.{ read -r DELIM VCL_SHOW INDEX SIZE FILE; echo "$FILE" }
- ã¹ããã 1 ïœ 3 ã¯ãã¹ãŠãµãã·ã§ã«ã§å²ãŸããŠãããããå€ã®åºåã¯
$FILE
å€æ°ã«æžã蟌ãŸããŸãVCL_FILE
.
119 è¡ç®ã®ã³ã¡ã³ãã瀺ãããã«ãããã¯ãVCL ãååã«ç©ºçœæåãå«ããã¡ã€ã«ãåç §ããå Žåã確å®ã«åŠçãããšããå¯äžã®ç®çãæãããŸãã
å
ã®åŠçããžãã¯ãã³ã¡ã³ãã¢ãŠãããŸããã ${VCL_FILE}
ã³ãã³ãã®é åºãå€æŽããããšããŸããããäœãèµ·ãããŸããã§ããã ç§ã«ãšã£ãŠã¯ãã¹ãŠåé¡ãªãåäœããŸãããããµãŒãã¹ãéå§ããå Žåã«ã¯ãšã©ãŒãçºçããŸããã
ã¹ã¯ãªãããæåã§å®è¡ãããšãšã©ãŒãåçŽã«åçŸã§ããªãããã§ãããæšå® 30 åããã§ã« XNUMX åçµäºããŠãããããã«åªå
床ã®é«ãã¿ã¹ã¯ã衚瀺ãããæ®ãã®ã±ãŒã¹ãèã«è¿œãããããŠããŸãã é±ã®æ®ãã®æéã¯ããŸããŸãªã¿ã¹ã¯ã§ãã£ã±ãã§ããããSED ã«é¢ããè¬æŒãšåè£è
ãšã®é¢æ¥ã§å°ãèããããã ãã§ããã ãšã©ãŒã®åé¡ varnishreload
æéã®ç ã®äžã«åãè¿ãã®ã€ããªãã»ã©å€±ãããã
ããªãã®ããããã»ã...å®é...ãŽã
ç¿é±ã¯ããªã空ããŠããæ¥ããã£ãã®ã§ãå床ãã®ãã±ãããå©çšããããšã«ããŸããã ç§ã®è³å ã§ã¯ãããã¯ã°ã©ãŠã³ãã®ããã»ã¹ããã£ãšãã®åé¡ã®è§£æ±ºçãæ¢ããŠããã®ã§ãä»åã¯ééããªãäœãåé¡ãªã®ããç解ã§ããã ãããšæåŸ ããŠããŸããã
ååã¯ã³ãŒããå€æŽããã ãã§ã¯ãã¡ã ã£ãã®ã§ã116è¡ç®ããæžãçŽãããšã«ããŸããã ãããã«ãããæ¢åã®ã³ãŒãã¯æãã§ããã ãããŠã䜿çšããå¿
èŠã¯ãŸã£ãããããŸãã read
.
ããäžåºŠãšã©ãŒãèŠãŠã¿ãŸããã:
sh: echo: broken pipe
- ãã®ã³ãã³ãã§ã¯ããšã³ãŒã¯ XNUMX ãæã«ãããŸãããæåã®ã»ããç¯äºº (å°ãªããšãå
±ç¯è
) ã§ããå¯èœæ§ãé«ããšæãããŸãã Awk ãèªä¿¡ãåŒã³èµ·ãããŸããã ãããŠããããæ¬åœã«ãããªå Žåã«åããŠã awk | {read; echo}
ãã®èšèšãããããã¹ãŠã®åé¡ãåŒãèµ·ããã®ã§ããã°ããªã亀æããªãã®ã§ãããã? ãã® XNUMX è¡ã®ã³ãã³ãã¯ãawk ã®ãã¹ãŠã®æ©èœã䜿çšããããã§ã¯ãããŸããã read
ä»å±åã§ã
å
é±ããå ±éããããŸããã®ã§ã sed
æ°ããç¿åŸããã¹ãã«ãè©ŠããŠç°¡çŽ åããããšæã£ã echo | awk | { read; echo}
ããåããããã echo | sed
ã ããã¯ééããªããã°ãçºèŠããããã®æè¯ã®ã¢ãããŒãã§ã¯ãããŸããããå°ãªããšãèªåã® sed-fu ãè©ŠããŠãåé¡ã«ã€ããŠäœãæ°ããããšãåŠãŒããšèããŸããã ãã®éçšã§ãç§ã¯ååã§ãã sed ããŒã¯ ã©ã€ã¿ãŒã«ãããå¹çç㪠sed ã¹ã¯ãªãããèãåºãã®ãæäŒã£ãŠãããããé Œã¿ãŸããã
å
容ãèœãšããŠããŸããŸãã varnishadm vcl.show -v "$VCL_NAME"
ããã«ããããµãŒãã¹ãåèµ·åããæéããããã« sed ã¹ã¯ãªããã®äœæã«éäžã§ããŸãã
sed ãå
¥åãåŠçããæ£ç¢ºãªæ¹æ³ã®ç°¡åãªèª¬æã¯ã次ã®å Žæã«ãããŸãã n
è¡åºåãæåãšããŠæ瀺çã«æå®ãããŸãã
ååã®ã¢ããã€ã¹ãåããŠãæ°åã®ãã¹ãçµãŠãå ã® 116 è¡ç®å šäœãšåãçµæãåŸããã sed ã¹ã¯ãªãããäœæããŸããã
以äžã¯å ¥åããŒã¿ãå«ããµã³ãã« ãã¡ã€ã«ã§ãã
> 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
ãå
¥åããŒã¿ã«ã¯ããããè€æ°ååšããå¯èœæ§ããããŸãã ããããå
ã® 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 ã¹ã¯ãªããã®å 容ã¯æ¬¡ã®ããã«ãªããŸãã
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
ãŸãç§ãã¡ã®é¡ã«åãã£ãŠç¬ã£ãã ã¿ãŒããã«ã®æã空éã§ããŠã£ã³ã¯ããã«ãŒãœã«ãæ°ããã³ãã³ãã®å
¥åãåŸ
ã£ãŠããŸãã...
åºæïŒ habr.com