เจฐเฉˆเจฌเจฟเจŸ เจนเฉ‹เจฒ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจกเจฟเฉฑเจ—เจฃเจพ: เจ‡เฉฑเจ• เจตเจพเจฐเจจเจฟเจธเจผ เจฐเฉ€เจฌเฉ‚เจŸ เจ—เจฒเจคเฉ€ เจฆเฉ€ เจ•เจนเจพเจฃเฉ€ - เจญเจพเจ— 1

เจญเฉ‚เจคเจฟเจจเฉเจธเจผเฉฐเจ•เจพ, เจชเจฟเจ›เจฒเฉ‡ 20 เจฎเจฟเฉฐเจŸเจพเจ‚ เจฒเจˆ เจฌเจŸเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฌเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจธเจฆเฉ€ เจœเจผเจฟเฉฐเจฆเจ—เฉ€ เจ‡เจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ‰เจธ เจฆเฉ€เจ†เจ‚ เจ…เฉฑเจ–เจพเจ‚ เจตเจฟเฉฑเจš เจ…เจฐเจง-เจœเฉฐเจ—เจฒเฉ€ เจธเจฎเฉ€เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจšเฉเจธเจค เจฎเฉเจธเจ•เจฐเจพเจนเจŸ เจจเจพเจฒ เจฎเฉ‡เจฐเฉ‡ เจตเฉฑเจฒ เจฎเฉเฉœเจฆเจพ เจนเฉˆ - "เจฏเจพเจฐ, เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจธเจฎเจ เจ—เจฟเจ† เจนเจพเจ‚เฅค"

โ€œเจ‡เฉฑเจฅเฉ‡ เจฆเฉ‡เจ–เฉ‹,โ€ เจ‰เจน เจธเจ•เฉเจฐเฉ€เจจ เจฆเฉ‡ เจ‡เฉฑเจ• เจ…เฉฑเจ–เจฐ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆ, โ€œเจฎเฉˆเจ‚ เจ†เจชเจฃเฉ€ เจฒเจพเจฒ เจŸเฉ‹เจชเฉ€ เจจเจพเจฒ เจธเฉฑเจŸเจพ เจฒเจ—เจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจ‰เจนเฉ€ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ€เจ เจœเฉ‹ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจนเฉˆโ€ - เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจญเจพเจ— เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ - โ€œเจ—เจฒเจคเฉ€ เจนเฉเจฃ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เฅค"

เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจ‰เจฒเจเจฃ เจ…เจคเฉ‡ เจฅเฉฑเจ•เจฟเจ† เจนเฉ‹เจ‡เจ†, เจฎเฉˆเจ‚ เจธเฉˆเจก เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเจพ เจนเจพเจ‚ เจœเจฟเจธ 'เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจšเจฒเจพเจ“ systemctl varnish reload. เจ—เจฒเจคเฉ€ เจธเฉเจจเฉ‡เจนเจพ เจ—เจพเจ‡เจฌ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ...

"เจฎเฉˆเจ‚ เจ‰เจฎเฉ€เจฆเจตเจพเจฐ เจจเจพเจฒ เจˆเจฎเฉ‡เจฒเจพเจ‚ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ," เจฎเฉ‡เจฐเฉ‡ เจธเจนเจฟเจ•เจฐเจฎเฉ€ เจจเฉ‡ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฟเจ†, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจธเจฆเฉ€ เจฎเฉเจธเจ•เจฐเจพเจนเจŸ เจ–เฉเจธเจผเฉ€ เจจเจพเจฒ เจญเจฐเฉ€ เจ‡เฉฑเจ• เจธเฉฑเจšเฉ€ เจฎเฉเจธเจ•เจฐเจพเจนเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจ—เจˆ, "เจ‡เจน เจ…เจšเจพเจจเจ• เจฎเฉ‡เจฐเฉ‡ 'เจคเฉ‡ เจ† เจ—เจฟเจ† เจ•เจฟ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ!"

เจ‡เจน เจธเจญ เจ•เจฟเจตเฉ‡เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†

