HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Определение</a></li>
1 <ul><li><a>Определение</a></li>
2 <li><a>Просмотр запущенных команд</a><ul><li><a>Top</a></li>
2 <li><a>Просмотр запущенных команд</a><ul><li><a>Top</a></li>
3 <li><a>PS</a></li>
3 <li><a>PS</a></li>
4 <li><a>Выводимая информация - описание столбцов</a></li>
4 <li><a>Выводимая информация - описание столбцов</a></li>
5 <li><a>Опции</a></li>
5 <li><a>Опции</a></li>
6 </ul></li>
6 </ul></li>
7 <li><a>Удаление при сбое</a></li>
7 <li><a>Удаление при сбое</a></li>
8 <li><a>Завершение</a></li>
8 <li><a>Завершение</a></li>
9 <li><a>Процессы фоновые и переднего плана</a></li>
9 <li><a>Процессы фоновые и переднего плана</a></li>
10 <li><a>Состояния</a></li>
10 <li><a>Состояния</a></li>
11 <li><a>Приоритеты и их установка</a></li>
11 <li><a>Приоритеты и их установка</a></li>
12 </ul><p>Linux - популярная операционная система. Ее отличительная черта - система управления. В отличие от Windows, она базируется преимущественно на командах и терминале.</p>
12 </ul><p>Linux - популярная операционная система. Ее отличительная черта - система управления. В отличие от Windows, она базируется преимущественно на командах и терминале.</p>
13 <p>Далее в статье предстоит разобраться с процессами в Linux. Необходимо выяснить, как управлять ими, что они собой представляют, какие операции можно выполнять в операционной системе. Эта информация пригодится как новичкам, так и более опытным пользователям Линукса.</p>
13 <p>Далее в статье предстоит разобраться с процессами в Linux. Необходимо выяснить, как управлять ими, что они собой представляют, какие операции можно выполнять в операционной системе. Эта информация пригодится как новичкам, так и более опытным пользователям Линукса.</p>
14 <h2>Определение</h2>
14 <h2>Определение</h2>
15 <p>Программа представляет собой набор неких инструкций, которые выполняются компьютером. При запуске приложения алгоритмы и команды копируются в память устройства. Далее происходит выделение пространства под хранение переменных и иных элементов, необходимых для нормальной работы программного обеспечения.</p>
15 <p>Программа представляет собой набор неких инструкций, которые выполняются компьютером. При запуске приложения алгоритмы и команды копируются в память устройства. Далее происходит выделение пространства под хранение переменных и иных элементов, необходимых для нормальной работы программного обеспечения.</p>
16 <p>Защищенный экземпляр программы - это и есть процесс. Соответствующими компонентами можно управлять в операционной системе. В Linux для каждой программы создается отдельная "операция".</p>
16 <p>Защищенный экземпляр программы - это и есть процесс. Соответствующими компонентами можно управлять в операционной системе. В Linux для каждой программы создается отдельная "операция".</p>
17 <p>В рамках процесса на устройстве будут выделены:</p>
17 <p>В рамках процесса на устройстве будут выделены:</p>
18 <ul><li>процессорное время;</li>
18 <ul><li>процессорное время;</li>
19 <li>пространство в оперативной памяти;</li>
19 <li>пространство в оперативной памяти;</li>
20 <li>иные системные ресурсы.</li>
20 <li>иные системные ресурсы.</li>
21 </ul><p>Каждый процесс имеет собственный идентификатор - PID или Process ID. По ним можно судить о запущенных операция в операционной системе.</p>
21 </ul><p>Каждый процесс имеет собственный идентификатор - PID или Process ID. По ним можно судить о запущенных операция в операционной системе.</p>
22 <p>Процесс - это любые приложения, команды или программы, выполняемые в системе. Они могут быть нескольких видов: обычными и фоновыми.</p>
22 <p>Процесс - это любые приложения, команды или программы, выполняемые в системе. Они могут быть нескольких видов: обычными и фоновыми.</p>
23 <p>Фоновый процесс - это команды и приложения, который подгружаются при запуске операционной системы. В основном они "сидят" в памяти, ожидая события, которое пошел запрос на запуск того или иного сервиса.</p>
23 <p>Фоновый процесс - это команды и приложения, который подгружаются при запуске операционной системы. В основном они "сидят" в памяти, ожидая события, которое пошел запрос на запуск того или иного сервиса.</p>
24 <p>Фоновые процессы системы носят название "демонов". Они являются критическими для работы компьютера. Обычные "приложения" в ОС запускаются в основном пользователем. Они нужны для обеспечения большей функциональности системы, а также выполнения определенных задач.</p>
24 <p>Фоновые процессы системы носят название "демонов". Они являются критическими для работы компьютера. Обычные "приложения" в ОС запускаются в основном пользователем. Они нужны для обеспечения большей функциональности системы, а также выполнения определенных задач.</p>
25 <h2>Просмотр запущенных команд</h2>
25 <h2>Просмотр запущенных команд</h2>
26 <p>Linux - мультизадачная операционная система. Это значит, что в ней могут одновременно выполнять множество процессов (работать большое количество программ и приложений). Это обычная ситуация для современных ОС.</p>
26 <p>Linux - мультизадачная операционная система. Это значит, что в ней могут одновременно выполнять множество процессов (работать большое количество программ и приложений). Это обычная ситуация для современных ОС.</p>
27 <p>Список процессов, работающих на данный момент на устройстве, может быть выведен у Линукса несколькими способами. Для этого используются такие команды как:</p>
27 <p>Список процессов, работающих на данный момент на устройстве, может быть выведен у Линукса несколькими способами. Для этого используются такие команды как:</p>
28 <ul><li>top;</li>
28 <ul><li>top;</li>
29 <li>htot;</li>
29 <li>htot;</li>
30 <li>ps aux.</li>
30 <li>ps aux.</li>
31 </ul><p>Все эти типы команд отвечают за отображение отдельных процессов и операции. Далее предстоит рассмотреть их более подробно.</p>
31 </ul><p>Все эти типы команд отвечают за отображение отдельных процессов и операции. Далее предстоит рассмотреть их более подробно.</p>
32 <h3>Top</h3>
32 <h3>Top</h3>
33 <p>При помощи команды top можно увидеть информацию о системе в реальном времени. Она используется для демонстрации процессов, которые умещаются на экране. Htop - команда, которая работает по схожему принципу. Ее рекомендуется использовать, если хотите увидеть то, что запустил пользователь.</p>
33 <p>При помощи команды top можно увидеть информацию о системе в реальном времени. Она используется для демонстрации процессов, которые умещаются на экране. Htop - команда, которая работает по схожему принципу. Ее рекомендуется использовать, если хотите увидеть то, что запустил пользователь.</p>
34 <p>Вот - пример того, что будет показано на экране при использовании команды top в Linux. Здесь:</p>
34 <p>Вот - пример того, что будет показано на экране при использовании команды top в Linux. Здесь:</p>
35 <ol><li>Строка 2 отвечает за задачи или команды. Это и есть процессы. В любой момент времени в операционной системе выполняются сразу несколько "операций". Большая из них - это системные. Некоторые "спят" - это нормальное явление. "Спящие" процессы находятся в ожидании события, инициирующего их запуск.</li>
35 <ol><li>Строка 2 отвечает за задачи или команды. Это и есть процессы. В любой момент времени в операционной системе выполняются сразу несколько "операций". Большая из них - это системные. Некоторые "спят" - это нормальное явление. "Спящие" процессы находятся в ожидании события, инициирующего их запуск.</li>
36 <li>Строка 3 - анализ оперативной памяти. Если используется много "пространства", переживать не стоит. Связано это с тем, что в Линуксе недавно открытые программы сохраняются в целях повышения быстродействия. Если другим операциям потребуется соответствующая память, она будет высвобождена.</li>
36 <li>Строка 3 - анализ оперативной памяти. Если используется много "пространства", переживать не стоит. Связано это с тем, что в Линуксе недавно открытые программы сохраняются в целях повышения быстродействия. Если другим операциям потребуется соответствующая память, она будет высвобождена.</li>
37 <li>В строке 4 происходит анализ виртуальной памяти операционной системы. При большом использовании этого ресурса целесообразно задуматься над модернизацией устройства. Если на оборудовании изначально достаточно много виртуальной памяти, никаких проблем не возникнет.</li>
37 <li>В строке 4 происходит анализ виртуальной памяти операционной системы. При большом использовании этого ресурса целесообразно задуматься над модернизацией устройства. Если на оборудовании изначально достаточно много виртуальной памяти, никаких проблем не возникнет.</li>
38 <li>В строках 6-10 отображается информация о наиболее ресурсоемких процессах системы. Выводится список по убыванию. Обновляется в режиме реального времени. Это и есть работа операционный системы. В соответствующих строках пользователь увидит все, что происходит в ОС. Там есть два важных столбца - используемая память, а также процент использования ПЦ. Если один из этих показателей долгое время находятся на высоком уровне, стоит выяснить, почему так происходит. В столбце USER указан пользователь, который запустил тот или ином процесс Linux. PID - столбец, указывающий на ID "операций".</li>
38 <li>В строках 6-10 отображается информация о наиболее ресурсоемких процессах системы. Выводится список по убыванию. Обновляется в режиме реального времени. Это и есть работа операционный системы. В соответствующих строках пользователь увидит все, что происходит в ОС. Там есть два важных столбца - используемая память, а также процент использования ПЦ. Если один из этих показателей долгое время находятся на высоком уровне, стоит выяснить, почему так происходит. В столбце USER указан пользователь, который запустил тот или ином процесс Linux. PID - столбец, указывающий на ID "операций".</li>
39 </ol><p>Это - только один из нескольких вариантов просмотра активных процессов на устройстве. Далее предстоит обратить внимание на еще одну команду.</p>
39 </ol><p>Это - только один из нескольких вариантов просмотра активных процессов на устройстве. Далее предстоит обратить внимание на еще одну команду.</p>
40 <h3>PS</h3>
40 <h3>PS</h3>
41 <p>Команда ps - разновидность команды управления операциями на устройстве. Если она используется без аргументов, то клиент увидит список процессов в текущем терминале.</p>
41 <p>Команда ps - разновидность команды управления операциями на устройстве. Если она используется без аргументов, то клиент увидит список процессов в текущем терминале.</p>
42 <p>Более полезной командой станет ps [aux]. Она выведет все процессы, которые выполняются от имен всех пользователей ОС. Отвечает за отображение статистики, время старта и команду, которая его начала. При выводе всех операций, выполняемых в системе, рекомендуется использовать ps -e.</p>
42 <p>Более полезной командой станет ps [aux]. Она выведет все процессы, которые выполняются от имен всех пользователей ОС. Отвечает за отображение статистики, время старта и команду, которая его начала. При выводе всех операций, выполняемых в системе, рекомендуется использовать ps -e.</p>
43 <p>Соответствующий тип команды после обработки выдает достаточно громоздкий результат. Чаще всего его используют вместе с | в grep.</p>
43 <p>Соответствующий тип команды после обработки выдает достаточно громоздкий результат. Чаще всего его используют вместе с | в grep.</p>
44 <h3>Выводимая информация - описание столбцов</h3>
44 <h3>Выводимая информация - описание столбцов</h3>
45 <p>При просмотре информации о процессах в Linux необходимо не только уметь выводить соответствующие данные, но и грамотно расшифровывать их. В терминале появится "таблица" с различными столбцами. Каждый из них имеет то или иное значение, а также отвечает за вывод определенных сведений.</p>
45 <p>При просмотре информации о процессах в Linux необходимо не только уметь выводить соответствующие данные, но и грамотно расшифровывать их. В терминале появится "таблица" с различными столбцами. Каждый из них имеет то или иное значение, а также отвечает за вывод определенных сведений.</p>
46 Как называется заголовокЗа что отвечаетUIDИдентификатор (имя) пользователя владельца процесса. Здесь будет показано, кто запустил операцию.PIDУникальный идентификатор процесса. Информация пригодится для дальнейшей работы с операцией.PPIDИдентификатор родительского процессаCОтвечает за приоритет процесса. Чем он выше, тем "важнее". Некоторые операции будут выполняться в ОС в первую очередь за счет соответствующего показателя.STIMEВремя начала (старта) операции.TTYТерминал запуска. Это системные консоли (помечены как console). Знак вопроса (?) укажет на характеристику операции. Если он есть, значит процесс выступает в качестве демона.TIMEВыполнение процесса. Параметр, который указывает на длительной работы запущенной ранее операции.CMDИмя команды или приложения.<p>Некоторые демоны, работающие в фоновом режиме, могут быть не связаны ни с какими терминалами. Это нормальное явление.</p>
46 Как называется заголовокЗа что отвечаетUIDИдентификатор (имя) пользователя владельца процесса. Здесь будет показано, кто запустил операцию.PIDУникальный идентификатор процесса. Информация пригодится для дальнейшей работы с операцией.PPIDИдентификатор родительского процессаCОтвечает за приоритет процесса. Чем он выше, тем "важнее". Некоторые операции будут выполняться в ОС в первую очередь за счет соответствующего показателя.STIMEВремя начала (старта) операции.TTYТерминал запуска. Это системные консоли (помечены как console). Знак вопроса (?) укажет на характеристику операции. Если он есть, значит процесс выступает в качестве демона.TIMEВыполнение процесса. Параметр, который указывает на длительной работы запущенной ранее операции.CMDИмя команды или приложения.<p>Некоторые демоны, работающие в фоновом режиме, могут быть не связаны ни с какими терминалами. Это нормальное явление.</p>
47 <p>Процессы Linux имеют различные PID и PPID. Чем меньше указанный после записей номер, тем раньше рассматриваемая операция была запущена в системе. Владельцы каждого процесса будут отображаться совместно с именем команды или программы.</p>
47 <p>Процессы Linux имеют различные PID и PPID. Чем меньше указанный после записей номер, тем раньше рассматриваемая операция была запущена в системе. Владельцы каждого процесса будут отображаться совместно с именем команды или программы.</p>
48 <h3>Опции</h3>
48 <h3>Опции</h3>
49 <p>Во время загрузки информации о выполняемых на устройстве операциях можно настраивать параметры ее отображения. Существуют различные опции, помогающие упростить вывод интересующих пользователя сведений:</p>
49 <p>Во время загрузки информации о выполняемых на устройстве операциях можно настраивать параметры ее отображения. Существуют различные опции, помогающие упростить вывод интересующих пользователя сведений:</p>
50 <ul><li>-e - состояние всех процессов;</li>
50 <ul><li>-e - состояние всех процессов;</li>
51 <li>-a - наиболее запрашиваемые;</li>
51 <li>-a - наиболее запрашиваемые;</li>
52 <li>-t - процессы из заданного терминала;</li>
52 <li>-t - процессы из заданного терминала;</li>
53 <li>-p - информация только об указанном процессе;</li>
53 <li>-p - информация только об указанном процессе;</li>
54 <li>-u - операции конкретного пользователя;</li>
54 <li>-u - операции конкретного пользователя;</li>
55 <li>sort - сортировка по заданным параметрам.</li>
55 <li>sort - сортировка по заданным параметрам.</li>
56 </ul><p>Перечисленные виды опций особо полезны при работе с командой ps.</p>
56 </ul><p>Перечисленные виды опций особо полезны при работе с командой ps.</p>
57 <h2>Удаление при сбое</h2>
57 <h2>Удаление при сбое</h2>
58 <p>Существуют различные виды команды управления процессами в операционных системах Linux (Ubuntu и не только). Иногда выполняемые на устройстве операции дают сбой. Завершить их "классическим" способом не получается - ответ на пользовательские действия просто не поступает.</p>
58 <p>Существуют различные виды команды управления процессами в операционных системах Linux (Ubuntu и не только). Иногда выполняемые на устройстве операции дают сбой. Завершить их "классическим" способом не получается - ответ на пользовательские действия просто не поступает.</p>
59 <p>Для завершения операции, которая дала сбой, необходимо использовать команду kill. Форма ее представления:</p>
59 <p>Для завершения операции, которая дала сбой, необходимо использовать команду kill. Форма ее представления:</p>
60 <p>Kill [signal] &lt;PID&gt;</p>
60 <p>Kill [signal] &lt;PID&gt;</p>
61 <p>По умолчанию kill отвечает за завершение зависшего процесса. В этом случае команда отправляет стандартный параметр - -1. Соответствующий сигнал указывает на необходимость закрытия процесса. Начинать рекомендуется именно с такого алгоритма. Он является наиболее простым и коротким.</p>
61 <p>По умолчанию kill отвечает за завершение зависшего процесса. В этом случае команда отправляет стандартный параметр - -1. Соответствующий сигнал указывает на необходимость закрытия процесса. Начинать рекомендуется именно с такого алгоритма. Он является наиболее простым и коротким.</p>
62 <p>Если никакого прогресса от команды нет, потребуется задать параметр в записи, равный -9. Он указывает на необходимость принудительной остановки выполняемой операции.</p>
62 <p>Если никакого прогресса от команды нет, потребуется задать параметр в записи, равный -9. Он указывает на необходимость принудительной остановки выполняемой операции.</p>
63 <h2>Завершение</h2>
63 <h2>Завершение</h2>
64 <p>Процессы в Linux могут быть завершены пользователем. Существуют команды, помогающие прекратить работу запущенной операции:</p>
64 <p>Процессы в Linux могут быть завершены пользователем. Существуют команды, помогающие прекратить работу запущенной операции:</p>
65 <ul><li>sigterm - сохранение данных и завершение;</li>
65 <ul><li>sigterm - сохранение данных и завершение;</li>
66 <li>sigkill - принудительное завершение (без сохранения).</li>
66 <li>sigkill - принудительное завершение (без сохранения).</li>
67 </ul><p>Других команд для завершения операций нет. Второй вариант больше подойдет для ситуаций, при которых приложение работает некорректно.</p>
67 </ul><p>Других команд для завершения операций нет. Второй вариант больше подойдет для ситуаций, при которых приложение работает некорректно.</p>
68 <h2>Процессы фоновые и переднего плана</h2>
68 <h2>Процессы фоновые и переднего плана</h2>
69 <p>Процессы и программы бывают разными. То, что запускаете в системе вручную, выводится "на передний план". Большая часть таких процессов выполняется за секунды. Пример - компиляция программы, обработка большого текстового файла. Если операция требует времени, в Linux нет необходимости ждать завершения обработки одного запроса. Можно сразу переходить к другому, а предыдущий оставить в "фоновом" режиме.</p>
69 <p>Процессы и программы бывают разными. То, что запускаете в системе вручную, выводится "на передний план". Большая часть таких процессов выполняется за секунды. Пример - компиляция программы, обработка большого текстового файла. Если операция требует времени, в Linux нет необходимости ждать завершения обработки одного запроса. Можно сразу переходить к другому, а предыдущий оставить в "фоновом" режиме.</p>
70 <p>Наглядный пример - команда sleep. Она ждет, когда пройдет установленное количество времени, после чего завершает свою работу.</p>
70 <p>Наглядный пример - команда sleep. Она ждет, когда пройдет установленное количество времени, после чего завершает свою работу.</p>
71 <p>Для отображения информации о фоновых задачах и операциях "переднего плана" и их управления существуют различные команды:</p>
71 <p>Для отображения информации о фоновых задачах и операциях "переднего плана" и их управления существуют различные команды:</p>
72 <ul><li>jobs - отвечает за отображение работающих в фоне процессов;</li>
72 <ul><li>jobs - отвечает за отображение работающих в фоне процессов;</li>
73 <li>fg &lt;job number&gt; - один процесс (указанный в скобках) с "фона" переводится на передний план.</li>
73 <li>fg &lt;job number&gt; - один процесс (указанный в скобках) с "фона" переводится на передний план.</li>
74 </ul><p>Для перемещения операций между фоном и передним планом используется комбинация Ctrl + Z. После нажатия соответствующей последовательности текущий фоновый процесс будет остановлен, а затем перемещен на передний план.</p>
74 </ul><p>Для перемещения операций между фоном и передним планом используется комбинация Ctrl + Z. После нажатия соответствующей последовательности текущий фоновый процесс будет остановлен, а затем перемещен на передний план.</p>
75 <h2>Состояния</h2>
75 <h2>Состояния</h2>
76 <p>Linux-процессы работают не непрерывно. Пока пользователь их использует, они находятся в "активном" состоянии. После операция может переходить в состояние ожидания или завершения.</p>
76 <p>Linux-процессы работают не непрерывно. Пока пользователь их использует, они находятся в "активном" состоянии. После операция может переходить в состояние ожидания или завершения.</p>
77 <p>Всего в Linux пять состояний операций:</p>
77 <p>Всего в Linux пять состояний операций:</p>
78 <ol><li>Running. Указывает на обработку при помощи средств системного процессора. Выполняется на данный момент.</li>
78 <ol><li>Running. Указывает на обработку при помощи средств системного процессора. Выполняется на данный момент.</li>
79 <li>Sleeping. Показывает состояние "сна". Операция ждет ввода от пользователя или другого процесса.</li>
79 <li>Sleeping. Показывает состояние "сна". Операция ждет ввода от пользователя или другого процесса.</li>
80 <li>Waiting. Статус, при котором processes получили входные данные, необходимые для работы. Операция будет выполнена, как только подойдет ее очередь.</li>
80 <li>Waiting. Статус, при котором processes получили входные данные, необходимые для работы. Операция будет выполнена, как только подойдет ее очередь.</li>
81 <li>Stopped - операция остановлена. Она не будет выполняться даже тогда, когда подойдет ее очередь. Исключение - если пользователь передаст сигнал на работу.</li>
81 <li>Stopped - операция остановлена. Она не будет выполняться даже тогда, когда подойдет ее очередь. Исключение - если пользователь передаст сигнал на работу.</li>
82 <li>Zombie. Сигнал, указывающий на то, что процесс мертв. Он существует в таблице процессов, но никаких ресурсов на устройстве не занимает. Сохраняется до тех пор, пока родительская операция не разрешит ему "умереть". Это состояние также называется "неработающим процессом".</li>
82 <li>Zombie. Сигнал, указывающий на то, что процесс мертв. Он существует в таблице процессов, но никаких ресурсов на устройстве не занимает. Сохраняется до тех пор, пока родительская операция не разрешит ему "умереть". Это состояние также называется "неработающим процессом".</li>
83 </ol><p>Управление процессами в Linux поддерживает еще и расстановку приоритетов. Эта команда имеет значимость для всей ОС.</p>
83 </ol><p>Управление процессами в Linux поддерживает еще и расстановку приоритетов. Эта команда имеет значимость для всей ОС.</p>
84 <h2>Приоритеты и их установка</h2>
84 <h2>Приоритеты и их установка</h2>
85 <p>Приоритет - это очередность выполнения команды. Чем выше соответствующий показатель, тем "важнее" действие, и тем быстрее оно будет обрабатываться системой.</p>
85 <p>Приоритет - это очередность выполнения команды. Чем выше соответствующий показатель, тем "важнее" действие, и тем быстрее оно будет обрабатываться системой.</p>
86 <p>Для настройки приоритета используется команда nice. Всего у нее 40 значений, среди которых:</p>
86 <p>Для настройки приоритета используется команда nice. Всего у нее 40 значений, среди которых:</p>
87 <ul><li>-20 - это наиболее высокий параметр;</li>
87 <ul><li>-20 - это наиболее высокий параметр;</li>
88 <li>+19 - самый низкий показатель.</li>
88 <li>+19 - самый низкий показатель.</li>
89 </ul><p>По умолчанию большинство Linux-процессов получают значение nice, равное 0. Дочерняя команда наследует приоритет "родителя".</p>
89 </ul><p>По умолчанию большинство Linux-процессов получают значение nice, равное 0. Дочерняя команда наследует приоритет "родителя".</p>
90 <p>Чтобы увидеть niceness для запущенных операций, необходимо использовать ps и опцию -l. Получатся следующие результаты:</p>
90 <p>Чтобы увидеть niceness для запущенных операций, необходимо использовать ps и опцию -l. Получатся следующие результаты:</p>
91 <p>Для определения niceness по умолчанию необходимо пользоваться командой nice без опций и аргументов:</p>
91 <p>Для определения niceness по умолчанию необходимо пользоваться командой nice без опций и аргументов:</p>
92 <p>А вот так запускается программа на более высоком приоритете. Для этого значение "важности" указывается через тире:</p>
92 <p>А вот так запускается программа на более высоком приоритете. Для этого значение "важности" указывается через тире:</p>
93 <p><a>Здесь</a>больше наглядных примеров работы с командами. Лучше освоить их помогут дистанционные компьютерные онлайн-курсы.</p>
93 <p><a>Здесь</a>больше наглядных примеров работы с командами. Лучше освоить их помогут дистанционные компьютерные онлайн-курсы.</p>
94 <p>Интересует <a>Linux и системное администрирование</a>? Добро пожаловать на курс в Otus!</p>
94 <p>Интересует <a>Linux и системное администрирование</a>? Добро пожаловать на курс в Otus!</p>
95  
95