เชซเซ‹เชฒเชฟเช‚เช— เชกเชพเช‰เชจ เชง เชฐเซ‡เชฌเชฟเชŸ เชนเซ‹เชฒ: เชเช• เชตเชพเชฐเซเชจเชฟเชถ เชฐเซ€เชฌเซ‚เชŸ เชญเซ‚เชฒเชจเซ€ เชตเชพเชฐเซเชคเชพ - เชญเชพเช— 1

เชญเซ‚เชคเชฟเชจเซเชถเช‚เช•เชพ, เช…เช—เชพเช‰เชจเซ€ 20 เชฎเชฟเชจเชฟเชŸ เชฎเชพเชŸเซ‡ เชฌเชŸเชจเซ‹ เชชเชฐ เชงเชฌเช•เชพเชฐเชพ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชœเชพเชฃเซ‡ เชคเซ‡เชจเซเช‚ เชœเซ€เชตเชจ เชคเซ‡เชจเชพ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เช›เซ‡, เชคเซ‡เชจเซ€ เช†เช‚เช–เซ‹เชฎเชพเช‚ เช…เชฐเซเชง-เชœเช‚เช—เชฒเซ€ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เช…เชจเซ‡ เชธเซเชฒเซ€ เชธเซเชฎเชฟเชค เชธเชพเชฅเซ‡ เชฎเชพเชฐเซ€ เชคเชฐเชซ เชตเชณเซ‡ เช›เซ‡ - "เชฆเซ‹เชธเซเชค, เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชนเซเช‚ เชธเชฎเชœเซ€ เช—เชฏเซ‹ เช›เซเช‚."

"เช…เชนเซ€เช‚ เชœเซเช“," เชคเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐเชจเชพ เชชเซเชฐเชคเซ€เช•เซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชคเชฐเชซ เช‡เชถเชพเชฐเซ‹ เช•เชฐเซ€เชจเซ‡ เช•เชนเซ‡ เช›เซ‡, "เชนเซเช‚ เชคเชฎเชจเซ‡ เชฎเชพเชฐเซ€ เชฒเชพเชฒ เชŸเซ‹เชชเซ€ เชชเชฐ เชถเชฐเชค เชฒเช—เชพเชตเซเช‚ เช›เซเช‚, เชœเซ‹ เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เช…เชนเซ€เช‚ เชœเซ‡ เชฎเซ‹เช•เชฒเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚," เช•เซ‹เชกเชจเชพ เชฌเซ€เชœเชพ เชตเชฟเชญเชพเช— เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ€เชจเซ‡, "เชญเซ‚เชฒ เชนเชตเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ‡ เชจเชนเซ€เช‚."

เชฅเซ‹เชกเซ‹ เชฎเซ‚เช‚เชเชตเชฃเชญเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชฅเชพเช•เซ‡เชฒเชพ, เชนเซเช‚ เชธเซ‡เชก เชธเซเชŸเซ‡เชŸเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซเช‚ เช›เซเช‚ เชœเซ‡เชจเชพ เชชเชฐ เช…เชฎเซ‡ เชฅเซ‹เชกเชพ เชธเชฎเชฏเชฅเซ€ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชซเชพเช‡เชฒ เชธเชพเชšเชตเซ‹ เช…เชจเซ‡ เชšเชฒเชพเชตเซ‹ systemctl varnish reload. เชญเซ‚เชฒ เชธเช‚เชฆเซ‡เชถ เช…เชฆเซƒเชถเซเชฏ เชฅเชˆ เช—เชฏเซ‹ เช›เซ‡...

"เชฎเซ‡เช‚ เช‰เชฎเซ‡เชฆเชตเชพเชฐ เชธเชพเชฅเซ‡ เชˆเชฎเซ‡เชˆเชฒเชจเซ€ เช†เชช-เชฒเซ‡ เช•เชฐเซ€," เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชจเซ€ เชธเซเชฎเชฟเชค เช†เชจเช‚เชฆเชฅเซ€ เชญเชฐเชชเซ‚เชฐ เช…เชธเชฒเซ€ เชธเซเชฎเชฟเชคเชฎเชพเช‚ เชซเซ‡เชฐเชตเชพเชˆ เชœเชพเชฏ เช›เซ‡, "เช…เชšเชพเชจเช• เชฎเชจเซ‡ เช–เชฌเชฐ เชชเชกเซ€ เช•เซ‡ เช† เชฌเชฐเชพเชฌเชฐ เช เชœ เชธเชฎเชธเซเชฏเชพ เช›เซ‡!"

