Falling Down the Rabbit Hole: ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื™ื™ืŸ ื•ื•ืึทืจื ื™ืฉ ืจืขื‘ืึธืึธื˜ ื˜ืขื•ืช - ื˜ื™ื™ืœ 1

ื’ื”ืึธืกื˜ื™ื ื•ืฉืึทื ืงืึท, ื ืื› ืŸ ืงืœืืค ืŸ ืื•ื™ ืฃ ื“ ื™ ืงื ืขืค ืŸ ื“ ื™ ืคืจื™ืขืจื“ื™ืง ืข 20 ืžื™ื ื•ื˜ , ืฐ ื™ ื–ืฒ ืŸ ืœืขื‘ ืŸ ืื™ ื– ื’ืขืฐืข ืŸ ืืคื”ืขื ื’ื™ืง , ืฐืข ื˜ ื–ื™ ืš ืฆื• ื ืžื™ ืจ ืžื™ ื˜ ื ื”ืืœื‘ึพืฐื™ืœื“ืข ืจ ืื•ื™ืกื“ืจื•ืง ืŸ ืื™ ืŸ ื“ ื™ ืื•ื™ื’ ืŸ ืื• ืŸ ืžื™ ื˜ ื ื›ื™ื˜ืจืข ืŸ ืฉืžืฒื›ืœ ืŸ โ€” ืดื“ื•ื“ื™ , ื›ื“ ื™ ืื™ ืš ืคืืจืฉื˜ืฒ .

"ืงื•ืง ืึทื”ืขืจ," ื–ืึธื’ื˜ ืขืจ, ื•ื•ืฒึทื–ื ื“ื™ืง ืื•ื™ืฃ ืื™ื™ื ืขื ืคึฟื•ืŸ ื“ื™ ืกื™ืžื‘ืึธืœืŸ ืื•ื™ืคึฟืŸ ืขืงืจืึทืŸ, "ืื™ืš ื’ืขื•ื•ืขื˜ ื“ื™ืจ ืžื™ื™ืŸ ืจื•ื™ื˜ืข ื”ื•ื˜, ืื•ื™ื‘ ืžื™ืจ ืœื™ื™ื’ืŸ ืฆื• ื•ื•ืึธืก ืื™ืš ื”ืึธื‘ ื“ื™ืจ ื ืึธืจ ื’ืขืฉื™ืงื˜ ืึทื”ืขืจ," ืึธื ื•ื•ื™ื™ื–ื ื“ื™ืง ืื•ื™ืฃ ืืŸ ืื ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ืงืึธื“, "ื“ืขืจ ื˜ืขื•ืช ื•ื•ืขื˜ ื ื™ื˜ ืžืขืจ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ."

ื ื‘ื™ืกืœ ืคึผืึทื–ืึทืœื“ ืื•ืŸ ืžื™ื“, ืื™ืš ื˜ื•ื™ืฉืŸ ื“ื™ ืกืขื“ ื“ืขืจืงืœืขืจื•ื ื’ ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืคึฟืึทืจ ืึท ื‘ืฉืขืช, ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ื˜ืขืงืข, ืื•ืŸ ืœื•ื™ืคืŸ systemctl varnish reload. ื“ืขืจ ื˜ืขื•ืช ืึธื ื–ืึธื’ ืื™ื– ืคืึทืจืฉื•ื•ื•ื ื“ืŸ ...

"ื“ื™ ืื™ืžืขื™ืœืก, ื•ื•ืึธืก ืื™ืš ื”ืึธื‘ ืื•ื™ืกื’ืขื‘ื™ื˜ืŸ ืžื™ื˜ืŸ ืงืึทื ื“ื™ื“ืึทื˜," ื”ืึธื˜ ืžืฒึทืŸ ืงืึธืœืขื’ืข ื•ื•ืฒึทื˜ืขืจ ื’ืขื–ืึธื’ื˜, ื•ื•ืขืŸ ื–ืฒึทืŸ ืฉืžื™ื™ื›ืœ ืžืึธืจืคึฟื™ืจื˜ ื–ื™ืš ืื™ืŸ ืึทืŸ ืืžืชืŸ ืฉืžื™ื™ื›ืœ ืคึฟื•ืœ ืžื™ื˜ ืคึฟืจื™ื™ื“, "ืขืก ื”ืึธื˜ ืžื™ืš ืคึผืœื•ืฆืขื ืืฒึทื ื’ืขืคึฟืึทืœืŸ, ืึทื– ื“ืึธืก ืื™ื– ืคึผื•ื ืงื˜ ื“ืขืจ ื–ืขืœื‘ืขืจ ืคึผืจืึธื‘ืœืขื!"

ื•ื•ื™ ื”ืื˜ ืขืก ืึทืœืข ืื ื’ืขื”ื•ื™ื‘ืŸ

