{"id":499522,"date":"2026-10-21T10:01:40","date_gmt":"2026-10-21T07:01:40","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=499522"},"modified":"2026-10-21T10:01:40","modified_gmt":"2026-10-21T07:01:40","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=499522","title":{"rendered":"\u0421\u043a\u0440\u0438\u043f\u0442 bash \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 &amp;\u041d\u0430\u0421\u0435\u0440\u0432\u0435\u0440\u0435. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 bash \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u044f (\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043b\u0443\u0436\u0431, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0435\u043b\u043e\u0447\u0435\u0439 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440) \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u201c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u201d \u0438\u043b\u0438 \u201c\u043d\u0430\u0436\u0430\u043b \u0438 \u0437\u0430\u0431\u044b\u043b\u201d<\/p>\n<blockquote>\n<p><em>\u0422\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0443\u0442\u0440\u043e\u043c 1 \u044f\u043d\u0432\u0430\u0440\u044f, \u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:2% &#8212; &#171;\u0434\u0430?&#187; 3% &#8212; &#171;\u0430\u043b\u043b\u043e?&#187; 95% &#8212; \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u043b\u0438\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c<\/em><br \/><a href=\"http:\/\/%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8Cwww.anekdot.ru\" rel=\"noopener nofollow\"><em>www.anekdot.ru<\/em><\/a><em>\u00a9<\/em><br \/><em>\u041d\u043e\u0432\u044b\u0439 \u0413\u043e\u0434 \u0443 \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0434\u043d\u0435\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043f\u0438\u0432\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u043c\u0430\u043d\u0434\u0430\u0440\u0438\u043d\u043a\u0438\u00a0&#8230;<\/em><br \/><em>\u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0444\u043e\u043b\u044c\u043a\u043b\u043e\u0440\u00a9<\/em>  <\/p>\n<\/blockquote>\n<p>\u0412\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043a\u0430\u043d\u0438\u043a\u0443\u043b\u044b, \u044d\u0442\u043e \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u043e\u0441\u043e\u043c \u0432 \u043e\u043b\u0438\u0432\u044c\u0435, \u0418\u0422-\u0448\u043d\u0438\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b.<br \/>\u0412 \u043d\u043e\u044f\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f.  <\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/8f\/17\/1c\/8f171cfaf91e87bacf6840adb1d34eb2.jpg\" width=\"780\" height=\"440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/8f\/17\/1c\/8f171cfaf91e87bacf6840adb1d34eb2.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/8f\/17\/1c\/8f171cfaf91e87bacf6840adb1d34eb2.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044f \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f<\/strong><\/p>\n<p><strong>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;AS IS&#187; \/ &#171;\u041a\u0430\u043a \u0435\u0441\u0442\u044c&#187;.<\/strong><\/p>\n<p><strong>\u0410\u0432\u0442\u043e\u0440 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421, \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442, \u043d\u043e \u043d\u0435 \u043d\u0435\u0441\u0451\u0442 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.\u00a0<\/strong><\/p>\n<p><strong>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0434\u043b\u044f linux, \u0434\u0430 \u0438 \u0434\u043b\u044f windows \u0442\u043e\u0436\u0435, \u043a\u0430\u043a \u0432\u0438\u0434\u0435 \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u0442\u0430\u043a \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439\u00a0VMWare InstallBuilder\u00a0\u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u043c\u0435\u0442\u044c,\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0431\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 1\u0421 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>\u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439.<\/p>\n<p>\u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 linux.<\/p>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435 \u0443\u0436\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430, \u043d\u043e \u0434\u043b\u044f linux \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u043b \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0443\u0434\u043e\u0431\u043e\u0432\u0430\u0440\u0438\u043c\u044b\u0439 \u0432\u0438\u0434 (\u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0gemini) \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0443 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/strong><\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 bash, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442.<\/p>\n<ul>\n<li>\n<p>\u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043b\u044e\u0447\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras \u0441 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00a01\u0421 \u0438 ras<\/p>\n<\/li>\n<li>\n<p>\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u00a0\u043d\u043e\u0432\u0443\u044e\u00a0\u0432\u0435\u0440\u0441\u0438\u044e\u00a0\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0432 \u0435\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u00a0\u043d\u043e\u0432\u044b\u0435\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u00a0\u0441\u043b\u0443\u0436\u0431\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u00a0\u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u00a08.3.\u0445.\u0445 \u043d\u0430\u00a08.5.\u0445.\u0445 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043c. \u0431\u0430\u0433\u0442\u0440\u0435\u043a\u0435\u0440 1\u0421.<\/p>\n<p>\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u0438 \u043e\u0441\u0442\u0440\u044b\u0445 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u0432 cron \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u043e\u0447\u044c \u0438 \u0443\u0442\u0440\u043e\u043c \u0443\u0434\u0438\u0432\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/e4\/c1\/3f\/e4c13f8506d8f2091670b678693a097d.png\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/e4\/c1\/3f\/e4c13f8506d8f2091670b678693a097d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/e4\/c1\/3f\/e4c13f8506d8f2091670b678693a097d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430: $PROGNAME \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04401 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04402<br \/>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0435\u0441\u043b\u0438 0 \u0442\u043e \u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<br \/>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421<br \/>\u0424\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 1\u0421 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c<br \/>\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421<br \/>\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 0 8.3.24.1586<br \/>\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 8.3.23.1586 8.3.24.1586  <\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/9b\/21\/4a\/9b214a8acccc26368cebdf89d873d1ba.png\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/9b\/21\/4a\/9b214a8acccc26368cebdf89d873d1ba.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/9b\/21\/4a\/9b214a8acccc26368cebdf89d873d1ba.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u044f\u0449\u0438\u0439 \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043c\u043d\u044b\u0439, \u043d\u043e \u0438 \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u043d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/goto-linux-1c\/1C_server_upgrade\" rel=\"noopener nofollow\">github<\/a>, \u0430 \u043f\u043e\u043b\u043e\u0436\u0443 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434 \u043a\u0430\u0442. \u041d\u043e \u043a\u0442\u043e \u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u043e\u0442 \u043d\u0430\u0439\u0434\u0435\u0442 \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432: \u043d\u0430 1\u0421 \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0438\u00a0bash \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f IIS \u0438 Apache <\/p>\n<details class=\"spoiler\">\n<summary>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f MIT<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/bash# Copyright (c) 2026 [@capitan_nemo_spb]# # \u0414\u0430\u043d\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u0438\u0446\u0430\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u043c \u043a\u043e\u043f\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u043e\u0433\u043e \"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\"), \u0431\u0435\u0437\u0432\u043e\u0437\u043c\u0435\u0437\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, # \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0441\u043b\u0438\u044f\u043d\u0438\u0435, # \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u0441\u0443\u0431\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\/\u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u043a\u043e\u043f\u0438\u0439 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u0438\u0446\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u043e\u0435 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439:# # \u0423\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0430\u0445 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b # \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u043e \u0432\u0441\u0435 \u043a\u043e\u043f\u0438\u0438 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f.# # \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u041e\u0415 \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u0415 \u041f\u0420\u0415\u0414\u041e\u0421\u0422\u0410\u0412\u041b\u042f\u0415\u0422\u0421\u042f \"\u041a\u0410\u041a \u0415\u0421\u0422\u042c\", \u0411\u0415\u0417 \u041a\u0410\u041a\u0418\u0425-\u041b\u0418\u0411\u041e \u0413\u0410\u0420\u0410\u041d\u0422\u0418\u0419, # \u0412\u042b\u0420\u0410\u0416\u0415\u041d\u041d\u042b\u0425 \u0418\u041b\u0418 \u041f\u041e\u0414\u0420\u0410\u0417\u0423\u041c\u0415\u0412\u0410\u0415\u041c\u042b\u0425, \u0412\u041a\u041b\u042e\u0427\u0410\u042f \u041d\u0415 \u041e\u0413\u0420\u0410\u041d\u0418\u0427\u0418\u0412\u0410\u042f\u0421\u042c \u0413\u0410\u0420\u0410\u041d\u0422\u0418\u042f\u041c\u0418 \u0422\u041e\u0412\u0410\u0420\u041d\u041e\u0419 # \u041f\u0420\u0418\u0413\u041e\u0414\u041d\u041e\u0421\u0422\u0418, \u0421\u041e\u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0418\u042f \u041f\u041e \u041d\u0410\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u042e \u0418 \u041d\u0415\u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u042f \u041f\u0420\u0410\u0412. \u041d\u0418 \u0412 \u041a\u0410\u041a\u041e\u041c \u0421\u041b\u0423\u0427\u0410\u0415 # \u0410\u0412\u0422\u041e\u0420\u042b \u0418\u041b\u0418 \u041f\u0420\u0410\u0412\u041e\u041e\u0411\u041b\u0410\u0414\u0410\u0422\u0415\u041b\u0418 \u041d\u0415 \u041d\u0415\u0421\u0423\u0422 \u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0415\u041d\u041d\u041e\u0421\u0422\u0418 \u041f\u041e \u041a\u0410\u041a\u0418\u041c-\u041b\u0418\u0411\u041e \u0418\u0421\u041a\u0410\u041c, \u0417\u0410 # \u0423\u0429\u0415\u0420\u0411 \u0418\u041b\u0418 \u041f\u041e \u0418\u041d\u042b\u041c \u0422\u0420\u0415\u0411\u041e\u0412\u0410\u041d\u0418\u042f\u041c, \u0412\u041e\u0417\u041d\u0418\u041a\u0428\u0418\u041c \u0412 \u0421\u0412\u042f\u0417\u0418 \u0421 \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u042b\u041c \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u0415\u041c \u0418\u041b\u0418 # \u0418\u0421\u041f\u041e\u041b\u042c\u0417\u041e\u0412\u0410\u041d\u0418\u0415\u041c \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u041e\u0413\u041e \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u042f.set -euo pipefailPROGNAME=\"$(basename \"$0\")\"SCRIPT_DIR=\"$(cd \"$(dirname \"$(readlink -f \"$0\")\")\" &amp;&amp; pwd)\"usage() {    cat &lt;&lt;EOF\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: $PROGNAME \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04401 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04402\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0435\u0441\u043b\u0438 0 \u0442\u043e \u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421\u0424\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 1\u0421 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 0 8.3.24.1586\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 8.3.23.1586 8.3.24.1586EOF}log() {    echo \"[$(date +'%Y-%m-%d %H:%M:%S')] $*\"}err() {    echo \"[$(date +'%Y-%m-%d %H:%M:%S')] \u041e\u0428\u0418\u0411\u041a\u0410: $*\" &gt;&amp;2}replace_version_in_file() {    local target_file=\"$1\"    if [[ -f \"$target_file\" ]]; then        perl -pE \"s\/\\Q${old_version}\\E\/${new_version}\/g\" -i \"$target_file\"    fi}http_replace_version() {    local conf_file=\"$1\"    if grep -qF \"${old_version}\" \"${conf_file}\"; then        log \"\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: ${conf_file}\"        perl -i\".bak_${current_date}\" -pE \"s\/\\Q${old_version}\\E\/${new_version}\/g\" \"${conf_file}\"    fi}if [[ \"${1:-}\" =~ ^(-h|--help)$ ]]; then    usage    exit 0fiif [[ \"$(id -u)\" -ne 0 ]]; then    err \"\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\"    exit 1fiif [[ $# -ne 2 ]]; then    usage    exit 1fiold_version=$1new_version=$2current_date=$(date +'%Y%m%d_%H%M%S')bak_dir=\"${SCRIPT_DIR}\/bak_${current_date}\"log \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u0430\/\u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\"new_archive=\"${SCRIPT_DIR}\/server64_${new_version\/\/.\/_}.zip\"shopt -s nullglobinstaller_matches=( \"${SCRIPT_DIR}\"\/*-\"${new_version}\"-*.run )shopt -u nullglobif [[ ${#installer_matches[@]} -eq 0 ]]; then    if [[ -f \"${new_archive}\" ]]; then        log \"\u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f ${new_archive}...\"        unzip -o \"${new_archive}\" -d \"${SCRIPT_DIR}\" \"*${new_version}*.run\"        shopt -s nullglob        installer_matches=( \"${SCRIPT_DIR}\"\/*-\"${new_version}\"-*.run )        shopt -u nullglob    else        err \"\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421 ${new_archive}\"        exit 1    fifiif [[ ${#installer_matches[@]} -eq 0 || ! -f \"${installer_matches[0]}\" ]]; then    err \"\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421\"    exit 1finew_file=\"${installer_matches[0]}\"chmod +x \"${new_file}\"old_dir=\"\/opt\/1cv8\/x86_64\/${old_version}\"new_dir=\"\/opt\/1cv8\/x86_64\/${new_version}\"srv_suffixes=()ras_suffixes=()if [[ \"${old_version}\" != \"0\" ]]; then    log \"\u0421\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 0 (${old_version}), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\"    if [[ ! -f \"${old_dir}\/uninstaller-full\" ]]; then        err \"\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1C ${old_version}\"        exit 1    fi    mkdir -p \"${bak_dir}\"    log \"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438\"    # \u041f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0432\u0438\u0434\u0430 srv1cv8-OLD_VER@.service, srv1cv8-OLD_VER@2541.service \u0438 \u0442.\u0434.    shopt -s nullglob    old_srv_services=( \"${old_dir}\"\/srv1cv8-\"${old_version}\"@*.service )    shopt -u nullglob    if [[ ${#old_srv_services[@]} -eq 0 ]]; then        log \"\u0421\u043b\u0443\u0436\u0431\u044b srv1cv8 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 ${old_dir}, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\"        srv_suffixes+=( \"\" )    else        for srv_path in \"${old_srv_services[@]}\"; do            srv_file=\"$(basename \"${srv_path}\")\"            # \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0441\u0443\u0444\u0444\u0438\u043a\u0441 \u043f\u043e\u0441\u043b\u0435 @ \u0438 \u0434\u043e .service (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \"\" \u0438\u043b\u0438 \"2541\")            suffix=\"${srv_file#srv1cv8-${old_version}@}\"            suffix=\"${suffix%.service}\"            srv_suffixes+=( \"${suffix}\" )            new_srv_name=\"srv1cv8-${new_version}@${suffix}.service\"            log \"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b: ${srv_file} -&gt; ${new_srv_name}\"            cp \"${srv_path}\" \"${bak_dir}\/${new_srv_name}\"            replace_version_in_file \"${bak_dir}\/${new_srv_name}\"        done    fi    # \u041f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 RAS \u0432\u0438\u0434\u0430 ras-OLD_VER.service, ras-OLD_VER-2545.service, ras-OLD_VER@.service \u0438 \u0442.\u0434.    shopt -s nullglob    old_ras_services=( \"${old_dir}\"\/ras-\"${old_version}\"*.service )    shopt -u nullglob    if [[ ${#old_ras_services[@]} -eq 0 ]]; then        log \"\u0421\u043b\u0443\u0436\u0431\u044b RAS \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 ${old_dir}\"    else        for ras_path in \"${old_ras_services[@]}\"; do            ras_file=\"$(basename \"${ras_path}\")\"            # \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0441\u0443\u0444\u0444\u0438\u043a\u0441 \u043f\u043e\u0441\u043b\u0435 ras-${old_version} \u0438 \u0434\u043e .service (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \"\" \u0434\u043b\u044f ras-8.3.23.service, \"-2545\" \u0438\u043b\u0438 \"@2545\")            suffix=\"${ras_file#ras-${old_version}}\"            suffix=\"${suffix%.service}\"            ras_suffixes+=( \"${suffix}\" )            new_ras_name=\"ras-${new_version}${suffix}.service\"            log \"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b RAS: ${ras_file} -&gt; ${new_ras_name}\"            cp \"${ras_path}\" \"${bak_dir}\/${new_ras_name}\"            replace_version_in_file \"${bak_dir}\/${new_ras_name}\"        done    fi    log \"\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421\"    for suffix in \"${srv_suffixes[@]}\"; do        inst=\"default\"        [[ -n \"${suffix}\" ]] &amp;&amp; inst=\"${suffix}\"        srv_unit=\"srv1cv8-${old_version}@${suffix}.service\"        srv_inst=\"srv1cv8-${old_version}@${inst}.service\"        systemctl stop \"${srv_inst}\" 2&gt;\/dev\/null || true        systemctl disable \"${srv_inst}\" 2&gt;\/dev\/null || true        for unit_link in \\            \"\/etc\/systemd\/system\/${srv_unit}\" \\            \"\/etc\/systemd\/system\/${srv_inst}\" \\            \"\/etc\/systemd\/system\/multi-user.target.wants\/${srv_inst}\"        do            if [[ -e \"${unit_link}\" || -L \"${unit_link}\" ]]; then                rm -f \"${unit_link}\"            fi        done    done    log \"\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b RAS\"    for suffix in \"${ras_suffixes[@]}\"; do        ras_unit=\"ras-${old_version}${suffix}.service\"        # \u0415\u0441\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u0430\u044f (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 @), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u043c\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430        if [[ \"${suffix}\" == *\"@\"* ]]; then            inst_suffix=\"${suffix#*@}\"            [[ -z \"${inst_suffix}\" ]] &amp;&amp; inst_suffix=\"default\"            ras_inst=\"ras-${old_version}@${inst_suffix}.service\"        else            ras_inst=\"${ras_unit}\"        fi        systemctl stop \"${ras_inst}\" 2&gt;\/dev\/null || true        systemctl disable \"${ras_inst}\" 2&gt;\/dev\/null || true        for unit_link in \\            \"\/etc\/systemd\/system\/${ras_unit}\" \\            \"\/etc\/systemd\/system\/${ras_inst}\" \\            \"\/etc\/systemd\/system\/multi-user.target.wants\/${ras_inst}\"        do            if [[ -e \"${unit_link}\" || -L \"${unit_link}\" ]]; then                rm -f \"${unit_link}\"            fi        done    done    systemctl daemon-reload    systemctl reset-failed \"srv1cv8-*\" \"ras-*\" 2&gt;\/dev\/null || trueelse    srv_suffixes+=( \"\" )    ras_suffixes+=( \"\" )filog \"\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 (${new_version})...\"\"${new_file}\" --mode unattended --enable-components \"server,ws,server_admin,additional_admin_functions,liberica_jre,ru\"log \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c...\"new_service=\"${new_dir}\/srv1cv8-${new_version}@.service\"if [[ ! -f \"${new_service}\" ]]; then    err \"\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 1C: \u0444\u0430\u0439\u043b ${new_service} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\"    exit 1fiif [[ \"${old_version}\" != \"0\" ]]; then    log \"\u0423\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 (${old_version})...\"    \"${old_dir}\/uninstaller-full\" --mode unattended    log \"\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u043b\u0443\u0436\u0431 srv1cv8...\"    for suffix in \"${srv_suffixes[@]}\"; do        target_srv=\"srv1cv8-${new_version}@${suffix}.service\"        bak_srv_file=\"${bak_dir}\/${target_srv}\"        dest_srv_file=\"${new_dir}\/${target_srv}\"        if [[ -f \"${bak_srv_file}\" ]]; then            if [[ -f \"${dest_srv_file}\" ]]; then                mv \"${dest_srv_file}\" \"${bak_dir}\/${target_srv}.dist\"            fi            log \"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0443\u0436\u0431\u044b: ${target_srv} -&gt; ${new_dir}\/\"            cp \"${bak_srv_file}\" \"${dest_srv_file}\"        fi    done    log \"\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u043b\u0443\u0436\u0431 RAS...\"    for suffix in \"${ras_suffixes[@]}\"; do        target_ras=\"ras-${new_version}${suffix}.service\"        bak_ras_file=\"${bak_dir}\/${target_ras}\"        dest_ras_file=\"${new_dir}\/${target_ras}\"        if [[ -f \"${bak_ras_file}\" ]]; then            if [[ -f \"${dest_ras_file}\" ]]; then                mv \"${dest_ras_file}\" \"${bak_dir}\/${target_ras}.dist\"            fi            log \"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0443\u0436\u0431\u044b RAS: ${target_ras} -&gt; ${new_dir}\/\"            cp \"${bak_ras_file}\" \"${dest_ras_file}\"        fi    donefilog \"\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0436\u0431\u044b 1\u0421...\"systemctl daemon-reloadfor suffix in \"${srv_suffixes[@]}\"; do    inst=\"default\"    [[ -n \"${suffix}\" ]] &amp;&amp; inst=\"${suffix}\"    srv_unit_file=\"${new_dir}\/srv1cv8-${new_version}@${suffix}.service\"    srv_inst_name=\"srv1cv8-${new_version}@${inst}\"    if [[ -f \"${srv_unit_file}\" ]]; then        systemctl link \"${srv_unit_file}\"        systemctl enable \"${srv_inst_name}\" --now    else        err \"\u0424\u0430\u0439\u043b \u0441\u043b\u0443\u0436\u0431\u044b ${srv_unit_file} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438!\"    fidonefor suffix in \"${ras_suffixes[@]}\"; do    ras_unit_file=\"${new_dir}\/ras-${new_version}${suffix}.service\"    if [[ \"${suffix}\" == *\"@\"* ]]; then        inst_suffix=\"${suffix#*@}\"        [[ -z \"${inst_suffix}\" ]] &amp;&amp; inst_suffix=\"default\"        ras_inst_name=\"ras-${new_version}@${inst_suffix}\"    else        ras_inst_name=\"ras-${new_version}${suffix}.service\"    fi    if [[ -f \"${ras_unit_file}\" ]]; then        systemctl link \"${ras_unit_file}\"        systemctl enable \"${ras_inst_name}\" --now    fidonelog \"\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043b\u0443\u0436\u0431...\"for ((i=0; i&lt;15; i++)); do    all_active=true    for suffix in \"${srv_suffixes[@]}\"; do        inst=\"default\"        [[ -n \"${suffix}\" ]] &amp;&amp; inst=\"${suffix}\"        if ! systemctl is-active --quiet \"srv1cv8-${new_version}@${inst}\"; then            all_active=false            break        fi    done    if [[ \"${all_active}\" == \"true\" ]]; then        for suffix in \"${ras_suffixes[@]}\"; do            ras_unit_file=\"${new_dir}\/ras-${new_version}${suffix}.service\"            [[ ! -f \"${ras_unit_file}\" ]] &amp;&amp; continue            if [[ \"${suffix}\" == *\"@\"* ]]; then                inst_suffix=\"${suffix#*@}\"                [[ -z \"${inst_suffix}\" ]] &amp;&amp; inst_suffix=\"default\"                ras_inst_name=\"ras-${new_version}@${inst_suffix}\"            else                ras_inst_name=\"ras-${new_version}${suffix}.service\"            fi            if ! systemctl is-active --quiet \"${ras_inst_name}\"; then                all_active=false                break            fi        done    fi    if [[ \"${all_active}\" == \"true\" ]]; then        log \"\u0412\u0441\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.\"        break    fi    sleep 2donefor suffix in \"${srv_suffixes[@]}\"; do    inst=\"default\"    [[ -n \"${suffix}\" ]] &amp;&amp; inst=\"${suffix}\"    systemctl status \"srv1cv8-${new_version}@${inst}\" --no-pager -l || truedonefor suffix in \"${ras_suffixes[@]}\"; do    ras_unit_file=\"${new_dir}\/ras-${new_version}${suffix}.service\"    [[ ! -f \"${ras_unit_file}\" ]] &amp;&amp; continue    if [[ \"${suffix}\" == *\"@\"* ]]; then        inst_suffix=\"${suffix#*@}\"        [[ -z \"${inst_suffix}\" ]] &amp;&amp; inst_suffix=\"default\"        ras_inst_name=\"ras-${new_version}@${inst_suffix}\"    else        ras_inst_name=\"ras-${new_version}${suffix}.service\"    fi    systemctl status \"${ras_inst_name}\" --no-pager -l || truedoneif [[ \"${old_version}\" != \"0\" ]]; then    web_conf_dirs=()    [[ -d '\/etc\/httpd' ]] &amp;&amp; web_conf_dirs+=( '\/etc\/httpd' )    [[ -d '\/etc\/apache2' ]] &amp;&amp; web_conf_dirs+=( '\/etc\/apache2' )    if [[ ${#web_conf_dirs[@]} -gt 0 ]]; then        for conf_dir in \"${web_conf_dirs[@]}\"; do            readarray -d '' -t find_files &lt; &lt;(find \"${conf_dir}\" -name '*.conf' -size +1c -type f -print0)            for file_path in \"${find_files[@]}\"; do                http_replace_version \"${file_path}\"            done        done        log \"\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440...\"        if systemctl list-unit-files 2&gt;\/dev\/null | grep -qE '^(httpd|apache2)\\.service'; then            systemctl restart httpd 2&gt;\/dev\/null || systemctl restart apache2 2&gt;\/dev\/null || true        fi    fifilog \"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430!\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0411\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430\u043f\u0438\u0448\u0443 \u043f\u0440\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1020218\/\" rel=\"noopener nofollow\">\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430 1\u0421 (\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0431\u0430\u0437\u044b) \u0434\u043b\u044f \u041e\u0421 Linux<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/928572\/\" rel=\"noopener nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 1\u0421. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/868656\/\" rel=\"noopener nofollow\">\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 1C: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.3 \u0432 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0420\u0435\u0434\u041e\u0421. \u0422\u044b\u0441\u044f\u0447\u0430 \u043c\u0435\u043b\u043e\u0447\u0435\u0439<\/a><\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/855036\/\" rel=\"noopener nofollow\">\u0412 \u043e\u0431\u043b\u0430\u043a\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443: \u0412\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435. \u0411\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/851598\/\" rel=\"noopener nofollow\">\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 1\u0421 \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.3. \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. MythBusters<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/822257\/\" rel=\"noopener nofollow\">\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 PostgreSQL \u0434\u043b\u044f 1\u0421. HAProxy, \u0434\u0430\u0432\u0430\u0439 \u0434\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/817301\/\" rel=\"noopener nofollow\">\u0412 \u043e\u0431\u043b\u0430\u043a\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443: \u0410\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 postgres. \u0414\u0430\u0439\u0442\u0435 \u0434\u0432\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/serverspace\/articles\/800801\/\" rel=\"noopener nofollow\">\u0412 \u043e\u0431\u043b\u0430\u043a\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443: \u0412\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u041e\u0421 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c 1\u0421 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0420\u0415\u0414 \u041e\u0421 8 \u0432 \u0434\u043e\u043c\u0435\u043d\u0435 windows. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/infostart.ru\/edu\/1970196\/\" rel=\"noopener nofollow\">\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u00ab\u0412 \u043e\u0431\u043b\u0430\u043a\u0435, \u043a\u0430\u043a \u0434\u043e\u043c\u0430: \u041a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f 1\u0421 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0420\u0415\u0414 \u041e\u0421\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/789744\/\" rel=\"noopener nofollow\">\u0412 \u043e\u0431\u043b\u0430\u043a\u0435, \u043a\u0430\u043a \u0434\u043e\u043c\u0430: \u0423\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f 1\u0421 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0420\u0415\u0414 \u041e\u0421 (HTTPS \u0438 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/782664\/\" rel=\"noopener nofollow\">\u0422\u0440\u0438 \u043f\u0438\u043d\u0433\u0432\u0438\u043d\u0430 \u043f\u043e\u0434 \u043e\u043a\u043d\u043e\u043c\u2026 \u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u0435\u0441\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f 1\u0421, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 linux<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/795955\/\" rel=\"noopener nofollow\">\u0422\u0440\u0438 \u043f\u0438\u043d\u0433\u0432\u0438\u043d\u0430 \u043f\u043e\u0434 \u043e\u043a\u043d\u043e\u043c\u2026 \u0422\u043e\u0447\u043a\u0438 \u043d\u0430\u0434 \u0401. \u041e\u0431\u0437\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u0435\u0441\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f 1\u0421, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 linux<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/766824\/\" rel=\"noopener nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 1\u0421: \u0421\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u044f\u0445<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/infostart.ru\/public\/970225\/\" rel=\"noopener nofollow\">\u0421\u0435\u0440\u0432\u0435\u0440 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 Ubuntu 16.04 \u0438 PostgreSQL 9.6, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043a\u0443\u0441. \u0420\u0435\u0446\u0435\u043f\u0442 \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a> \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<p> \u0421\u0435\u0440\u0438\u044f \u00ab\u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430\u00bb \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/532392\/\" rel=\"noopener nofollow\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0443 1\u0421: \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/556296\/\" rel=\"noopener nofollow\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Performance Monitor Windows Server. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/infostart.ru\/1c\/articles\/970225\/\" rel=\"noopener nofollow\">\u0421\u0435\u0440\u0432\u0435\u0440 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043d\u0430 Ubuntu 16.04 \u0438 PostgreSQL 9.6, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043a\u0443\u0441. \u0420\u0435\u0446\u0435\u043f\u0442 \u043e\u0442 \u041a\u0430\u043f\u0438\u0442\u0430\u043d\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1096964\/\">https:\/\/habr.com\/ru\/articles\/1096964\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043a\u0440\u0438\u043f\u0442 bash \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u044f (\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043b\u0443\u0436\u0431, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0435\u043b\u043e\u0447\u0435\u0439 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440) \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u201c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u201d \u0438\u043b\u0438 \u201c\u043d\u0430\u0436\u0430\u043b \u0438 \u0437\u0430\u0431\u044b\u043b\u201d\u0422\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0443\u0442\u0440\u043e\u043c 1 \u044f\u043d\u0432\u0430\u0440\u044f, \u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:2% &#8212; &#171;\u0434\u0430?&#187; 3% &#8212; &#171;\u0430\u043b\u043b\u043e?&#187; 95% &#8212; \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u043b\u0438\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044cwww.anekdot.ru\u00a9\u041d\u043e\u0432\u044b\u0439 \u0413\u043e\u0434 \u0443 \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0434\u043d\u0435\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043f\u0438\u0432\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u043c\u0430\u043d\u0434\u0430\u0440\u0438\u043d\u043a\u0438\u00a0&#8230;\u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0444\u043e\u043b\u044c\u043a\u043b\u043e\u0440\u00a9  \u0412\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043a\u0430\u043d\u0438\u043a\u0443\u043b\u044b, \u044d\u0442\u043e \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043b\u0435\u0436\u0430\u0442 \u043d\u043e\u0441\u043e\u043c \u0432 \u043e\u043b\u0438\u0432\u044c\u0435, \u0418\u0422-\u0448\u043d\u0438\u043a\u0438 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b.\u0412 \u043d\u043e\u044f\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f.  \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044f \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;AS IS&#187; \/ &#171;\u041a\u0430\u043a \u0435\u0441\u0442\u044c&#187;.\u0410\u0432\u0442\u043e\u0440 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421, \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442, \u043d\u043e \u043d\u0435 \u043d\u0435\u0441\u0451\u0442 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.\u00a0\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421 \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0434\u043b\u044f linux, \u0434\u0430 \u0438 \u0434\u043b\u044f windows \u0442\u043e\u0436\u0435, \u043a\u0430\u043a \u0432\u0438\u0434\u0435 \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u0442\u0430\u043a \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439\u00a0VMWare InstallBuilder\u00a0\u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u043c\u0435\u0442\u044c,\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0431\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 1\u0421 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445.\u0414\u043b\u044f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439.\u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 linux.\u0418\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435 \u0443\u0436\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430, \u043d\u043e \u0434\u043b\u044f linux \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u043b \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0443\u0434\u043e\u0431\u043e\u0432\u0430\u0440\u0438\u043c\u044b\u0439 \u0432\u0438\u0434 (\u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0gemini) \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0443 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c.\u0420\u0435\u0448\u0435\u043d\u0438\u0435\u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 bash, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442.\u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043b\u044e\u0447\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras \u0441 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00a01\u0421 \u0438 ras\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u00a0\u043d\u043e\u0432\u0443\u044e\u00a0\u0432\u0435\u0440\u0441\u0438\u044e\u00a0\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0432 \u0435\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u00a0\u043d\u043e\u0432\u044b\u0435\u00a0\u0444\u0430\u0439\u043b\u044b \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u00a0\u0441\u043b\u0443\u0436\u0431\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0438 ras\u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421\u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u00a0\u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.\u041c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u00a08.3.\u0445.\u0445 \u043d\u0430\u00a08.5.\u0445.\u0445 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043c. \u0431\u0430\u0433\u0442\u0440\u0435\u043a\u0435\u0440 1\u0421.\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u0438 \u043e\u0441\u0442\u0440\u044b\u0445 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u0432 cron \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u043e\u0447\u044c \u0438 \u0443\u0442\u0440\u043e\u043c \u0443\u0434\u0438\u0432\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443.\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430: $PROGNAME \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04401 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04402\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0435\u0441\u043b\u0438 0 \u0442\u043e \u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421\u0424\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 1\u0421 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 0 8.3.24.1586\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 8.3.23.1586 8.3.24.1586   \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u044f\u0449\u0438\u0439 \u0441\u0438\u0441\u0430\u0434\u043c\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043c\u043d\u044b\u0439, \u043d\u043e \u0438 \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u043d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 github, \u0430 \u043f\u043e\u043b\u043e\u0436\u0443 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434 \u043a\u0430\u0442. \u041d\u043e \u043a\u0442\u043e \u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u043e\u0442 \u043d\u0430\u0439\u0434\u0435\u0442 \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432: \u043d\u0430 1\u0421 \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0438\u00a0bash \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f IIS \u0438 Apache \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f MIT#!\/bin\/bash# Copyright (c) 2026 [@capitan_nemo_spb]# # \u0414\u0430\u043d\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u0438\u0446\u0430\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u043c \u043a\u043e\u043f\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u043e\u0433\u043e &#171;\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435&#187;), \u0431\u0435\u0437\u0432\u043e\u0437\u043c\u0435\u0437\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, # \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0441\u043b\u0438\u044f\u043d\u0438\u0435, # \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u0441\u0443\u0431\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\/\u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0443 \u043a\u043e\u043f\u0438\u0439 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u0438\u0446\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u043e\u0435 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 # \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439:# # \u0423\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0430\u0445 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b # \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u043e \u0432\u0441\u0435 \u043a\u043e\u043f\u0438\u0438 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f.# # \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u041e\u0415 \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u0415 \u041f\u0420\u0415\u0414\u041e\u0421\u0422\u0410\u0412\u041b\u042f\u0415\u0422\u0421\u042f &#171;\u041a\u0410\u041a \u0415\u0421\u0422\u042c&#187;, \u0411\u0415\u0417 \u041a\u0410\u041a\u0418\u0425-\u041b\u0418\u0411\u041e \u0413\u0410\u0420\u0410\u041d\u0422\u0418\u0419, # \u0412\u042b\u0420\u0410\u0416\u0415\u041d\u041d\u042b\u0425 \u0418\u041b\u0418 \u041f\u041e\u0414\u0420\u0410\u0417\u0423\u041c\u0415\u0412\u0410\u0415\u041c\u042b\u0425, \u0412\u041a\u041b\u042e\u0427\u0410\u042f \u041d\u0415 \u041e\u0413\u0420\u0410\u041d\u0418\u0427\u0418\u0412\u0410\u042f\u0421\u042c \u0413\u0410\u0420\u0410\u041d\u0422\u0418\u042f\u041c\u0418 \u0422\u041e\u0412\u0410\u0420\u041d\u041e\u0419 # \u041f\u0420\u0418\u0413\u041e\u0414\u041d\u041e\u0421\u0422\u0418, \u0421\u041e\u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0418\u042f \u041f\u041e \u041d\u0410\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u042e \u0418 \u041d\u0415\u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u042f \u041f\u0420\u0410\u0412. \u041d\u0418 \u0412 \u041a\u0410\u041a\u041e\u041c \u0421\u041b\u0423\u0427\u0410\u0415 # \u0410\u0412\u0422\u041e\u0420\u042b \u0418\u041b\u0418 \u041f\u0420\u0410\u0412\u041e\u041e\u0411\u041b\u0410\u0414\u0410\u0422\u0415\u041b\u0418 \u041d\u0415 \u041d\u0415\u0421\u0423\u0422 \u041e\u0422\u0412\u0415\u0422\u0421\u0422\u0412\u0415\u041d\u041d\u041e\u0421\u0422\u0418 \u041f\u041e \u041a\u0410\u041a\u0418\u041c-\u041b\u0418\u0411\u041e \u0418\u0421\u041a\u0410\u041c, \u0417\u0410 # \u0423\u0429\u0415\u0420\u0411 \u0418\u041b\u0418 \u041f\u041e \u0418\u041d\u042b\u041c \u0422\u0420\u0415\u0411\u041e\u0412\u0410\u041d\u0418\u042f\u041c, \u0412\u041e\u0417\u041d\u0418\u041a\u0428\u0418\u041c \u0412 \u0421\u0412\u042f\u0417\u0418 \u0421 \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u042b\u041c \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u0415\u041c \u0418\u041b\u0418 # \u0418\u0421\u041f\u041e\u041b\u042c\u0417\u041e\u0412\u0410\u041d\u0418\u0415\u041c \u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041c\u041d\u041e\u0413\u041e \u041e\u0411\u0415\u0421\u041f\u0415\u0427\u0415\u041d\u0418\u042f.set -euo pipefailPROGNAME=&#187;$(basename &#171;$0&#187;)&#187;SCRIPT_DIR=&#187;$(cd &#171;$(dirname &#171;$(readlink -f &#171;$0&#8243;)&#187;)&#187; &amp;&amp; pwd)&#187;usage() {    cat &lt;&lt;EOF\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: $PROGNAME \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04401 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u04402\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0435\u0441\u043b\u0438 0 \u0442\u043e \u0447\u0438\u0441\u0442\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421\u0424\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 1\u0421 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c\u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421, \u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 0 8.3.24.1586\u041f\u0440\u0438\u043c\u0435\u0440: $PROGNAME 8.3.23.1586 8.3.24.1586EOF}log() {    echo &#171;[$(date +&#8217;%Y-%m-%d %H:%M:%S&#8217;)] $*&#187;}err() {    echo &#171;[$(date +&#8217;%Y-%m-%d %H:%M:%S&#8217;)] \u041e\u0428\u0418\u0411\u041a\u0410: $*&#187; &gt;&amp;2}replace_version_in_file() {    local target_file=&#187;$1&#8243;    if [[ -f &#171;$target_file&#187; ]]; then        perl -pE &#171;s\/\\Q${old_version}\\E\/${new_version}\/g&#187; -i &#171;$target_file&#187;    fi}http_replace_version() {    local conf_file=&#187;$1&#8243;    if grep -qF &#171;${old_version}&#187; &#171;${conf_file}&#187;; then        log &#171;\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u0435\u0431-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: ${conf_file}&#187;        perl -i&#187;.bak_${current_date}&#187; -pE &#171;s\/\\Q${old_version}\\E\/${new_version}\/g&#187; &#171;${conf_file}&#187;    fi}if [[ &#171;${1:-}&#187; =~ ^(-h|&#8212;help)$ ]]; then    usage    exit 0fiif [[ &#171;$(id -u)&#187; -ne 0 ]]; then    err &#171;\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430&#187;    exit 1fiif [[ $# -ne 2 ]]; then    usage    exit 1fiold_version=$1new_version=$2current_date=$(date +&#8217;%Y%m%d_%H%M%S&#8217;)bak_dir=&#187;${SCRIPT_DIR}\/bak_${current_date}&#187;log &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u0430\/\u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&#187;new_archive=&#187;${SCRIPT_DIR}\/server64_${new_version\/\/.\/_}.zip&#187;shopt -s nullglobinstaller_matches=( &#171;${SCRIPT_DIR}&#187;\/*-&#171;${new_version}&#187;-*.run )shopt -u nullglobif [[ ${#installer_matches[@]} -eq 0 ]]; then    if [[ -f &#171;${new_archive}&#187; ]]; then        log &#171;\u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f ${new_archive}&#8230;&#187;        unzip -o &#171;${new_archive}&#187; -d &#171;${SCRIPT_DIR}&#187; &#171;*${new_version}*.run&#187;        shopt -s nullglob        installer_matches=( &#171;${SCRIPT_DIR}&#187;\/*-&#171;${new_version}&#187;-*.run )        shopt -u nullglob    else        err &#171;\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421 ${new_archive}&#187;        exit 1    fifiif [[ ${#installer_matches[@]} -eq 0 || ! -f &#171;${installer_matches[0]}&#187; ]]; then    err &#171;\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1\u0421&#187;    exit 1finew_file=&#187;${installer_matches[0]}&#187;chmod +x &#171;${new_file}&#187;old_dir=&#187;\/opt\/1cv8\/x86_64\/${old_version}&#187;new_dir=&#187;\/opt\/1cv8\/x86_64\/${new_version}&#187;srv_suffixes=()ras_suffixes=()if [[ &#171;${old_version}&#187; != &#171;0&#187; ]]; then    log &#171;\u0421\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 0 (${old_version}), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&#187;    if [[ ! -f &#171;${old_dir}\/uninstaller-full&#187; ]]; then        err &#171;\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 1C ${old_version}&#187;        exit 1    fi    mkdir -p &#171;${bak_dir}&#187;    log &#171;\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438&#187;    # \u041f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 1\u0421 \u0432\u0438\u0434\u0430 srv1cv8-OLD_VER@.service, srv1cv8-OLD_VER@2541.service \u0438 \u0442.\u0434.    shopt -s nullglob    old_srv_services=( &#171;${old_dir}&#187;\/srv1cv8-&#171;${old_version}&#187;@*.service )    shopt -u nullglob    if [[ ${#old_srv_services[@]} -eq 0 ]]; then        log &#171;\u0421\u043b\u0443\u0436\u0431\u044b srv1cv8 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 ${old_dir}, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e&#187;        srv_suffixes+=( &#171;&#187; )    else        for srv_path in &#171;${old_srv_services[@]}&#187;; do            srv_file=&#187;$(basename &#171;${srv_path}&#187;)&#187;            # \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0441\u0443\u0444\u0444\u0438\u043a\u0441 \u043f\u043e\u0441\u043b\u0435 @ \u0438 \u0434\u043e .service (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &#171;&#187; \u0438\u043b\u0438 &#171;2541&#187;)            suffix=&#187;${srv_file#srv1cv8-${old_version}@}&#187;            suffix=&#187;${suffix%.service}&#187;            srv_suffixes+=( &#171;${suffix}&#187; )            new_srv_name=&#187;srv1cv8-${new_version}@${suffix}.service&#187;            log &#171;\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b: ${srv_file} -&gt; ${new_srv_name}&#187;            cp &#171;${srv_path}&#187; &#171;${bak_dir}\/${new_srv_name}&#187;            replace_version_in_file &#171;${bak_dir}\/${new_srv_name}&#187;        done    fi    # \u041f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 RAS \u0432\u0438\u0434\u0430 ras-OLD_VER.service, ras-OLD_VER-2545.service, ras-OLD_VER@.service \u0438 \u0442.\u0434.    shopt -s nullglob    old_ras_services=( &#171;${old_dir}&#187;\/ras-&#171;${old_version}&#187;*.service )    shopt -u nullglob    if [[ ${#old_ras_services[@]} -eq 0 ]]; then        log &#171;\u0421\u043b\u0443\u0436\u0431\u044b RAS \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 ${old_dir}&#187;    else        for ras_path in &#171;${old_ras_services[@]}&#187;; do            ras_file=&#187;$(basename &#171;${ras_path}&#187;)&#187;            # \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0441\u0443\u0444\u0444\u0438\u043a\u0441 \u043f\u043e\u0441\u043b\u0435 ras-${old_version} \u0438 \u0434\u043e .service (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &#171;&#187; \u0434\u043b\u044f ras-8.3.23.service, &#171;-2545&#187; \u0438\u043b\u0438 &#171;@2545&#8243;)            suffix=&#187;${ras_file#ras-${old_version}}&#187;            suffix=&#187;${suffix%.service}&#187;            ras_suffixes+=( &#171;${suffix}&#187; )            new_ras_name=&#187;ras-${new_version}${suffix}.service&#187;            log &#171;\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b RAS: ${ras_file} -&gt; ${new_ras_name}&#187;            cp &#171;${ras_path}&#187; &#171;${bak_dir}\/${new_ras_name}&#187;            replace_version_in_file &#171;${bak_dir}\/${new_ras_name}&#187;        done    fi    log &#171;\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b 1\u0421&#187;    for suffix in &#171;${srv_suffixes[@]}&#187;; do        inst=&#187;default&#187;        [[ -n &#171;${suffix}&#187; ]] &amp;&amp; inst=&#187;${suffix}&#187;        srv_unit=&#187;srv1cv8-${old_version}@${suffix}.service&#187;        srv_inst=&#187;srv1cv8-${old_version}@${inst}.service&#187;        systemctl stop &#171;${srv_inst}&#187; 2&gt;\/dev\/null || true        systemctl disable &#171;${srv_inst}&#187; 2&gt;\/dev\/null || true        for unit_link in \\            &#171;\/etc\/systemd\/system\/${srv_unit}&#187; \\            &#171;\/etc\/systemd\/system\/${srv_inst}&#187; \\            &#171;\/etc\/systemd\/system\/multi-user.target.wants\/${srv_inst}&#187;        do            if [[ -e &#171;${unit_link}&#187; || -L&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-499522","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=499522"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499522\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=499522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=499522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=499522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}