เชคเซ‡ เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚

เชฒเซ‡เช– เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ bash, awk, sed เช…เชจเซ‡ systemd เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเชฎเชœ เชงเชพเชฐเซ‡ เช›เซ‡. เชตเชพเชฐเซเชจเชฟเชถเชจเซเช‚ เชœเซเชžเชพเชจ เชชเซเชฐเชพเชงเชพเชจเซเชฏ เช›เซ‡ เชชเชฐเช‚เชคเซ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€.
เชธเซเชจเชฟเชชเซ‡เชŸเซเชธเชฎเชพเช‚ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.
เชธเชพเชฅเซ‡ เชฒเช–เชพเชฏเซ‡เชฒ เชญเซ‚เชคเชฟเชจเซเชถเช‚เช•เชพ.
เช† เชฒเช–เชพเชฃ เชฌเซ‡ เช…เช เชตเชพเชกเชฟเชฏเชพ เชชเชนเซ‡เชฒเชพ เช…เช‚เช—เซเชฐเซ‡เชœเซ€เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชฏเซ‡เชฒ เชฎเซ‚เชณเชจเซ‹ เช…เชจเซเชตเชพเชฆ เช›เซ‡; เช…เชจเซเชตเชพเชฆ เชฌเซ‹เชฏเช•เซ‹เชกเซ‡เชจ.

เช…เชจเซเชฏ เช—เชฐเชฎ เชชเชพเชจเช–เชฐเชจเซ€ เชธเชตเชพเชฐเซ‡ เชตเชฟเชนเช‚เช—เชฎ เชฌเชพเชฐเซ€เช“เชฎเชพเช‚เชฅเซ€ เชธเซ‚เชฐเซเชฏ เชเชณเช•เซ‡ เช›เซ‡, เชคเชพเชœเชพ เช‰เช•เชพเชณเซ‡เชฒเชพ เช•เซ‡เชซเซ€เชจเชฏเซเช•เซเชค เชชเซ€เชฃเชพเช‚เชจเซ‹ เชเช• เช•เชช เช•เซ€เชฌเซ‹เชฐเซเชกเชฅเซ€ เชฆเซ‚เชฐ เชฐเชนเซ‡ เช›เซ‡, เชนเซ‡เชกเชซเซ‹เชจเชฎเชพเช‚ เชฏเชพเช‚เชคเซเชฐเชฟเช• เช•เซ€เชฌเซ‹เชฐเซเชกเชจเชพ เช—เชกเช—เชกเชพเชŸ เชชเชฐ เช…เชตเชพเชœเซ‹เชจเซ€ เชฎเชจเชชเชธเช‚เชฆ เชธเชฟเชฎเซเชซเชจเซ€ เชตเชพเช—เซ‡ เช›เซ‡, เช…เชจเซ‡ เช•เชพเชจเชฌเชจ เชฌเซ‹เชฐเซเชก เชชเชฐ เชฌเซ‡เช•เชฒเซ‹เช— เชŸเชฟเช•เชฟเชŸเชจเซ€ เชฏเชพเชฆเซ€เชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชเชจเซเชŸเซเชฐเซ€ เช›เซ‡: "เชนเซเช‚ เช–เซ‚เชฌ เชœ เชฐเชฎเซเชœเซ€ เชถเซ€เชฐเซเชทเช• เชธเชพเชฅเซ‡. เชธเซเชŸเซ‡เชœเชฟเช‚เช—เชฎเชพเช‚ เช“ เชเชฐเชฐโ€ (เชธเซเชŸเซ‡เชœเชฎเชพเช‚ โ€œvarnishreload sh : echo: I/O เชเชฐเชฐโ€เชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ‹). เชœเซเชฏเชพเชฐเซ‡ เชตเชพเชฐเซเชจเชฟเชถเชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชญเซ‚เชฒเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชนเซ‹เชˆ เชถเช•เชคเซ€ เชจเชฅเซ€, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพเชฎเชพเช‚ เชชเชฐเชฟเชฃเชฎเชคเซ€ เชจ เชนเซ‹เชฏ, เชœเซ‡เชฎ เช•เซ‡ เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚.

