рдлрд╝реЙрд▓рд┐рдВрдЧ рдбрд╛рдЙрди рдж рд░реИрдмрд┐рдЯ рд╣реЛрд▓: рдПрдХ рд╡рд╛рд░реНрдирд┐рд╢ рд░рд┐рдмреВрдЯ рддреНрд░реБрдЯрд┐ рдХреА рдХрд╣рд╛рдиреА - рднрд╛рдЧ 1

рдШреЛрд╕реНрдЯрд┐рдиреБрд╢рдВрдХрд╛рдкрд┐рдЫрд▓реЗ 20 рдорд┐рдирдЯ рддрдХ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреИрд╕реЗ рдХрд┐ рдЙрд╕рдХрд╛ рдЬреАрд╡рди рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдерд╛, рдЙрд╕рдХреА рдЖрдБрдЦреЛрдВ рдореЗрдВ рдПрдХ рдЕрд░реНрдз-рдЬрдВрдЧрд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдПрдХ рдзреВрд░реНрдд рдореБрд╕реНрдХрд╛рди рдХреЗ рд╕рд╛рде рдореЗрд░реА рдУрд░ рдореБрдбрд╝рддрд╛ рд╣реИ - "рдпрд╛рд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдБред"

"рдпрд╣рд╛рдБ рджреЗрдЦреЛ," рд╡рд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдкреНрд░рддреАрдХ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд╣рддрд╛ рд╣реИ, "рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВрдиреЗ рддреБрдореНрд╣реЗрдВ рдЕрднреА-рдЕрднреА рдпрд╣рд╛рдБ рднреЗрдЬрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЙрд╕реЗ рдЬреЛрдбрд╝ рджреЗрдВ рдЬреЛ рдореИрдВрдиреЗ рддреБрдореНрд╣реЗрдВ рдпрд╣рд╛рдБ рднреЗрдЬрд╛ рд╣реИ," рдХреЛрдб рдХреЗ рдПрдХ рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП, "рддреНрд░реБрдЯрд┐ рдЕрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред"

рдереЛрдбрд╝рд╛ рд╣реИрд░рд╛рди рдФрд░ рдердХрд╛ рд╣реБрдЖ, рдореИрдВ рдЙрд╕ рд╕реЗрдб рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдмрджрд▓рддрд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдХреБрдЫ рд╕рдордп рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ systemctl varnish reload. рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИ...

"рдореИрдВрдиреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛," рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдЬрд╛рд░реА рд░рдЦрд╛, рдЬреИрд╕реЗ рд╣реА рдЙрд╕рдХреА рдореБрд╕реНрдХреБрд░рд╛рд╣рдЯ рдЦреБрд╢реА рд╕реЗ рднрд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрд╕реНрдХрд╛рди рдореЗрдВ рдмрджрд▓ рдЧрдИ, "рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ!"

рдЗрд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП

рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдордЭ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдмреИрд╢, рдСрдХ, рд╕реЗрдб рдФрд░ рд╕рд┐рд╕реНрдЯрдордб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд░реНрдирд┐рд╢ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рд╣реИ рдШреЛрд╕реНрдЯрд┐рдиреБрд╢рдВрдХрд╛.
рдпрд╣ рдкрд╛рда рджреЛ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдореВрд▓ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ; рдЕрдиреБрд╡рд╛рдж рдмреЙрдпрд┐рдХреЛрдбреЗрди.

