แƒ™แƒฃแƒ แƒ“แƒฆแƒšแƒ˜แƒก แƒฎแƒ•แƒ แƒ”แƒšแƒจแƒ˜ แƒ“แƒแƒชแƒ”แƒ›แƒ: แƒšแƒแƒฅแƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ - แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1

แƒฆแƒแƒกแƒขแƒ˜แƒœแƒฃแƒจแƒแƒœแƒ™แƒแƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒก แƒ‘แƒแƒšแƒ 20 แƒฌแƒฃแƒ—แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒฃแƒ แƒขแƒงแƒแƒ›แƒ“แƒ, แƒ—แƒ˜แƒ—แƒฅแƒแƒก แƒ›แƒ˜แƒกแƒ˜ แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒกแƒ–แƒ” แƒ˜แƒงแƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒจแƒ˜ แƒœแƒแƒฎแƒ”แƒ•แƒ แƒแƒ“ แƒ•แƒ”แƒšแƒฃแƒ แƒ˜ แƒ›แƒ–แƒ”แƒ แƒ˜แƒ— แƒ“แƒ แƒ”แƒจแƒ›แƒแƒ™แƒฃแƒ แƒ˜ แƒฆแƒ˜แƒ›แƒ˜แƒšแƒ˜แƒ— แƒ›แƒ˜แƒ‘แƒ แƒฃแƒœแƒ“แƒ - โ€žแƒ›แƒ”แƒ’แƒแƒ‘แƒแƒ แƒ, แƒ›แƒ’แƒแƒœแƒ˜ แƒ›แƒ˜แƒ•แƒฎแƒ•แƒ“แƒ˜โ€œ.

โ€แƒแƒ˜ แƒแƒฅ,โ€ แƒแƒ›แƒ‘แƒแƒ‘แƒก แƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ–แƒ”, โ€แƒ›แƒ” แƒ“แƒแƒ•แƒ“แƒ”แƒ‘ แƒฉแƒ”แƒ›แƒก แƒฌแƒ˜แƒ—แƒ”แƒš แƒฅแƒฃแƒ“แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒแƒฅ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ—โ€, แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒ–แƒ”, โ€แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒแƒฆแƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒโ€œ.

แƒชแƒแƒขแƒ แƒกแƒแƒ’แƒแƒœแƒ”แƒ‘แƒ”แƒšแƒจแƒ˜ แƒฉแƒแƒ•แƒแƒ แƒ“แƒœแƒ˜แƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒฆแƒšแƒ˜แƒšแƒ˜, แƒ•แƒแƒชแƒ•แƒšแƒ˜ sed แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒชแƒแƒขแƒ แƒฎแƒแƒœแƒ˜ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ˜แƒ—, แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ” แƒคแƒแƒ˜แƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— systemctl varnish reload. แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒฅแƒ แƒ...

โ€แƒ”แƒš.แƒฌแƒ”แƒ แƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ•แƒชแƒ•แƒแƒšแƒ” แƒ™แƒแƒœแƒ“แƒ˜แƒ“แƒแƒขแƒ—แƒแƒœ,โ€ แƒ’แƒแƒœแƒแƒ’แƒ แƒซแƒ แƒฉแƒ”แƒ›แƒ›แƒ แƒ™แƒแƒšแƒ”แƒ’แƒแƒ›, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒ˜แƒกแƒ˜ แƒฆแƒ˜แƒ›แƒ˜แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ แƒกแƒ˜แƒฎแƒแƒ แƒฃแƒšแƒ˜แƒก แƒ’แƒฃแƒšแƒฌแƒ แƒคแƒ”แƒš แƒฆแƒ˜แƒ›แƒ˜แƒšแƒจแƒ˜, โ€แƒฃแƒชแƒ”แƒ‘ แƒ›แƒ˜แƒ•แƒฎแƒ•แƒ“แƒ˜, แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ!โ€

แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜

แƒกแƒขแƒแƒขแƒ˜แƒ แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒก แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก bash, awk, sed แƒ“แƒ systemd. แƒšแƒแƒฅแƒ˜แƒก แƒชแƒแƒ“แƒœแƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒกแƒแƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ.
แƒ“แƒ แƒแƒ˜แƒ—แƒ˜ แƒแƒœแƒแƒ‘แƒ”แƒญแƒ“แƒ”แƒ‘แƒ˜ แƒกแƒœแƒ˜แƒžแƒ”แƒขแƒ”แƒ‘แƒจแƒ˜ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ.
แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ”แƒ แƒ—แƒแƒ“ แƒฆแƒแƒกแƒขแƒ˜แƒœแƒฃแƒจแƒแƒœแƒ™แƒ.
แƒ”แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒฌแƒ˜แƒœ แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ  แƒ”แƒœแƒแƒ–แƒ” แƒ’แƒแƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜; แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ‘แƒแƒ˜แƒ™แƒแƒ“แƒ”แƒœแƒ˜.