เชœเซ‡เช“ เชชเชฐเชฟเชšเชฟเชค เชจเชฅเซ€ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชตเชพเชฐเซเชจเชฟเชถเชฒเซ‹เชก, เช† เชเช• เชธเชฐเชณ เชถเซ‡เชฒ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชฐเซ€เชฅเซ€ เชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡ เชตเชพเชฐเซเชจเชฟเชถ - VCL เชชเชฃ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡.

เชŸเชฟเช•เชฟเชŸเชจเซเช‚ เชถเซ€เชฐเซเชทเช• เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชคเซ‡เชฎ, เชธเซเชŸเซ‡เชœเชฎเชพเช‚เชจเชพ เชเช• เชธเชฐเซเชตเชฐ เชชเชฐ เชญเซ‚เชฒ เช†เชตเซ€ เชนเชคเซ€, เช…เชจเซ‡ เชฎเชจเซ‡ เชตเชฟเชถเซเชตเชพเชธ เชนเชคเซ‹ เช•เซ‡ เชธเซเชŸเซ‡เชœเชฎเชพเช‚ เชตเชพเชฐเซเชจเชฟเชถเชจเซเช‚ เชฐเซ‚เชŸเซ€เช‚เช— เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชงเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เช† เชเช• เชจเชพเชจเซ€ เชญเซ‚เชฒ เชนเชถเซ‡. เชคเซ‡เชฅเซ€, เชซเช•เซเชค เชเช• เชธเช‚เชฆเซ‡เชถ เชœเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชฌเช‚เชง เช†เช‰เชŸเชชเซเชŸ เชชเซเชฐเชตเชพเชนเชฎเชพเช‚ เช†เชตเซเชฏเซ‹. เชนเซเช‚ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชŸเชฟเช•เชฟเชŸ เชฒเช‰เช‚ เช›เซเช‚, เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชฟเชถเซเชตเชพเชธ เชธเชพเชฅเซ‡ เช•เซ‡ เชนเซเช‚ เชคเซ‡เชจเซ‡ 30 เชฎเชฟเชจเชฟเชŸเชฅเซ€ เช“เช›เชพ เชธเชฎเชฏเชฎเชพเช‚ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€เชถ, เช†เช—เชพเชฎเซ€ เชœเช‚เช•เชจเชพ เชฌเซ‹เชฐเซเชกเชจเซ‡ เชธเชพเชซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช–เชญเชพ เชชเชฐ เชฅเชชเชพเชตเซ€เชถ เช…เชจเซ‡ เชตเชงเซ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชฌเชพเชฌเชคเซ‹ เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เชถ.

200 เช•เชฟเชฎเซ€/เช•เชฒเชพเช•เชจเซ€ เชเชกเชชเซ‡ เชฆเชฟเชตเชพเชฒ เชธเชพเชฅเซ‡ เช…เชฅเชกเชพเชตเซเช‚

เชซเชพเช‡เชฒ เช–เซ‹เชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช varnishreload, เชกเซ‡เชฌเชฟเชฏเชจ เชธเซเชŸเซเชฐเซ‡เชš เชšเชฒเชพเชตเชคเชพ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชเช• เชชเชฐ, เชฎเซ‡เช‚ 200 เชฅเซ€ เช“เช›เซ€ เชฒเซ€เชŸเซ€เช“ เชฒเชพเช‚เชฌเซ€ เชถเซ‡เชฒ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชœเซ‹เชˆ.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เชšเชพเชฒเชคเชพ, เชฎเชจเซ‡ เชเชตเซเช‚ เช•เช‚เชˆ เชฆเซ‡เช–เชพเชคเซเช‚ เชจเชนเซ‹เชคเซเช‚ เช•เซ‡ เชœเซ‡ เชคเซ‡เชจเซ‡ เชŸเชฐเซเชฎเชฟเชจเชฒเชฅเซ€ เชธเซ€เชงเซ€ เช˜เชฃเซ€ เชตเช–เชค เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชธเชฎเชธเซเชฏเชพ เชŠเชญเซ€ เช•เชฐเซ€ เชถเช•เซ‡.

