administration.html 143 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402
  1. <!DOCTYPE html>
  2. <html lang="ru">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <title>Системное администрирование &#8212; Неофициальный FAQ по Fedora (версия 2023.05.30)</title>
  7. <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
  8. <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
  9. <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
  10. <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
  11. <script src="_static/doctools.js"></script>
  12. <script src="_static/sphinx_highlight.js"></script>
  13. <script src="_static/translations.js"></script>
  14. <script defer="defer" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
  15. <script defer="defer" src="_static/search.js"></script>
  16. <link rel="icon" href="_static/faq-icon.ico"/>
  17. <link rel="index" title="Алфавитный указатель" href="genindex.html" />
  18. <link rel="search" title="Поиск" href="search.html" />
  19. <link rel="next" title="Сетевое администрирование" href="networking.html" />
  20. <link rel="prev" title="Пакетный менеджер и установка пакетов" href="package-manager.html" />
  21. <link rel="stylesheet" href="_static/custom.css" type="text/css" />
  22. <link rel="apple-touch-icon" href="_static/faq-icon.png" />
  23. <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
  24. </head><body>
  25. <div class="document">
  26. <div class="documentwrapper">
  27. <div class="bodywrapper">
  28. <div class="body" role="main">
  29. <section id="administration">
  30. <span id="id1"></span><h1>Системное администрирование<a class="headerlink" href="#administration" title="Permalink to this heading">¶</a></h1>
  31. <section id="kernelpm-once">
  32. <span id="index-0"></span><span id="id2"></span><h2>Как однократно передать параметр ядра?<a class="headerlink" href="#kernelpm-once" title="Permalink to this heading">¶</a></h2>
  33. <p>Однократная передача параметра ядра возможна только перед загрузкой ядра в память, то есть во время начала загрузки системы.</p>
  34. <p>В меню загрузчика Grub 2 выберем нужную загрузочную опцию и нажмем клавишу <strong>E</strong> на клавиатуре для перехода в режим редактирвоания.</p>
  35. <p>В открывшемся редакторе найдем строку, которая начинается со слова <strong>linux</strong>, перейдём в ее конец, отступим пробел от последнего символа и добавим нужный параметр. Если их несколько, воспользуемся пробелом в качестве разделителя между ними.</p>
  36. <p>Для начала загрузки нажмем сочетание <strong>Ctrl + X</strong> на клавиатуре.</p>
  37. </section>
  38. <section id="kernelpm-perm">
  39. <span id="index-1"></span><span id="id3"></span><h2>Как мне задать параметр ядра для постоянного использования?<a class="headerlink" href="#kernelpm-perm" title="Permalink to this heading">¶</a></h2>
  40. <p>Для современных конфигураций с <a class="reference internal" href="using-system.html#grub-bls-info"><span class="std std-ref">BLS</span></a> воспользуемся утилитой <strong>grubby</strong>:</p>
  41. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo grubby --update-kernel=ALL --args=&quot;foo=bar&quot;
  42. </pre></div>
  43. </div>
  44. <p>Здесь вместо <strong>foo=bar</strong> укажем необходимый параметр ядра.</p>
  45. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  46. </section>
  47. <section id="kernelpm-remove">
  48. <span id="index-2"></span><span id="id4"></span><h2>Как убрать ненужный более параметр ядра?<a class="headerlink" href="#kernelpm-remove" title="Permalink to this heading">¶</a></h2>
  49. <p>Для современных конфигураций с <a class="reference internal" href="using-system.html#grub-bls-info"><span class="std std-ref">BLS</span></a> воспользуемся утилитой <strong>grubby</strong>:</p>
  50. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo grubby --update-kernel=ALL --remove-args=&quot;foo=bar&quot;
  51. </pre></div>
  52. </div>
  53. <p>Здесь вместо <strong>foo=bar</strong> укажем необходимый параметр ядра.</p>
  54. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  55. </section>
  56. <section id="kernelpm-legacy">
  57. <span id="index-3"></span><span id="id5"></span><h2>Как мне задать параметр ядра на устаревшей конфигурации?<a class="headerlink" href="#kernelpm-legacy" title="Permalink to this heading">¶</a></h2>
  58. <p>На устаревших конфигурациях, не использующих <a class="reference internal" href="using-system.html#grub-bls-info"><span class="std std-ref">BLS</span></a>, откроем файл с шаблонами загрузчика <code class="docutils literal notranslate"><span class="pre">/etc/default/grub</span></code> в любом текстовом редакторе:</p>
  59. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/default/grub
  60. </pre></div>
  61. </div>
  62. <p>Найдём в нём переменную <code class="docutils literal notranslate"><span class="pre">GRUB_CMDLINE_LINUX</span></code>, внесём соответствующие правки и сохраним изменения.</p>
  63. <p><a class="reference internal" href="using-system.html#grub-rebuild"><span class="std std-ref">Пересоберём конфиг Grub 2</span></a> посредством <strong>grub2-mkconfig</strong>.</p>
  64. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  65. </section>
  66. <section id="kernelpm-list">
  67. <span id="index-4"></span><span id="id6"></span><h2>Как определить какие параметры ядра заданы в настоящее время?<a class="headerlink" href="#kernelpm-list" title="Permalink to this heading">¶</a></h2>
  68. <p>Для получения информации о текущих параметрах ядра достаточно выполнить:</p>
  69. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /proc/cmdline
  70. </pre></div>
  71. </div>
  72. </section>
  73. <section id="kernel-modules-list">
  74. <span id="index-5"></span><span id="id7"></span><h2>Как определить какие модули ядра в настоящее время загружены?<a class="headerlink" href="#kernel-modules-list" title="Permalink to this heading">¶</a></h2>
  75. <p>Воспользуемся <strong>lsmod</strong> для отображения всех загруженных в данный момент модулей ядра:</p>
  76. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>lsmod
  77. </pre></div>
  78. </div>
  79. <p>При помощи <strong>lspci</strong> выведем список используемых модулей конкретными устройствами:</p>
  80. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>lspci -nnk
  81. </pre></div>
  82. </div>
  83. </section>
  84. <section id="kernel-modules-help">
  85. <span id="index-6"></span><span id="id8"></span><h2>Как узнать какие опциональные параметры поддерживает конкретный модуль ядра?<a class="headerlink" href="#kernel-modules-help" title="Permalink to this heading">¶</a></h2>
  86. <p>Для получения краткой справочной информации о поддерживаемых параметрах конкретного модуля ядра необходимо использовать <strong>modinfo</strong>:</p>
  87. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>modinfo foo-bar
  88. </pre></div>
  89. </div>
  90. <p>Здесь <strong>foo-bar</strong> – имя модуля, информацию о котором требуется вывести.</p>
  91. </section>
  92. <section id="uefi-boot-fedora">
  93. <span id="uefi-list"></span><span id="index-7"></span><h2>Как определить список загружаемых ОС в меню UEFI Boot из Fedora?<a class="headerlink" href="#uefi-boot-fedora" title="Permalink to this heading">¶</a></h2>
  94. <p>Выведем текущий список загрузки UEFI Boot при помощи утилиты <strong>efibootmgr</strong>:</p>
  95. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo efibootmgr -v
  96. </pre></div>
  97. </div>
  98. </section>
  99. <section id="uefi-reorder">
  100. <span id="index-8"></span><span id="id9"></span><h2>Возможно ли изменить порядок загрузки в UEFI Boot из Fedora?<a class="headerlink" href="#uefi-reorder" title="Permalink to this heading">¶</a></h2>
  101. <p>Выведем текущий <a class="reference internal" href="#uefi-list"><span class="std std-ref">список загрузки UEFI Boot</span></a>.</p>
  102. <p>Изменим порядок по своему усмотрению:</p>
  103. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo efibootmgr -o 0000,0002,0003,0001
  104. </pre></div>
  105. </div>
  106. <p>Здесь <strong>0000</strong> и прочие – результат предыдущего вывода утилиты. Ведущие нули указывать не обязательно.</p>
  107. <p>Изменения вступают в силу немедленно.</p>
  108. </section>
  109. <section id="uefi-add">
  110. <span id="index-9"></span><span id="id10"></span><h2>Как добавить новый пункт меню UEFI Boot из Fedora?<a class="headerlink" href="#uefi-add" title="Permalink to this heading">¶</a></h2>
  111. <p>В качестве примера добавим строку запуска Fedora (если она по какой-либо причине стала отсутствовать):</p>
  112. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo efibootmgr -c -L &quot;Fedora&quot; -l &quot;\EFI\fedora\shimx64.efi&quot;
  113. </pre></div>
  114. </div>
  115. <p>Изменения вступают в силу немедленно.</p>
  116. </section>
  117. <section id="uefi-remove">
  118. <span id="index-10"></span><span id="id11"></span><h2>Как удалить ненужный пункт меню UEFI Boot из Fedora?<a class="headerlink" href="#uefi-remove" title="Permalink to this heading">¶</a></h2>
  119. <p>Выведем текущий <a class="reference internal" href="#uefi-list"><span class="std std-ref">список загрузки UEFI Boot</span></a>.</p>
  120. <p>Удалим пункт <strong>0002</strong>:</p>
  121. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo efibootmgr -b 0002 -B
  122. </pre></div>
  123. </div>
  124. <p>Ведущие нули указывать не обязательно. Изменения вступают в силу немедленно.</p>
  125. </section>
  126. <section id="journal-current">
  127. <span id="index-11"></span><span id="id12"></span><h2>Как мне посмотреть текущий журнал работы системы?<a class="headerlink" href="#journal-current" title="Permalink to this heading">¶</a></h2>
  128. <p>Чтобы посмотреть журнал работы системы с момента загрузки, нужно выполнить:</p>
  129. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl -b
  130. </pre></div>
  131. </div>
  132. <p>Чтобы посмотреть только журнал работы ядра (аналог dmesg):</p>
  133. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl -k
  134. </pre></div>
  135. </div>
  136. </section>
  137. <section id="journal-history">
  138. <span id="index-12"></span><span id="id13"></span><h2>Как мне посмотреть журналы с прошлых загрузок?<a class="headerlink" href="#journal-history" title="Permalink to this heading">¶</a></h2>
  139. <p>Вывести список всех загрузок:</p>
  140. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl --list-boots
  141. </pre></div>
  142. </div>
  143. <p>Вывести содержимое журнала загрузки с идентификатором <strong>X</strong>:</p>
  144. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl -b -X
  145. </pre></div>
  146. </div>
  147. </section>
  148. <section id="journal-tofile">
  149. <span id="index-13"></span><span id="id14"></span><h2>Как мне выгрузить журнал в файл?<a class="headerlink" href="#journal-tofile" title="Permalink to this heading">¶</a></h2>
  150. <p>Необходимо <a class="reference internal" href="#bash-pipelines"><span class="std std-ref">перенаправить поток</span></a> стандартного вывода в файл:</p>
  151. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl -b &gt; ~/abc.txt
  152. </pre></div>
  153. </div>
  154. <p>Также можно воспользоваться утилитой fpaste для автоматической загрузки файла на сервис <a class="reference external" href="https://paste.fedoraproject.org/">fpaste.org</a>:</p>
  155. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>journalctl -b | fpaste
  156. </pre></div>
  157. </div>
  158. <p>При успешном выполнении будет создана ссылка для быстрого доступа.</p>
  159. </section>
  160. <section id="chroot-liveusb">
  161. <span id="chroot"></span><span id="index-14"></span><h2>Как сделать chroot в установленную систему с LiveUSB?<a class="headerlink" href="#chroot-liveusb" title="Permalink to this heading">¶</a></h2>
  162. <p>Загружаемся с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">Fedora LiveUSB</span></a> и запускаем эмулятор терминала или переходим в виртуальную консоль (особой разницы не имеет).</p>
  163. <p>Для начала создадим каталог для точки монтирования:</p>
  164. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/fedora
  165. </pre></div>
  166. </div>
  167. <p>Смонтируем корневой раздел установленной ОС:</p>
  168. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -t ext4 /dev/sda3 /media/fedora
  169. </pre></div>
  170. </div>
  171. <p>Здесь <strong>/dev/sda3</strong> – раздел, на котором установлена ОС, а <strong>ext4</strong> – его файловая система. Внесём соответствующие правки если это не так.</p>
  172. <p>Переходим в каталог с корневой ФС и монтируем ряд необходимых для работы окружения виртуальных ФС:</p>
  173. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cd /media/fedora
  174. sudo mount -t proc /proc proc
  175. sudo mount --rbind /sys sys
  176. sudo mount --make-rslave sys
  177. sudo mount --rbind /dev dev
  178. sudo mount --make-rslave dev
  179. sudo mount -t tmpfs tmpfs tmp
  180. </pre></div>
  181. </div>
  182. <p>При необходимости смонтируем <code class="docutils literal notranslate"><span class="pre">/boot</span></code> и <code class="docutils literal notranslate"><span class="pre">/boot/efi</span></code> разделы:</p>
  183. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -t ext4 /dev/sda2 boot
  184. sudo mount -t vfat /dev/sda1 boot/efi
  185. </pre></div>
  186. </div>
  187. <p>Теперь осуществим вход в chroot:</p>
  188. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chroot /media/fedora
  189. </pre></div>
  190. </div>
  191. <p>Если для выполнения действий требуется доступ к Интернету, настроим <a class="reference internal" href="networking.html#chroot-dns"><span class="std std-ref">корректное преобразование DNS</span></a>.</p>
  192. <p>По окончании работы завершим работу chroot-окружения:</p>
  193. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>logout
  194. </pre></div>
  195. </div>
  196. <p>Отмонтируем раздел:</p>
  197. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/fedora
  198. </pre></div>
  199. </div>
  200. </section>
  201. <section id="ups-fedora">
  202. <span id="configure-ups"></span><span id="index-15"></span><h2>Как настроить ИБП (UPS) в Fedora?<a class="headerlink" href="#ups-fedora" title="Permalink to this heading">¶</a></h2>
  203. <p>См. <a class="reference external" href="https://www.easycoding.org/2012/10/01/podnimaem-nut-v-linux.html">здесь</a>.</p>
  204. </section>
  205. <section id="journald-limit">
  206. <span id="index-16"></span><span id="id15"></span><h2>Системные журналы занимают слишком много места. Как их ограничить?<a class="headerlink" href="#journald-limit" title="Permalink to this heading">¶</a></h2>
  207. <p>См. <a class="reference external" href="https://www.easycoding.org/2016/08/24/ogranichivaem-sistemnye-zhurnaly-v-fedora-24.html">здесь</a>.</p>
  208. </section>
  209. <section id="journald-wipe">
  210. <span id="index-17"></span><span id="id16"></span><h2>Как немедленно очистить все системные журналы?<a class="headerlink" href="#journald-wipe" title="Permalink to this heading">¶</a></h2>
  211. <p>Выполним принудительную ротацию системных журналов для сброса их из памяти на диск:</p>
  212. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo journalctl --rotate
  213. </pre></div>
  214. </div>
  215. <p>Очистим все записи с диска, старше 1 секунды:</p>
  216. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo journalctl --vacuum-time=1s
  217. </pre></div>
  218. </div>
  219. </section>
  220. <section id="systemd">
  221. <span id="systemd-info"></span><span id="index-18"></span><h2>Что такое systemd и как с ним работать?<a class="headerlink" href="#systemd" title="Permalink to this heading">¶</a></h2>
  222. <p>См. <a class="reference external" href="https://www.easycoding.org/2017/11/05/upravlyaem-systemd-v-fedora.html">здесь</a>.</p>
  223. </section>
  224. <section id="drop-fs-caches">
  225. <span id="index-19"></span><span id="id17"></span><h2>Как очистить кэши и буферы всех файловых систем?<a class="headerlink" href="#drop-fs-caches" title="Permalink to this heading">¶</a></h2>
  226. <p>Чтобы очистить кэши и буферы нужно выполнить:</p>
  227. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;sync &amp;&amp; echo 3 &gt; /proc/sys/vm/drop_caches &amp;&amp; sync&quot;
  228. </pre></div>
  229. </div>
  230. </section>
  231. <section id="utc-localtime">
  232. <span id="system-time-utc"></span><span id="index-20"></span><h2>Как перевести системные часы в UTC или localtime и наоборот?<a class="headerlink" href="#utc-localtime" title="Permalink to this heading">¶</a></h2>
  233. <p>Localtime – это хранение в UEFI BIOS компьютера времени с учётом установленного в системе часового пояса. При определённых условиях это может вызывать проблемы с синхронизацией времени, а также работой нескольких операционных систем на одном компьютере.</p>
  234. <p>UTC – это хранение в UEFI BIOS компьютера всемирного координированного времени по Гринвичу без учёта часовых поясов. Часовыми поясами управляет операционная система, что позволяет каждому пользователю в системе, а также приложениям использовать <a class="reference internal" href="using-system.html#application-timezone"><span class="std std-ref">индивидуальные настройки</span></a>.</p>
  235. <p>Переключение аппаратных часов компьютера в UTC из localtime:</p>
  236. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo timedatectl set-local-rtc no
  237. </pre></div>
  238. </div>
  239. <p>Переключение аппаратных часов компьютера в localtime из UTC:</p>
  240. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo timedatectl set-local-rtc yes
  241. </pre></div>
  242. </div>
  243. </section>
  244. <section id="fedora-windows">
  245. <span id="windows-utc"></span><span id="index-21"></span><h2>У меня в дуалбуте с Fedora установлена Windows и часы постоянно сбиваются. В чём дело?<a class="headerlink" href="#fedora-windows" title="Permalink to this heading">¶</a></h2>
  246. <p>Чтобы такого не происходило, обе операционные системы должны хранить время в формате UTC. Для этого в Windows нужно применить следующий файл реестра:</p>
  247. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="na">Windows Registry Editor Version 5.00</span>
  248. <span class="k">[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]</span>
  249. <span class="na">&quot;RealTimeIsUniversal&quot;</span><span class="o">=</span><span class="s">dword:00000001</span>
  250. </pre></div>
  251. </div>
  252. </section>
  253. <section id="gdm-sddm">
  254. <span id="change-dm"></span><span id="index-22"></span><h2>У меня в системе используется GDM, но я хочу заменить его на SDDM. Это возможно?<a class="headerlink" href="#gdm-sddm" title="Permalink to this heading">¶</a></h2>
  255. <p>Установка SDDM:</p>
  256. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install sddm
  257. </pre></div>
  258. </div>
  259. <p>Отключение GDM и активация SDDM:</p>
  260. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl -f enable sddm
  261. </pre></div>
  262. </div>
  263. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  264. </section>
  265. <section id="java">
  266. <span id="alternatives-java"></span><span id="index-23"></span><h2>Как мне выбрать версию Java по умолчанию?<a class="headerlink" href="#java" title="Permalink to this heading">¶</a></h2>
  267. <p>Для выбора дефолтной <a class="reference internal" href="package-manager.html#java-multiple"><span class="std std-ref">версии Java</span></a> следует использовать систему альтернатив:</p>
  268. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo update-alternatives --config java
  269. </pre></div>
  270. </div>
  271. </section>
  272. <section id="change-hostname">
  273. <span id="index-24"></span><span id="id18"></span><h2>Как изменить имя хоста?<a class="headerlink" href="#change-hostname" title="Permalink to this heading">¶</a></h2>
  274. <p>Изменение имени хоста возможно посредством <strong>hostnamectl</strong>:</p>
  275. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>hostnamectl set-hostname NEW
  276. </pre></div>
  277. </div>
  278. <p>Здесь вместо <strong>NEW</strong> следует указать новое значение. Изменения вступят в силу немедленно.</p>
  279. </section>
  280. <section id="lvm-liveusb">
  281. <span id="fs-check-lvm"></span><span id="index-25"></span><h2>Как мне проверить ФС в составе LVM с LiveUSB?<a class="headerlink" href="#lvm-liveusb" title="Permalink to this heading">¶</a></h2>
  282. <p>Если файловая система была повреждена, необходимо запустить <strong>fsck</strong> и разрешить ему исправить её. При использовании настроек по умолчанию (LVM, ФС ext4) это делается так:</p>
  283. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fsck -t ext4 /dev/mapper/fedora-root
  284. sudo fsck -t ext4 /dev/mapper/fedora-home
  285. </pre></div>
  286. </div>
  287. <p>Если вместо ext4 применяется другая файловая система, необходимо указать её после параметра <strong>-t</strong>.</p>
  288. </section>
  289. <section id="liveusb">
  290. <span id="fs-check-partitions"></span><span id="index-26"></span><h2>Как мне проверить ФС при использовании классических разделов с LiveUSB?<a class="headerlink" href="#liveusb" title="Permalink to this heading">¶</a></h2>
  291. <p>Если используется классическая схема с обычными разделами, то утилите <strong>fsck</strong> необходимо передавать соответствующее блочное устройство, например:</p>
  292. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fsck -t ext4 /dev/sda2
  293. sudo fsck -t ext4 /dev/sda3
  294. </pre></div>
  295. </div>
  296. <p>Если вместо <strong>ext4</strong> применяется другая файловая система, необходимо указать её после параметра <strong>-t</strong>. Также вместо <strong>/dev/sda2</strong> следует прописать соответствующее блочное устройство с повреждённой ФС.</p>
  297. <p>Полный список доступных устройств хранения данных можно получить:</p>
  298. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fdisk -l
  299. </pre></div>
  300. </div>
  301. </section>
  302. <section id="luks-liveusb">
  303. <span id="fs-check-luks"></span><span id="index-27"></span><h2>Как мне проверить ФС на зашифрованном LUKS разделе с LiveUSB?<a class="headerlink" href="#luks-liveusb" title="Permalink to this heading">¶</a></h2>
  304. <p>Если используются зашифрованные LUKS разделы, то сначала откроем соответствующее устройство:</p>
  305. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksOpen /dev/sda2 luks-root
  306. </pre></div>
  307. </div>
  308. <p>Здесь вместо <strong>/dev/sda2</strong> следует прописать соответствующее блочное устройство зашифрованного накопителя.</p>
  309. <p>Теперь запустим проверку файловой системы:</p>
  310. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fsck -t ext4 /dev/mapper/luks-root
  311. </pre></div>
  312. </div>
  313. <p>Если вместо <strong>ext4</strong> применяется другая файловая система, необходимо указать её после параметра <strong>-t</strong>.</p>
  314. <p>По окончании обязательно отключим LUKS том:</p>
  315. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksClose /dev/mapper/luks-root
  316. </pre></div>
  317. </div>
  318. </section>
  319. <section id="btrfs">
  320. <span id="btrfs-repair"></span><span id="index-28"></span><h2>Как восстановить данные с повреждённого раздела с BTRFS?<a class="headerlink" href="#btrfs" title="Permalink to this heading">¶</a></h2>
  321. <p>Существует несколько способов восстановления данных на повреждённом разделе с файловой системой <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a>. Они подразделяются на безопасные, небезопасные и деструктивные.</p>
  322. <p>Небезопасные и деструктивные могут привести к полной потере всех данных на накопителе, поэтому прибегать к ним следует лишь при крайней необходимости, если безопасные не помогли. Работать лучше всего с точной <a class="reference internal" href="using-system.html#dd-mount"><span class="std std-ref">посекторной копией</span></a> вместо реального устройства.</p>
  323. <p>Здесь <strong>/dev/sda2</strong> – блочное устройство раздела, данные с которого мы будем пытаться восстановить, а <strong>/media/btrfs</strong> – временная точка для его монтирования.</p>
  324. <p>Восстановление будем производить посредством загрузки с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">Fedora LiveUSB</span></a>, после чего сразу же запустим эмулятор терминала.</p>
  325. <p>Более подробную информацию можно найти в <a class="reference external" href="https://en.opensuse.org/SDB:BTRFS#How_to_repair_a_broken.2Funmountable_btrfs_filesystem">openSUSE Support Database</a> (на английском языке).</p>
  326. <section id="id19">
  327. <h3>Безопасные способы восстановления<a class="headerlink" href="#id19" title="Permalink to this heading">¶</a></h3>
  328. <p>Попытаемся смонтировать повреждённый раздел:</p>
  329. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/btrfs
  330. sudo mount /dev/sda2 /media/btrfs
  331. </pre></div>
  332. </div>
  333. <p>Если монтирование прошло успешно, выполним операцию scrub (проверка контрольных сумм для всех данных с попыткой восстановления) на точке монтирования:</p>
  334. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs scrub start /media/btrfs
  335. sudo btrfs scrub status /media/btrfs
  336. </pre></div>
  337. </div>
  338. <p>Если монтирование осуществить не удалось, сделаем то же самое на блочном устройстве:</p>
  339. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs scrub start /dev/sda2
  340. sudo btrfs scrub status /dev/sda2
  341. </pre></div>
  342. </div>
  343. <p>Если предыдущие шаги не помогли, воспользуемся особым параметром монтирования <code class="docutils literal notranslate"><span class="pre">usebackuproot</span></code>:</p>
  344. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -o usebackuproot /dev/sda2 /media/btrfs
  345. </pre></div>
  346. </div>
  347. </section>
  348. <section id="id20">
  349. <h3>Небезопасные способы восстановления<a class="headerlink" href="#id20" title="Permalink to this heading">¶</a></h3>
  350. <p>Сначала выполним проверку раздела:</p>
  351. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs check /dev/sda2
  352. </pre></div>
  353. </div>
  354. <p>Сделаем копию сохранившихся данных с раздела на другой накопитель (например на USB-flash, смонтированный как <strong>/media/external</strong>):</p>
  355. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs restore /dev/sda2 /media/external
  356. </pre></div>
  357. </div>
  358. <p><strong>Внимание!</strong> После выполнения каждой следующей операции будем пытаться повторно смонтировать раздел и продолжать <strong>только</strong> если это до сих пор не удаётся:</p>
  359. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount /dev/sda2 /media/btrfs
  360. </pre></div>
  361. </div>
  362. <p>Попытаемся восстановить суперблок файловой системы из его копии:</p>
  363. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs rescue super-recover /dev/sda2
  364. </pre></div>
  365. </div>
  366. <p>Выполним очистку журнала транзакций:</p>
  367. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs rescue zero-log /dev/sda2
  368. </pre></div>
  369. </div>
  370. <p>Запустим восстановление блоков данных (процесс займёт <em>очень много времени</em> и прерывать его <strong>нельзя</strong>):</p>
  371. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs rescue chunk-recover /dev/sda2
  372. </pre></div>
  373. </div>
  374. </section>
  375. <section id="id21">
  376. <h3>Деструктивные способы восстановления<a class="headerlink" href="#id21" title="Permalink to this heading">¶</a></h3>
  377. <p>Экспортируем сохранившиеся данные на другой накопитель если это не было сделано ранее:</p>
  378. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs restore /dev/sda2 /media/external
  379. </pre></div>
  380. </div>
  381. <p>Запустим принудительное восстановление данных на устройстве (может привести к полной потере всех данных без возможности восстановления):</p>
  382. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo btrfs check --repair /dev/sda2
  383. </pre></div>
  384. </div>
  385. <p>Попытаемся повторно смонтировать раздел:</p>
  386. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount /dev/sda2 /media/btrfs
  387. </pre></div>
  388. </div>
  389. </section>
  390. </section>
  391. <section id="deduplication-memory">
  392. <span id="index-29"></span><span id="id22"></span><h2>Возможна ли полная дедупликация оперативной памяти?<a class="headerlink" href="#deduplication-memory" title="Permalink to this heading">¶</a></h2>
  393. <p>Да, дедупликация памяти <a class="reference external" href="https://www.ibm.com/developerworks/linux/library/l-kernel-shared-memory/index.html">поддерживается</a> в ядре Linux начиная с версии 2.6.32 модулем <a class="reference external" href="https://ru.wikipedia.org/wiki/KSM">KSM</a> и по умолчанию применяется лишь в системах виртуализации, например в <a class="reference internal" href="virtualization.html#kvm"><span class="std std-ref">KVM</span></a>.</p>
  394. </section>
  395. <section id="deduplication-disk">
  396. <span id="index-30"></span><span id="id23"></span><h2>Возможна ли полная дедупликация данных на дисках?<a class="headerlink" href="#deduplication-disk" title="Permalink to this heading">¶</a></h2>
  397. <p>Полная автоматическая дедупликация данных на дисках <a class="reference external" href="https://btrfs.wiki.kernel.org/index.php/Deduplication">поддерживается</a> лишь файловой системой <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a>.</p>
  398. </section>
  399. <section id="memory-compression">
  400. <span id="index-31"></span><span id="id24"></span><h2>Можно ли включить сжатие оперативной памяти?<a class="headerlink" href="#memory-compression" title="Permalink to this heading">¶</a></h2>
  401. <p>Да, в ядро Linux, начиная с версии 3.14, по умолчанию входит <a class="reference external" href="https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html">модуль zram</a>, который позволяет увеличить производительность системы посредством использования вместо дисковой подкачки виртуального устройства в оперативной памяти с активным сжатием.</p>
  402. <p>Начиная с Fedora 33, по умолчанию включено сжатие памяти с пулом 50% от объёма RAM. Допускается <a class="reference internal" href="tips-and-tricks.html#zram-pool-size"><span class="std std-ref">изменять его размер</span></a> в широких пределах.</p>
  403. <p>Активируем zram в Fedora:</p>
  404. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install zram-generator zram-generator-defaults
  405. </pre></div>
  406. </div>
  407. <p>Перезагрузим систему для вступления изменений в силу:</p>
  408. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl reboot
  409. </pre></div>
  410. </div>
  411. </section>
  412. <section id="sysctl">
  413. <span id="sysctl-temporary"></span><span id="index-32"></span><h2>Как временно изменить параметр ядра при помощи sysctl?<a class="headerlink" href="#sysctl" title="Permalink to this heading">¶</a></h2>
  414. <p>Временно установить любой параметр ядра возможно через sysctl:</p>
  415. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo sysctl -w foo.bar=X
  416. </pre></div>
  417. </div>
  418. <p>Здесь <strong>foo.bar</strong> имя параметра, а <strong>X</strong> – его значение. Изменения вступят в силу немедленно и сохранятся до перезагрузки системы.</p>
  419. </section>
  420. <section id="sysctl-permanent">
  421. <span id="index-33"></span><span id="id25"></span><h2>Как задать и сохранить параметр ядра при помощи sysctl?<a class="headerlink" href="#sysctl-permanent" title="Permalink to this heading">¶</a></h2>
  422. <p>Чтобы сохранить параметр ядра, создадим специальный файл <code class="docutils literal notranslate"><span class="pre">99-foobar.conf</span></code> в каталоге <code class="docutils literal notranslate"><span class="pre">/etc/sysctl.d</span></code>:</p>
  423. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo.bar1=X1
  424. foo.bar2=X2
  425. </pre></div>
  426. </div>
  427. <p>Каждый параметр должен быть указан с новой строки. Здесь <strong>foo.bar</strong> имя параметра, а <strong>X</strong> – его значение.</p>
  428. <p>Для вступления изменений в силу требуется перезагрузка:</p>
  429. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl reboot
  430. </pre></div>
  431. </div>
  432. </section>
  433. <section id="sysctl-order">
  434. <span id="index-34"></span><span id="id26"></span><h2>В каком порядке загружаются sysctl файлы настроек?<a class="headerlink" href="#sysctl-order" title="Permalink to this heading">¶</a></h2>
  435. <p>При загрузке ядро проверяет следующие каталоги в поисках <strong>.conf</strong> файлов:</p>
  436. <blockquote>
  437. <div><ol class="arabic simple">
  438. <li><p><code class="docutils literal notranslate"><span class="pre">/usr/lib/sysctl.d</span></code> – предустановленные конфиги системы и определённых пакетов;</p></li>
  439. <li><p><code class="docutils literal notranslate"><span class="pre">/run/sysctl.d</span></code> – различные конфиги, сгенерированные в рантайме;</p></li>
  440. <li><p><code class="docutils literal notranslate"><span class="pre">/etc/sysctl.d</span></code> – пользовательские конфиги.</p></li>
  441. </ol>
  442. </div></blockquote>
  443. <p>Порядок выполнения – в алфавитном порядке, поэтому для его изменения многие конфиги содержат цифры и буквы. Например конфиг <code class="docutils literal notranslate"><span class="pre">00-foobar.conf</span></code> выполнится раньше, чем <code class="docutils literal notranslate"><span class="pre">zz-foobar.conf</span></code>.</p>
  444. </section>
  445. <section id="configure-runlevel">
  446. <span id="index-35"></span><span id="id27"></span><h2>Как переключить запуск системы в текстовый режим и обратно?<a class="headerlink" href="#configure-runlevel" title="Permalink to this heading">¶</a></h2>
  447. <p>Чтобы активировать запуск Fedora в текстовом режиме, нужно переключиться на цель <code class="docutils literal notranslate"><span class="pre">multi-user.target</span></code>:</p>
  448. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl set-default multi-user.target
  449. </pre></div>
  450. </div>
  451. <p>Чтобы активировать запуск в графическом режиме, необходимо убедиться в том, что установлен какой-либо менеджер графического входа в систему (GDM, SDDM, LightDM и т.д.), а затем переключиться на цель <code class="docutils literal notranslate"><span class="pre">graphical.target</span></code>:</p>
  452. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl set-default graphical.target
  453. </pre></div>
  454. </div>
  455. <p>Определить используемый в настоящее время режим можно так:</p>
  456. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>systemctl get-default
  457. </pre></div>
  458. </div>
  459. <p>Изменения вступят в силу лишь после перезапуска системы:</p>
  460. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl reboot
  461. </pre></div>
  462. </div>
  463. </section>
  464. <section id="fedora">
  465. <span id="swap-to-file"></span><span id="index-36"></span><h2>Как настроить подкачку в файл в Fedora?<a class="headerlink" href="#fedora" title="Permalink to this heading">¶</a></h2>
  466. <p>Создадим файл подкачки на 4 ГБ:</p>
  467. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dd if=/dev/zero of=/media/pagefile count=4096 bs=1M
  468. </pre></div>
  469. </div>
  470. <p>Установим правильный chmod:</p>
  471. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chmod 600 /media/pagefile
  472. </pre></div>
  473. </div>
  474. <p>Подготовим swapfs к работе:</p>
  475. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkswap /media/pagefile
  476. </pre></div>
  477. </div>
  478. <p>Активируем файл подкачки:</p>
  479. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo swapon /media/pagefile
  480. </pre></div>
  481. </div>
  482. <p>Для того, чтобы подкачка подключалась автоматически при загрузке системы, откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code> и добавим в него следующую строку:</p>
  483. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/media/pagefile none swap sw 0 0
  484. </pre></div>
  485. </div>
  486. <p>Действия вступят в силу немедленно.</p>
  487. </section>
  488. <section id="disk-usage">
  489. <span id="index-37"></span><span id="id28"></span><h2>Как узнать, какой процесс осуществляет запись на диск?<a class="headerlink" href="#disk-usage" title="Permalink to this heading">¶</a></h2>
  490. <p>Для мониторинга дисковой активности существуют улититы <strong>iotop</strong> и <strong>fatrace</strong>. Установим их:</p>
  491. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install iotop fatrace
  492. </pre></div>
  493. </div>
  494. <p>Запустим iotop в режиме накопления показаний:</p>
  495. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo iotop -a
  496. </pre></div>
  497. </div>
  498. <p>Запустим fatrace в режиме накопления с выводом лишь информации о событиях записи на диск:</p>
  499. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fatrace -f W
  500. </pre></div>
  501. </div>
  502. <p>Запустим fatrace в режиме накопления, с выводом информации о событиях записи на диск в файл, в течение 10 минут (600 секунд):</p>
  503. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fatrace -f W -o ~/disk-usage.log -s 600
  504. </pre></div>
  505. </div>
  506. </section>
  507. <section id="change-label">
  508. <span id="index-38"></span><span id="id29"></span><h2>Как сменить метку раздела?<a class="headerlink" href="#change-label" title="Permalink to this heading">¶</a></h2>
  509. <p>Смена метки раздела с файловой системой ext2, ext3 и ext4:</p>
  510. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo e2label /dev/sda1 &quot;NewLabel&quot;
  511. </pre></div>
  512. </div>
  513. <p>Смена метки раздела с файловой системой XFS:</p>
  514. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo xfs_admin -L &quot;NewLabel&quot; /dev/sda1
  515. </pre></div>
  516. </div>
  517. <p>Здесь <strong>/dev/sda1</strong> – раздел, на котором требуется изменить метку.</p>
  518. </section>
  519. <section id="uuid">
  520. <span id="get-uuid"></span><span id="index-39"></span><h2>Как получить UUID всех смонтированных разделов?<a class="headerlink" href="#uuid" title="Permalink to this heading">¶</a></h2>
  521. <p>Для получения всех UUID можно использовать утилиту <strong>blkid</strong>:</p>
  522. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo blkid
  523. </pre></div>
  524. </div>
  525. <p>Вывод UUID для указанного раздела:</p>
  526. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo blkid /dev/sda1
  527. </pre></div>
  528. </div>
  529. <p>Здесь <strong>/dev/sda1</strong> – раздел, для которого требуется вывести UUID.</p>
  530. </section>
  531. <section id="change-uuid">
  532. <span id="index-40"></span><span id="id30"></span><h2>Как изменить UUID раздела?<a class="headerlink" href="#change-uuid" title="Permalink to this heading">¶</a></h2>
  533. <p>Смена UUID раздела с файловой системой ext2, ext3 и ext4:</p>
  534. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo tune2fs /dev/sda1 -U $(uuidgen)
  535. </pre></div>
  536. </div>
  537. <p>Смена UUID раздела с файловой системой XFS:</p>
  538. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo xfs_admin -U generate /dev/sda1
  539. </pre></div>
  540. </div>
  541. <p>Здесь <strong>/dev/sda1</strong> – раздел, на котором требуется изменить UUID.</p>
  542. </section>
  543. <section id="pid">
  544. <span id="get-pid"></span><span id="index-41"></span><h2>Как получить PID запущенного процесса?<a class="headerlink" href="#pid" title="Permalink to this heading">¶</a></h2>
  545. <p>Для получения идентификатора запущенного процесса (PID), следует применять утилиту <strong>pidof</strong>:</p>
  546. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pidof foo-bar
  547. </pre></div>
  548. </div>
  549. <p>Здесь вместо <strong>foo-bar</strong> следует указать имя образа процесса, информацию о котором требуется получить.</p>
  550. </section>
  551. <section id="kill-sigterm">
  552. <span id="index-42"></span><span id="id31"></span><h2>Как правильно завершить работу процесса?<a class="headerlink" href="#kill-sigterm" title="Permalink to this heading">¶</a></h2>
  553. <p>Для того, чтобы завершить работу процесса, необходимо отправить ему сигнал <strong>SIGTERM</strong>. После получения данного сигнала процесс должен немедленно начать завершение своей работы:</p>
  554. <blockquote>
  555. <div><ul class="simple">
  556. <li><p>остановить активные потоки;</p></li>
  557. <li><p>сообщить порождённым им процессам (потомкам) о том, что он завершает свою работу;</p></li>
  558. <li><p>закрыть все открытые процессом дескрипторы;</p></li>
  559. <li><p>освободить все занятые процессом ресурсы;</p></li>
  560. <li><p>вернуть управление операционной системе.</p></li>
  561. </ul>
  562. </div></blockquote>
  563. <p>Чтобы отправить сигнал SIGTERM процессу с определённым <a class="reference internal" href="#get-pid"><span class="std std-ref">PID</span></a>, воспользуемся утилитой <strong>kill</strong>:</p>
  564. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>kill -15 XXXX
  565. </pre></div>
  566. </div>
  567. <p>Здесь <strong>XXXX</strong> – PID нужного процесса.</p>
  568. <p>Вместо явного указания PID процесса существует возможность завершить работу процесса с указанным именем посредством <strong>killall</strong>:</p>
  569. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>killall -15 foo-bar
  570. </pre></div>
  571. </div>
  572. <p>Здесь вместо <strong>foo-bar</strong> следует указать имя образа процесса, который требуется завершить, однако её следует применять с особой осторожностью ибо если существует несколько процессов с одинаковым названием, все они будут завершены.</p>
  573. </section>
  574. <section id="kill-sigkill">
  575. <span id="index-43"></span><span id="id32"></span><h2>Как принудительно завершить работу процесса?<a class="headerlink" href="#kill-sigkill" title="Permalink to this heading">¶</a></h2>
  576. <p>Если какой-либо процесс завис и не отвечает на требование завершения посредством <a class="reference internal" href="#kill-sigterm"><span class="std std-ref">SIGTERM</span></a>, можно заставить операционную систему принудительно завершить его работу сигналом <strong>SIGKILL</strong>, который не может быть перехвачен и проигнорирован процессом.</p>
  577. <p>Данный сигнал следует использовать с особой осторожностью, т.к. в этом случае процесс не сможет корректно освободить все дескрипторы и занятые ресурсы, а также сообщить своим потомкам о своём завершении, что может повлечь за собой появление т.н. <a class="reference internal" href="#process-orphan"><span class="std std-ref">процессов-сирот</span></a>.</p>
  578. <p>Чтобы отправить сигнал SIGKILL процессу с определённым <a class="reference internal" href="#get-pid"><span class="std std-ref">PID</span></a>, воспользуемся утилитой <strong>kill</strong>:</p>
  579. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>kill -9 XXXX
  580. </pre></div>
  581. </div>
  582. <p>Здесь <strong>XXXX</strong> – PID нужного процесса.</p>
  583. <p>Вместо явного указания PID процесса существует возможность завершить работу процесса с указанным именем посредством <strong>killall</strong>:</p>
  584. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>killall -9 foo-bar
  585. </pre></div>
  586. </div>
  587. <p>Здесь вместо <strong>foo-bar</strong> следует указать имя образа процесса. Если существует несколько процессов с одинаковым названием, все они будут завершены.</p>
  588. </section>
  589. <section id="process-zombie">
  590. <span id="index-44"></span><span id="id33"></span><h2>Что такое процесс-зомби?<a class="headerlink" href="#process-zombie" title="Permalink to this heading">¶</a></h2>
  591. <p>Процессы-зомби появляются в системе если потомок завершил свою работу раньше родительского процесса, а последний не отрегировал на отправленный ему сигнал <strong>SIGCHLD</strong>.</p>
  592. <p>Такие процессы не занимают ресурсов в системе (ибо успешно завершили свою работу), за исключением строки в таблице процессов, хранящей его <a class="reference internal" href="#get-pid"><span class="std std-ref">PID</span></a>.</p>
  593. <p>Все зомби будут автоматически удалены из таблицы процессов после того, как завершит свою работу их родитель.</p>
  594. </section>
  595. <section id="process-orphan">
  596. <span id="index-45"></span><span id="id34"></span><h2>Что такое процесс-сирота?<a class="headerlink" href="#process-orphan" title="Permalink to this heading">¶</a></h2>
  597. <p>Процессы-сироты появляются в системе если их родитель был аварийно уничтожен системой сигналом <a class="reference internal" href="#kill-sigkill"><span class="std std-ref">SIGKILL</span></a> и не смог сообщить своим потомкам о своём завершении работы.</p>
  598. <p>В отличие от <a class="reference internal" href="#process-zombie"><span class="std std-ref">зомби</span></a>, такие процессы расходуют ресурсы системы и могут быть источником множества проблем.</p>
  599. <p>При обнаружении таких процессов система выполняет операцию переподчинения и устанавливает их родителем главный процесс инициализации.</p>
  600. </section>
  601. <section id="docker-fedora">
  602. <span id="index-46"></span><span id="id35"></span><h2>Как правильно установить Docker в Fedora?<a class="headerlink" href="#docker-fedora" title="Permalink to this heading">¶</a></h2>
  603. <p>Официально Docker в Fedora более не поддерживается. На просторах Интернета можно найти сторонние инструкции по установке Docker, однако мы настоятельно не рекомендуем следовать им, поскольку для их работы требуются изменения в системе, способные нарушить её безопасность и/или работу других приложений (например отключение cgroupv2).</p>
  604. <p>Вместо этого рекомендуется установить и использовать Podman, т.к. он создан и поддерживается Red Hat, а также не требует прав суперпользователя для работы:</p>
  605. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install podman
  606. </pre></div>
  607. </div>
  608. <p>Синтаксис команд аналогичен Docker.</p>
  609. </section>
  610. <section id="kernel-bs">
  611. <span id="index-47"></span><span id="id36"></span><h2>Как определить включена ли определённая опция ядра во время компиляции?<a class="headerlink" href="#kernel-bs" title="Permalink to this heading">¶</a></h2>
  612. <p>Полный список опций, заданных на этапе компиляции ядра, всегда можно найти в config-файлах, внутри каталога <code class="docutils literal notranslate"><span class="pre">/boot</span></code>.</p>
  613. <p>В качестве примера проверим статус опции <code class="docutils literal notranslate"><span class="pre">CONFIG_EFI_STUB</span></code> текущего ядра:</p>
  614. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep CONFIG_EFI_STUB /boot/config-$(uname -r)
  615. </pre></div>
  616. </div>
  617. <p>В выводе <strong>y</strong> означает, что опция была включена, а <strong>not set</strong>, соответственно, выключена.</p>
  618. </section>
  619. <section id="ksoftirqd">
  620. <span id="index-48"></span><span id="id37"></span><h2>Процесс ksoftirqd съедает все ресурсы системы. Что делать?<a class="headerlink" href="#ksoftirqd" title="Permalink to this heading">¶</a></h2>
  621. <p>Ядро операционной системы взаимодействует с устройствами посредством прерываний. Когда возникает новое прерывание, оно немедленно приостанавливает работу текущего выполняемого процесса, переключается в режим ядра и начинает его обработку.</p>
  622. <p>Может случиться так, что прерывания будут генерироваться настолько часто, что ядро не сможет их обрабатывать немедленно, в порядке получения. На этот случай имеется специальный механизм, помещающий полученные прерывания в очередь для дальнейшей обработки. Этой очередью управляет особый поток ядра <strong>ksoftirqd</strong> (создаётся по одному на каждый имеющийся процессор или ядро многоядерного процессора).</p>
  623. <p>Если потоки ядра ksoftirqd потребляют значительное количество ресурсов центрального процессора, значит система находится под очень высокой нагрузкой по прерываниям.</p>
  624. </section>
  625. <section id="kernel-irq">
  626. <span id="index-49"></span><span id="id38"></span><h2>Как определить какое устройство генерирует огромное количество прерываний?<a class="headerlink" href="#kernel-irq" title="Permalink to this heading">¶</a></h2>
  627. <p>Для диагностики системы обработки прерываний, ядро имеет встроенный механизм:</p>
  628. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /proc/interrupts
  629. </pre></div>
  630. </div>
  631. <p>Числа в таблице означают точное количество прерываний, инициированных соответствующим устройством или подсистемой, с момента загрузки.</p>
  632. </section>
  633. <section id="irq-manual">
  634. <span id="index-50"></span><span id="id39"></span><h2>Как произвести ручную балансировку прерываний?<a class="headerlink" href="#irq-manual" title="Permalink to this heading">¶</a></h2>
  635. <p>Если <a class="reference internal" href="#kernel-irq"><span class="std std-ref">прерывания</span></a> распределены между процессорными ядрами не равномерно, можно использовать режим ручной балансировки:</p>
  636. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;echo X &gt; /proc/irq/Y/smp_affinity&quot;
  637. </pre></div>
  638. </div>
  639. <p>Здесь <strong>X</strong> – маска процессора (CPU affinity), который будет обрабатывать данное прерывание, а <strong>Y</strong> – номер прерывания (указан в левом столбце таблицы прерываний).</p>
  640. <p>Чтобы вычислить маску следует возвести число 2 в степень, равную порядкому номеру процессора, и результат перевести в шестнадцатиричную систему счисления.</p>
  641. </section>
  642. <section id="too-many-open-files">
  643. <span id="fd-limit"></span><span id="index-51"></span><h2>При работе приложения возникает ошибка Too many open files. Что делать?<a class="headerlink" href="#too-many-open-files" title="Permalink to this heading">¶</a></h2>
  644. <p>Ошибка <em>Too many open files</em> возникает при превышении количества открытых дескрипторов файлов процессом. Для её исправления, нужно <a class="reference internal" href="#fd-increase"><span class="std std-ref">увеличить это ограничение</span></a>.</p>
  645. </section>
  646. <section id="fd-hard-soft">
  647. <span id="index-52"></span><span id="id40"></span><h2>Как узнать текущий лимит открытых файловых дескрипторов?<a class="headerlink" href="#fd-hard-soft" title="Permalink to this heading">¶</a></h2>
  648. <p>Существует два типа ограничений: мягкий (soft) и жёсткий (hard). Жёсткий задаётся администратором системы, а мягкий может регулироваться как пользователем, так и запущенным приложением, но не может превышать максимально заданное значение жёсткого лимита, а также <a class="reference internal" href="#fd-kernel"><span class="std std-ref">глобальное для всего ядра</span></a>.</p>
  649. <p>Получим значение мягкого ограничителя:</p>
  650. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ulimit -Sn
  651. </pre></div>
  652. </div>
  653. <p>Получим значение жёсткого ограничителя:</p>
  654. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ulimit -Hn
  655. </pre></div>
  656. </div>
  657. <p>Значения по умолчанию <strong>1024</strong> (soft) и <strong>4096</strong> (hard).</p>
  658. </section>
  659. <section id="fd-kernel">
  660. <span id="index-53"></span><span id="id41"></span><h2>Как узнать глобальный лимит открытых файловых дескрипторов?<a class="headerlink" href="#fd-kernel" title="Permalink to this heading">¶</a></h2>
  661. <p>Наряду с <a class="reference internal" href="#fd-hard-soft"><span class="std std-ref">мягким и жёстким лимитами</span></a> открытых файловых дескрипторов существует и глобальный, который ядро Linux способно адресовать и корректно обработать.</p>
  662. <p>Выведем это значение при помощи соответствующей функции ядра:</p>
  663. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /proc/sys/fs/file-max
  664. </pre></div>
  665. </div>
  666. </section>
  667. <section id="fd-increase">
  668. <span id="index-54"></span><span id="id42"></span><h2>Как увеличить лимит открытых файловых дескрипторов?<a class="headerlink" href="#fd-increase" title="Permalink to this heading">¶</a></h2>
  669. <p><a class="reference internal" href="#fd-hard-soft"><span class="std std-ref">Мягкие и жёсткие лимиты</span></a> на количество дескрипторов открытых файлов задаются в файле <code class="docutils literal notranslate"><span class="pre">/etc/security/limits.conf</span></code> суперпользователем, но при этом не могут превышать <a class="reference internal" href="#fd-kernel"><span class="std std-ref">глобальный</span></a>.</p>
  670. <p>Увеличим ограничение для пользователя <strong>foo-bar</strong> до 8192/2048:</p>
  671. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar soft nofile 2048
  672. foo-bar hard nofile 8192
  673. </pre></div>
  674. </div>
  675. <p>Увеличим ограничение для любых пользователей до 8192/2048:</p>
  676. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>* soft nofile 2048
  677. * hard nofile 8192
  678. </pre></div>
  679. </div>
  680. <p>Изменения вступят в силу при следующем входе в систему.</p>
  681. </section>
  682. <section id="task-affinity">
  683. <span id="index-55"></span><span id="id43"></span><h2>Как запустить процесс так, чтобы он мог использовать лишь определённые ядра процессора?<a class="headerlink" href="#task-affinity" title="Permalink to this heading">¶</a></h2>
  684. <p>По умолчанию процесс выполняется на любых доступных для Linux процессорах (или их ядрах).</p>
  685. <p>Выбором наиболее подходящего ядра CPU для каждого потока процесса занимается непосредственно ядро, однако существует возможность и ручного переопределения.</p>
  686. <p>Запустим приложение <strong>foo-bar</strong> на каждом чётном ядре (нумерация всегда начинается с нуля):</p>
  687. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>taskset -a -c 0,2,4,6 foo-bar
  688. </pre></div>
  689. </div>
  690. <p>Изменим ассоциацию ядер для уже запущенного процесса <strong>foo-bar</strong> (в качестве параметра указывается <a class="reference internal" href="#get-pid"><span class="std std-ref">PID необходимого процесса</span></a>):</p>
  691. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>taskset -a -c 1,3,5,7 -p $(pidof foo-bar)
  692. </pre></div>
  693. </div>
  694. </section>
  695. <section id="task-priority">
  696. <span id="index-56"></span><span id="id44"></span><h2>Как изменить приоритет процесса?<a class="headerlink" href="#task-priority" title="Permalink to this heading">¶</a></h2>
  697. <p>Допустимые значения приоритета находятся в диапазоне от -20 (наиболее высокий приоритет) до 19 (наиболее низкий). Отрицательные значения может устанавливать лишь суперпользователь.</p>
  698. <p>Запустим приложение <strong>foo-bar</strong> с приоритетом <strong>10</strong>:</p>
  699. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nice -n 10 foo-bar
  700. </pre></div>
  701. </div>
  702. <p>Изменим приоритет запущенного процесса <strong>foo-bar</strong> (в качестве параметра указывается <a class="reference internal" href="#get-pid"><span class="std std-ref">PID необходимого процесса</span></a>) до <strong>8</strong>:</p>
  703. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>renice -n 8 -p $(pidof foo-bar)
  704. </pre></div>
  705. </div>
  706. </section>
  707. <section id="effective-uid-real-uid">
  708. <span id="euid-vs-ruid"></span><span id="index-57"></span><h2>Чем отличается Effective UID процесса от Real UID?<a class="headerlink" href="#effective-uid-real-uid" title="Permalink to this heading">¶</a></h2>
  709. <p>В мире UNIX считается нормальным, когда один процесс запускается от одного пользователя, но при этом получает права совсем другого (чаще всего это суперпользователь root).</p>
  710. <p>В качестве простого примера рассмтрим ситуацию, когда пользователь <strong>user1</strong> запускает бинарник с установленным suid-битом <strong>/usr/bin/foo-bar</strong>. Таким образом, у процесса <strong>foo-bar</strong> в качестве <em>Real user ID</em> будет установлен <strong>user1</strong>, а <em>Effective user ID</em> – <strong>root</strong>. Это сделано для того, чтобы приложение могло самостоятельно отказаться от повышенных прав, либо переключаться между ними при помощи соответствующего системного вызова.</p>
  711. </section>
  712. <section id="copying-data">
  713. <span id="index-58"></span><span id="id45"></span><h2>Как скопировать данные с одного раздела на другой?<a class="headerlink" href="#copying-data" title="Permalink to this heading">¶</a></h2>
  714. <p>Для копирования файлов с одного раздела на другой лучше всего использовать утилиту <strong>rsync</strong> с опциями на сохранение прав доступа.</p>
  715. <p>Загрузимся с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">Fedora LiveUSB</span></a>, затем смонтируем старый и новый разделы:</p>
  716. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/old-root
  717. sudo mount -t ext4 /dev/sda1 /media/old-root
  718. sudo mkdir /media/new-root
  719. sudo mount -t ext4 /dev/sdb1 /media/new-root
  720. </pre></div>
  721. </div>
  722. <p>Запустим процесс копирования:</p>
  723. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo rsync -axHAWXS --numeric-ids --info=progress2 /media/old-root/ /media/new-root/
  724. </pre></div>
  725. </div>
  726. <p>По окончании работы обязательно размонтируем оба раздела:</p>
  727. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/old-root
  728. sudo umount /media/new-root
  729. </pre></div>
  730. </div>
  731. </section>
  732. <section id="chmod-immutable">
  733. <span id="index-59"></span><span id="id46"></span><h2>Как запретить модификацию файла даже владельцу и суперпользователю?<a class="headerlink" href="#chmod-immutable" title="Permalink to this heading">¶</a></h2>
  734. <p>Чтобы запретить модификацию файла (изменение, удаление) любым пользователем (включая владельца и суперпользователя), установим ему расширенный атрибут <code class="docutils literal notranslate"><span class="pre">+i</span></code>:</p>
  735. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chattr +i foo-bar.txt
  736. </pre></div>
  737. </div>
  738. <p>Чтобы отменить произведённые изменения, выполним:</p>
  739. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chattr -i foo-bar.txt
  740. </pre></div>
  741. </div>
  742. <p>Управлять расширенными атрибутами может лишь суперпользователь.</p>
  743. </section>
  744. <section id="chmod-lsattr">
  745. <span id="index-60"></span><span id="id47"></span><h2>Как узнать какие расширенные атрибуты применены для конкретного файла?<a class="headerlink" href="#chmod-lsattr" title="Permalink to this heading">¶</a></h2>
  746. <p>Для получения <a class="reference external" href="https://en.wikipedia.org/wiki/Chattr#Attributes">расширенных атрибутов</a> воспользуемся утилитой <strong>lsattr</strong>:</p>
  747. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>lsattr foo-bar.txt
  748. </pre></div>
  749. </div>
  750. <p>Поддерживается также вывод в виде человеко-читаемого списка, который можно включить опциональным параметром <code class="docutils literal notranslate"><span class="pre">-l</span></code>:</p>
  751. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>lsattr foo-bar.txt
  752. </pre></div>
  753. </div>
  754. </section>
  755. <section id="chmod-addonly">
  756. <span id="index-61"></span><span id="id48"></span><h2>Как разрешить лишь дописывать данные в файл?<a class="headerlink" href="#chmod-addonly" title="Permalink to this heading">¶</a></h2>
  757. <p>Чтобы разрешить лишь добавление данных в файл любым пользователем (включая владельца и суперпользователя), установим ему расширенный атрибут <code class="docutils literal notranslate"><span class="pre">+a</span></code>:</p>
  758. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chattr +a foo-bar.txt
  759. </pre></div>
  760. </div>
  761. <p>Чтобы отменить произведённые изменения, выполним:</p>
  762. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chattr -a foo-bar.txt
  763. </pre></div>
  764. </div>
  765. </section>
  766. <section id="ssh">
  767. <span id="ssh-alias"></span><span id="index-62"></span><h2>Как создать алиасы для быстрого подключения к SSH серверам?<a class="headerlink" href="#ssh" title="Permalink to this heading">¶</a></h2>
  768. <p>OpenSSH позволяет создавать неограниченное количество алиасов для быстрых подключений.</p>
  769. <p>Чтобы сделать это, откроем (создадим) файл <code class="docutils literal notranslate"><span class="pre">~/.ssh/config</span></code> в любом текстовом редакторе и внесём правки:</p>
  770. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Host foo
  771. HostName example1.org
  772. Port 22
  773. User user1
  774. Host bar
  775. HostName example2.org
  776. Port 22
  777. User user2
  778. IdentityFile ~/.ssh/id_rsa2
  779. </pre></div>
  780. </div>
  781. <p>Здесь <code class="docutils literal notranslate"><span class="pre">foo</span></code> и <code class="docutils literal notranslate"><span class="pre">bar</span></code> – имена сокращений (алиасов), которые будут использоваться для подключения. Для каждого могут быть указаны индивидуальные настройки, включая <a class="reference internal" href="security.html#ssh-keys"><span class="std std-ref">различные SSH ключи</span></a> при помощи директивы <code class="docutils literal notranslate"><span class="pre">IdentityFile</span></code>.</p>
  782. <p>Подключимся к первому серверу:</p>
  783. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh foo
  784. </pre></div>
  785. </div>
  786. <p>Подключимся ко второму серверу:</p>
  787. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh bar
  788. </pre></div>
  789. </div>
  790. </section>
  791. <section id="fuse">
  792. <span id="fuse-info"></span><span id="index-63"></span><h2>Что такое FUSE?<a class="headerlink" href="#fuse" title="Permalink to this heading">¶</a></h2>
  793. <p>FUSE (file system in userspace) – это модуль ядра и набор утилит для работы с ним, предназначенные для запуска различных файловых систем в пользовательском пространстве.</p>
  794. <p>Благодаря FUSE в Fedora могут использоваться файловые системы, которые по какой-либо причине не могут войти напрямую в состав ядра Linux из-за лицензионных проблем, либо патентов.</p>
  795. <p>Некоторые примеры подобных реализаций:</p>
  796. <blockquote>
  797. <div><ul class="simple">
  798. <li><p><a class="reference internal" href="using-applications.html#fuse-mtp"><span class="std std-ref">MTP</span></a>;</p></li>
  799. <li><p>NTFS;</p></li>
  800. <li><p>ZFS;</p></li>
  801. <li><p>SSHFS;</p></li>
  802. <li><p>WebDAV.</p></li>
  803. </ul>
  804. </div></blockquote>
  805. <p>Из-за работы в пользовательском режиме возникает ряд проблем:</p>
  806. <blockquote>
  807. <div><ul class="simple">
  808. <li><p>очень медленная работа за счёт постоянных переключений контекста;</p></li>
  809. <li><p>в зависимости от параметров монтирования может быть не видна для работающих системных сервисов.</p></li>
  810. </ul>
  811. </div></blockquote>
  812. </section>
  813. <section id="kerberos">
  814. <span id="kerberos-auth"></span><span id="index-64"></span><h2>Как авторизоваться на удалённой системе с использованием Kerberos?<a class="headerlink" href="#kerberos" title="Permalink to this heading">¶</a></h2>
  815. <p>Установим необходимые пакеты для работы с Kerberos 5:</p>
  816. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install krb5-workstation
  817. </pre></div>
  818. </div>
  819. <p>Произведём авторизацию на удалённой системе:</p>
  820. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>kinit foo-bar@FEDORAPROJECT.ORG
  821. </pre></div>
  822. </div>
  823. <p>Здесь <strong>foo-bar</strong> – логин на удалённой системе, а <strong>FEDORAPROJECT.ORG</strong> – имя домена (должно быть указано строго в верхнем регистре).</p>
  824. <p>В случае ввода верных авторизационных данных процесс должен пройти в штатном режиме.</p>
  825. </section>
  826. <section id="kerberos-renew">
  827. <span id="index-65"></span><span id="id49"></span><h2>Как обновить Kerberos-тикет?<a class="headerlink" href="#kerberos-renew" title="Permalink to this heading">¶</a></h2>
  828. <p>В зависимости от настроек сервера, полученный <a class="reference internal" href="#kerberos-auth"><span class="std std-ref">Kerberos-тикет</span></a> обычно действует в течение 24 часов, затем даётся ещё от 24 до 48 часов для его обновления без необходимости прохождения повторной процедуры авторизации.</p>
  829. <p>Проверим актуальность Kerberos тикетов:</p>
  830. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>klist -A
  831. </pre></div>
  832. </div>
  833. <p>При необходимости обновим необходимый:</p>
  834. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>kinit -R foo-bar@FEDORAPROJECT.ORG
  835. </pre></div>
  836. </div>
  837. <p>Здесь <strong>foo-bar</strong> – логин на удалённой системе, а <strong>FEDORAPROJECT.ORG</strong> – имя домена (должно быть указано строго в верхнем регистре).</p>
  838. </section>
  839. <section id="delete-inode">
  840. <span id="index-66"></span><span id="id50"></span><h2>В каталоге появился файл с некорректным именем, который не удаётся удалить. Что делать?<a class="headerlink" href="#delete-inode" title="Permalink to this heading">¶</a></h2>
  841. <p>Файлы с некорректными именами могут возникать при повреждениях файловой системы, либо сбоях в приложениях, которые создали их.</p>
  842. <p>Штатно такие файлы удалить не удастся, поэтому придётся уничтожить соответствующий данному файлу I-узел (I-Node).</p>
  843. <p>Перейдём в каталог с удаляемым файлом:</p>
  844. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cd ~/foo-bar
  845. </pre></div>
  846. </div>
  847. <p>Выведем листинг содержимого каталога с включённым отображением номеров I-узлов:</p>
  848. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ls -li
  849. </pre></div>
  850. </div>
  851. <p>Найдём в выводе необходимый файл и сохраним значение его I-узла. Теперь мы можем удалить его:</p>
  852. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>find . -maxdepth 1 -type f -inum XXXXXXX -delete
  853. </pre></div>
  854. </div>
  855. <p>Здесь <strong>XXXXXXX</strong> – номер I-узла некорректного файла.</p>
  856. </section>
  857. <section id="ext4">
  858. <span id="defrag-info"></span><span id="index-67"></span><h2>Нужно ли выполнять дефрагментацию для разделов с ФС ext4?<a class="headerlink" href="#ext4" title="Permalink to this heading">¶</a></h2>
  859. <p>В большинстве случаев дефрагментация диска на разделах с файловой системой ext4 не требуется, т.к. драйвер осуществляет предварительное размещение файлов на свободном месте так, чтобы они заняли его целиком, оставляя при этом небольшой участок пространства для дальнейшего расширения.</p>
  860. <p>Однако при определённых обстоятельствах (например если точный размер при создании неизвестен, либо в него постоянно производится добавление-удаление данных), некоторые файлы могут фрагментироваться.</p>
  861. </section>
  862. <section id="defrag-custom">
  863. <span id="index-68"></span><span id="id51"></span><h2>Как выполнить дефрагментацию отдельных файлов на разделе ФС ext4?<a class="headerlink" href="#defrag-custom" title="Permalink to this heading">¶</a></h2>
  864. <p>Для выполнения частичной дефрагментации, можно использовать утилиту <strong>e4defrag</strong>, входящую в пакет <strong>e2fsprogs</strong>.</p>
  865. <p>Данная утилита работает со <strong>смонтированным</strong> диском, т.к. непосредственно дефрагментацией будет заниматься драйвер файловой системы, а утилита лишь укажет ему цели.</p>
  866. <p>Разрешается выполнять оптимизацию отдельных файлов, либо всего содержимого указанных каталогов.</p>
  867. <p>Выполним дефрагментацию крупной базы данных <code class="docutils literal notranslate"><span class="pre">/var/db/foo-bar.db</span></code>:</p>
  868. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo e4defrag /var/db/foo-bar.db
  869. </pre></div>
  870. </div>
  871. <p>Выполним дефрагментацию всего корня:</p>
  872. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo e4defrag /
  873. </pre></div>
  874. </div>
  875. </section>
  876. <section id="defrag-full">
  877. <span id="index-69"></span><span id="id52"></span><h2>Как выполнить дефрагментацию всего раздела с ФС ext4?<a class="headerlink" href="#defrag-full" title="Permalink to this heading">¶</a></h2>
  878. <p>Полную дефрагментацию можно осуществить при помощи средства <a class="reference internal" href="#fs-check-lvm"><span class="std std-ref">проверки диска</span></a> на <strong>размонтированном</strong> разделе, например при запуске с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">Fedora LiveUSB</span></a>.</p>
  879. <p>Запустим процесс:</p>
  880. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fsck -t ext4 -fn /dev/sda2
  881. </pre></div>
  882. </div>
  883. <p>Здесь <strong>/dev/sda2</strong> – раздел, на котором следует провести процесс дефрагментации. Операция займёт достаточно много времени (в зависимости от размера диска). Прерывать её не следует, т.к. это может привести к полной потере данных.</p>
  884. </section>
  885. <section id="cpu-cores">
  886. <span id="index-70"></span><span id="id53"></span><h2>Как определить количество доступных процессоров или ядер?<a class="headerlink" href="#cpu-cores" title="Permalink to this heading">¶</a></h2>
  887. <p><em>Основной способ.</em> Применим утилиту <strong>nproc</strong>:</p>
  888. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nproc --all
  889. </pre></div>
  890. </div>
  891. <p>Без параметра <code class="docutils literal notranslate"><span class="pre">--all</span></code> будет указано лишь количество <a class="reference internal" href="#task-affinity"><span class="std std-ref">доступных процессоров</span></a> лишь для данного пользователя/процесса.</p>
  892. <p><em>Альтернативный способ.</em> Если указанная выше утилита в системе отсутствует, выполним:</p>
  893. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /proc/cpuinfo | grep &#39;cpu cores&#39; | uniq | awk &#39;{ print $4 }&#39;
  894. </pre></div>
  895. </div>
  896. </section>
  897. <section id="bash-pipelines">
  898. <span id="index-71"></span><span id="id54"></span><h2>Как перенаправить стандартный ввод-вывод в файлы?<a class="headerlink" href="#bash-pipelines" title="Permalink to this heading">¶</a></h2>
  899. <p>Перенаправление потока стандартного вывода утилиты <strong>ls</strong>, запущенной с параметром, в файл:</p>
  900. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ls -l &gt; ~/foo-bar.txt
  901. </pre></div>
  902. </div>
  903. <p>Перенаправление потока стандартного вывода в файл в режиме <em>добавления данных</em> (не заменяет существующие):</p>
  904. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ls -l &gt;&gt; ~/foo-bar.txt
  905. </pre></div>
  906. </div>
  907. <p>Перенаправление потока стандартного ввода на ввод из указанного файла:</p>
  908. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sort &lt; ~/foo-bar.txt
  909. </pre></div>
  910. </div>
  911. <p>Перенаправление потока стандартного вывода и потока ошибок в файл:</p>
  912. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/usr/bin/foo &gt; ~/foo-bar.txt 2&gt;&amp;1
  913. </pre></div>
  914. </div>
  915. <p>Комбинирование ввода из одного файла с выводом в другой с подавлением возникших ошибок:</p>
  916. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/usr/bin/foo &lt; ~/foo-bar.txt &gt; ~/result.txt 2&gt; /dev/null
  917. </pre></div>
  918. </div>
  919. </section>
  920. <section id="mount-nopass">
  921. <span id="index-72"></span><span id="id55"></span><h2>Как разрешить монтирование любых дисков без ввода пароля?<a class="headerlink" href="#mount-nopass" title="Permalink to this heading">¶</a></h2>
  922. <p>По умолчанию пароль не запрашивается только при монтировании сменных накопителей, однако если требуется реализовать это для любых, потребуется добавить новое правило Polkit.</p>
  923. <p>Создадим новый конфиг:</p>
  924. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /etc/polkit-1/rules.d/10-mount-nopass.rules
  925. sudo chmod 0644 /etc/polkit-1/rules.d/10-mount-nopass.rules
  926. </pre></div>
  927. </div>
  928. <p>Загрузим его в текстовом редакторе:</p>
  929. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/polkit-1/rules.d/10-mount-nopass.rules
  930. </pre></div>
  931. </div>
  932. <p>Добавим следующее правило:</p>
  933. <div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">polkit</span><span class="p">.</span><span class="nx">addRule</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">action</span><span class="p">,</span><span class="w"> </span><span class="nx">subject</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
  934. <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="nx">action</span><span class="p">.</span><span class="nx">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">&quot;org.freedesktop.udisks2.filesystem-mount-system&quot;</span><span class="w"> </span><span class="o">||</span>
  935. <span class="w"> </span><span class="nx">action</span><span class="p">.</span><span class="nx">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">&quot;org.freedesktop.udisks.filesystem-mount-system-internal&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span>
  936. <span class="w"> </span><span class="nx">subject</span><span class="p">.</span><span class="nx">local</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">subject</span><span class="p">.</span><span class="nx">active</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">subject</span><span class="p">.</span><span class="nx">isInGroup</span><span class="p">(</span><span class="s2">&quot;wheel&quot;</span><span class="p">))</span>
  937. <span class="w"> </span><span class="p">{</span>
  938. <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">polkit</span><span class="p">.</span><span class="nx">Result</span><span class="p">.</span><span class="nx">YES</span><span class="p">;</span>
  939. <span class="w"> </span><span class="p">}</span>
  940. <span class="p">});</span>
  941. </pre></div>
  942. </div>
  943. <p>Сохраним изменения в файле.</p>
  944. <p>Теперь пользователи с <a class="reference internal" href="security.html#admin-vs-user"><span class="std std-ref">административными правами</span></a> (входящие в группу <strong>wheel</strong>) смогут монтировать любые диски без ввода пароля.</p>
  945. </section>
  946. <section id="coredump-systemd">
  947. <span id="codedump-info"></span><span id="index-73"></span><h2>Что такое coredump и почему systemd сохраняет их?<a class="headerlink" href="#coredump-systemd" title="Permalink to this heading">¶</a></h2>
  948. <p>Coredump – это дамп закрытой памяти процесса, создаваемый в момент возникновения в нём внештатной ситуации, приводящей к аварийному завершению. Эти дампы используются всевозможными системами анализа и необходимы для создания правильных <a class="reference internal" href="generic-info.html#bug-report"><span class="std std-ref">баг-репортов</span></a>.</p>
  949. <p>По умолчанию systemd при падениях любых процессов (как системных, так и пользовательских), сохраняет дампы их закрытой памяти в каталоге <strong>/var/lib/systemd/coredump</strong>, поэтому он может занимать десятки гигабайт.</p>
  950. <p>Возможно их <a class="reference internal" href="#codedump-limit"><span class="std std-ref">ограничить</span></a>, либо полностью <a class="reference internal" href="#codedump-disable"><span class="std std-ref">отключить</span></a>.</p>
  951. </section>
  952. <section id="codedump-limit">
  953. <span id="index-74"></span><span id="id56"></span><h2>Как ограничить размер сохраняемых дампов памяти?<a class="headerlink" href="#codedump-limit" title="Permalink to this heading">¶</a></h2>
  954. <p>Откроем файл конфигурации <a class="reference internal" href="#codedump-info"><span class="std std-ref">systemd-coredump</span></a>:</p>
  955. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/systemd/coredump.conf
  956. </pre></div>
  957. </div>
  958. <p>Внесём правки, убирая символ комментария <strong>#</strong> перед каждой строкой:</p>
  959. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[Coredump]</span>
  960. <span class="na">Storage</span><span class="o">=</span><span class="s">external</span>
  961. <span class="na">Compress</span><span class="o">=</span><span class="s">yes</span>
  962. <span class="na">ProcessSizeMax</span><span class="o">=</span><span class="s">1G</span>
  963. <span class="na">ExternalSizeMax</span><span class="o">=</span><span class="s">1G</span>
  964. <span class="na">JournalSizeMax</span><span class="o">=</span><span class="s">200M</span>
  965. <span class="na">MaxUse</span><span class="o">=</span><span class="s">5</span>
  966. <span class="na">KeepFree</span><span class="o">=</span>
  967. </pre></div>
  968. </div>
  969. <p>В данном примере мы задаём максимальный размер одного дампа в 1 ГБ (<strong>ProcessSizeMax</strong> и <strong>ExternalSizeMax</strong>) с ограничением хранения не более 5 (<strong>MaxUse</strong>).</p>
  970. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  971. </section>
  972. <section id="codedump-disable">
  973. <span id="index-75"></span><span id="id57"></span><h2>Как полностью отключить сохранение дампов памяти?<a class="headerlink" href="#codedump-disable" title="Permalink to this heading">¶</a></h2>
  974. <p>Откроем файл конфигурации <a class="reference internal" href="#codedump-info"><span class="std std-ref">systemd-coredump</span></a>:</p>
  975. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/systemd/coredump.conf
  976. </pre></div>
  977. </div>
  978. <p>Уберём символ комментария <strong>#</strong> лишь перед первой строкой и изменим её значение:</p>
  979. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[Coredump]</span>
  980. <span class="na">Storage</span><span class="o">=</span><span class="s">none</span>
  981. </pre></div>
  982. </div>
  983. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  984. </section>
  985. <section id="kernel-postinstall">
  986. <span id="index-76"></span><span id="id58"></span><h2>Как настроить автоматическое выполнение скрипта после установки нового ядра?<a class="headerlink" href="#kernel-postinstall" title="Permalink to this heading">¶</a></h2>
  987. <p>Для того, чтобы выполнять какой-либо shell-скрипт сразу после окончания установки ядра Linux, поместим его в каталог <code class="docutils literal notranslate"><span class="pre">/etc/kernel/install.d</span></code> с chmod <strong>0755</strong> и расширением <strong>.install</strong>.</p>
  988. <p>Скрипты из него всегда выполняются в алфавитном порядке, т.е. <strong>00-foo.install</strong> запустится раньше, чем <strong>zz-bar.install</strong>, поэтому данную особенность можно использовать для изменения порядка их запуска.</p>
  989. <p>Каждому скрипту в качестве параметра передаётся версия установленного ядра, которую можно получить через <code class="docutils literal notranslate"><span class="pre">${1}</span></code>.</p>
  990. </section>
  991. <section id="modprobe">
  992. <span id="modprobe-sberr"></span><span id="index-77"></span><h2>При загрузке модуля ядра через modprobe я получаю ошибку. Как исправить?<a class="headerlink" href="#modprobe" title="Permalink to this heading">¶</a></h2>
  993. <p>Если при попытке загрузки модуля ядра при помощи modprobe с правами суперпользователя воникает ошибка <em>modprobe: ERROR: could not insert „XXXXXXX“: Operation not permitted</em>, значит включён режим <a class="reference internal" href="installation.html#secure-boot"><span class="std std-ref">UEFI Secure Boot</span></a>, а данный модуль не имеет цифровой подписи.</p>
  994. <p>Необходимо либо отключить Secure Boot в настройках UEFI компьютера, либо подписать его действительной цифровой подписью.</p>
  995. </section>
  996. <section id="systemd-boot">
  997. <span id="index-78"></span><span id="id59"></span><h2>Как настроить загрузку системы при помощи systemd-boot?<a class="headerlink" href="#systemd-boot" title="Permalink to this heading">¶</a></h2>
  998. <p>См. <a class="reference external" href="https://www.easycoding.org/2019/06/27/zagruzhaem-fedora-pri-pomoshhi-systemd-boot.html">здесь</a>.</p>
  999. </section>
  1000. <section id="port-bind-priv">
  1001. <span id="index-79"></span><span id="id60"></span><h2>Почему моё приложение не может использовать порт ниже 1024?<a class="headerlink" href="#port-bind-priv" title="Permalink to this heading">¶</a></h2>
  1002. <p>Диапазон портов 1-1023 зарезервирован для суперпользователя, а также приложений, наделённых его правами.</p>
  1003. <p>Стандартная схема использования: сервис запускается с правами root, начинает прослушивать необходимый ему порт, а затем <a class="reference internal" href="#euid-vs-ruid"><span class="std std-ref">сбрасывает</span></a> повышенные права. Так поступают большинство популярных серверных приложений (apache, nginx и т.д.).</p>
  1004. <p>Существует и альтернативный вариант – запуск при помощи <a class="reference internal" href="#port-bind-systemd"><span class="std std-ref">особого юнита systemd</span></a>.</p>
  1005. </section>
  1006. <section id="port-bind-systemd">
  1007. <span id="index-80"></span><span id="id61"></span><h2>Как запустить приложение на порту ниже 1024 при помощи systemd?<a class="headerlink" href="#port-bind-systemd" title="Permalink to this heading">¶</a></h2>
  1008. <p>Добавим в <a class="reference internal" href="#systemd-info"><span class="std std-ref">systemd-юнит</span></a> <code class="docutils literal notranslate"><span class="pre">foo-bar.service</span></code> запрос привилегии <code class="docutils literal notranslate"><span class="pre">CAP_NET_BIND_SERVICE</span></code>:</p>
  1009. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[Unit]</span>
  1010. <span class="na">Description</span><span class="o">=</span><span class="s">Simple application</span>
  1011. <span class="na">After</span><span class="o">=</span><span class="s">network.target</span>
  1012. <span class="k">[Service]</span>
  1013. <span class="na">RestartSec</span><span class="o">=</span><span class="s">10s</span>
  1014. <span class="na">Type</span><span class="o">=</span><span class="s">simple</span>
  1015. <span class="na">User</span><span class="o">=</span><span class="s">user</span>
  1016. <span class="na">Group</span><span class="o">=</span><span class="s">user</span>
  1017. <span class="na">WorkingDirectory</span><span class="o">=</span><span class="s">/home/user/foo-bar</span>
  1018. <span class="na">ExecStart</span><span class="o">=</span><span class="s">/home/user/foo-bar/foo</span>
  1019. <span class="na">Restart</span><span class="o">=</span><span class="s">always</span>
  1020. <span class="na">AmbientCapabilities</span><span class="o">=</span><span class="s">CAP_NET_BIND_SERVICE</span>
  1021. <span class="k">[Install]</span>
  1022. <span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
  1023. </pre></div>
  1024. </div>
  1025. <p>Теперь приложение сможет занять любой доступный порт, включая находящиеся в диапазоне 1-1023.</p>
  1026. </section>
  1027. <section id="user-group-remove">
  1028. <span id="index-81"></span><span id="id62"></span><h2>Как удалить пользователя из группы?<a class="headerlink" href="#user-group-remove" title="Permalink to this heading">¶</a></h2>
  1029. <p>Удалим пользователя с именем <strong>foo</strong> из группы <strong>bar</strong>:</p>
  1030. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo gpasswd -d foo bar
  1031. </pre></div>
  1032. </div>
  1033. <p>Удалим текущего пользователя из группы <strong>bar</strong>:</p>
  1034. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo gpasswd -d $(whoami) bar
  1035. </pre></div>
  1036. </div>
  1037. </section>
  1038. <section id="fs-data-journal">
  1039. <span id="index-82"></span><span id="id63"></span><h2>Как включить полное журналирование данных на диске?<a class="headerlink" href="#fs-data-journal" title="Permalink to this heading">¶</a></h2>
  1040. <p>Полное журналирование данных поддерживается файловой системой <strong>ext4</strong> и может быть активировано при помощи специального параметра монтирования.</p>
  1041. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code> в текстовом редакторе:</p>
  1042. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
  1043. </pre></div>
  1044. </div>
  1045. <p>Добавим после параметра монтирования по умолчанию <code class="docutils literal notranslate"><span class="pre">defaults</span></code> через запятую <code class="docutils literal notranslate"><span class="pre">data=journal</span></code>:</p>
  1046. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>UUID=XXXXXXX /home ext4 defaults,data=journal 1 2
  1047. </pre></div>
  1048. </div>
  1049. <p>Сохраним изменения в файле и выполним перезагрузку системы.</p>
  1050. </section>
  1051. <section id="fs-journal-adv">
  1052. <span id="index-83"></span><span id="id64"></span><h2>Какие преимущества и недостатки у полного журналирования данных?<a class="headerlink" href="#fs-journal-adv" title="Permalink to this heading">¶</a></h2>
  1053. <p>Преимущества:</p>
  1054. <blockquote>
  1055. <div><ul class="simple">
  1056. <li><p>более высокая надёжность в случае внезапного пропадания подачи электропитания;</p></li>
  1057. <li><p>гарантия сохранности не только структуры файловой системы, но и самих данных.</p></li>
  1058. </ul>
  1059. </div></blockquote>
  1060. <p>Недостатки:</p>
  1061. <blockquote>
  1062. <div><ul class="simple">
  1063. <li><p>двойная запись на диск: сначала данные помещаются в журнал и лишь после этого происходит реальное изменение данных на диске в виде атомарной операции;</p></li>
  1064. <li><p>за счёт двойной записи снижается производительность всех файловых операций записи;</p></li>
  1065. <li><p>для файлового журнала будет зарезервировано 10% от свободного места на диске;</p></li>
  1066. <li><p>более быстрое расходование ресурса записи твёрдотельных накопителей данных.</p></li>
  1067. </ul>
  1068. </div></blockquote>
  1069. </section>
  1070. <section id="fs-reserve-info">
  1071. <span id="index-84"></span><span id="id65"></span><h2>Для каких целей резервируется 5% от свободного места на диске?<a class="headerlink" href="#fs-reserve-info" title="Permalink to this heading">¶</a></h2>
  1072. <p>По умолчанию на каждом разделе с файловой системой ext4 резервируется 5% для нужд суперпользователя.</p>
  1073. </section>
  1074. <section id="fs-reserve-disable">
  1075. <span id="index-85"></span><span id="id66"></span><h2>Как отключить резервирование свободного места на диске?<a class="headerlink" href="#fs-reserve-disable" title="Permalink to this heading">¶</a></h2>
  1076. <p><a class="reference internal" href="#fs-reserve-info"><span class="std std-ref">Резервирование свободного места</span></a> для нужд суперпользователя может быть отключено при создании файловой системы при помощи опционального параметра <code class="docutils literal notranslate"><span class="pre">-m</span> <span class="pre">0</span></code>. Например:</p>
  1077. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkfs -t ext4 -m 0 -L Data /dev/sdX1
  1078. </pre></div>
  1079. </div>
  1080. <p>Для уже существующей файловой системы воспользуемся утилитой <strong>tune2fs</strong>:</p>
  1081. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo tune2fs -m 0 /dev/sdX1
  1082. </pre></div>
  1083. </div>
  1084. <p>Здесь <strong>0</strong> – процентное соотношение зарезервированных блоков к обычным (отсутствуют), а <strong>/dev/sdX1</strong> – раздел диска, на котором будут произведены изменения.</p>
  1085. </section>
  1086. <section id="zswap-fedora">
  1087. <span id="zswap"></span><span id="index-86"></span><h2>Как включить поддержку zswap в Fedora?<a class="headerlink" href="#zswap-fedora" title="Permalink to this heading">¶</a></h2>
  1088. <p>Установим пакет <strong>zswap-cli</strong> для работы с модулем ядра <em>zswap</em>:</p>
  1089. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install zswap-cli
  1090. </pre></div>
  1091. </div>
  1092. <p>При необходимости внесём правки в файл конфигурации:</p>
  1093. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/zswap-cli/zswap-cli.conf
  1094. </pre></div>
  1095. </div>
  1096. <p>Активируем сервис zswap-cli:</p>
  1097. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl enable --now zswap-cli.service
  1098. </pre></div>
  1099. </div>
  1100. <p>Изменения вступят в силу немедленно.</p>
  1101. </section>
  1102. <section id="memory-defrag">
  1103. <span id="index-87"></span><span id="id67"></span><h2>Как произвести дефраментацию оперативной памяти?<a class="headerlink" href="#memory-defrag" title="Permalink to this heading">¶</a></h2>
  1104. <p>В современных версиях ядра Linux применяется т.н. <a class="reference external" href="https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html#compaction-proactiveness">проактивная дефрагментация</a> оперативной памяти, однако если требуется осуществить данную процедуру немедленно, выполним:</p>
  1105. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;echo 1 &gt; /proc/sys/vm/compact_memory&quot;
  1106. </pre></div>
  1107. </div>
  1108. </section>
  1109. <section id="zram-default-disable">
  1110. <span id="index-88"></span><span id="id68"></span><h2>Как отключить активированное по умолчанию сжатие оперативной памяти?<a class="headerlink" href="#zram-default-disable" title="Permalink to this heading">¶</a></h2>
  1111. <p>Если в сжатии оперативной памяти <a class="reference internal" href="#memory-compression"><span class="std std-ref">при помощи zram</span></a> нет необходимости, отключим данную функцию простым удалением предоставляющих её пакетов:</p>
  1112. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf remove zram-generator zram-generator-defaults
  1113. </pre></div>
  1114. </div>
  1115. <p>Перезагрузим систему для вступления изменений в силу:</p>
  1116. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl reboot
  1117. </pre></div>
  1118. </div>
  1119. </section>
  1120. <section id="io-scheduler">
  1121. <span id="index-89"></span><span id="id69"></span><h2>Как определить какой планировщик ввода-вывода используется?<a class="headerlink" href="#io-scheduler" title="Permalink to this heading">¶</a></h2>
  1122. <p>Выведем информацию обо всех установленных в системе дисковых накопителях:</p>
  1123. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep . /sys/block/*/queue/scheduler
  1124. </pre></div>
  1125. </div>
  1126. <p>Название активного планировщика на каждом конкретном устройстве указано в квадратных скобках.</p>
  1127. <p>Пример:</p>
  1128. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/sys/block/sda/queue/scheduler:mq-deadline kyber [bfq] none
  1129. </pre></div>
  1130. </div>
  1131. <p>Данный вывод означает, что в системе для устройства <code class="docutils literal notranslate"><span class="pre">/dev/sda</span></code> применяется <a class="reference internal" href="tips-and-tricks.html#bfq-scheduler"><span class="std std-ref">BFQ</span></a>.</p>
  1132. </section>
  1133. <section id="return-code-get">
  1134. <span id="index-90"></span><span id="id70"></span><h2>Как получить код завершения последней выполненной команды?<a class="headerlink" href="#return-code-get" title="Permalink to this heading">¶</a></h2>
  1135. <p>Выведем на экран код завершения последней выполненной команды в терминале:</p>
  1136. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>echo $?
  1137. </pre></div>
  1138. </div>
  1139. </section>
  1140. <section id="uefi-secure-boot">
  1141. <span id="secure-boot-status"></span><span id="index-91"></span><h2>Как определить текущее состояние UEFI Secure Boot?<a class="headerlink" href="#uefi-secure-boot" title="Permalink to this heading">¶</a></h2>
  1142. <p>Установим пакет <strong>mokutil</strong>:</p>
  1143. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install mokutil
  1144. </pre></div>
  1145. </div>
  1146. <p>Выведем информацию о текущем состоянии <a class="reference internal" href="installation.html#secure-boot"><span class="std std-ref">UEFI Secure Boot</span></a>:</p>
  1147. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mokutil --sb-state
  1148. </pre></div>
  1149. </div>
  1150. </section>
  1151. <section id="process-tree">
  1152. <span id="index-92"></span><span id="id71"></span><h2>Как построить и вывести дерево процессов?<a class="headerlink" href="#process-tree" title="Permalink to this heading">¶</a></h2>
  1153. <p>Воспользуемся утилитой <strong>ps</strong> для построения и вывода дерева процессов:</p>
  1154. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ps -aef --forest
  1155. </pre></div>
  1156. </div>
  1157. </section>
  1158. <section id="btrfs-subvolume">
  1159. <span id="index-93"></span><span id="id72"></span><h2>Как однократно смонтировать BTRFS subvolume?<a class="headerlink" href="#btrfs-subvolume" title="Permalink to this heading">¶</a></h2>
  1160. <p>Создадим каталог для точки монтирования:</p>
  1161. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/foo-bar
  1162. </pre></div>
  1163. </div>
  1164. <p>Выполним монтирование подтома <strong>foo-bar</strong>:</p>
  1165. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -t btrfs /dev/sdX2 -o subvol=foo-bar /media/foo-bar
  1166. </pre></div>
  1167. </div>
  1168. <p>По окончании работы произведём размонтирование и удалим ненужный более каталог:</p>
  1169. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/foo-bar
  1170. sudo rmdir /media/foo-bar
  1171. </pre></div>
  1172. </div>
  1173. <p>Здесь <strong>/dev/sdX2</strong> – накопитель с файловой системой <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a>.</p>
  1174. </section>
  1175. <section id="btrfs-compression">
  1176. <span id="index-94"></span><span id="id73"></span><h2>Как включить сжатие данных на разделе с BTRFS?<a class="headerlink" href="#btrfs-compression" title="Permalink to this heading">¶</a></h2>
  1177. <p><strong>Внимание!</strong> Начиная с Fedora 34 для новых установок уже <a class="reference external" href="https://fedoraproject.org/wiki/Changes/BtrfsTransparentCompression">включено</a> сжатие для разделов с ФС <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a> алгоритмом <strong>zstd</strong> с уровнем сжатия <strong>1</strong>. Для тех, кто обновляется с предыдущих релизов, сжатие можно включить самостоятельно.</p>
  1178. <p>Файловая система <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a> поддерживает прозрачное сжатие данных. Допускается выбрать один из трёх доступных алгоритмов: <strong>zstd</strong>, <strong>zlib</strong> или <strong>lzo</strong>. Сжатие включается посредством указания алгоритма и уровня в параметрах монтирования раздела.</p>
  1179. <p>Включим сжатие для корневого раздела. Для этого внесём правки в файл конфигурации <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
  1180. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
  1181. </pre></div>
  1182. </div>
  1183. <p>В колонке параметров монтирования добавим опцию <code class="docutils literal notranslate"><span class="pre">compress=zstd:1</span></code>:</p>
  1184. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>UUID=XXXXX-XXXXX / btrfs compress=zstd:1,subvol=fedora 0 0
  1185. </pre></div>
  1186. </div>
  1187. <p>Здесь <strong>XXXXX-XXXXX</strong> – <a class="reference internal" href="#get-uuid"><span class="std std-ref">UUID раздела</span></a>.</p>
  1188. <p>Сохраним изменения и произведём перезагрузку системы:</p>
  1189. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl reboot
  1190. </pre></div>
  1191. </div>
  1192. <p>С этого момента все записываемые данные будут сжиматься алгоритмом <em>zstd</em>.</p>
  1193. <p>Подробнее о сжатии можно прочитать в <a class="reference external" href="https://btrfs.wiki.kernel.org/index.php/Compression">официальной документации</a> (на английском языке).</p>
  1194. </section>
  1195. <section id="btrfs-compression-analyze">
  1196. <span id="index-95"></span><span id="id74"></span><h2>Как определить эффективность сжатия на разделе с BTRFS?<a class="headerlink" href="#btrfs-compression-analyze" title="Permalink to this heading">¶</a></h2>
  1197. <p>Оценим эффективность сжатия данных на разделе с файловой системой <a class="reference internal" href="installation.html#fs-btrfs"><span class="std std-ref">BTRFS</span></a> при помощи утилиты <strong>compsize</strong>:</p>
  1198. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo compsize -x /
  1199. </pre></div>
  1200. </div>
  1201. </section>
  1202. <section id="udev">
  1203. <span id="udev-rules-reload"></span><span id="index-96"></span><h2>Как применить изменения в правилах udev без перезагрузки?<a class="headerlink" href="#udev" title="Permalink to this heading">¶</a></h2>
  1204. <p>Применим изменения в правилах udev при помощи утилиты <strong>udevadm</strong>:</p>
  1205. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo udevadm control --reload
  1206. </pre></div>
  1207. </div>
  1208. </section>
  1209. <section id="ssh-proxy">
  1210. <span id="index-97"></span><span id="id75"></span><h2>Как однократно подключиться к SSH-серверу через proxy?<a class="headerlink" href="#ssh-proxy" title="Permalink to this heading">¶</a></h2>
  1211. <p>Для подключения к SSH-серверу через proxy, воспользуемся утилитой <strong>nc</strong>, параметры которой передадим при помощи опции <strong>ProxyCommand</strong>:</p>
  1212. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh -o ProxyCommand=&#39;nc -X 5 --proxy-type socks5 --proxy 127.0.0.1:8080 %h %p&#39; user@example.org
  1213. </pre></div>
  1214. </div>
  1215. </section>
  1216. <section id="ssh-proxy-always">
  1217. <span id="index-98"></span><span id="id76"></span><h2>Как настроить подключение к любым SSH-серверам через proxy?<a class="headerlink" href="#ssh-proxy-always" title="Permalink to this heading">¶</a></h2>
  1218. <p>Добавим опцию <strong>ProxyCommand</strong> в файл конфигурации <code class="docutils literal notranslate"><span class="pre">~/.ssh/config</span></code> для постоянного использования с любыми хостами:</p>
  1219. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Host *
  1220. ProxyCommand nc -X 5 --proxy-type socks5 --proxy 127.0.0.1:8080 %h %p
  1221. </pre></div>
  1222. </div>
  1223. </section>
  1224. </section>
  1225. </div>
  1226. </div>
  1227. </div>
  1228. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  1229. <div class="sphinxsidebarwrapper">
  1230. <div id="searchbox" style="display: none" role="search">
  1231. <h3 id="searchlabel">Быстрый поиск</h3>
  1232. <div class="searchformwrapper">
  1233. <form class="search" action="search.html" method="get">
  1234. <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
  1235. <input type="submit" value="Искать" />
  1236. </form>
  1237. </div>
  1238. </div>
  1239. <script>document.getElementById('searchbox').style.display = "block"</script><h3>Навигация</h3>
  1240. <ul class="current">
  1241. <li class="toctree-l1"><a class="reference internal" href="generic-info.html">Основная информация</a></li>
  1242. <li class="toctree-l1"><a class="reference internal" href="installation.html">Установка системы</a></li>
  1243. <li class="toctree-l1"><a class="reference internal" href="package-manager.html">Пакетный менеджер и установка пакетов</a></li>
  1244. <li class="toctree-l1 current"><a class="current reference internal" href="#">Системное администрирование</a><ul>
  1245. <li class="toctree-l2"><a class="reference internal" href="#kernelpm-once">Как однократно передать параметр ядра?</a></li>
  1246. <li class="toctree-l2"><a class="reference internal" href="#kernelpm-perm">Как мне задать параметр ядра для постоянного использования?</a></li>
  1247. <li class="toctree-l2"><a class="reference internal" href="#kernelpm-remove">Как убрать ненужный более параметр ядра?</a></li>
  1248. <li class="toctree-l2"><a class="reference internal" href="#kernelpm-legacy">Как мне задать параметр ядра на устаревшей конфигурации?</a></li>
  1249. <li class="toctree-l2"><a class="reference internal" href="#kernelpm-list">Как определить какие параметры ядра заданы в настоящее время?</a></li>
  1250. <li class="toctree-l2"><a class="reference internal" href="#kernel-modules-list">Как определить какие модули ядра в настоящее время загружены?</a></li>
  1251. <li class="toctree-l2"><a class="reference internal" href="#kernel-modules-help">Как узнать какие опциональные параметры поддерживает конкретный модуль ядра?</a></li>
  1252. <li class="toctree-l2"><a class="reference internal" href="#uefi-boot-fedora">Как определить список загружаемых ОС в меню UEFI Boot из Fedora?</a></li>
  1253. <li class="toctree-l2"><a class="reference internal" href="#uefi-reorder">Возможно ли изменить порядок загрузки в UEFI Boot из Fedora?</a></li>
  1254. <li class="toctree-l2"><a class="reference internal" href="#uefi-add">Как добавить новый пункт меню UEFI Boot из Fedora?</a></li>
  1255. <li class="toctree-l2"><a class="reference internal" href="#uefi-remove">Как удалить ненужный пункт меню UEFI Boot из Fedora?</a></li>
  1256. <li class="toctree-l2"><a class="reference internal" href="#journal-current">Как мне посмотреть текущий журнал работы системы?</a></li>
  1257. <li class="toctree-l2"><a class="reference internal" href="#journal-history">Как мне посмотреть журналы с прошлых загрузок?</a></li>
  1258. <li class="toctree-l2"><a class="reference internal" href="#journal-tofile">Как мне выгрузить журнал в файл?</a></li>
  1259. <li class="toctree-l2"><a class="reference internal" href="#chroot-liveusb">Как сделать chroot в установленную систему с LiveUSB?</a></li>
  1260. <li class="toctree-l2"><a class="reference internal" href="#ups-fedora">Как настроить ИБП (UPS) в Fedora?</a></li>
  1261. <li class="toctree-l2"><a class="reference internal" href="#journald-limit">Системные журналы занимают слишком много места. Как их ограничить?</a></li>
  1262. <li class="toctree-l2"><a class="reference internal" href="#journald-wipe">Как немедленно очистить все системные журналы?</a></li>
  1263. <li class="toctree-l2"><a class="reference internal" href="#systemd">Что такое systemd и как с ним работать?</a></li>
  1264. <li class="toctree-l2"><a class="reference internal" href="#drop-fs-caches">Как очистить кэши и буферы всех файловых систем?</a></li>
  1265. <li class="toctree-l2"><a class="reference internal" href="#utc-localtime">Как перевести системные часы в UTC или localtime и наоборот?</a></li>
  1266. <li class="toctree-l2"><a class="reference internal" href="#fedora-windows">У меня в дуалбуте с Fedora установлена Windows и часы постоянно сбиваются. В чём дело?</a></li>
  1267. <li class="toctree-l2"><a class="reference internal" href="#gdm-sddm">У меня в системе используется GDM, но я хочу заменить его на SDDM. Это возможно?</a></li>
  1268. <li class="toctree-l2"><a class="reference internal" href="#java">Как мне выбрать версию Java по умолчанию?</a></li>
  1269. <li class="toctree-l2"><a class="reference internal" href="#change-hostname">Как изменить имя хоста?</a></li>
  1270. <li class="toctree-l2"><a class="reference internal" href="#lvm-liveusb">Как мне проверить ФС в составе LVM с LiveUSB?</a></li>
  1271. <li class="toctree-l2"><a class="reference internal" href="#liveusb">Как мне проверить ФС при использовании классических разделов с LiveUSB?</a></li>
  1272. <li class="toctree-l2"><a class="reference internal" href="#luks-liveusb">Как мне проверить ФС на зашифрованном LUKS разделе с LiveUSB?</a></li>
  1273. <li class="toctree-l2"><a class="reference internal" href="#btrfs">Как восстановить данные с повреждённого раздела с BTRFS?</a></li>
  1274. <li class="toctree-l2"><a class="reference internal" href="#deduplication-memory">Возможна ли полная дедупликация оперативной памяти?</a></li>
  1275. <li class="toctree-l2"><a class="reference internal" href="#deduplication-disk">Возможна ли полная дедупликация данных на дисках?</a></li>
  1276. <li class="toctree-l2"><a class="reference internal" href="#memory-compression">Можно ли включить сжатие оперативной памяти?</a></li>
  1277. <li class="toctree-l2"><a class="reference internal" href="#sysctl">Как временно изменить параметр ядра при помощи sysctl?</a></li>
  1278. <li class="toctree-l2"><a class="reference internal" href="#sysctl-permanent">Как задать и сохранить параметр ядра при помощи sysctl?</a></li>
  1279. <li class="toctree-l2"><a class="reference internal" href="#sysctl-order">В каком порядке загружаются sysctl файлы настроек?</a></li>
  1280. <li class="toctree-l2"><a class="reference internal" href="#configure-runlevel">Как переключить запуск системы в текстовый режим и обратно?</a></li>
  1281. <li class="toctree-l2"><a class="reference internal" href="#fedora">Как настроить подкачку в файл в Fedora?</a></li>
  1282. <li class="toctree-l2"><a class="reference internal" href="#disk-usage">Как узнать, какой процесс осуществляет запись на диск?</a></li>
  1283. <li class="toctree-l2"><a class="reference internal" href="#change-label">Как сменить метку раздела?</a></li>
  1284. <li class="toctree-l2"><a class="reference internal" href="#uuid">Как получить UUID всех смонтированных разделов?</a></li>
  1285. <li class="toctree-l2"><a class="reference internal" href="#change-uuid">Как изменить UUID раздела?</a></li>
  1286. <li class="toctree-l2"><a class="reference internal" href="#pid">Как получить PID запущенного процесса?</a></li>
  1287. <li class="toctree-l2"><a class="reference internal" href="#kill-sigterm">Как правильно завершить работу процесса?</a></li>
  1288. <li class="toctree-l2"><a class="reference internal" href="#kill-sigkill">Как принудительно завершить работу процесса?</a></li>
  1289. <li class="toctree-l2"><a class="reference internal" href="#process-zombie">Что такое процесс-зомби?</a></li>
  1290. <li class="toctree-l2"><a class="reference internal" href="#process-orphan">Что такое процесс-сирота?</a></li>
  1291. <li class="toctree-l2"><a class="reference internal" href="#docker-fedora">Как правильно установить Docker в Fedora?</a></li>
  1292. <li class="toctree-l2"><a class="reference internal" href="#kernel-bs">Как определить включена ли определённая опция ядра во время компиляции?</a></li>
  1293. <li class="toctree-l2"><a class="reference internal" href="#ksoftirqd">Процесс ksoftirqd съедает все ресурсы системы. Что делать?</a></li>
  1294. <li class="toctree-l2"><a class="reference internal" href="#kernel-irq">Как определить какое устройство генерирует огромное количество прерываний?</a></li>
  1295. <li class="toctree-l2"><a class="reference internal" href="#irq-manual">Как произвести ручную балансировку прерываний?</a></li>
  1296. <li class="toctree-l2"><a class="reference internal" href="#too-many-open-files">При работе приложения возникает ошибка Too many open files. Что делать?</a></li>
  1297. <li class="toctree-l2"><a class="reference internal" href="#fd-hard-soft">Как узнать текущий лимит открытых файловых дескрипторов?</a></li>
  1298. <li class="toctree-l2"><a class="reference internal" href="#fd-kernel">Как узнать глобальный лимит открытых файловых дескрипторов?</a></li>
  1299. <li class="toctree-l2"><a class="reference internal" href="#fd-increase">Как увеличить лимит открытых файловых дескрипторов?</a></li>
  1300. <li class="toctree-l2"><a class="reference internal" href="#task-affinity">Как запустить процесс так, чтобы он мог использовать лишь определённые ядра процессора?</a></li>
  1301. <li class="toctree-l2"><a class="reference internal" href="#task-priority">Как изменить приоритет процесса?</a></li>
  1302. <li class="toctree-l2"><a class="reference internal" href="#effective-uid-real-uid">Чем отличается Effective UID процесса от Real UID?</a></li>
  1303. <li class="toctree-l2"><a class="reference internal" href="#copying-data">Как скопировать данные с одного раздела на другой?</a></li>
  1304. <li class="toctree-l2"><a class="reference internal" href="#chmod-immutable">Как запретить модификацию файла даже владельцу и суперпользователю?</a></li>
  1305. <li class="toctree-l2"><a class="reference internal" href="#chmod-lsattr">Как узнать какие расширенные атрибуты применены для конкретного файла?</a></li>
  1306. <li class="toctree-l2"><a class="reference internal" href="#chmod-addonly">Как разрешить лишь дописывать данные в файл?</a></li>
  1307. <li class="toctree-l2"><a class="reference internal" href="#ssh">Как создать алиасы для быстрого подключения к SSH серверам?</a></li>
  1308. <li class="toctree-l2"><a class="reference internal" href="#fuse">Что такое FUSE?</a></li>
  1309. <li class="toctree-l2"><a class="reference internal" href="#kerberos">Как авторизоваться на удалённой системе с использованием Kerberos?</a></li>
  1310. <li class="toctree-l2"><a class="reference internal" href="#kerberos-renew">Как обновить Kerberos-тикет?</a></li>
  1311. <li class="toctree-l2"><a class="reference internal" href="#delete-inode">В каталоге появился файл с некорректным именем, который не удаётся удалить. Что делать?</a></li>
  1312. <li class="toctree-l2"><a class="reference internal" href="#ext4">Нужно ли выполнять дефрагментацию для разделов с ФС ext4?</a></li>
  1313. <li class="toctree-l2"><a class="reference internal" href="#defrag-custom">Как выполнить дефрагментацию отдельных файлов на разделе ФС ext4?</a></li>
  1314. <li class="toctree-l2"><a class="reference internal" href="#defrag-full">Как выполнить дефрагментацию всего раздела с ФС ext4?</a></li>
  1315. <li class="toctree-l2"><a class="reference internal" href="#cpu-cores">Как определить количество доступных процессоров или ядер?</a></li>
  1316. <li class="toctree-l2"><a class="reference internal" href="#bash-pipelines">Как перенаправить стандартный ввод-вывод в файлы?</a></li>
  1317. <li class="toctree-l2"><a class="reference internal" href="#mount-nopass">Как разрешить монтирование любых дисков без ввода пароля?</a></li>
  1318. <li class="toctree-l2"><a class="reference internal" href="#coredump-systemd">Что такое coredump и почему systemd сохраняет их?</a></li>
  1319. <li class="toctree-l2"><a class="reference internal" href="#codedump-limit">Как ограничить размер сохраняемых дампов памяти?</a></li>
  1320. <li class="toctree-l2"><a class="reference internal" href="#codedump-disable">Как полностью отключить сохранение дампов памяти?</a></li>
  1321. <li class="toctree-l2"><a class="reference internal" href="#kernel-postinstall">Как настроить автоматическое выполнение скрипта после установки нового ядра?</a></li>
  1322. <li class="toctree-l2"><a class="reference internal" href="#modprobe">При загрузке модуля ядра через modprobe я получаю ошибку. Как исправить?</a></li>
  1323. <li class="toctree-l2"><a class="reference internal" href="#systemd-boot">Как настроить загрузку системы при помощи systemd-boot?</a></li>
  1324. <li class="toctree-l2"><a class="reference internal" href="#port-bind-priv">Почему моё приложение не может использовать порт ниже 1024?</a></li>
  1325. <li class="toctree-l2"><a class="reference internal" href="#port-bind-systemd">Как запустить приложение на порту ниже 1024 при помощи systemd?</a></li>
  1326. <li class="toctree-l2"><a class="reference internal" href="#user-group-remove">Как удалить пользователя из группы?</a></li>
  1327. <li class="toctree-l2"><a class="reference internal" href="#fs-data-journal">Как включить полное журналирование данных на диске?</a></li>
  1328. <li class="toctree-l2"><a class="reference internal" href="#fs-journal-adv">Какие преимущества и недостатки у полного журналирования данных?</a></li>
  1329. <li class="toctree-l2"><a class="reference internal" href="#fs-reserve-info">Для каких целей резервируется 5% от свободного места на диске?</a></li>
  1330. <li class="toctree-l2"><a class="reference internal" href="#fs-reserve-disable">Как отключить резервирование свободного места на диске?</a></li>
  1331. <li class="toctree-l2"><a class="reference internal" href="#zswap-fedora">Как включить поддержку zswap в Fedora?</a></li>
  1332. <li class="toctree-l2"><a class="reference internal" href="#memory-defrag">Как произвести дефраментацию оперативной памяти?</a></li>
  1333. <li class="toctree-l2"><a class="reference internal" href="#zram-default-disable">Как отключить активированное по умолчанию сжатие оперативной памяти?</a></li>
  1334. <li class="toctree-l2"><a class="reference internal" href="#io-scheduler">Как определить какой планировщик ввода-вывода используется?</a></li>
  1335. <li class="toctree-l2"><a class="reference internal" href="#return-code-get">Как получить код завершения последней выполненной команды?</a></li>
  1336. <li class="toctree-l2"><a class="reference internal" href="#uefi-secure-boot">Как определить текущее состояние UEFI Secure Boot?</a></li>
  1337. <li class="toctree-l2"><a class="reference internal" href="#process-tree">Как построить и вывести дерево процессов?</a></li>
  1338. <li class="toctree-l2"><a class="reference internal" href="#btrfs-subvolume">Как однократно смонтировать BTRFS subvolume?</a></li>
  1339. <li class="toctree-l2"><a class="reference internal" href="#btrfs-compression">Как включить сжатие данных на разделе с BTRFS?</a></li>
  1340. <li class="toctree-l2"><a class="reference internal" href="#btrfs-compression-analyze">Как определить эффективность сжатия на разделе с BTRFS?</a></li>
  1341. <li class="toctree-l2"><a class="reference internal" href="#udev">Как применить изменения в правилах udev без перезагрузки?</a></li>
  1342. <li class="toctree-l2"><a class="reference internal" href="#ssh-proxy">Как однократно подключиться к SSH-серверу через proxy?</a></li>
  1343. <li class="toctree-l2"><a class="reference internal" href="#ssh-proxy-always">Как настроить подключение к любым SSH-серверам через proxy?</a></li>
  1344. </ul>
  1345. </li>
  1346. <li class="toctree-l1"><a class="reference internal" href="networking.html">Сетевое администрирование</a></li>
  1347. <li class="toctree-l1"><a class="reference internal" href="virtualization.html">Виртуализация</a></li>
  1348. <li class="toctree-l1"><a class="reference internal" href="security.html">Безопасность</a></li>
  1349. <li class="toctree-l1"><a class="reference internal" href="using-system.html">Работа в системе</a></li>
  1350. <li class="toctree-l1"><a class="reference internal" href="using-applications.html">Сторонние приложения</a></li>
  1351. <li class="toctree-l1"><a class="reference internal" href="hardware.html">Оборудование</a></li>
  1352. <li class="toctree-l1"><a class="reference internal" href="development.html">Разработка и сборка пакетов</a></li>
  1353. <li class="toctree-l1"><a class="reference internal" href="tips-and-tricks.html">Оптимизация и тонкая настройка</a></li>
  1354. <li class="toctree-l1"><a class="reference internal" href="legal-info.html">Правовая информация</a></li>
  1355. </ul>
  1356. <div class="relations">
  1357. <h3>Related Topics</h3>
  1358. <ul>
  1359. <li><a href="index.html">Documentation overview</a><ul>
  1360. <li>Previous: <a href="package-manager.html" title="предыдущая глава">Пакетный менеджер и установка пакетов</a></li>
  1361. <li>Next: <a href="networking.html" title="следующая глава">Сетевое администрирование</a></li>
  1362. </ul></li>
  1363. </ul>
  1364. </div>
  1365. </div>
  1366. </div>
  1367. <div class="clearer"></div>
  1368. </div>
  1369. <div class="footer">
  1370. &copy;2018 - 2023, EasyCoding Team and contributors.
  1371. </div>
  1372. <a href="https://github.com/RussianFedora/FAQ" class="github">
  1373. <img style="position: absolute; top: 0; right: 0; border: 0;" src="_static/forkme_right_green.png" alt="Fork me on GitHub" class="github"/>
  1374. </a>
  1375. </body>
  1376. </html>