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

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


рдЗрд╕реЗ рджреЗрдЦрд┐рдП тАЭ- рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдореМрдЬреВрдж рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ -тАЬ рдореИрдВрдиреЗ рдЕрдкрдиреА рд▓рд╛рд▓ рдЯреЛрдкреА рдкрд░ рд╢рд░реНрдд рд▓рдЧрд╛рдИ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдордиреЗ рдЬреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ рд╡рд╣ рдЖрдкрдХреЛ рдпрд╣рд╛рдБ рднреЗрдЬрд╛ рд╣реИ тАЭ- рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ -тАЬ рд╡рд╣рд╛рдБ рд╣реЛрдЧрд╛ рдЕрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред тАЭ
рдереЛрдбрд╝рд╛ рд╣реИрд░рд╛рди рдФрд░ рдердХрд╛ рд╣реБрдЖ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рдХреА рдЧрдИ sed рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ systemctl varnish reload ред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЧрдпрд╛ ...


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


рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ


рдпрд╣ рд▓реЗрдЦ рдмреИрд╢, awk рдФрд░ systemd рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░рд┐рдЪрд┐рддрддрд╛ рдорд╛рдирддрд╛ рд╣реИред рд╡рд╛рд░реНрдирд┐рд╢ рдХрд╛ рдХреБрдЫ рдЬреНрдЮрд╛рди рдлрд╛рдпрджреЗрдордВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рднреВрддрд┐рдирднреВрд╖рдг рдХреЗ рд╕рд╛рде рд╕рд╣-рд▓реЗрдЦрдХред


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


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


рдЯрд┐рдХрдЯ рдХреЗ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдорд╢реАрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рддреНрд░реБрдЯрд┐ рдЖрдИ рд╣реИ рдФрд░ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡рд╛рд░реНрдирд┐рд╢ рд░реВрдЯрд┐рдВрдЧ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ рдпрд╣ рдХреБрдЫ рдорд╛рдореВрд▓реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдмрд╕ рдмрдВрдж рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрджреЗрд╢ред рдореИрдВ рдЯрд┐рдХрдЯ рд╣рдбрд╝рдкрддрд╛ рд╣реВрдВ, рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ 30 рдорд┐рдирдЯ рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рдПрдХ рдФрд░ рд╕рд╛рдВрд╕рд╛рд░рд┐рдХ рдХрд╛рд░реНрдп рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкреАрда рдкрд░ рдердкрдердкрд╛рдКрдВрдЧрд╛ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдКрдВрдЧрд╛ред


200kph рдкрд░ рджреАрд╡рд╛рд░ рд╕реЗ рдЯрдХрд░рд╛рдирд╛


рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ varnishreload рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реБрдП, рдореБрдЭреЗ 200 рд░реЗрдЦрд╛рдУрдВ рд╕реЗ рдХрдо рд▓рдВрдмреА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓рддреА рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдкрд░, рдореБрдЭреЗ рдХреБрдЫ рднреА рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдмрд╛рд░-рдмрд╛рд░ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдордВрдЪрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдЯреВрдЯ рдЬрд╛рдП, рдХреЛрдИ рднреА рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдареАрдХ рд╣реИ ... рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ, рд╡рд╣ рд╣реИред рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЬреЛрдбрд╝реЗ рдиреЗ рдмрд╛рд░-рдмрд╛рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рди рдмрдирд╛рдП рдХрд┐ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рди рдХрд░ рд╕рдХреВрдВ рдФрд░ рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдореЛрдбрд╝рдиреЗ рдФрд░ рдореЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП STDOUT рдХреЛ рдкреВрд░реА рддрд░рд╣ рдмрдВрдж рдХрд░рдирд╛ ( > &- ) рдХреБрдЫ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ? рдпрд╛ stderr? рди рд╣реА рдХрд┐рдпрд╛ред


рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдордб рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╕реЗ, рдФрд░ ... рдХреНрдпреЛрдВ? рдореИрдВ рд╡рд┐рдо рдХреЛ рдЖрдЧ varnishreload рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ varnishreload рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ varnishreload , set -x рд╕рд╣реА рдХреЛ varnishreload рдХреЗ varnishreload рдЬреЛрдбрд╝рдХрд░, рдЙрдореНрдореАрдж рдХрд░рддрд╛ varnishreload рдХрд┐ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рди рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рд░реЛрд╢рдиреА рдмрд╣рд╛рдПрдЧрд╛ред


рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреИрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд░реНрдирд┐рд╢ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ ... рдЖрдЙрдЯрдкреБрдЯ рд╕реА-рд╕реНрдЯрд╛рдЗрд▓ рдХреЛрдб рдХреЗ рдЯрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреВрд░реНрдг рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░реЙрд▓рдмреИрдХ рдмрдлрд░ рдпрд╣ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрд▓рдЭрди рдорд╣рд╕реВрд╕ рд╣реЛрддреА рд╣реИред рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ? рдирд╣реАрдВ, рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдЦреЛрд▓ рдореЗрдВ рдПрдХ рдмрдЧ? рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдмреЗрддрд╣рд╛рд╢рд╛ рднрд╛рдЧ рд░рд╣реЗ рдПрдХрд╛рдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдпред рдХреИрдлреАрдирдпреБрдХреНрдд рдкреЗрдп рдХрд╛ рдПрдХ рдХрдк рддреБрд░рдВрдд рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рдХреЗ рд▓рд┐рдП рд░рд╕реЛрдИ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдпрд╛рддреНрд░рд╛ рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реВрдБ рдФрд░ рд╢рдмрдВрдЧ рдХреЛ рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдБ: #!/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 рдЪрд░ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VCL_FILE рднреА рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ? рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдпрд╣ рдкрд╛рдЗрдк рдореЗрдВ рд▓рд╛рдЗрди 115 рдкрд░ рдмрдирд╛рдП рдЧрдП VCL_SHOW рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рддрдм?


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ varnishadm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд░реНрдирд┐рд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ varnishadm рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рд╡рд╛рд░реНрдирд┐рд╢ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рд░реНрдирд┐рд╢ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред vcl.show -v рдХрд╛ рдЙрдкрдпреЛрдЧ ${VCL_NAME} рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреВрд░реЗ VCL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ 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, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдХреЗ рдирд╛рдо рдкрд░ рдХрд╣реАрдВ рдФрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ "reload_20190101_120000_12397" рд╣реЛрдЧрд╛ред


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


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


рдлрд╛рдЗрд▓-рдбрд┐рдиреЛрдЯрд┐рдВрдЧ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╣реЛрддрд╛ рд╣реИ


 // VCL.SHOW <NUM> <NUM> <FILENAME> 

рд╕рдВрдЦреНрдпрд╛рдПрдБ рдпрд╣рд╛рдБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЬрд┐рд╕ рдЪреАрдЬрд╝ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╣реИред


рддреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЗрди резрезрем рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдЗрд╕реЗ рдЕрд▓рдЧ рдЙрдард╛рддреЗ рд╣реИрдВред
рдХрдорд╛рдВрдб рдХреЗ рдЪрд╛рд░ рднрд╛рдЧ рд╣реИрдВ:


  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 рддрдХ рд╕рдм VCL_FILE , $FILE рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ VCL_FILE рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рд░реЗрдЦрд╛ 119 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ: рд╡реАрд╕реАрдПрд▓ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд╡реАрд╕реАрдПрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рдореИрдВрдиреЗ ${VCL_FILE} рд▓рд┐рдП рдореВрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ ${VCL_FILE} рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЙрдЪрд┐рдд рдЕрдВрдд рдирд╣реАрдВ рд╣реБрдЖред рдореЗрд░реЗ рд╢реЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдХрднреА рднреА рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рддрд╛ рдерд╛ред


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реИ - рдЗрд╕ рдмреАрдЪ рдЕрдиреБрдорд╛рдирд┐рдд 30 рдорд┐рдирдЯ рдЫрд╣ рдмрд╛рд░ рдФрд░ рдПрдХ рдирдП рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдиреЗ рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд░рдЦрд╛ред рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдХреА рджрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рднрд░реЗ рд╣реБрдП рдереЗ, рджреЛ рдЕрдкрд╡рд╛рдж рдПрдХ рдЖрдВрддрд░рд┐рдХ рдмрд╛рдд рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреЗ рд╕рд╛рде sed рдФрд░ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереАред varnishreload рдЧрд╛рдпрдм рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордп рдХреА рд░реЗрдд рд╕реЗ рдЦреЛ рдЧрдИ рдереАред


рдЖрдкрдХрд╛ рддрдерд╛рдХрдерд┐рдд рд╕реЗрдб-рдлреВ ... рд╡рд╛рдХрдИ ... рдХрд╛рдлреА рджрдпрдиреАрдп рд╣реИ


рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╣реБрдд рд╣реА рд╕реНрд╡рддрдВрддреНрд░ рдерд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд╢рд╛рдпрдж рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛ред


рдЪреВрдБрдХрд┐ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреЛрдб рдЭреБрдХрдиреЗ рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА рдереА, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл 116 рд▓рд╛рдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдерд╛ред рдореМрдЬреВрджрд╛ рдХреЛрдб рд╡реИрд╕реЗ рднреА рдкрд╛рдЧрд▓ рдерд╛ред рдпрд╣рд╛рдБ read рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдлрд┐рд░ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП:
sh: echo: broken pipe - рдЗрдХреЛ рдЙрд╕ рдХрдорд╛рдВрдб рдореЗрдВ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рд╡рд╛рджреА рдЕрдкрд░рд╛рдзреА (рдпрд╛ рдПрдХ рд╕рд╛рдереА) рд╣реИред рдЕрд╡рд╛рдХ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЛ рднреА рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ awk | {read; echo} awk | {read; echo} awk | {read; echo} рдирд┐рд░реНрдорд╛рдг рдпрд╣ рд╕рдм рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ? рдЕрд╡рд╛рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╡рди-рд▓рд╛рдЗрдирд░ рдкрд░ рдЕрдкрдиреА рдкреВрд░реНрдг рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдпрд╣ рдЕрдзрд┐рд╢реЗрд╖ read ред