ื“ืขืจ ืึทืจื˜ื™ืงืœ ืึทืกื•ืžื– ืึท ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื•ื•ื™ bash, awk, sed ืื•ืŸ systemd ืึทืจื‘ืขื˜. ื•ื•ื™ืกืŸ ืคื•ืŸ ื•ื•ืึทืจื ื™ืฉ ืื™ื– ื‘ื™ืœื›ืขืจ ืึธื‘ืขืจ ื ื™ื˜ ืคืืจืœืื ื’ื˜.
ืฆื™ื™ื˜ ืกื˜ืึทืžืคึผืก ืื™ืŸ ืกื ื™ืคึผืึทืฅ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขื‘ื™ื˜ืŸ.
ื’ืขืฉืจื™ื‘ืŸ ืžื™ื˜ ื’ื”ืึธืกื˜ื™ื ื•ืฉืึทื ืงืึท.
ื“ืขืจ ื˜ืขืงืกื˜ ืื™ื– ืึทืŸ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ ืืจื•ื™ืก ืื™ืŸ ืขื ื’ืœื™ืฉ ืžื™ื˜ ืฆื•ื•ื™ื™ ื•ื•ืึธื›ืŸ ืฆื•ืจื™ืง; ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ื‘ื•ื™ืงืึธื“ืŸ.

ื“ื™ ื–ื•ืŸ ืฉื™ื™ื ื˜ ื“ื•ืจืš ื“ื™ ืคึผืึทื ืึธืจืึทืžื™ืง ืคึฟืขื ืฆื˜ืขืจ ืื•ื™ืฃ ืืŸ ืื ื“ืขืจ ื•ื•ืึทืจืขื ื”ืึทืจื‘ืกื˜ ืžืึธืจื’ืŸ, ืึท ื’ืœืขื–ืœ ืคื•ืŸ ืคืจื™ืฉ ื‘ืจื•ื“ ืงืึทืคื™ืŸ ื’ืขื˜ืจืึทื ืง ืจืขืกื˜ ืึทื•ื•ืขืง ืคื•ืŸ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ, ืึท ื‘ืึทืœื™ื‘ืกื˜ืข ืกื™ืžืคืึธื ื™ืข ืคื•ืŸ โ€‹โ€‹ืกืึธื•ื ื“ืก ืฉืคึผื™ืœื˜ ืื™ื‘ืขืจ ื“ื™ ืจืึทืฉืœื™ื ื’ ืคื•ืŸ ืžืึทืงืึทื ื™ืงืึทืœ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ ืื™ืŸ ื“ื™ ื›ืขื“ืคืึธื•ื ื–, ืื•ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืึธื–ื™ืฆื™ืข ืื™ืŸ ื“ื™ ื‘ืึทืงืœืึธื’ ื‘ื™ืœืขื˜ ืจืฉื™ืžื” ืื•ื™ืฃ ื“ื™ ืงืึทื ื‘ืึทืŸ ื‘ืจืขื˜ ืฉืคึผื™ืฆื™ืง ื’ืœืึธื•ื•ืก ืžื™ื˜ ื“ื™ ื’ื•ืจืœื“ื™ืง ื˜ืขื•ืช ื˜ื™ื˜ืœ: igate "varnishreload sh: echo: I / O ื˜ืขื•ืช" ืื™ืŸ ื‘ื™ื ืข). ื•ื•ืขืŸ ืขืก ืงื•ืžื˜ ืฆื• ื•ื•ืึทืจื ื™ืฉ, ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืื•ืŸ ืงืขื ืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืงื™ื™ืŸ ืžื™ืกื˜ื™ื™ืงืก, ืึทืคึฟื™ืœื• ืื•ื™ื‘ ื–ื™ื™ ื˜ืึธืŸ ื ื™ื˜ ืคื™ืจืŸ ืฆื• ืงื™ื™ืŸ ืคืจืื‘ืœืขืžืขืŸ, ื•ื•ื™ ืื™ืŸ ื“ืขื ืคืึทืœ.

ืคึฟืึทืจ ื“ื™ ื•ื•ืืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ื•ื•ืึทืจื ื™ืฉืจืขืœืึธืึทื“, ื“ืึธืก ืื™ื– ืึท ืคึผืฉื•ื˜ ืฉืึธืœ ืฉืจื™ืคื˜ ื’ืขื ื™ืฆื˜ ืฆื• ืจื™ืœืึธื•ื“ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืึทืจื ื™ืฉ - ืื•ื™ืš ื’ืขืจื•ืคืŸ VCL.