เช›เซ‡เชตเชŸเซ‡, เช† เชเช• เชคเชฌเช•เซเช•เซ‹ เช›เซ‡, เชœเซ‹ เชคเซ‡ เชคเซ‚เชŸเซ€ เชœเชพเชฏ เชคเซ‹ เชชเชฃ, เช•เซ‹เชˆ เชซเชฐเชฟเชฏเชพเชฆ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚, เชธเชพเชฐเซเช‚ ... เชตเชงเซ เชชเชกเชคเซเช‚ เชจเชฅเซ€. เชนเซเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชœเซ‹เช‰เช‚ เช›เซเช‚ เช•เซ‡ เชŸเชฐเซเชฎเชฟเชจเชฒ เชชเชฐ เชถเซเช‚ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชชเชฐเช‚เชคเซ เชญเซ‚เชฒเซ‹ เชนเชตเซ‡ เชฆเซ‡เช–เชพเชคเซ€ เชจเชฅเซ€.

เชนเซเช‚ เช•เซ‡เชŸเชฒเชพเช• เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชตเชฟเชจเชพ เชญเซ‚เชฒเชจเซเช‚ เชชเซเชจเชƒเช‰เชคเซเชชเชพเชฆเชจ เช•เชฐเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเซ‹เชกเชพ เชตเชงเซ เชฆเซ‹เชกเซ‡ เช›เซ‡, เช…เชจเซ‡ เชนเซเช‚ เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชตเซ€ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชคเซ‡ เชนเชœเซ€ เชชเชฃ เชญเซ‚เชฒ เชซเซ‡เช‚เช•เซ€ เชฆเซ‡ เช›เซ‡.

เชถเซเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸ STDOUT (เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ > &-)? เช…เชฅเชตเชพ STDERR? เช…เช‚เชคเซ‡ เชฌเช‚เชจเซ‡เช เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชจเชนเซ€เช‚.

เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ systemd เชฐเชจ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ‡ เช…เชฎเซเช• เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เชถเชพ เชฎเชพเชŸเซ‡?
เชนเซเช‚ เชตเชฟเชฎ เชšเชพเชฒเซ เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซเช‚ เช›เซเช‚ varnishreload, เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ set -x เชถเซ‡เชฌเซ‡เช‚เช—เชจเซ€ เชจเซ€เชšเซ‡, เช†เชถเชพ เช›เซ‡ เช•เซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เชกเชฟเชฌเช— เช•เชฐเชตเชพเชฅเซ€ เชฅเซ‹เชกเซ‹ เชชเซเชฐเช•เชพเชถ เช†เชตเชถเซ‡.

เชซเชพเช‡เชฒ เช เซ€เช• เชฅเชˆ เช—เชˆ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชตเชพเชฐเซเชจเชฟเชถ เชซเชฐเซ€เชฅเซ€ เชฒเซ‹เชก เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชœเซ‹เชฏเซเช‚ เช•เซ‡ เชซเซ‡เชฐเชซเชพเชฐเชฅเซ€ เชฌเชงเซเช‚ เชœ เชคเซ‚เชŸเซ€ เช—เชฏเซเช‚ เช›เซ‡... เชเช•เซเชเซ‹เชธเซเชŸ เช เชธเช‚เชชเซ‚เชฐเซเชฃ เช—เชกเชฌเชก เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชŸเชจ C-เชœเซ‡เชตเชพ เช•เซ‹เชก เช›เซ‡. เชคเซ‡ เช•เซเชฏเชพเช‚เชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเชตเซเช‚ เชชเชฃ เชชเซ‚เชฐเชคเซเช‚ เชจเชฅเซ€. เชนเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เช›เซเช‚. เชถเซเช‚ เชกเชฟเชฌเช— เชฎเซ‹เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชšเชพเชฒเชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเชพ เช•เชพเชฎเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡? เช•เซ‹เชˆ เชฌเช•เชตเชพเชถ เชจเชนเซ€เช‚. เชถเซ‡เชฒเชฎเชพเช‚ เชญเซ‚เชฒ เช›เซ‡? เช•เซ‡เชŸเชฒเชพเช• เชธเช‚เชญเชตเชฟเชค เชฆเซƒเชถเซเชฏเซ‹ เชฎเชพเชฐเชพ เชฎเชพเชฅเชพเชฎเชพเช‚ เช•เซ‹เช•เชฐเซ‹เชšเชจเซ€ เชœเซ‡เชฎ เชœเซเชฆเซ€ เชœเซเชฆเซ€ เชฆเชฟเชถเชพเชฎเชพเช‚ เช‰เชกเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡. เช•เซ‡เชซเซ€เชจเชฅเซ€ เชญเชฐเชชเซ‚เชฐ เชชเซ€เชฃเซเช‚เชจเซ‹ เชเช• เช•เชช เชคเซเชตเชฐเชฟเชคเชฎเชพเช‚ เช–เชพเชฒเซ€ เชฅเชˆ เชœเชพเชฏ เช›เซ‡, เชชเซเชจเชƒ เชชเซเชฐเชตเช เชพ เชฎเชพเชŸเซ‡ เชฐเชธเซ‹เชกเชพเชฎเชพเช‚ เชเชกเชชเซ€ เชธเชซเชฐ เช…เชจเซ‡โ€ฆ เชšเชพเชฒเซ‹ เชœเชˆเช. เชนเซเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช–เซ‹เชฒเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชถเซ‡เชฌเชพเช‚เช—เชจเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เช‰เช‚ เช›เซเช‚: #!/bin/sh.