рдпрд╣ рджреЗрдЦрдХрд░ рдХрд┐ рджреВрд╕рд░реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде sed рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдмрд╛рдд рд╣реБрдИ, рдореИрдВ рдЕрдкрдиреЗ рдирдП-рдЕрд░реНрдЬрд┐рдд рдХреМрд╢рд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ echo | awk | { read; echo } рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ echo | awk | { read; echo } echo | awk | { read; echo } рдПрдХ рд╕рд░рд▓ echo | sed echo | sed ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рд╕реЗрдб-рдлреВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА - рд╕реЗрдб рдЯреЙрдХ рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ рдкреВрдЫрд╛ - рдореБрдЭреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╕реЗрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


рдореИрдВрдиреЗ varnishadm vcl.show -v "$VCL_NAME" рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ varnishadm vcl.show -v "$VCL_NAME" рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд░реНрд╡рд┐рд╕ рд░реАрд▓реЛрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рднреА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдмрд┐рдирд╛ sed рд▓рд┐рдЦрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред


рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рд╛рдЗрдорд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ GNU рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╕реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрдирдкреБрдЯ рдХреИрд╕реЗ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред Sed рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╡рд░реНрдг \n рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЕрдкрдиреЗ рд╕рд╣рдХрд░реНрдореА рд╕реЗ рдХрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдПрдХ sed рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рддреИрдпрд╛рд░ рдХреА рд╣реИ рдЬреЛ рдореВрд▓ рд▓рд╛рдЗрди 116 рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред


рдЪрд▓реЛ рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ,


 > cat vcl-example.vcl Text // VCL.SHOW 0 1578 file with 3 spaces.vcl More text // VCL.SHOW 0 1578 file.vcl Even more text // VCL.SHOW 0 1578 file with TWOspaces.vcl Final text 

рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╡рд░рдг рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ // VCL.SHOW рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ awk рдкрд╣рд▓реЗ рдореИрдЪ рдХреЗ рдмрд╛рдж рдХреНрд╡рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред


 # step 1, capture just the comment lines # using sed capability to specify delimiter character with '\#' instead of the commonly used '/' so there is no need to escape slashes themselves # and the тАЬaddressтАЭ capability defined as regex тАЬ// VCL.SHOWтАЭ to search for lines with specific pattern # -n flag makes sure that the sed does not print all as it does by default (see above link) # -E switches to the extended regex > 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 # step 2, only print out the file name # using the тАЬsubstituteтАЭ command with regex capture groups to print just that group # and this is done only for the matches of the previous search > 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 # step 3, make sure to only get the first result # same as with the awk before, add an immediate exit after the first processed match is printed > 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 # step 4, wrap it up into a one-liner using the colon to separate commands > 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;};')" 

рдЙрдкрд░реЛрдХреНрдд рддрд░реНрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдпрджрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ regex // VCL.SHOW рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рддреЛ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдкрд░ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕рд╣рд┐рдд рдкрд╛рда рдХрд╛ рд▓рд╛рд▓рдЪ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЬреЛ рднреА рдЖрдП рдЙрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВред рдХрдмреНрдЬрд╛ рдЫреЛрдбрд╝реЛ рдФрд░ рдЫреЛрдбрд╝реЛред


рд╕рд░рд▓, рд╣реИ рдирд╛?


рд╣рдо рд╕реАрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЦреБрд╢ рдереЗ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдореВрд▓ рдХреЛрдб рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЬреЛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рд╣реИрдВ рд╡реЗ рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд┐рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ systemctl reload varnish рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ varnishreload systemctl reload varnish рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред рдЦреВрдВрдЦрд╛рд░ echo: write error: Broken pipe рд╣рдорд╛рд░реЗ рдЪреЗрд╣рд░реЗ рдкрд░ рдореБрд╕реНрдХреБрд░рд╛ рд░рд╣рд╛ рдерд╛ред рдмреНрд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд░реНрд╕рд░ рдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдЕрдВрдзреЗрд░реЗ рд╢реВрдиреНрдп рдореЗрдВ рдПрдХ рдирдИ рдХрдорд╛рдВрдб рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА ...

Source: https://habr.com/ru/post/hi475698/


All Articles