ื•ื•ื™ ื“ืขืจ ื˜ื™ื˜ืœ ืคื•ืŸ ื“ืขื ื‘ื™ืœืขื˜ ืกืึทื’ื“ื–ืฉืขืกืฅ, ื“ืขืจ ื˜ืขื•ืช ืื™ื– ืคืืจื’ืขืงื•ืžืขืŸ ืื•ื™ืฃ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจืก ืื™ืŸ ื“ืขืจ ื‘ื™ื ืข, ืื•ืŸ ื–ื™ื ื˜ ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื›ืขืจ ืึทื– ื•ื•ืึทืจื ื™ืฉ ืก ืจื•ื˜ื™ื ื’ ืื™ืŸ ื“ืขืจ ื‘ื™ื ืข ืื™ื– ืืจื‘ืขื˜ืŸ ืจืขื›ื˜, ืื™ืš ืื ื’ืขื ื•ืžืขืŸ ืึทื– ื“ืึธืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืึท ืžื™ื ืขืจื•ื•ืขืจื˜ื™ืง ื’ืจื™ื™ึทื–. ืึทื–ื•ื™, ื ืึธืจ ืึท ืึธื ื–ืึธื’ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ืŸ ืึท ืฉื•ื™ืŸ ืคืืจืžืื›ื˜ ืจืขื–ื•ืœื˜ืึทื˜ ื˜ื™ื™ึทืš. ืื™ืš ื ืขื ืคืืจ ื–ื™ืš ื ื‘ื™ืœืขื˜, ืื™ืŸ ืคื•ืœืŸ ื‘ื˜ื—ื•ืŸ ืื– ืื™ืš ื•ื•ืขืœ ืขืก ืคืืจืฆื™ื™ื›ืขื ืขืŸ ื’ืจื™ื™ื˜ ืื™ืŸ ื•ื•ื™ื™ื ื™ื’ืขืจ ื•ื•ื™ 30 ืžื™ื ื•ื˜, ืงืœืืค ื–ื™ืš ืื•ื™ืฃ ื“ืขืจ ืืงืกืขืœืข ืคืืจ ืืคืจื™ื™ื ื™ืงืŸ ื“ืขื ื‘ืจืขื˜ ืคื•ืŸ ื“ื™ ืงื•ืžืขื ื“ื™ื’ืข ื–ืื›ืขืŸ ืื•ืŸ ื–ื™ืš ืฆื•ืจื™ืง ืฆื• ืžืขืจ ื•ื•ื™ื›ื˜ื™ื’ืข ื–ืื›ืŸ.

ืงืจืึทืš ืื™ืŸ ืึท ื•ื•ืึทื ื˜ ืื™ืŸ 200 ืงื™ืœืืžืขื˜ืขืจ / ื”

ืขืคึฟืขื ืขืŸ ืึท ื˜ืขืงืข varnishreload, ืื•ื™ืฃ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจืก ื•ื•ืึธืก ืœื•ื™ืคืŸ Debian Stretch, ืื™ืš ื’ืขื–ืขืŸ ืึท ืฉืึธืœ ืฉืจื™ืคื˜ ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ 200 ืฉื•ืจื•ืช ืœืึทื ื’.

ืคืœื™ืกื ื“ื™ืง ื“ื•ืจืš ื“ืขื ืฉืจื™ืคื˜, ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื–ืขืŸ ืขืคึผืขืก ื•ื•ืึธืก ืงืขืŸ ืคืึทืจืฉืึทืคืŸ ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ืขืก ืขื˜ืœืขื›ืข ืžืึธืœ ื’ืœื™ื™ึทืš ืคื•ืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ.

ื ืึธืš ืึทืœืข, ื“ืึธืก ืื™ื– ืึท ื‘ื™ื ืข, ืึทืคึฟื™ืœื• ืื•ื™ื‘ ืขืก ื‘ืจื™ื™ืงืก, ืงื™ื™ืŸ ืื™ื™ื ืขืจ ื‘ืึทืงืœืึธื’ื  ื–ื™ืš, ื ื• ... ื ื™ืฉื˜ ืฆื• ืคื™ืœ. ืื™ืš ืœื•ื™ืคืŸ ื“ืขื ืฉืจื™ืคื˜ ืื•ืŸ ื–ืขืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ ื•ื•ืึธืงื–ืึทืœ, ืึธื‘ืขืจ ื“ื™ ืขืจืจืึธืจืก ื–ืขื ืขืŸ ื ื™ื˜ ืžืขืจ ืงืขื ื˜ื™ืง.

ื ืคึผืึธืจ ืžืขืจ ืœื•ื™ืคื˜ ืฆื• ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืจืขืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ืขื ื˜ืขื•ืช ืึธืŸ ืขื˜ืœืขื›ืข ืขืงืกื˜ืจืข ืžื™, ืื•ืŸ ืื™ืš ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก ื•ื•ื™ ืฆื• ื˜ื•ื™ืฉืŸ ื“ืขื ืฉืจื™ืคื˜ ืื•ืŸ ืžืึทื›ืŸ ืขืก ื ืึธืš ื•ื•ืึทืจืคืŸ ืึท ื˜ืขื•ืช.