/bin/sh - เช† เชซเช•เซเชค เชฌเซ‡เชถ เชธเชฟเชฎเชฒเชฟเช‚เช• เช›เซ‡, เชคเซ‡เชฅเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เช…เชฐเซเชฅเช˜เชŸเชจ POSIX- เชธเซเชธเช‚เช—เชค เชฎเซ‹เชกเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เช–เชฐเซเช‚ เชจเซ‡? เชคเซ‡ เชคเซเชฏเชพเช‚ เชจ เชนเชคเซ‹! เชกเซ‡เชฌเชฟเชฏเชจ เชชเชฐ เชกเชฟเชซเซ‹เชฒเซเชŸ เชถเซ‡เชฒ เชกเซ‡เชถ เช›เซ‡, เชœเซ‡ เชฌเชฐเชพเชฌเชฐ เชถเซเช‚ เช›เซ‡ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‡ เช›เซ‡ /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}, เชฅเซ€ 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 เชจเชพ เชจเชพเชฎ เชชเชฐ, เชœเซ‹ เช•เซ‹เชˆ เชนเซ‹เชฏ เชคเซ‹. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ "เชฐเซ€เชฒเซ‹เชก_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 เชฎเชฟเชจเชฟเชŸ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช› เชตเช–เชค เชธเชฎเชพเชชเซเชค เชฅเชˆ เช—เชˆ เช›เซ‡ เช…เชจเซ‡ เชตเชงเซเชฎเชพเช‚, เชเช• เช‰เชšเซเชš เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพ เช•เชพเชฐเซเชฏ เชฆเซ‡เช–เชพเชฏเซเช‚ เช›เซ‡, เชฌเชพเช•เซ€เชจเชพ เช•เซ‡เชธเซ‹เชจเซ‡ เชฌเชพเชœเซ เชชเชฐ เชงเช•เซ‡เชฒเซ€ เชฆเซ‡ เช›เซ‡. เชฌเชพเช•เซ€เชจเซเช‚ เช…เช เชตเชพเชกเชฟเชฏเซเช‚ เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹เชฅเซ€ เชญเชฐเซ‡เชฒเซเช‚ เชนเชคเซเช‚ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ sed เชชเชฐเชจเซ€ เชšเชฐเซเชšเชพ เช…เชจเซ‡ เช‰เชฎเซ‡เชฆเชตเชพเชฐ เชธเชพเชฅเซ‡เชจเชพ เช‡เชจเซเชŸเชฐเชตเซเชฏเซเชฅเซ€ เชฅเซ‹เชกเซเช‚ เช“เช›เซเช‚ เชนเชคเซเช‚. เชฎเชพเช‚ เชญเซ‚เชฒเชจเซ€ เชธเชฎเชธเซเชฏเชพ varnishreload เชธเชฎเชฏเชจเซ€ เชฐเซ‡เชคเซ€เชฎเชพเช‚ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช–เซ‹เชตเชพเชˆ เช—เชฏเซเช‚.

เชคเชฎเชพเชฐเชพ เช•เชนเซ‡เชตเชพเชคเชพ เชธเซ‡เชก-เชซเซ‚... เชตเชพเชธเซเชคเชตเชฎเชพเช‚... เชฌเช•เชตเชพเชธ

