{"id":309665,"date":"2020-09-09T09:00:24","date_gmt":"2020-09-09T09:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=309665"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=309665","title":{"rendered":"\u041a\u0430\u043a \u0418\u0432\u0430\u043d \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0431\u044d\u043a\u0435\u043d\u0434\u0435 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/funcorp\/blog\/518248\/\">\u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/post\/481398\/\">\u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Linux shell \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432<\/a> \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0437\u0434\u043d\u043e, \u0447\u0435\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e Backend QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u0412\u0430\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u3\/5y\/ub\/u35yubthd35hqttf6pajiewx800.jpeg\"><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h1>\u0427\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0412\u0430\u043d\u044f<\/h1>\n<p>  \u0412\u0430\u043d\u044f \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u043a\u0443 \u00abnginx + \u0441\u0435\u0440\u0432\u0438\u0441\u00bb.  <\/p>\n<blockquote><p>\u0417\u0434\u0435\u0441\u044c \u044f \u0441\u0440\u0430\u0437\u0443 \u0441\u0434\u0435\u043b\u0430\u044e \u0440\u0435\u043c\u0430\u0440\u043a\u0443: \u0442\u0430\u043a\u0430\u044f \u0441\u0432\u044f\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u043f\u0440\u0438 \u0434\u0435\u0431\u0430\u0433\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u0451 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043b\u0438\u0431\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.<\/p><\/blockquote>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 Python SimpleHTTPServer, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"plaintext\">[root@ivan test_dir_srv]# ls -l total 0 -rw-r--r-- 1 root root 0 Aug 25 11:23 test_file [root@ivan test_dir_srv]# python3 -m http.server --bind 127.0.0.1 8000 Serving HTTP on 127.0.0.1 port 8000 (http:\/\/127.0.0.1:8000\/) ... <\/code><\/pre>\n<p>  Nginx \u0436\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">upstream test { \u00a0\u00a0\u00a0\u00a0server 127.0.0.1:8000; }  server { \u00a0\u00a0\u00a0\u00a0listen \u00a0 \u00a0 \u00a0 80;  \u00a0\u00a0\u00a0\u00a0location \/ { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0proxy_pass http:\/\/test; \u00a0\u00a0\u00a0\u00a0} } <\/code><\/pre>\n<p>  \u0412\u0430\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441: \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 <i>\/<\/i> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b, \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e:<\/p>\n<pre><code class=\"plaintext\">MacBook-Pro-Ivan:~ ivantester$ curl http:\/\/12.34.56.78 &lt;!DOCTYPE HTML PUBLIC &quot;-\/\/W3C\/\/DTD HTML 4.01\/\/EN&quot; &quot;http:\/\/www.w3.org\/TR\/html4\/strict.dtd&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=utf-8&quot;&gt; &lt;title&gt;Directory listing for \/&lt;\/title&gt; &lt;\/head&gt; &lt;body&gt; &lt;h1&gt;Directory listing for \/&lt;\/h1&gt; &lt;hr&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;test_file&quot;&gt;test_file&lt;\/a&gt;&lt;\/li&gt; &lt;\/ul&gt; &lt;hr&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u041d\u043e \u0437\u0430\u0442\u0435\u043c \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0442\u043e-\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438, \u0438 \u0412\u0430\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"plaintext\">MacBook-Pro-Ivan:~ ivantester$ curl http:\/\/12.34.56.78 &lt;html&gt; &lt;head&gt;&lt;title&gt;502 Bad Gateway&lt;\/title&gt;&lt;\/head&gt; &lt;body bgcolor=&quot;white&quot;&gt; &lt;center&gt;&lt;h1&gt;502 Bad Gateway&lt;\/h1&gt;&lt;\/center&gt; &lt;hr&gt;&lt;center&gt;nginx\/1.14.2&lt;\/center&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u041e\u043d \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0441\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e ssh \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u0447\u0451\u043c \u0442\u0430\u043c \u0434\u0435\u043b\u043e. \u0417\u043d\u0430\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0434\u0435\u0431\u0430\u0433\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0443 \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u043e \u043c\u0430\u043b\u043e, \u043d\u043e \u043e\u043d \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043e\u0440\u0443\u0436\u0438\u043b\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u043c\u0438,\u00a0 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0438 \u043f\u043e\u0448\u0451\u043b \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0431\u0430\u0433.<\/p>\n<h1>\u041f\u0435\u0440\u0432\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u0412\u0430\u043d\u0438: \u043b\u043e\u0433\u0438<\/h1>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u0435\u0451 \u0432 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b\u0435. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c \u043b\u043e\u0433-\u0444\u0430\u0439\u043b. \u0412\u0430\u043d\u044f \u043f\u043e\u043b\u0435\u0437 \u0432 Google \u0438 \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043b\u043e\u0433\u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <i>\/var\/log<\/i>. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043c \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f nginx:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# ls \/var\/log\/nginx\/ access.log\u00a0 access.log-20200831\u00a0 error.log\u00a0 error.log-20200831 <\/code><\/pre>\n<p>  \u0418\u0432\u0430\u043d \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 error \u043b\u043e\u0433\u0430 \u0438 \u043f\u043e\u043d\u044f\u043b, \u0432 \u0447\u0451\u043c \u0434\u0435\u043b\u043e: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0448\u0438\u0431\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 nginx, \u0432 \u043f\u043e\u0440\u0442 upstream \u0437\u0430\u043a\u0440\u0430\u043b\u0430\u0441\u044c \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430.<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# tail \/var\/log\/nginx\/error.log 2020\/08\/31 04:36:21 [error] 15050#15050: *90452 connect() failed (111: Connection refused) while connecting to upstream, client: 31.170.95.221, server: , request: &quot;GET \/ HTTP\/1.0&quot;, upstream: &quot;http:\/\/127.0.0.1:8009\/&quot;, host: &quot;12.34.56.78&quot; <\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u041a\u0430\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434? \u041b\u043e\u0433\u0438 \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u0440\u0443\u0433 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442, \u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0432\u043e\u0434 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441 \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u043e\u0432. \u0412\u0435\u0434\u044c \u0435\u0441\u043b\u0438 \u0431 nginx \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 \u043b\u043e\u0433 \u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430, \u0442\u043e, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435?<\/p><\/blockquote>\n<p>  \u0412 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0412\u0430\u043d\u044f \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f: \u00ab\u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0432 nginx \u043b\u043e\u0433\u0438 \u043b\u0435\u0436\u0430\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438? \u041a\u0430\u043a \u0431\u044b \u044f \u0438\u0445 \u043d\u0430\u0448\u0451\u043b?\u00bb \u0427\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043b\u0435\u0442 \u0443 \u0412\u0430\u043d\u0438 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0432 Linux, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u0433-\u0444\u0430\u0439\u043b\u0443 \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043b\u0438\u0431\u043e \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0442\u0430\u043a\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041d\u0443 \u0438 \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u0433-\u0444\u0430\u0439\u043b\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u0433-\u0444\u0430\u0439\u043b\u0443 \u0438 \u0432 nginx:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# ps ax | grep nginx | grep master root \u00a0 \u00a0 19899\u00a0 0.0\u00a0 0.0\u00a0 57392\u00a0 2872 ?\u00a0 \u00a0 \u00a0 \u00a0 Ss\u00a0 \u00a0 2019 \u00a0 0:00 nginx: master process \/usr\/sbin\/nginx -c \/etc\/nginx\/nginx.conf [root@ivan ~]# grep &quot;log&quot; \/etc\/nginx\/nginx.conf error_log\u00a0 \/var\/log\/nginx\/error.log warn; \u00a0\u00a0\u00a0\u00a0log_format\u00a0 main\u00a0 '$remote_addr - $remote_user [$time_local] &quot;$request&quot; ' \u00a0\u00a0\u00a0\u00a0access_log\u00a0 \/var\/log\/nginx\/access.log\u00a0 main; <\/code><\/pre>\n<p>  <\/p>\n<h1>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442?<\/h1>\n<p>  \u0412 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0412\u0430\u043d\u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0430 \u043a\u0430\u043a \u0431\u044b \u043e\u043d \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u0435\u0441\u043b\u0438 \u0431\u044b nginx \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u0432 \u043b\u043e\u0433. \u0412\u0430\u043d\u044f \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 8000, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0421 \u044d\u0442\u0438\u043c \u0435\u043c\u0443 \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <i><strong>tcpdump<\/strong><\/i>. \u041f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u043d \u0432\u0438\u0434\u0435\u043b \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0430\u043c\u043f \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 8000<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">[root@ivan ~]# tcpdump -nn -i lo -A port 8000 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes 09:10:42.114284 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [S], seq 3390176024, win 43690, options [mss 65495,sackOK,TS val 830366494 ecr 0,nop,wscale 8], length 0 E..&lt;..@.@..............@.............0......... 1~c......... 09:10:42.114293 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [S.], seq 4147196208, ack 3390176025, win 43690, options [mss 65495,sackOK,TS val 830366494 ecr 830366494,nop,wscale 8], length 0 E..&lt;..@.@.&lt;..........@...110.........0......... 1~c.1~c..... 09:10:42.114302 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [.], ack 1, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 0 E..4..@.@..............@.....111.....(..... 1~c.1~c. 09:10:42.114329 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [P.], seq 1:88, ack 1, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 87 E.....@.@..b...........@.....111........... 1~c.1~c.GET \/ HTTP\/1.0 Host: test Connection: close User-Agent: curl\/7.64.1 Accept: *\/*  09:10:42.114333 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [.], ack 88, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 0 E..4R\/@.@............@...111...p.....(..... 1~c.1~c. 09:10:42.115062 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [P.], seq 1:155, ack 88, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 154 E...R0@.@............@...111...p........... 1~c.1~c.HTTP\/1.0 200 OK Server: SimpleHTTP\/0.6 Python\/3.7.2 Date: Mon, 07 Sep 2020 13:10:42 GMT Content-type: text\/html; charset=utf-8 Content-Length: 340  09:10:42.115072 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [.], ack 155, win 175, options [nop,nop,TS val 830366494 ecr 830366494], length 0 E..4.@.@..............@...p.11......(..... 1~c.1~c. 09:10:42.115094 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [P.], seq 155:495, ack 88, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 340 E...R1@.@..&lt;.........@...11....p.....|..... 1~c.1~c.&lt;!DOCTYPE HTML PUBLIC &quot;-\/\/W3C\/\/DTD HTML 4.01\/\/EN&quot; &quot;http:\/\/www.w3.org\/TR\/html4\/strict.dtd&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=utf-8&quot;&gt; &lt;title&gt;Directory listing for \/&lt;\/title&gt; &lt;\/head&gt; &lt;body&gt; &lt;h1&gt;Directory listing for \/&lt;\/h1&gt; &lt;hr&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;test_file&quot;&gt;test_file&lt;\/a&gt;&lt;\/li&gt; &lt;\/ul&gt; &lt;hr&gt; &lt;\/body&gt; &lt;\/html&gt;  09:10:42.115098 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [.], ack 495, win 180, options [nop,nop,TS val 830366494 ecr 830366494], length 0 E..4. @.@..............@...p.13......(..... 1~c.1~c. 09:10:42.115128 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [F.], seq 495, ack 88, win 171, options [nop,nop,TS val 830366494 ecr 830366494], length 0 E..4R2@.@............@...13....p.....(..... 1~c.1~c. 09:10:42.115264 IP 127.0.0.1.33296 &gt; 127.0.0.1.8000: Flags [F.], seq 88, ack 496, win 180, options [nop,nop,TS val 830366495 ecr 830366494], length 0 E..4..@.@..............@...p.13 .....(..... 1~c.1~c. 09:10:42.115271 IP 127.0.0.1.8000 &gt; 127.0.0.1.33296: Flags [.], ack 89, win 171, options [nop,nop,TS val 830366495 ecr 830366495], length 0 E..4R3@.@............@...13 ...q.....(..... 1~c.1~c. ^C 12 packets captured 24 packets received by filter 0 packets dropped by kernel <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u0440\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0441 \u043f\u043e\u0440\u0442\u043e\u043c 8009 \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0435 nginx) \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 8000 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0412\u0430\u043d\u044f \u043e\u0431\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u0441\u044f: \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u0431\u044b\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433 \u043f\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0438\u0434\u0451\u0442 \u043b\u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u0438\u043b\u0438 \u043f\u043e\u0440\u0442.<\/p>\n<blockquote><p>\u041a\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438? \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043b\u043e\u0433\u043e\u0432 \u043d\u0435\u0442, \u0432 Linux \u0435\u0441\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p><\/blockquote>\n<p>  <\/p>\n<h1>\u0410 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0435\u0442\u044c?<\/h1>\n<p>  \u0412\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0412\u0430\u043d\u044f \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0434\u0440\u0443\u0433\u0443\u044e:<\/p>\n<pre><code class=\"plaintext\">MacBook-Pro-Ivan:~ ivantester$ curl http:\/\/12.34.56.78 &lt;!DOCTYPE HTML PUBLIC &quot;-\/\/W3C\/\/DTD HTML 4.01\/\/EN&quot; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;http:\/\/www.w3.org\/TR\/html4\/strict.dtd&quot;&gt; &lt;html&gt; \u00a0\u00a0\u00a0\u00a0&lt;head&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html;charset=utf-8&quot;&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Error response&lt;\/title&gt; \u00a0\u00a0\u00a0\u00a0&lt;\/head&gt; \u00a0\u00a0\u00a0\u00a0&lt;body&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h1&gt;Error response&lt;\/h1&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Error code: 404&lt;\/p&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Message: File not found.&lt;\/p&gt; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.&lt;\/p&gt; \u00a0\u00a0\u00a0\u00a0&lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u0412\u0430\u043d\u044f \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0448\u0451\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e. \u0412 \u043b\u043e\u0433\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0442\u043e\u0436\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e <i>File not found<\/i>, \u0438 \u0412\u0430\u043d\u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u041e\u043d \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 <i>python3 -m http.server<\/i>, \u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u0430\u043a\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 (\u0438\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u0430\u043a\u0430\u044f \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 current working directory). \u041e\u043d \u0443\u0437\u043d\u0430\u0451\u0442 \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <i>lsof<\/i>:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# ps aux | grep python | grep &quot;http.server&quot; root \u00a0 \u00a0 20638\u00a0 0.0\u00a0 0.3 270144 13552 pts\/2\u00a0 \u00a0 S+ \u00a0 08:29 \u00a0 0:00 python3 -m http.server [root@ivan ~]# lsof -p 20638 | grep cwd python3 20638 root\u00a0 cwd\u00a0 \u00a0 DIR \u00a0 \u00a0 253,1\u00a0 \u00a0 \u00a0 4096 1843551 \/root\/test_dir_srv2 <\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <i>pwdx<\/i> \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <i>proc<\/i>:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# pwdx 20638 20638: \/root\/test_dir_srv2 [root@ivan ~]# ls -l \/proc\/20638\/cwd lrwxrwxrwx 1 root root 0 Aug 31 08:37 \/proc\/20638\/cwd -&gt; \/root\/test_dir_srv2 <\/code><\/pre>\n<\/blockquote>\n<p>  \u0422\u0430\u043a\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438 \u0432 \u043d\u0435\u0439 \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <i>test_file<\/i>. \u0412 \u0447\u0451\u043c \u0436\u0435 \u0434\u0435\u043b\u043e? \u0418\u0432\u0430\u043d \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043b \u0438 \u043d\u0430\u0448\u0451\u043b \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <i><strong>strace<\/strong><\/i>, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 (\u043f\u0440\u043e <i>strace<\/i>, \u043a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/badoo\/blog\/493856\/\">\u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u0434\u0430\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/478626\/\">\u043d\u0435 \u043e\u0434\u043d\u0430<\/a>). \u041c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0435\u0440\u0435\u0437 <i>strace<\/i>, \u043b\u0438\u0431\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 \u043a \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443. \u0412\u0430\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u044b\u0432\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b strace<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">[root@ivan ~]# strace -ff -p 20638 strace: Process 20638 attached restart_syscall(&lt;... resuming interrupted poll ...&gt;) = 0 poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 1 ([{fd=4, revents=POLLIN}]) accept4(4, {sa_family=AF_INET, sin_port=htons(57530), sin_addr=inet_addr(&quot;127.0.0.1&quot;)}, [16], SOCK_CLOEXEC) = 5 clone(child_stack=0x7f2beeb28fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f2beeb299d0, tls=0x7f2beeb29700, child_tidptr=0x7f2beeb299d0) = 21062 futex(0x11204d0, FUTEX_WAIT_PRIVATE, 0, NULLstrace: Process 21062 attached \u00a0&lt;unfinished ...&gt; [pid 21062] set_robust_list(0x7f2beeb299e0, 24) = 0 [pid 21062] futex(0x11204d0, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 20638] &lt;... futex resumed&gt; ) \u00a0 \u00a0 \u00a0 = 0 [pid 20638] futex(0x921c9c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 27, {1598879772, 978949000}, ffffffff &lt;unfinished ...&gt; [pid 21062] futex(0x921c9c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x921c98, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 [pid 20638] &lt;... futex resumed&gt; ) \u00a0 \u00a0 \u00a0 = 0 [pid 20638] futex(0x921cc8, FUTEX_WAIT_PRIVATE, 2, NULL &lt;unfinished ...&gt; [pid 21062] futex(0x921cc8, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 20638] &lt;... futex resumed&gt; ) \u00a0 \u00a0 \u00a0 = 0 [pid 20638] futex(0x921cc8, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 20638] poll([{fd=4, events=POLLIN}], 1, 500 &lt;unfinished ...&gt; [pid 21062] recvfrom(5, &quot;GET \/ HTTP\/1.1\\r\\nConnection: upgr&quot;..., 8192, 0, NULL, NULL) = 153 [pid 21062] stat(&quot;\/root\/test_dir_srv\/&quot;, 0x7f2beeb27350) = -1 ENOENT (No such file or directory) [pid 21062] open(&quot;\/root\/test_dir_srv\/&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) [pid 21062] write(2, &quot;127.0.0.1 - - [31\/Aug\/2020 09:16&quot;..., 70) = 70 [pid 21062] write(2, &quot;127.0.0.1 - - [31\/Aug\/2020 09:16&quot;..., 60) = 60 [pid 21062] sendto(5, &quot;HTTP\/1.0 404 File not found\\r\\nSer&quot;..., 184, 0, NULL, 0) = 184 [pid 21062] sendto(5, &quot;&lt;!DOCTYPE HTML PUBLIC \\&quot;-\/\/W3C\/\/D&quot;..., 469, 0, NULL, 0) = 469 [pid 21062] shutdown(5, SHUT_WR)\u00a0 \u00a0 \u00a0 \u00a0 = 0 [pid 21062] close(5)\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 = 0 [pid 21062] madvise(0x7f2bee329000, 8368128, MADV_DONTNEED) = 0 [pid 21062] exit(0) \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 = ? [pid 21062] +++ exited with 0 +++ &lt;... poll resumed&gt; )\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500) \u00a0 = 0 (Timeout) poll([{fd=4, events=POLLIN}], 1, 500^Cstrace: Process 20638 detached \u00a0&lt;detached ...&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0432\u043e\u0434 <i>strace<\/i> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u0451\u043c\u043d\u044b\u0439 (\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b \u0438 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <i>\/root\/test_dir_srv\/<\/i> \u2014 \u043a\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u0435\u0451 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 404.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <i>-e<\/i>:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# strace -ff -e trace=open,stat -p 20638 strace: Process 20638 attached strace: Process 21396 attached [pid 21396] stat(&quot;\/root\/test_dir_srv\/&quot;, 0x7f2beeb27350) = -1 ENOENT (No such file or directory) [pid 21396] open(&quot;\/root\/test_dir_srv\/&quot;, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) [pid 21396] +++ exited with 0 +++ ^Cstrace: Process 20638 detached <\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u0412\u044b\u0432\u043e\u0434: \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e <strong>\u00ab<\/strong>\u0437\u0430\u043b\u0435\u0437\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u00bb \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443, \u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441 \u044d\u0442\u0438\u043c <i>strace<\/i>. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u043e \u0441 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0443\/\u043f\u043e\u0440\u0442\u0443 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441), \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u0435\u0431\u0430\u0433\u0430. \u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <i>ltrace<\/i>.<\/p><\/blockquote>\n<p>  <\/p>\n<h1>\u0415\u0441\u0442\u044c \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451?<\/h1>\n<p>  \u0412\u0430\u043d\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438 \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0435\u0441\u0442\u044c GNU Project Debugger \u2014 <i><strong>GDB<\/strong><\/i>. \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e <strong>\u00ab<\/strong>\u0437\u0430\u043b\u0435\u0437\u0442\u044c\u00bb \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e. \u0418 \u0412\u0430\u043d\u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <i>GDB<\/i>. \u041e\u043d \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0440\u0430\u0437 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c breakpoint \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>open()<\/i> \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442:  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u044b\u0432\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b gdb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">[root@ivan ~]# gdb -p 23998 GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;http:\/\/gnu.org\/licenses\/gpl.html&gt; This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.  Type &quot;show copying&quot; and &quot;show warranty&quot; for details. This GDB was configured as &quot;x86_64-redhat-linux-gnu&quot;. For bug reporting instructions, please see: &lt;http:\/\/www.gnu.org\/software\/gdb\/bugs\/&gt;. Attaching to process 23998 \u2026 \u2026 &lt;\u0437\u0434\u0435\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 debugging symbols...&gt; ... 0x00007f2284c0b20d in poll () at ..\/sysdeps\/unix\/syscall-template.S:81 81\tT_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) Missing separate debuginfos, use: debuginfo-install keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-34.el7.x86_64 libcom_err-1.42.9-13.el7.x86_64 libgcc-4.8.5-36.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 openssl-libs-1.0.2k-16.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64 (gdb) set follow-fork-mode child (gdb) b open Breakpoint 1 at 0x7f2284c06d20: open. (2 locations) (gdb) c Continuing. [New Thread 0x7f227a165700 (LWP 24030)] [Switching to Thread 0x7f227a165700 (LWP 24030)]  Breakpoint 1, open64 () at ..\/sysdeps\/unix\/syscall-template.S:81 81\tT_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) (gdb) n 83\tT_PSEUDO_END (SYSCALL_SYMBOL) (gdb) n _io_FileIO___init___impl (opener=&lt;optimized out&gt;, closefd=&lt;optimized out&gt;, mode=&lt;optimized out&gt;, nameobj=0x7f227a68f6f0, self=0x7f227a68f6c0) at .\/Modules\/_io\/fileio.c:381 381\t                Py_END_ALLOW_THREADS (gdb) n 379\t                self-&gt;fd = open(name, flags, 0666); (gdb) n 381\t                Py_END_ALLOW_THREADS (gdb) print name $1 = 0x7f227a687c90 &quot;\/root\/test_dir_srv\/&quot; (gdb) q A debugging session is active.  \tInferior 1 [process 23998] will be detached.  Quit anyway? (y or n) y Detaching from program: \/usr\/local\/bin\/python3.7, process 23998 [Inferior 1 (process 23998) detached] <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <i>c<\/i> (<i>continue<\/i>) \u0412\u0430\u043d\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b <i>curl<\/i>, \u043f\u043e\u043f\u0430\u043b \u0432 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0435 \u0432 \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0438 \u0441\u0442\u0430\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 (\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441) \u043f\u043e \u0448\u0430\u0433\u0430\u043c. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043d\u0430\u0448\u0451\u043b \u0432 \u043a\u043e\u0434\u0435 <i>open<\/i> \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0443\u0442\u0438 <i>name<\/i>, \u043e\u043d \u0432\u044b\u0432\u0435\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438 \u0443\u0432\u0438\u0434\u0435\u043b \u00ab<i>\/root\/test_dir_srv\/<\/i>\u00bb.  <\/p>\n<blockquote><p>GDB \u2014 \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0438 \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u0435\u0439\u0441\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0433\u043e\u043d\u043a\u0438), \u0442\u0430\u043a\u0436\u0435 \u043e\u043d \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441 \u0447\u0442\u0435\u043d\u0438\u0435\u043c core dump \u0444\u0430\u0439\u043b\u043e\u0432.<\/p><\/blockquote>\n<p>  <\/p>\n<h1>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 Docker?<\/h1>\n<p>  \u0412 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 DevOps \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c\u0441\u044f Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c, \u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0442\u0435\u0441\u0442 \u0432\u0441\u0435\u0445 \u043a\u0435\u0439\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0448\u0451\u043b \u0412\u0430\u043d\u044f. \u0412\u0430\u043d\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430\u0433\u0443\u0433\u043b\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ol>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <i>tcpdump<\/i>, <i>strace<\/i> \u0438 <i>gdb<\/i> \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u0432\u0438\u0434\u0443 <a href=\"https:\/\/docs.docker.com\/engine\/reference\/run\/#runtime-privilege-and-linux-capabilities\">Linux capabilities<\/a> (\u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/508990\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 <i>strace<\/i> \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0431\u0435\u0437 <i>&#8212;cap-add=SYS_PTRACE<\/i>).<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <a href=\"https:\/\/docs.docker.com\/engine\/reference\/run\/#example\"><i>&#8212;pid<\/i><\/a>.<\/li>\n<\/ol>\n<p>  \u041d\u043e \u0435\u043c\u0443 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0440\u0430\u0444\u0438\u043a, \u0438\u0434\u0443\u0449\u0438\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (\u0438\u043b\u0438 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430), \u043f\u0440\u044f\u043c \u0441 \u0445\u043e\u0441\u0442\u0430. \u0423 <i>tcpdump<\/i> \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (\u043e\u043f\u0446\u0438\u044f <i>-i<\/i>), \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 veth (\u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 <i>ifconfig<\/i> \u0438\u043b\u0438 <i>ip a<\/i>), \u043d\u043e \u043a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442? \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"https:\/\/docs.docker.com\/network\/host\/\">host networking<\/a>, \u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <i>eth0<\/i>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 \u0445\u043e\u0441\u0442\u043e\u043c. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043d\u0430\u0439\u0442\u0438, <i>ifindex<\/i> \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 <i>iflink<\/i> \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <i>eth0<\/i> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.kernel.org\/doc\/Documentation\/ABI\/testing\/sysfs-class-net\">\u0437\u0434\u0435\u0441\u044c<\/a>).<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# for f in `ls \/sys\/class\/net\/veth*\/ifindex`; do echo $f; cat $f; done | grep -B 1 `docker exec test_service_container cat \/sys\/class\/net\/eth0\/iflink` | head -1 \/sys\/class\/net\/veth6c18dba\/ifindex <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <i>tcpdump<\/i> \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <i>veth6c18dba<\/i>:<\/p>\n<pre><code class=\"plaintext\">tcpdump -i veth6c18dba <\/code><\/pre>\n<p>  \u041d\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0449\u0435: \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 \u0435\u0433\u043e \u0441\u0435\u0442\u0438 \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043d\u0451\u043c:<\/p>\n<pre><code class=\"plaintext\">[root@ivan ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_service_container 172.17.0.10 [root@ivan ~]# tcpdump -i any host 172.17.0.10 <\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u0412\u044b\u0432\u043e\u0434: \u0434\u0435\u0431\u0430\u0433 \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0432 \u043d\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0430 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <i>docker logs<\/i>.<\/p><\/blockquote>\n<p>  <\/p>\n<h1>\u0412\u044b\u0432\u043e\u0434\u044b<\/h1>\n<p>  \u041a\u0430\u043a \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0412\u0430\u043d\u044f \u0440\u0435\u0448\u0438\u043b \u043a\u0440\u0430\u0442\u043a\u043e \u0437\u0430\u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439. \u0412\u043e\u0442 \u0447\u0442\u043e \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043b:<\/p>\n<ul>\n<li>\u041b\u043e\u0433\u0438 \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u0440\u0443\u0433 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0432 \u043b\u043e\u0433 \u2014 \u044d\u0442\u043e \u043f\u043e\u0432\u043e\u0434 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u043e\u0432.<\/li>\n<li>\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430\u0434\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 Linux \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0442\u0438\u043b\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0441 \u044d\u0442\u0438\u043c.<\/li>\n<li>\u0421 \u0434\u0435\u0431\u0430\u0433\u043e\u043c \u043b\u044e\u0431\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 <a href=\"https:\/\/www.tcpdump.org\/\"><i>tcpdump<\/i><\/a>. \u041e\u043d \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043e\u0442\u043a\u0443\u0434\u0430 \u0438 \u043a\u0443\u0434\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/li>\n<li>\u0417\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c <strong>\u00ab<\/strong>\u0432\u043d\u0443\u0442\u0440\u044c\u00bb \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <a href=\"https:\/\/strace.io\/\"><i>strace<\/i><\/a>, <a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man1\/ltrace.1.html\"><i>ltrace<\/i><\/a> \u0438 <a href=\"https:\/\/www.gnu.org\/software\/gdb\/\"><i>gdb<\/i><\/a>.<\/li>\n<li>\u0412\u0441\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/li>\n<li>\u041c\u043d\u043e\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0435\u0441\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 <a href=\"https:\/\/man7.org\/linux\/man-pages\/man5\/proc.5.html\"><i>\/proc\/PID<\/i><\/a>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <i>\/proc\/PID\/fd<\/i> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0444\u0430\u0439\u043b\u044b.<\/li>\n<li>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man1\/ps.1.html\"><i>ps<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/ls.1.html\"><i>ls<\/i><\/a>, <a href=\"https:\/\/linux.die.net\/man\/1\/stat\"><i>stat<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/lsof.8.html\"><i>lsof<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/ss.8.html\"><i>ss<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/du.1.html\"><i>du<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/top.1.html\"><i>top<\/i><\/a>, <a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man1\/free.1.html\"><i>free<\/i><\/a>, <a href=\"https:\/\/linux.die.net\/man\/8\/ip\"><i>ip<\/i><\/a>, <a href=\"https:\/\/linux.die.net\/man\/8\/ldconfig\"><i>ldconfig<\/i><\/a>, <a href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/ldd.1.html\"><i>ldd<\/i><\/a> \u0438 \u043f\u0440\u043e\u0447\u0438\u0435.<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u0430\u043c \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u044d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u043d\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u0447\u0451\u043c \u0434\u0435\u043b\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0432 Linux. \u0415\u0441\u043b\u0438 \u0412\u0430\u043d\u044f \u0447\u0442\u043e-\u0442\u043e \u0443\u043f\u0443\u0441\u0442\u0438\u043b, \u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u044d\u0442\u0438\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445!<\/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\/company\/funcorp\/blog\/518248\/\"> https:\/\/habr.com\/ru\/company\/funcorp\/blog\/518248\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/funcorp\/blog\/518248\/\">\u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/post\/481398\/\">\u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Linux shell \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432<\/a> \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0437\u0434\u043d\u043e, \u0447\u0435\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e Backend QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u0412\u0430\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u3\/5y\/ub\/u35yubthd35hqttf6pajiewx800.jpeg\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-309665","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309665","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=309665"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309665\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}