ืงืขื ืขืŸ ื“ื™ ืฉืจื™ืคื˜ ืคืึทืจืฉืคึผืึทืจืŸ STDOUT (ื ื™ืฆืŸ > &-)? ืึธื“ืขืจ STDERR? ื ื™ื˜ ื’ืขืืจื‘ืขื˜ ืื™ืŸ ื“ื™ ืกื•ืฃ.

ื“ืึธืš ืกื™ืกื˜ืขืžืขื“ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ื™ ืœื•ื™ืคืŸ ืกื•ื•ื™ื•ื•ืข ืื™ืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’, ืึธื‘ืขืจ ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก?
ืื™ืš ืงืขืจ ืื•ื™ืฃ vim ืื•ืŸ ืจืขื“ืึทื’ื™ืจืŸ 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 ืฆื• ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืื™ืฆื˜ ืึทืงื˜ื™ื•ื• ื•ื•ืงืœ, ืื•ื™ื‘ ืงื™ื™ืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ "ืจืขืœืึธืึทื“_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. ื›ืึธื˜ืฉ ื“ืึธืก ืื™ื– ื‘ืืฉื˜ื™ืžื˜ ื ื™ื˜ ื“ืขืจ ื‘ืขืกื˜ืขืจ ืฆื•ื’ืึทื ื’ ืฆื• ื›ืึทืคึผืŸ ื“ืขื ื–ืฉื•ืง, ืื™ืš ื’ืขื“ืึทื ืง ืื™ืš ื•ื•ืึธืœื˜ ืœืคึผื—ื•ืช ืคึผืจื•ื‘ื™ืจืŸ ืžื™ื™ืŸ ืกืขื“-ืคื• ืื•ืŸ ืืคึฟืฉืจ ืœืขืจื ืขืŸ ืขืคึผืขืก ื ื™ื™ึท ื•ื•ืขื’ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื. ืื•ื™ืคืŸ ื•ื•ืขื’ ื”ืึธื‘ ืื™ืš ื’ืขื‘ืขื˜ืŸ ืžื™ื™ืŸ ืงืึธืœืขื’ืข, ื“ืขืจ ืกืขื“ ืจืขื“ื ืขืจ ืฉืจื™ื™ื‘ืขืจ, ืขืจ ื–ืึธืœ ืžื™ืจ ื”ืขืœืคืŸ ืงื•ืžืขืŸ ืžื™ื˜ ืึท ืžืขืจ ืขืคืขืงื˜ื™ื•ื• ืกืขื“ ืฉืจื™ืคื˜.

ืื™ืš ื”ืื‘ ืืจืืคื’ืขืœืื–ื˜ ื“ืขื ืื™ื ื”ืืœื˜ varnishadm vcl.show -v "$VCL_NAME" ืฆื• ืึท ื˜ืขืงืข ืึทื–ื•ื™ ืื™ืš ืงืขื ืขืŸ ืคืึธืงื•ืก ืื•ื™ืฃ ืฉืจื™ื™ื‘ืŸ ื“ื™ ืกืขื“ ืฉืจื™ืคื˜ ืึธืŸ ืงื™ื™ืŸ ื›ืึทืกืึทืœ ืคื•ืŸ ืกืขืจื•ื•ื™ืก ืจื™ืกื˜ืึทืจื˜.

ื ืงื•ืจืฅ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ืคึผื•ื ืงื˜ ื•ื•ื™ ืกืขื“ ื›ืึทื ื“ืึทืœื– ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื–ื™ื™ืŸ GNU ืžืึทื ื•ืึทืœ. ืื™ืŸ ื“ื™ ืกืขื“ ืงื•ื•ืืœืŸ, ื“ืขืจ ืกื™ืžื‘ืึธืœ 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, ืื•ืŸ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™ ืื™ืŸ ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ ืึทื•ื•ืง ื˜ืขืจืžืึทื ื™ื™ืฅ ื ืึธืš ื“ืขืจ ืขืจืฉื˜ืขืจ ื’ืœื™ื™ึทื›ืŸ.

# ัˆะฐะณ ะฟะตั€ะฒั‹ะน, ะฒั‹ะฒะตัั‚ะธ ั‚ะพะปัŒะบะพ ัั‚ั€ะพะบะธ ั ะบะพะผะผะตะฝั‚ะฐั€ะธัะผะธ
# ะธัะฟะพะปัŒะทัƒั ะฒะพะทะผะพะถะฝะพัั‚ะธ 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

ืึทื–ื•ื™ ื“ืขืจ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื•ื•ืึทืจื ื™ืฉืจืขืœืึธืึทื“ ืฉืจื™ืคื˜ ื•ื•ืึธืœื˜ ืงื•ืงืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’