เชชเช›เซ€เชจเชพ เช…เช เชตเชพเชกเชฟเชฏเซ‡ เชเช• เชเช•เชฆเชฎ เชฎเชซเชค เชฆเชฟเชตเชธ เชนเชคเซ‹, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เช† เชŸเชฟเช•เชฟเชŸ เชซเชฐเซ€เชฅเซ€ เชฒเซ‡เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชฎเชจเซ‡ เช†เชถเชพ เชนเชคเซ€ เช•เซ‡ เชฎเชพเชฐเชพ เชฎเช—เชœเชฎเชพเช‚, เช† เชฌเชงเชพ เชธเชฎเชฏเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เช•เซ‡เชฒ เชถเซ‹เชงเซ€ เชฐเชนเซ€ เช›เซ‡, เช…เชจเซ‡ เช† เชตเช–เชคเซ‡ เชนเซเช‚ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชธเชฎเชœเซ€เชถ เช•เซ‡ เชถเซเช‚ เช–เซ‹เชŸเซเช‚ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ€ เชตเช–เชค เชฎเชพเชคเซเชฐ เช•เซ‹เชก เชฌเชฆเชฒเชตเชพเชฅเซ€ เชฎเชฆเชฆ เชฎเชณเซ€ เชจ เชนเซ‹เชตเชพเชฅเซ€, เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ 116เชฎเซ€ เชฒเชพเช‡เชจเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚, เชนเชพเชฒเชจเซ‹ เช•เซ‹เชก เช…เชตเชฟเชตเซ‡เช•เซ€ เชนเชคเซ‹. เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฌเชฟเชฒเช•เซเชฒ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ read.

เชญเซ‚เชฒ เชซเชฐเซ€เชฅเซ€ เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช:
sh: echo: broken pipe - เช† เช†เชฆเซ‡เชถเชฎเชพเช‚, เช‡เช•เซ‹ เชฌเซ‡ เชœเช—เซเชฏเชพเช เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชจเซ‡ เชถเช‚เช•เชพ เช›เซ‡ เช•เซ‡ เชชเซเชฐเชฅเชฎ เชตเชงเซ เชธเช‚เชญเชตเชฟเชค เช—เซเชจเซ‡เช—เชพเชฐ (เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡, เช…เชฅเชตเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ‹ เชธเชพเชฅเซ€) เช›เซ‡. Awk เชชเชฃ เช†เชคเซเชฎเชตเชฟเชถเซเชตเชพเชธเชจเซ‡ เชชเซเชฐเซ‡เชฐเชฟเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช…เชจเซ‡ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ เช–เชฐเซ‡เช–เชฐ เช›เซ‡ awk | {read; echo} เชกเชฟเชเชพเช‡เชจ เช† เชฌเชงเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡, เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เชฌเชฆเชฒเชถเซ‹ เชจเชนเซ€เช‚? เช† เชตเชจ-เชฒเชพเช‡เชจ เช•เชฎเชพเชจเซเชก awk เชจเซ€ เชคเชฎเชพเชฎ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เช† เชตเชงเชพเชฐเชพเชจเซ‹ เชชเชฃ read เชชเชฐเชฟเชถเชฟเชทเซเชŸเชฎเชพเช‚.

เช›เซ‡เชฒเซเชฒเชพ เช…เช เชตเชพเชกเชฟเชฏเชพเชฅเซ€ เชเช• เช…เชนเซ‡เชตเชพเชฒ เชนเชคเซ‹ sedเชนเซเช‚ เชฎเชพเชฐเซ€ เชจเชตเซ€ เชนเชธเซเชคเช—เชค เช•เซŒเชถเชฒเซเชฏเซ‹เชจเซ‡ เช…เชœเชฎเชพเชตเชตเชพ เช…เชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹ echo | awk | { read; echo} เชตเชงเซ เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ echo | sed. เชœเซเชฏเชพเชฐเซ‡ เชญเซ‚เชฒเชจเซ‡ เชชเช•เชกเชตเชพ เชฎเชพเชŸเซ‡ เช† เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชถเซเชฐเซ‡เชทเซเช  เช…เชญเชฟเช—เชฎ เชจเชฅเซ€, เชฎเซ‡เช‚ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เชนเซเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชฎเชพเชฐเซเช‚ เชธเซ‡เชก-เชซเซ‚ เช…เชœเชฎเชพเชตเซ€เชถ เช…เชจเซ‡ เช•เชฆเชพเชš เชธเชฎเชธเซเชฏเชพ เชตเชฟเชถเซ‡ เช•เช‚เชˆเช• เชจเชตเซเช‚ เชถเซ€เช–เซ€เชถ. เชฐเชธเซเชคเชพเชฎเชพเช‚, เชฎเซ‡เช‚ เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐ, เชธเซ‡เชก เชŸเซ‹เช• เชฒเซ‡เช–เช•, เชฎเชจเซ‡ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชธเซ‡เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชพเชฅเซ‡ เช†เชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เช•เชนเซเชฏเซเช‚.