แƒ›แƒ–แƒ” แƒแƒœแƒแƒ—แƒ”แƒ‘แƒก แƒžแƒแƒœแƒแƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒคแƒแƒœแƒฏแƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ›แƒแƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ— แƒ—แƒ‘แƒ˜แƒš แƒ“แƒ˜แƒšแƒแƒก, แƒแƒฎแƒšแƒแƒ“ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒคแƒ”แƒ˜แƒœแƒ˜แƒ— แƒ›แƒ“แƒ˜แƒ“แƒแƒ แƒ˜ แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒก แƒ›แƒแƒจแƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ”แƒงแƒ แƒ“แƒœแƒแƒ‘แƒ, แƒงแƒฃแƒ แƒกแƒแƒกแƒ›แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒŸแƒฆแƒ”แƒ แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒ˜ แƒ‘แƒ’แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒคแƒแƒœแƒ˜แƒ, แƒแƒฎแƒจแƒแƒ‘แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ แƒ˜แƒแƒšแƒก แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒฉแƒแƒ›แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜ แƒ™แƒแƒœแƒ‘แƒแƒœแƒ˜แƒก แƒ“แƒแƒคแƒแƒ–แƒ” แƒ›แƒฎแƒ˜แƒแƒ แƒฃแƒšแƒแƒ“ แƒแƒœแƒแƒ—แƒ”แƒ‘แƒก แƒกแƒแƒ‘แƒ”แƒ“แƒ˜แƒกแƒฌแƒ”แƒ แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žInvestigate varnishreloadโ€œ sh: echo: I/O error in stagingโ€œ (แƒ’แƒแƒ›แƒแƒ˜แƒ™แƒ•แƒšแƒ˜แƒ”แƒ— โ€žvarnishreload sh: echo: I/O แƒจแƒ”แƒชแƒ“แƒแƒ›แƒโ€œ แƒ“แƒแƒ“แƒ’แƒ›แƒแƒจแƒ˜). แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒšแƒแƒฅแƒก, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ“แƒ แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ  แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒแƒœ แƒ แƒแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜.

แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒแƒ  แƒ˜แƒชแƒœแƒแƒ‘แƒก แƒšแƒแƒฅแƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒšแƒแƒฅแƒ˜ - แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒฃแƒฌแƒแƒ“แƒ VCL.

แƒ แƒแƒ’แƒแƒ แƒช แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ“แƒแƒœ แƒฉแƒแƒœแƒก, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ›แƒแƒฎแƒ“แƒ แƒกแƒชแƒ”แƒœแƒแƒ–แƒ” แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ” แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ แƒ แƒแƒ“แƒ’แƒแƒœ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒงแƒแƒ•แƒ˜, แƒ แƒแƒ› แƒกแƒชแƒ”แƒœแƒแƒ–แƒ” แƒšแƒแƒฅแƒ˜แƒก แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ, แƒฉแƒแƒ•แƒ—แƒ•แƒแƒšแƒ”, แƒ แƒแƒ› แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ แƒฃแƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒฎแƒฃแƒ แƒฃแƒš แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜. แƒ‘แƒ˜แƒšแƒ”แƒ—แƒก แƒ•แƒ˜แƒฆแƒ”แƒ‘ แƒฉแƒ”แƒ›แƒ—แƒ•แƒ˜แƒก, แƒกแƒ แƒฃแƒšแƒ˜ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ› 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-แƒ” แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ–แƒ” แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒญแƒแƒแƒ‘แƒจแƒ˜?
แƒ›แƒแƒ“แƒ˜ แƒ•แƒœแƒแƒฎแƒแƒ—.
แƒ’แƒฃแƒœแƒ“แƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒแƒ—แƒฎแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒแƒ’แƒแƒœ:

  1. แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ echo, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก ${VCL_SHOW}
    echo "$VCL_SHOW"
  2. awk, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒซแƒ”แƒ‘แƒก แƒฎแƒแƒ–แƒก (แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก), แƒกแƒแƒ“แƒแƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒšแƒ˜, แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ’แƒแƒขแƒ”แƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒแƒ แƒ˜แƒก โ€œ//โ€, แƒฎแƒแƒšแƒ แƒ›แƒ”แƒแƒ แƒ” แƒแƒ แƒ˜แƒก โ€œVCL.SHOWโ€.
    Awk แƒ“แƒแƒฌแƒ”แƒ แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒแƒ› แƒจแƒแƒ‘แƒšแƒแƒœแƒ”แƒ‘แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก.

    awk '$1 == "//" && $2 == "VCL.SHOW" {print; exit}'
  3. แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ•แƒ”แƒšแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒฎแƒฃแƒ— แƒชแƒ•แƒšแƒแƒ“แƒแƒ“, แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒ”แƒฎแƒฃแƒ—แƒ” FILE แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒš แƒฎแƒแƒ–แƒก. แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“, แƒ‘แƒแƒšแƒ แƒ”แƒฅแƒ แƒฌแƒ”แƒ แƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒก ${FILE}.
    { read -r DELIM VCL_SHOW INDEX SIZE FILE; echo "$FILE" }
  4. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒงแƒ•แƒ”แƒšแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 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 แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒ›แƒ˜แƒกแƒ˜ GNU แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ. แƒกแƒ”แƒ“ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒจแƒ˜ แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒ 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