рдПрдХ рдФрд░ рдЧрд░реНрдо рд╢рд░рдж рдЛрддреБ рдХреА рд╕реБрдмрд╣ рдордиреЛрд░рдо рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрд░рдЬ рдЪрдордХрддрд╛ рд╣реИ, рддрд╛рдЬрд╛ рдмрдирд╛ рдХреИрдлреАрдирдпреБрдХреНрдд рдкреЗрдп рдХрд╛ рдПрдХ рдХрдк рдХреАрдмреЛрд░реНрдб рд╕реЗ рджреВрд░ рд░рд╣рддрд╛ рд╣реИ, рд╣реЗрдбрдлрд╝реЛрди рдореЗрдВ рдпрд╛рдВрддреНрд░рд┐рдХ рдХреАрдмреЛрд░реНрдб рдХреА рд╕рд░рд╕рд░рд╛рд╣рдЯ рдкрд░ рдзреНрд╡рдирд┐рдпреЛрдВ рдХреА рдПрдХ рдкрд╕рдВрджреАрджрд╛ рд╕рд┐рдореНрдлрдиреА рдмрдЬрддреА рд╣реИ, рдФрд░ рдХрдВрдмрди рдмреЛрд░реНрдб рдкрд░ рдмреИрдХрд▓реЙрдЧ рдЯрд┐рдХрдЯ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╢реАрд░реНрд╖рдХ "рдЗрдирд╡реЗрд╕реНрдЯрд┐рдЧреЗрдЯ рд╡рд╛рд░реНрдирд┐рд╢рд░реАрд▓реЛрдб рд╢: рдЗрдХреЛ: рдЖрдИ/рдУ рдПрд░рд░ рдЗрди рд╕реНрдЯреЗрдЬрд┐рдВрдЧ" рдХреЗ рд╕рд╛рде рдЪрдордХрддреА рд╣реИред рдордВрдЪ). рдЬрдм рд╡рд╛рд░реНрдирд┐рд╢ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рди рд╣реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рд╣реЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рд╡рд╛рд░реНрдирд┐рд╢ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ, рдпрд╣ рдПрдХ рд╕рд░рд▓ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╛рд░реНрдирд┐рд╢ - рдЗрд╕реЗ рд╡реАрд╕реАрдПрд▓ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдХрдЯ рдХреЗ рд╢реАрд░реНрд╖рдХ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рд╕реНрдЯреЗрдЬ рдХреЗ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╣реБрдИ, рдФрд░ рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдерд╛ рдХрд┐ рд╕реНрдЯреЗрдЬ рдореЗрдВ рд╡рд╛рд░реНрдирд┐рд╢ рдХреА рд░реВрдЯрд┐рдВрдЧ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧрд▓рддреА рд╣реЛрдЧреАред рддреЛ, рдмрд╕ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖ рдЧрдпрд╛ред рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдЯрд┐рдХрдЯ рд▓реЗрддрд╛ рд╣реВрдВ, рдкреВрд░реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд┐ рдореИрдВ рдЗрд╕реЗ 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 рдХреЗ рд▓рд┐рдПред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡реАрд╕реАрдПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╡рд╛рд░реНрдирд┐рд╢ рдХреЗ рд░реВрдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдХрдИ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдЕрднреА рднреА рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИрдВ, рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ 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 рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡реАрд╕реАрдПрд▓ рдХреЗ рдирд╛рдо рдкрд░, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ "reload_20190101_120000_12397" рд╣реЛрдЧрд╛ред

рдареАрдХ рд╣реИ, рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓. ${VCL_SHOW} рдЕрдм рддрдХ рд╕реНрдкрд╖реНрдЯ, рд╡рд╛рд░реНрдирд┐рд╢ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдм рдореИрдВ рдЕрдВрддрддрдГ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рдбреИрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ set -x рдпрд╣ рдЗрддрдирд╛ рдЯреВрдЯрд╛ рд╣реБрдЖ рдирд┐рдХрд▓рд╛ - рдЗрд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рд╛рдордЧреНрд░реА рд╢рд╛рдорд┐рд▓ рдереАред

рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рд╡реАрд╕реАрдПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдХреНрд╕рд░ рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реА-рд╢реИрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдХрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рд╣реИред
рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдирд┐рдореНрди рд╣реИ:

// 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_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 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХреВрдВред

рд╕реЗрдб рдЗрдирдкреБрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдЗрд╕рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЬреАрдПрдирдпреВ рдореИрдиреБрдЕрд▓. рд╕реЗрдб рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ, рдкреНрд░рддреАрдХ 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

рддреЛ рд╡рд╛рд░реНрдирд┐рд╢рд░реАрд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