เชฎเซ‡เช‚ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซ€ varnishadm vcl.show -v "$VCL_NAME" เชซเชพเช‡เชฒ เชชเชฐ เชœเซ‡เชฅเซ€ เชนเซเช‚ เชธเซ‡เชตเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญเชจเซ€ เช•เซ‹เชˆเชชเชฃ เชฎเซเชถเซเช•เซ‡เชฒเซ€ เชตเชฟเชจเชพ เชธเซ‡เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซเช‚.

sed เช‡เชจเชชเซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชตเชฐเซเชฃเชจ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ GNU เชฎเซ‡เชจเซเชฏเซเช…เชฒ. sed เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚, เชชเซเชฐเชคเซ€เช• n เชฐเซ‡เช–เชพ เชตเชฟเชญเชพเชœเช• เชคเชฐเซ€เช•เซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค.

เช•เซ‡เชŸเชฒเชพเช• เชชเชพเชธเชฎเชพเช‚, เช…เชจเซ‡ เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเชจเซ€ เชธเชฒเชพเชนเชฅเซ€, เช…เชฎเซ‡ เชเช• เชธเซ‡เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ€ เชœเซ‡ เชธเชฎเช—เซเชฐ เชฎเซ‚เชณ เชฒเชพเช‡เชจ 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, เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชฎเชพเช‚ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช˜เชฃเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€ เชœ เชชเซเชฐเชฅเชฎ เชฎเซ‡เชš เชชเช›เซ€ เชฎเซ‚เชณ 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, เชชเช›เซ€ เชฒเซ‹เชญเชฅเซ€ เชฒเช–เชพเชฃเชจเซ‡ เช–เชพเชˆ เชฒเซ‹ เชœเซ‡เชฎเชพเช‚ เชคเซ‡ เชฒเชพเช‡เชจเชฎเชพเช‚ เชฌเช‚เชจเซ‡ เชจเช‚เชฌเชฐเซ‹ เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ เช…เชจเซ‡ เช† เช“เชชเชฐเซ‡เชถเชจ เชชเช›เซ€ เชœเซ‡ เชฌเชšเซ‡ เชคเซ‡ เชธเชพเชšเชตเซ‹. เชธเช‚เช—เซเชฐเชนเชฟเชค เชฎเซ‚เชฒเซเชฏ เชฐเชœเซ‚ เช•เชฐเซ‹ เช…เชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‹.

เชธเชฐเชณ, เชคเซ‡ เชจเชฅเซ€?

เช…เชฎเซ‡ เชธเซ‡เชก เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช…เชจเซ‡ เช เชนเช•เซ€เช•เชคเชฅเซ€ เช–เซเชถ เชนเชคเชพ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฎ เชฎเซ‚เชณ เช•เซ‹เชกเชจเซ‡ เชฌเชฆเชฒเซ‡ เช›เซ‡. เชฎเชพเชฐเชพ เชฌเชงเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹เช เช‡เชšเซเช›เชฟเชค เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช†เชชเซเชฏเชพ, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชธเชฐเซเชตเชฐ เชชเชฐ "เชตเชพเชฐเซเชจเชฟเชถเซเชฐเซ‡เชฒเซ‹เชก" เชฌเชฆเชฒเซเชฏเซ‹ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฆเซ‹เชกเซเชฏเซ‹ systemctl reload varnish. เช—เช‚เชฆเซ€ เชญเซ‚เชฒ echo: write error: Broken pipe เช…เชฎเชพเชฐเชพ เชšเชนเซ‡เชฐเชพ เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชนเชพเชธเซเชฏ เช†เชตเซเชฏเซเช‚. เช†เช‚เช– เชฎเชพเชฐเชคเซ‹ เช•เชฐเซเชธเชฐ เชŸเชฐเซเชฎเชฟเชจเชฒเชจเชพ เช˜เซ‡เชฐเชพ เชถเซ‚เชจเซเชฏเชฎเชพเช‚ เชจเชตเชพ เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒ เชฅเชตเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹...

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