เจฒเฉ‡เจ– เจ‡เจน เจธเจฎเจเจฆเจพ เจนเฉˆ เจ•เจฟ bash, awk, sed เจ…เจคเฉ‡ systemd เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจตเจพเจฐเจจเจฟเจธเจผ เจฆเจพ เจ—เจฟเจ†เจจ เจคเจฐเจœเฉ€เจนเฉ€ เจนเฉˆ เจชเจฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
เจธเจจเจฟเฉฑเจชเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจชเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
เจจเจพเจฒ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจญเฉ‚เจคเจฟเจจเฉเจธเจผเฉฐเจ•เจพ.
เจ‡เจน เจฒเจฟเจ–เจค เจฆเฉ‹ เจนเจซเจผเจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจฎเฉ‚เจฒ เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจนเฉˆ; เจ…เจจเฉเจตเจพเจฆ boyikoden.

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจจเจฟเฉฑเจ˜เฉ€ เจชเจคเจเฉœ เจฆเฉ€ เจธเจตเฉ‡เจฐ เจจเฉ‚เฉฐ เจชเฉˆเจจเฉ‹เจฐเจพเจฎเจฟเจ• เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจธเฉ‚เจฐเจœ เจšเจฎเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจœเจผเฉ‡ เจฌเจฐเฉ‚เจเจก เจ•เฉˆเจซเฉ€เจจเจก เจกเจฐเจฟเฉฐเจ• เจฆเจพ เจ‡เฉฑเจ• เจชเจฟเจ†เจฒเจพ เจ•เฉ€เจฌเฉ‹เจฐเจก เจฆเฉ‡ เจชเจพเจธเฉ‡ เจŸเจฟเจ•เจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจฎเจ•เฉˆเจจเฉ€เจ•เจฒ เจ•เฉ€เจฌเฉ‹เจฐเจกเจพเจ‚ เจฆเฉ€ เจ—เฉ‚เฉฐเจœ เจตเจฟเฉฑเจš เจนเฉˆเฉฑเจกเจซเฉ‹เจจเจพเจ‚ เจตเจฟเฉฑเจš เจ†เจตเจพเจœเจผเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฎเจจเจชเจธเฉฐเจฆ เจธเจฟเฉฐเจซเจจเฉ€ เจตเฉฑเจœเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจชเจนเจฟเจฒเฉ€ เจเจ‚เจŸเจฐเฉ€ เจ•เจจเจฌเจจ เจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจฌเฉˆเจ•เจฒเจพเจ— เจŸเจฟเจ•เจŸเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ "เจ‡เจจเจตเฉˆเจธเจŸเฉ€เจ—เฉ‡เจŸ varnishreload sh: echo: I/O error in เจธเจŸเฉ‡เจœเจฟเฉฐเจ—" (เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจตเจฟเฉฑเจš "varnishreload sh: echo: I/O เจ—เจฒเจคเฉ€" เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹) เจฆเฉ‡ เจจเจพเจฒ เจธเจผเจพเจจเจฆเจพเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจšเจฎเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจตเจพเจฐเจจเจฟเจธเจผ เจฆเฉ€ เจ—เฉฑเจฒ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉ‹เจˆ เจ—เจฒเจคเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจญเจพเจตเฉ‡เจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เฉ‹เจˆ เจธเจฎเฉฑเจธเจฟเจ† เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš.

เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเฉ‹ เจœเจพเจฃเฉ‚ เจจเจนเฉ€เจ‚ เจนเจจ varnishreload, เจ‡เจน เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจธเจผเฉˆเฉฑเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸ เจนเฉˆ เจœเฉ‹ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจตเจพเจฐเจจเจฟเจธเจผ - VCL เจตเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจŸเจฟเจ•เจŸ เจฆเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจคเฉ‹เจ‚ เจชเจคเจพ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ, เจธเจŸเฉ‡เจœ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจ—เจฒเจคเฉ€ เจ†เจˆ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจตเจฟเจธเจผเจตเจพเจธ เจธเฉ€ เจ•เจฟ เจธเจŸเฉ‡เจœ เจตเจฟเฉฑเจš เจตเจพเจฐเจจเจฟเจธเจผ เจฆเฉ€ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจนเฉ€ เจธเฉ€, เจฎเฉˆเจ‚ เจฎเฉฐเจจเจฟเจ† เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจฎเจพเจฎเฉ‚เจฒเฉ€ เจ—เจฒเจคเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธ เจฒเจˆ, เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเจพ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฌเฉฐเจฆ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจ†เจ‡เจ† เจนเฉˆ. เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจŸเจฟเจ•เจŸ เจฒเฉˆเจ‚เจฆเจพ เจนเจพเจ‚, เจชเฉ‚เจฐเฉ‡ เจญเจฐเฉ‹เจธเฉ‡ เจจเจพเจฒ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ 30 เจฎเจฟเฉฐเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉ€ เจ˜เฉฑเจŸ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจ•เจฐเจพเจ‚เจ—เจพ, เจ…เจ—เจฒเฉ‡ เจ•เจฌเจพเฉœ เจฆเฉ‡ เจฌเฉ‹เจฐเจก เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจฎเฉ‹เจขเฉ‡ 'เจคเฉ‡ เจฅเจชเจฅเจชเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจœเจผเจฐเฉ‚เจฐเฉ€ เจšเฉ€เจœเจผเจพเจ‚ 'เจคเฉ‡ เจตเจพเจชเจธ เจ† เจœเจพเจ‚เจฆเจพ เจนเจพเจ‚เฅค

200 เจ•เจฟเจฒเฉ‹เจฎเฉ€เจŸเจฐ เจชเฉเจฐเจคเฉ€ เจ˜เฉฐเจŸเจพ เจฆเฉ€ เจฐเจซเจผเจคเจพเจฐ เจจเจพเจฒ เจ•เฉฐเจง เจจเจพเจฒ เจŸเจ•เจฐเจพเจ‰เจฃเจพ

เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจ–เฉ‹เจฒเฉเจนเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ varnishreload, เจกเฉ‡เจฌเฉ€เจ…เจจ เจธเจŸเฉเจฐเฉˆเจš เจšเจฒเจพ เจฐเจนเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• 'เจคเฉ‡, เจฎเฉˆเจ‚ 200 เจฒเจพเจˆเจจเจพเจ‚ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฒเฉฐเจฎเฉ€ เจ‡เฉฑเจ• เจธเจผเฉˆเฉฑเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ‡เจ–เฉ€เฅค

เจธเจ•เฉเจฐเจฟเจชเจŸ เจฐเจพเจนเฉ€เจ‚ เจšเฉฑเจฒเจฆเฉ‡ เจนเฉ‹เจ, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจœเจฟเจนเจพ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจฆเจฟเจธเจฟเจ† เจœเฉ‹ เจŸเจฐเจฎเฉ€เจจเจฒ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจ•เจˆ เจตเจพเจฐ เจšเจฒเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจชเฉˆเจฆเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ†เจ–เจผเจฐเจ•เจพเจฐ, เจ‡เจน เจ‡เฉฑเจ• เจชเฉœเจพเจ… เจนเฉˆ, เจญเจพเจตเฉ‡เจ‚ เจ‡เจน เจŸเฉเฉฑเจŸ เจœเจพเจตเฉ‡, เจ•เฉ‹เจˆ เจตเฉ€ เจธเจผเจฟเจ•เจพเจ‡เจค เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ, เจ เฉ€เจ• เจนเฉˆ ... เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจจเจนเฉ€เจ‚. เจฎเฉˆเจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฆเฉ‡เจ–เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจŸเจฐเจฎเฉ€เจจเจฒ 'เจคเฉ‡ เจ•เฉ€ เจฒเจฟเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ, เจชเจฐ เจ—เจฒเจคเฉ€เจ†เจ‚ เจนเฉเจฃ เจฆเจฟเจ–เจพเจˆ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚เฅค

เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เฉเจ เจนเฉ‹เจฐ เจฆเฉŒเฉœเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจฎเฉˆเจ‚ เจ•เฉเจ เจตเจพเจงเฉ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ—เจฒเจคเฉ€ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจจเจนเฉ€เจ‚ เจฌเจฃเจพ เจธเจ•เจฆเจพ, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฆเจฒเจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจธเฉเฉฑเจŸเจฃเจพ เจนเฉˆเฅค

เจ•เฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ STDOUT เจจเฉ‚เฉฐ เจฐเฉ‹เจ• เจธเจ•เจฆเฉ€ เจนเฉˆ (เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹เจ > &-)? เจœเจพเจ‚ STDERR? เจจเจพ เจนเฉ€ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ.

เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ เจธเจฟเจธเจŸเจฎเจก เจฐเจจ เจตเจพเจคเจพเจตเจฐเจจ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เจฟเจตเฉ‡เจ‚, เจ…เจคเฉ‡ เจ•เจฟเจ‰เจ‚?
เจฎเฉˆเจ‚ เจตเจฟเจฎ เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจฆเจพ เจนเจพเจ‚ varnishreload, เจœเฉ‹เฉœ เจฐเจฟเจนเจพ เจนเฉˆ set -x เจธเจผเฉˆเจฌเจพเจ‚เจ— เจฆเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจนเฉ‡เจ เจพเจ‚, เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจ เจจเจพเจฒ เจ•เฉเจ เจฐเฉ‹เจธเจผเจจเฉ€ เจ†เจตเฉ‡เจ—เฉ€เฅค

เจซเจพเจˆเจฒ เจซเจฟเจ•เจธ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฎเฉˆเจ‚ เจตเจพเจฐเจจเจฟเจธเจผ เจจเฉ‚เฉฐ เจฐเฉ€เจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจตเฉ‡เจ–เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเจฌเจฆเฉ€เจฒเฉ€ เจจเฉ‡ เจธเจญ เจ•เฉเจ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจคเฉ‹เฉœ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ ... เจจเจฟเจ•เจพเจธ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจ—เฉœเจฌเฉœ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเฉ€-เจตเจฐเจ—เฉ‡ เจ•เฉ‹เจก เจนเจจ. เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจŸเจฐเจฎเฉ€เจจเจฒ เจตเจฟเฉฑเจš เจธเจ•เฉเจฐเฉŒเจฒ เจ•เจฐเจจเจพ เจ‡เจน เจชเจคเจพ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฟเฉฑเจฅเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ‰เจฒเจเจฃ เจตเจฟเจš เจนเจพเจ‚เฅค เจ•เฉ€ เจกเฉ€เจฌเฉฑเจ— เจฎเฉ‹เจก เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ? เจจเจนเฉ€เจ‚, เจฌเจ•เจตเจพเจธเฅค เจธเจผเฉˆเฉฑเจฒ เจตเจฟเฉฑเจš เจฌเฉฑเจ—? เจ•เจˆ เจธเฉฐเจญเจพเจตเจฟเจค เจฆเฉเจฐเจฟเจธเจผ เจฎเฉ‡เจฐเฉ‡ เจธเจฟเจฐ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจฆเจฟเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจพเจ•เจฐเฉ‹เจšเจพเจ‚ เจตเจพเจ‚เจ— เจ‰เฉฑเจก เจฐเจนเฉ‡ เจนเจจเฅค เจ•เฉˆเจซเฉ€เจจ-เจชเฉ‚เจฐเฉ‡ เจกเจฐเจฟเฉฐเจ• เจฆเจพ เจ‡เฉฑเจ• เจ•เฉฑเจช เจคเฉเจฐเฉฐเจค เจ–เจพเจฒเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจฆเฉเจฌเจพเจฐเจพ เจธเจชเจฒเจพเจˆ เจฒเจˆ เจฐเจธเฉ‹เจˆ เจฆเฉ€ เจ‡เฉฑเจ• เจคเฉ‡เจœเจผ เจฏเจพเจคเจฐเจพ เจ…เจคเฉ‡โ€ฆ เจšเจฒเฉ‹เฅค เจฎเฉˆเจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸ เจ–เฉ‹เจฒเฉเจนเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเจผเฉˆเจฌเจพเจ‚เจ— เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฆเจพ เจนเจพเจ‚: #!/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 เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจ•เจˆ เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเฉ€-เจธเจผเฉˆเจฒเฉ€ เจฆเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เจน เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ€ เจตเจฟเฉฑเจš เจ•เจฟเฉฑเจฅเฉ‡ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจนเฉˆ เจœเฉ‹ เจ•เฉ‹เจก เจธเจจเจฟเฉฑเจชเจŸ เจฆเฉ€ เจนเฉ‡เจ เจฒเฉ€ เจฒเจพเจˆเจจ เจฌเจพเจฐเฉ‡ เจนเฉˆเฅค
เจธเจผเจพเจฎเจฒ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฒเจˆ เจธเฉฐเจŸเฉˆเจ•เจธ เจฆเจพ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจซเจพเจฐเจฎเฉˆเจŸ เจนเฉˆ:

// 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. เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉฑเจ— เจจเฉ‚เฉฐ เจซเฉœเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจชเจนเฉเฉฐเจš เจจเจนเฉ€เจ‚ เจนเฉˆ, เจฎเฉˆเจ‚ เจธเฉ‹เจšเจฟเจ† เจ•เจฟ เจฎเฉˆเจ‚ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ†เจชเจฃเฉ‡ เจธเฉ‡เจก-เจซเฉ‚ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจธเจผเจพเจ‡เจฆ เจธเจฎเฉฑเจธเจฟเจ† เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเจตเจพเจ‚ เจธเจฟเฉฑเจ–เจพเจ‚เฅค เจฐเจธเจคเฉ‡ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจธเจนเจฟเจ•เจฐเจฎเฉ€, เจธเฉ‡เจก เจŸเจพเจ• เจฒเฉ‡เจ–เจ•, เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจงเฉ‡เจฐเฉ‡ เจ•เฉเจธเจผเจฒ เจธเฉˆเจก เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ‡ เจจเจพเจฒ เจ†เจ‰เจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพเฅค

เจฎเฉˆเจ‚ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเฉ€ varnishadm vcl.show -v "$VCL_NAME" เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจคเจพเจ‚ เจœเฉ‹ เจฎเฉˆเจ‚ เจธเฉ‡เจตเจพ เจฆเฉ‡ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจนเฉ‹เจฃ เจฆเฉ€ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเจฐเฉ‡เจธเจผเจพเจจเฉ€ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ sed เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡ เจธเจ•เจพเจ‚เฅค

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, เจซเจฟเจฐ เจฒเจพเจฒเจš เจจเจพเจฒ เจŸเฉˆเจ•เจธเจŸ เจจเฉ‚เฉฐ เจ–เจพ เจฒเจ“ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจธ เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจฆเฉ‹เจตเฉ‡เจ‚ เจจเฉฐเจฌเจฐ เจธเจผเจพเจฎเจฒ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจธ เจ•เจพเจฐเจตเจพเจˆ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจœเฉ‹ เจตเฉ€ เจฌเจšเจฟเจ† เจนเฉˆ เจ‰เจธเจจเฉ‚เฉฐ เจฌเจšเจพเจ“เฅค เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเฉ‹เฅค

เจธเจงเจพเจฐเจจ, เจนเฉˆ เจจเจพ?

เจ…เจธเฉ€เจ‚ sed เจธเจ•เฉเจฐเจฟเจชเจŸ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉฑเจฅ เจคเฉ‹เจ‚ เจ–เฉเจธเจผ เจธเฉ€ เจ•เจฟ เจ‡เจน เจธเจพเจฐเฉ‡ เจฎเฉ‚เจฒ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ‡ เจธเจพเจฐเฉ‡ เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเจฟเฉฑเจคเฉ‡, เจ‡เจธเจฒเจˆ เจฎเฉˆเจ‚ เจธเจฐเจตเจฐ 'เจคเฉ‡ "เจตเจพเจฐเจจเจฟเจธเจผเจฐเฉ€เจฒเฉ‹เจก" เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฟเจ† เจ…เจคเฉ‡ เจฆเฉเจฌเจพเจฐเจพ เจฆเฉŒเฉœ เจ—เจฟเจ† systemctl reload varnish. เจ—เฉฐเจฆเฉ€ เจ—เจฒเจคเฉ€ echo: write error: Broken pipe เจธเจพเจกเฉ‡ เจšเจฟเจนเจฐเฉ‡ 'เจคเฉ‡ เจซเจฟเจฐ เจนเจพเจธเจพ เจ† เจ—เจฟเจ†เฅค เจ‡เฉฑเจ• เจ…เฉฑเจ– เจฎเจพเจฐเจฆเจพ เจ•เจฐเจธเจฐ เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ‡ เจนเจจเฉ‡เจฐเฉ‡ เจ–เจพเจฒเฉ€ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉ‹เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐ เจฐเจฟเจนเจพ เจธเฉ€...

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