[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/command-line-shortcuts":3,"mdc-y69wvb-key":1259,"mdc-9e3ery-key":1270,"mdc-nlcex6-key":1278,"mdc--x0cabo-key":1286,"mdc-4strf1-key":1294,"mdc-90li5s-key":1302,"mdc--i4rvt0-key":1310,"mdc--agv1ll-key":1318,"mdc--8oag0y-key":1326,"mdc-dz9y1p-key":1334,"related-/guides/linux/customize-bash-prompt,/guides/linux/process-management-basics,/guides/linux/zsh-installation-configuration":1342},{"id":4,"title":5,"appliesTo":6,"author":9,"body":10,"canonical":1186,"code":1186,"createdAt":1187,"description":1188,"difficulty":1189,"draft":1190,"estimatedTime":1191,"extension":1192,"faq":1193,"howToSteps":1206,"howToTotalTime":1225,"image":1186,"keywords":1226,"locale":1237,"meta":1238,"navigation":1239,"path":1240,"platform":1241,"related":1242,"section":1246,"seo":1247,"severity":1186,"stem":1248,"summary":1249,"tags":1250,"twitterCreator":1186,"twitterSite":1186,"type":1257,"updatedAt":1187,"__hash__":1258},"content_ru/guides/linux/command-line-shortcuts.md","Освойте сочетания клавиш командной строки Linux для ускорения работы",[7,8],"Linux с bash 4.0+ или zsh 5.0+","Ubuntu 20.04+, Fedora 35+, Debian 10+","FixPedia Team",{"type":11,"value":12,"toc":1154},"minimark",[13,18,22,26,29,75,81,85,88,93,149,176,180,192,201,205,208,212,261,265,311,333,337,351,355,358,362,394,398,472,476,479,541,554,557,561,564,568,575,582,652,658,662,672,714,720,724,729,749,754,813,817,875,879,882,916,922,950,953,980,983,987,991,1049,1053,1095,1099,1127,1131,1141,1145,1150],[14,15,17],"h2",{"id":16},"введение-зачем-это-нужно","Введение / Зачем это нужно",[19,20,21],"p",{},"Работа в командной строке Linux — это мощный инструмент для администрирования, разработки и автоматизации. Однако постоянный ввод команд мышкой или долгое перемещение стрелками могут замедлять ваш workflow. Сочетания клавиш (горячие клавиши) позволяют быстро навигационировать, редактировать команды и управлять процессами, экономя драгоценные секунды. После освоения этих комбинаций вы заметите значительный прирост продуктивности, особенно при длительных сессиях в терминале. В этом гайде мы разберём самые полезные сочетания для bash и zsh — самых популярных оболочек Linux.",[14,23,25],{"id":24},"требования-подготовка","Требования / Подготовка",[19,27,28],{},"Перед началом убедитесь, что у вас есть:",[30,31,32,40,69],"ol",{},[33,34,35,39],"li",{},[36,37,38],"strong",{},"Доступ к терминалу Linux"," — любой графический (gnome-terminal, konsole, xterm) или виртуальная консоль (Ctrl+Alt+F1-F6).",[33,41,42,45,46],{},[36,43,44],{},"Установленная оболочка"," — bash (по умолчанию в большинстве дистрибутивов) или zsh. Проверить текущую оболочку можно командой:\n",[47,48,53],"pre",{"className":49,"code":50,"language":51,"meta":52,"style":52},"language-bash shiki shiki-themes github-light github-dark","echo $SHELL\n","bash","",[54,55,56],"code",{"__ignoreMap":52},[57,58,61,65],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"sj4cs","echo",[57,66,68],{"class":67},"sVt8B"," $SHELL\n",[33,70,71,74],{},[36,72,73],{},"Базовые знания командной строки"," — умение вводить и выполнять простые команды.",[76,77,78],"blockquote",{},[19,79,80],{},"💡 Совет: Если вы новичок, начните с bash, так как его сочетания клавиш наиболее универсальны. Zsh предлагает дополнительные фичи, но базовые комбинации совместимы.",[14,82,84],{"id":83},"основные-сочетания-клавиш-для-навигации","Основные сочетания клавиш для навигации",[19,86,87],{},"Эти комбинации помогут быстро перемещаться по строке ввода без использования мыши или стрелок.",[89,90,92],"h3",{"id":91},"навигация-по-символам-и-словам","Навигация по символам и словам",[94,95,96,106,114,124,133,141],"ul",{},[33,97,98,101,102,105],{},[54,99,100],{},"Ctrl+A"," — перейти в ",[36,103,104],{},"начало"," строки команды.",[33,107,108,101,111,105],{},[54,109,110],{},"Ctrl+E",[36,112,113],{},"конец",[33,115,116,119,120,123],{},[54,117,118],{},"Ctrl+B"," — переместиться ",[36,121,122],{},"назад"," на один символ (аналог стрелки ←).",[33,125,126,119,129,132],{},[54,127,128],{},"Ctrl+F",[36,130,131],{},"вперёд"," на один символ (аналог стрелки →).",[33,134,135,119,138,140],{},[54,136,137],{},"Alt+B",[36,139,122],{}," на одно слово (разделители: пробел, тире, slash).",[33,142,143,119,146,148],{},[54,144,145],{},"Alt+F",[36,147,131],{}," на одно слово.",[76,150,151],{},[19,152,153,154,157,158,161,162,165,166,169,170,172,173,175],{},"⚠️ Важно: На некоторых системах клавиша ",[54,155,156],{},"Alt"," может не работать в терминале по умолчанию. В этом случае используйте ",[54,159,160],{},"Esc",", нажав его перед ",[54,163,164],{},"B"," или ",[54,167,168],{},"F"," (например, ",[54,171,160],{}," затем ",[54,174,164],{}," для перехода назад на слово).",[89,177,179],{"id":178},"быстрое-переключение-позиций","Быстрое переключение позиций",[94,181,182],{},[33,183,184,187,188,191],{},[54,185,186],{},"Ctrl+XX"," — переключиться между началом строки и текущей позицией курсора (работает в bash и zsh при включённой опции ",[54,189,190],{},"set -o emacs",").",[19,193,194,195,197,198,200],{},"Пример: вы ввели длинную команду, но Need исправить начало. Нажмите ",[54,196,100],{},", внесите правки, затем ",[54,199,186],{}," — курсор вернётся туда, где вы изначально остановились.",[14,202,204],{"id":203},"сочетания-для-редактирования-команд","Сочетания для редактирования команд",[19,206,207],{},"Эти комбинации ускоряют исправление опечаток и модификацию команд.",[89,209,211],{"id":210},"удаление-текста","Удаление текста",[94,213,214,224,232,241,249],{},[33,215,216,219,220,223],{},[54,217,218],{},"Ctrl+U"," — удалить ",[36,221,222],{},"всё"," от курсора до начала строки.",[33,225,226,219,229,231],{},[54,227,228],{},"Ctrl+K",[36,230,222],{}," от курсора до конца строки.",[33,233,234,219,237,240],{},[54,235,236],{},"Ctrl+W",[36,238,239],{},"слово"," перед курсором (от текущей позиции до предыдущего разделителя).",[33,242,243,219,246,248],{},[54,244,245],{},"Alt+D",[36,247,239],{}," после курсора (от текущей позиции до следующего разделителя).",[33,250,251,219,254,257,258,191],{},[54,252,253],{},"Ctrl+D",[36,255,256],{},"символ"," под курсором (аналог клавиши ",[54,259,260],{},"Delete",[89,262,264],{"id":263},"вставка-и-отмена","Вставка и отмена",[94,266,267,285,298],{},[33,268,269,272,273,276,277,279,280,279,282,284],{},[54,270,271],{},"Ctrl+Y"," — вставить (",[36,274,275],{},"yank",") последний удалённый текст (сочетания ",[54,278,218],{},", ",[54,281,228],{},[54,283,236],{}," сохраняют текст в буфер).",[33,286,287,290,291,294,295,297],{},[54,288,289],{},"Alt+."," (точка) — вставить ",[36,292,293],{},"последний аргумент"," предыдущей команды. Повторное нажатие ",[54,296,289],{}," циклически переключает аргументы из истории.",[33,299,300,303,304,307,308,191],{},[54,301,302],{},"Ctrl+_"," (или ",[54,305,306],{},"Ctrl+Shift+-",") — отменить последнее изменение (аналог ",[54,309,310],{},"undo",[19,312,313,314,317,318,321,322,325,326,328,329,332],{},"Пример: вы ввели ",[54,315,316],{},"cp file1.txt /path/to/destination/",". Затем хотите скопировать ",[54,319,320],{},"file2.txt"," в то же место. Введите ",[54,323,324],{},"cp file2.txt "," и нажмите ",[54,327,289],{}," — подставится ",[54,330,331],{},"/path/to/destination/",".",[89,334,336],{"id":335},"исправление-опечаток","Исправление опечаток",[94,338,339,345],{},[33,340,341,344],{},[54,342,343],{},"Alt+T"," — поменять местами два последних слова (полезно, если перепутали порядок).",[33,346,347,350],{},[54,348,349],{},"Ctrl+T"," — поменять местами два последних символа (для исправления перестановки букв).",[14,352,354],{"id":353},"поиск-и-работа-с-историей-команд","Поиск и работа с историей команд",[19,356,357],{},"Терминал сохраняет историю всех введённых команд. Эти сочетания позволяют быстро находить и повторять их.",[89,359,361],{"id":360},"обратный-поиск","Обратный поиск",[94,363,364,381],{},[33,365,366,369,370,373,374,376,377,380],{},[54,367,368],{},"Ctrl+R"," — начать ",[36,371,372],{},"обратный поиск"," по истории. Начните вводить часть команды, и терминал покажет первое совпадение. Повторное нажатие ",[54,375,368],{}," ищет предыдущие совпадения. ",[54,378,379],{},"Ctrl+G"," — выйти из поиска, сохранив найденную команду в строке.",[33,382,383,386,387,390,391,191],{},[54,384,385],{},"Ctrl+S"," — ",[36,388,389],{},"прямой поиск"," (может быть заблокирован в некоторых терминалах; разблокировать через ",[54,392,393],{},"stty -ixon",[89,395,397],{"id":396},"навигация-по-истории","Навигация по истории",[94,399,400,406,412,417,434,453,462],{},[33,401,402,405],{},[54,403,404],{},"Ctrl+P"," (или стрелка ↑) — предыдущая команда в истории.",[33,407,408,411],{},[54,409,410],{},"Ctrl+N"," (или стрелка ↓) — следующая команда в истории.",[33,413,414,416],{},[54,415,379],{}," — выйти из режима поиска или отменить текущий ввод.",[33,418,419,422,423,426,427,430,431,332],{},[54,420,421],{},"!!"," — выполнить ",[36,424,425],{},"последнюю"," команду (удобно, если забыли ",[54,428,429],{},"sudo","). Пример: ",[54,432,433],{},"sudo !!",[33,435,436,439,440,442,443,172,446,449,450,332],{},[54,437,438],{},"!$"," — использовать ",[36,441,293],{}," последней команды. Пример: ",[54,444,445],{},"mv file1.txt /tmp/",[54,447,448],{},"cat !$"," откроет ",[54,451,452],{},"/tmp/",[33,454,455,439,458,461],{},[54,456,457],{},"!^",[36,459,460],{},"первый аргумент"," последней команды.",[33,463,464,467,468,471],{},[54,465,466],{},"!-2"," — выполнить команду, введённую ",[36,469,470],{},"два шага назад"," в истории.",[14,473,475],{"id":474},"управление-процессами","Управление процессами",[19,477,478],{},"Когда процесс выполняется в терминале, эти сочетания помогают управлять им без закрытия сессии.",[94,480,481,490,499,511,521,531],{},[33,482,483,386,486,489],{},[54,484,485],{},"Ctrl+C",[36,487,488],{},"прервать"," текущий процесс (发送 SIGINT). Используйте, если команда зависла или нужно остановить.",[33,491,492,386,495,498],{},[54,493,494],{},"Ctrl+Z",[36,496,497],{},"приостановить"," процесс (发送 SIGSTOP) и вернуться в shell. Процесс остаётся в памяти.",[33,500,501,503,504,507,508,191],{},[54,502,253],{}," — отправить ",[36,505,506],{},"EOF"," (конец файла). Если вводится в пустой строке, завершает текущую сессию shell (аналог ",[54,509,510],{},"exit",[33,512,513,516,517,520],{},[54,514,515],{},"bg"," — возобновить приостановленный процесс в ",[36,518,519],{},"фоновом"," режиме.",[33,522,523,526,527,530],{},[54,524,525],{},"fg"," — возобновить приостановленный процесс на ",[36,528,529],{},"переднем плане"," (в текущем терминале).",[33,532,533,536,537,540],{},[54,534,535],{},"jobs"," — список ",[36,538,539],{},"всех"," приостановленных и фоновых задач в текущей сессии.",[19,542,543,544,547,548,550,551,553],{},"Пример: вы запустили ",[54,545,546],{},"sleep 1000",", но Need вернуться в терминал. Нажмите ",[54,549,494],{},", затем ",[54,552,515],{}," — процесс продолжит работать в фоне.",[555,556],"in-article-ad",{},[14,558,560],{"id":559},"продвинутые-настройки-и-кастомизация","Продвинутые настройки и кастомизация",[19,562,563],{},"Хотя стандартных сочетаний достаточно для большинства задач, вы можете настроить свои или улучшить существующие.",[89,565,567],{"id":566},"настройка-bash-через-inputrc","Настройка bash через ~/.inputrc",[19,569,570,571,574],{},"Файл ",[54,572,573],{},"~/.inputrc"," управляет поведением readline (библиотеки, используемой bash). Добавьте строки для новых сочетаний.",[19,576,577,578,581],{},"Пример: сделать ",[54,579,580],{},"Ctrl+Left/Right"," работающими как переход по словам (по умолчанию в некоторых терминалах они отправляют escape-последовательности).",[47,583,585],{"className":49,"code":584,"language":51,"meta":52,"style":52},"# ~/.inputrc\n\"\\e[1;5D\": backward-word   # Ctrl+Left\n\"\\e[1;5C\": forward-word    # Ctrl+Right\n\"\\e[5~\": beginning-of-history  # PageUp для поиска в истории\n\"\\e[6~\": end-of-history        # PageDown\n",[54,586,587,593,610,624,638],{"__ignoreMap":52},[57,588,589],{"class":59,"line":60},[57,590,592],{"class":591},"sJ8bj","# ~/.inputrc\n",[57,594,596,600,603,607],{"class":59,"line":595},2,[57,597,599],{"class":598},"sScJk","\"\\e[1;5D\"",[57,601,602],{"class":63},":",[57,604,606],{"class":605},"sZZnC"," backward-word",[57,608,609],{"class":591},"   # Ctrl+Left\n",[57,611,613,616,618,621],{"class":59,"line":612},3,[57,614,615],{"class":598},"\"\\e[1;5C\"",[57,617,602],{"class":63},[57,619,620],{"class":605}," forward-word",[57,622,623],{"class":591},"    # Ctrl+Right\n",[57,625,627,630,632,635],{"class":59,"line":626},4,[57,628,629],{"class":598},"\"\\e[5~\"",[57,631,602],{"class":63},[57,633,634],{"class":605}," beginning-of-history",[57,636,637],{"class":591},"  # PageUp для поиска в истории\n",[57,639,641,644,646,649],{"class":59,"line":640},5,[57,642,643],{"class":598},"\"\\e[6~\"",[57,645,602],{"class":63},[57,647,648],{"class":605}," end-of-history",[57,650,651],{"class":591},"        # PageDown\n",[19,653,654,655,332],{},"После сохранения файла перезапустите терминал или выполните ",[54,656,657],{},"bind -f ~/.inputrc",[89,659,661],{"id":660},"настройка-zsh-через-zshrc","Настройка zsh через ~/.zshrc",[19,663,664,665,668,669,602],{},"В zsh сочетания управляются через ",[54,666,667],{},"bindkey",". Добавьте в ",[54,670,671],{},"~/.zshrc",[47,673,675],{"className":49,"code":674,"language":51,"meta":52,"style":52},"# Пример: Ctrl+Left/Right для навигации по словам\nbindkey \"^[[1;5D\" backward-word\nbindkey \"^[[1;5C\" forward-word\n# Включить emacs-режим (по умолчанию в zsh может быть vicmd-mode)\nbindkey -e\n",[54,676,677,682,692,702,707],{"__ignoreMap":52},[57,678,679],{"class":59,"line":60},[57,680,681],{"class":591},"# Пример: Ctrl+Left/Right для навигации по словам\n",[57,683,684,686,689],{"class":59,"line":595},[57,685,667],{"class":63},[57,687,688],{"class":605}," \"^[[1;5D\"",[57,690,691],{"class":605}," backward-word\n",[57,693,694,696,699],{"class":59,"line":612},[57,695,667],{"class":63},[57,697,698],{"class":605}," \"^[[1;5C\"",[57,700,701],{"class":605}," forward-word\n",[57,703,704],{"class":59,"line":626},[57,705,706],{"class":591},"# Включить emacs-режим (по умолчанию в zsh может быть vicmd-mode)\n",[57,708,709,711],{"class":59,"line":640},[57,710,667],{"class":63},[57,712,713],{"class":63}," -e\n",[19,715,716,717,332],{},"Перезагрузите zsh: ",[54,718,719],{},"source ~/.zshrc",[89,721,723],{"id":722},"создание-макросов","Создание макросов",[19,725,726,727,602],{},"Вы можете назначить клавишу на последовательность команд. Например, в bash через ",[54,728,573],{},[47,730,732],{"className":49,"code":731,"language":51,"meta":52,"style":52},"# Ctrl+T вставить дату в формате YYYY-MM-DD\n\"\\C-t\": \"date +%Y-%m-%d\"\n",[54,733,734,739],{"__ignoreMap":52},[57,735,736],{"class":59,"line":60},[57,737,738],{"class":591},"# Ctrl+T вставить дату в формате YYYY-MM-DD\n",[57,740,741,744,746],{"class":59,"line":595},[57,742,743],{"class":598},"\"\\C-t\"",[57,745,602],{"class":63},[57,747,748],{"class":605}," \"date +%Y-%m-%d\"\n",[19,750,751,752,602],{},"В zsh через ",[54,753,671],{},[47,755,757],{"className":49,"code":756,"language":51,"meta":52,"style":52},"bindkey \"^T\" insert-datetime\ninsert-datetime() {\n  LBUFFER+=$(date +%Y-%m-%d)\n}\nzle -N insert-datetime\n",[54,758,759,769,777,798,803],{"__ignoreMap":52},[57,760,761,763,766],{"class":59,"line":60},[57,762,667],{"class":63},[57,764,765],{"class":605}," \"^T\"",[57,767,768],{"class":605}," insert-datetime\n",[57,770,771,774],{"class":59,"line":595},[57,772,773],{"class":598},"insert-datetime",[57,775,776],{"class":67},"() {\n",[57,778,779,782,786,789,792,795],{"class":59,"line":612},[57,780,781],{"class":67},"  LBUFFER",[57,783,785],{"class":784},"szBVR","+=",[57,787,788],{"class":67},"$(",[57,790,791],{"class":598},"date",[57,793,794],{"class":605}," +%Y-%m-%d",[57,796,797],{"class":67},")\n",[57,799,800],{"class":59,"line":626},[57,801,802],{"class":67},"}\n",[57,804,805,808,811],{"class":59,"line":640},[57,806,807],{"class":598},"zle",[57,809,810],{"class":63}," -N",[57,812,768],{"class":605},[14,814,816],{"id":815},"практические-советы-по-запоминанию","Практические советы по запоминанию",[30,818,819,836,848,854,866],{},[33,820,821,824,825,279,827,279,829,279,831,279,833,835],{},[36,822,823],{},"Начните с малого"," — выучите 5-7 самых частых сочетаний (например, ",[54,826,100],{},[54,828,110],{},[54,830,218],{},[54,832,228],{},[54,834,368],{},"). Используйте их сознательно каждый день.",[33,837,838,841,842,847],{},[36,839,840],{},"Создайте шпаргалку"," — распечатайте таблицу сочетаний и разместите рядом с монитором. Мы подготовили для вас PDF-шпаргалку — скачайте её ",[843,844,846],"a",{"href":845},"#","здесь"," (в реальной статье будет ссылка).",[33,849,850,853],{},[36,851,852],{},"Практикуйтесь в нерабочее время"," — откройте терминал и попробуйте набирать длинные команды, используя только сочетания, без мыши.",[33,855,856,865],{},[36,857,858,859,861,862,864],{},"Используйте ",[54,860,404],{},"/",[54,863,410],{}," вместо стрелок"," — это привычка быстро приходит.",[33,867,868,871,872,874],{},[36,869,870],{},"Не бойтесь ошибок"," — если случайно удалили текст, ",[54,873,271],{}," вернёт его.",[14,876,878],{"id":877},"проверка-результата","Проверка результата",[19,880,881],{},"После изучения гайда вы должны:",[30,883,884,890,896,904,913],{},[33,885,886,887,332],{},"Быстро перемещаться по длинным командам с помощью ",[54,888,889],{},"Ctrl+A/E/B/F",[33,891,892,893,895],{},"Уметь исправлять опечатки без перепечатывания (например, ",[54,894,218],{}," для удаления части команды).",[33,897,898,899,901,902,332],{},"Находить и повторять предыдущие команды через ",[54,900,368],{}," и ",[54,903,421],{},[33,905,906,907,279,909,279,911,191],{},"Управлять фоновыми задачами (",[54,908,494],{},[54,910,515],{},[54,912,525],{},[33,914,915],{},"При необходимости — настроить собственные сочетания через конфиги.",[19,917,918,921],{},[36,919,920],{},"Тест yourself:"," Откройте терминал и введите сложную команду, например:",[47,923,925],{"className":49,"code":924,"language":51,"meta":52,"style":52},"sudo apt update && sudo apt upgrade -y\n",[54,926,927],{"__ignoreMap":52},[57,928,929,931,934,937,940,942,944,947],{"class":59,"line":60},[57,930,429],{"class":598},[57,932,933],{"class":605}," apt",[57,935,936],{"class":605}," update",[57,938,939],{"class":67}," && ",[57,941,429],{"class":598},[57,943,933],{"class":605},[57,945,946],{"class":605}," upgrade",[57,948,949],{"class":63}," -y\n",[19,951,952],{},"Теперь, не используя стрелок или мышь:",[94,954,955,966,975],{},[33,956,957,958,960,961,963,964,191],{},"Перейдите в начало строки (",[54,959,100],{},"), удалите часть (",[54,962,228],{},"), вставьте обратно (",[54,965,271],{},[33,967,968,969,972,973,332],{},"Найдите команду ",[54,970,971],{},"sudo apt update"," через ",[54,974,368],{},[33,976,977,978,332],{},"Прервите выполнение (если оно длится) через ",[54,979,485],{},[19,981,982],{},"Если всё работает — вы на правильном пути!",[14,984,986],{"id":985},"возможные-проблемы","Возможные проблемы",[89,988,990],{"id":989},"сочетания-не-работают-в-моём-терминале","Сочетания не работают в моём терминале",[94,992,993,1026],{},[33,994,995,998,999,165,1001,1003,1004],{},[36,996,997],{},"Проблема",": ",[54,1000,137],{},[54,1002,145],{}," ничего не делают.\n",[94,1005,1006],{},[33,1007,1008,1011,1012,1014,1015,550,1017,165,1019,1021,1022,1025],{},[36,1009,1010],{},"Решение",": Вместо ",[54,1013,156],{}," используйте ",[54,1016,160],{},[54,1018,164],{},[54,1020,168],{},". Или настройте терминал на отправку ",[54,1023,1024],{},"Meta","-последовательностей (например, в gnome-terminal: Настройки → Клавиши → \"Alt sends ESC\").",[33,1027,1028,998,1030,1032,1033],{},[36,1029,997],{},[54,1031,580],{}," не перемещают по словам.\n",[94,1034,1035],{},[33,1036,1037,1039,1040,165,1042,1044,1045,1048],{},[36,1038,1010],{},": Настройте ",[54,1041,573],{},[54,1043,671],{}," как показано выше. Убедитесь, что escape-последовательности соответствуют вашему терминалу (проверьте через ",[54,1046,1047],{},"cat"," и нажатие комбинации).",[89,1050,1052],{"id":1051},"конфликты-с-приложениями","Конфликты с приложениями",[94,1054,1055],{},[33,1056,1057,1059,1060,165,1063,1066,1067],{},[36,1058,997],{},": В ",[54,1061,1062],{},"vim",[54,1064,1065],{},"nano"," сочетания клавиш могут отличаться или перехватываться.\n",[94,1068,1069],{},[33,1070,1071,1059,1073,1014,1075,1078,1079,1081,1082,861,1085,1087,1088,1090,1091,1094],{},[36,1072,1010],{},[54,1074,1062],{},[54,1076,1077],{},"Ctrl+["," вместо ",[54,1080,160],{},", а для навигации по словам — ",[54,1083,1084],{},"W",[54,1086,164],{}," в нормальном режиме. В ",[54,1089,1065],{}," сочетания похожи на GUI-редакторы (например, ",[54,1092,1093],{},"Ctrl+←","). Учитывайте контекст приложения.",[89,1096,1098],{"id":1097},"zsh-в-режиме-vi","Zsh в режиме vi",[94,1100,1101],{},[33,1102,1103,1105,1106,1109,1110],{},[36,1104,997],{},": По умолчанию zsh может использовать режим ",[54,1107,1108],{},"vi"," (как в vim), где сочетания другие.\n",[94,1111,1112],{},[33,1113,1114,1116,1117,1120,1121,1124,1125,332],{},[36,1115,1010],{},": Переключитесь на режим ",[54,1118,1119],{},"emacs"," (более привычный для bash) добавлением ",[54,1122,1123],{},"bindkey -e"," в ",[54,1126,671],{},[89,1128,1130],{"id":1129},"сброс-настроек","Сброс настроек",[94,1132,1133],{},[33,1134,1135,1136,861,1138,1140],{},"Если сломали конфигурацию, удалите или переименуйте ",[54,1137,573],{},[54,1139,671],{}," и перезапустите терминал — вернутся настройки по умолчанию.",[89,1142,1144],{"id":1143},"разные-терминалы","Разные терминалы",[94,1146,1147],{},[33,1148,1149],{},"В графических терминалах (gnome-terminal, konsole) сочетания обычно работают из коробки. В консоли (Ctrl+Alt+F1) некоторые escape-последовательности могут отличаться. Тестируйте в вашем окружении.",[1151,1152,1153],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":52,"searchDepth":595,"depth":595,"links":1155},[1156,1157,1158,1162,1167,1171,1172,1177,1178,1179],{"id":16,"depth":595,"text":17},{"id":24,"depth":595,"text":25},{"id":83,"depth":595,"text":84,"children":1159},[1160,1161],{"id":91,"depth":612,"text":92},{"id":178,"depth":612,"text":179},{"id":203,"depth":595,"text":204,"children":1163},[1164,1165,1166],{"id":210,"depth":612,"text":211},{"id":263,"depth":612,"text":264},{"id":335,"depth":612,"text":336},{"id":353,"depth":595,"text":354,"children":1168},[1169,1170],{"id":360,"depth":612,"text":361},{"id":396,"depth":612,"text":397},{"id":474,"depth":595,"text":475},{"id":559,"depth":595,"text":560,"children":1173},[1174,1175,1176],{"id":566,"depth":612,"text":567},{"id":660,"depth":612,"text":661},{"id":722,"depth":612,"text":723},{"id":815,"depth":595,"text":816},{"id":877,"depth":595,"text":878},{"id":985,"depth":595,"text":986,"children":1180},[1181,1182,1183,1184,1185],{"id":989,"depth":612,"text":990},{"id":1051,"depth":612,"text":1052},{"id":1097,"depth":612,"text":1098},{"id":1129,"depth":612,"text":1130},{"id":1143,"depth":612,"text":1144},null,"2026-02-16 12:39:54","Полное руководство по горячим клавишам терминала Linux для bash и zsh. Увеличьте продуктивность на 50% с проверенными сочетаниями клавиш. Скачайте шпаргалку в конце и начните практиковаться!","easy",false,"10-15 мин","md",[1194,1197,1200,1203],{"answer":1195,"question":1196},"Начните с 5-10 основных сочетаний и практикуйте их ежедневно. Используйте шпаргалку, которую мы предоставляем в конце гайда.","Как быстро выучить все сочетания клавиш?",{"answer":1198,"question":1199},"Большинство сочетаний одинаковы, так как оба используют библиотеку readline, но zsh имеет дополнительные возможности. В гайде мы отмечаем различия где необходимо.","Есть ли различия в сочетаниях клавиш между bash и zsh?",{"answer":1201,"question":1202},"Проверьте, не конфликтует ли оно с настройками терминала или приложением. Вы можете переназначить сочетания через ~/.inputrc для bash или ~/.zshrc для zsh.","Что делать, если какое-то сочетание не работает в моём терминале?",{"answer":1204,"question":1205},"Да, вы можете настроить собственные сочетания через конфигурационные файлы readline или zsh. Мы подробно разбираем это в разделе продвинутых настроек.","Можно ли создавать собственные сочетания клавиш?",[1207,1210,1213,1216,1219,1222],{"name":1208,"text":1209},"Изучите базовые сочетания для навигации","Ознакомьтесь с основными комбинациями, такими как Ctrl+A для перехода в начало строки и Ctrl+E для конца.",{"name":1211,"text":1212},"Освойте сочетания для редактирования команд","Научитесь использовать Ctrl+U для удаления до начала и Ctrl+K для удаления до конца строки.",{"name":1214,"text":1215},"Практикуйте поиск по истории","Используйте Ctrl+R для обратного поиска по истории команд и Ctrl+P/Ctrl+N для навигации.",{"name":1217,"text":1218},"Изучите управление процессами","Познакомьтесь с Ctrl+C для прерывания и Ctrl+Z для приостановки процессов.",{"name":1220,"text":1221},"Настройте свои сочетания (опционально)","При необходимости настройте пользовательские сочетания через ~/.inputrc или ~/.zshrc.",{"name":1223,"text":1224},"Регулярно практикуйтесь","Постоянное использование поможет закрепить сочетания в памяти и повысить скорость работы.","PT15M",[1227,1228,1229,1230,1231,1232,1233,1234,1235,1236],"сочетания клавиш терминала Linux","горячие клавиши bash","как ускорить работу в командной строке","bash shortcuts","zsh hotkeys","навигация в терминале Linux","редактирование команд в bash","управление процессами через терминал","сочетания клавиш для Linux","terminal shortcuts linux","ru_RU",{},true,"/guides/linux/command-line-shortcuts","linux",[1243,1244,1245],"/guides/linux/customize-bash-prompt","/guides/linux/process-management-basics","/guides/linux/zsh-installation-configuration","Гайды Linux",{"title":5,"description":1188},"guides/linux/command-line-shortcuts","Этот гайд покрывает основные и продвинутые сочетания клавиш для bash и zsh в Linux, которые помогут вам быстрее навигациировать, редактировать команды и управлять процессами в терминале.",[1251,51,1252,1253,1254,1255,1256],"терминал","shortcuts","Linux","cli","zsh","горячие клавиши","guide","wJH0K8KpLH5MJJ8UyR7UBtZDHX5bzuvLsjXeFqW0ui0",{"data":1260,"body":1261},{},{"type":1262,"children":1263},"root",[1264],{"type":1265,"tag":19,"props":1266,"children":1267},"element",{},[1268],{"type":1269,"value":1195},"text",{"data":1271,"body":1272},{},{"type":1262,"children":1273},[1274],{"type":1265,"tag":19,"props":1275,"children":1276},{},[1277],{"type":1269,"value":1198},{"data":1279,"body":1280},{},{"type":1262,"children":1281},[1282],{"type":1265,"tag":19,"props":1283,"children":1284},{},[1285],{"type":1269,"value":1201},{"data":1287,"body":1288},{},{"type":1262,"children":1289},[1290],{"type":1265,"tag":19,"props":1291,"children":1292},{},[1293],{"type":1269,"value":1204},{"data":1295,"body":1296},{},{"type":1262,"children":1297},[1298],{"type":1265,"tag":19,"props":1299,"children":1300},{},[1301],{"type":1269,"value":1209},{"data":1303,"body":1304},{},{"type":1262,"children":1305},[1306],{"type":1265,"tag":19,"props":1307,"children":1308},{},[1309],{"type":1269,"value":1212},{"data":1311,"body":1312},{},{"type":1262,"children":1313},[1314],{"type":1265,"tag":19,"props":1315,"children":1316},{},[1317],{"type":1269,"value":1215},{"data":1319,"body":1320},{},{"type":1262,"children":1321},[1322],{"type":1265,"tag":19,"props":1323,"children":1324},{},[1325],{"type":1269,"value":1218},{"data":1327,"body":1328},{},{"type":1262,"children":1329},[1330],{"type":1265,"tag":19,"props":1331,"children":1332},{},[1333],{"type":1269,"value":1221},{"data":1335,"body":1336},{},{"type":1262,"children":1337},[1338],{"type":1265,"tag":19,"props":1339,"children":1340},{},[1341],{"type":1269,"value":1224},[1343,2324,3948],{"id":1344,"title":1345,"appliesTo":1346,"author":9,"body":1351,"canonical":1186,"code":1186,"createdAt":2269,"description":2270,"difficulty":2271,"draft":1190,"estimatedTime":2272,"extension":1192,"faq":2273,"howToSteps":2286,"howToTotalTime":2299,"image":1186,"keywords":2300,"locale":1237,"meta":2311,"navigation":1239,"path":1243,"platform":1241,"related":2312,"section":1246,"seo":2316,"severity":1186,"stem":2317,"summary":2318,"tags":2319,"twitterCreator":1186,"twitterSite":1186,"type":1257,"updatedAt":2269,"__hash__":2323},"content_ru/guides/linux/customize-bash-prompt.md","Кастомизация bash prompt: настройка PS1, цветов и информации",[1347,1348,1349,1350],"Bash 4.0+","Ubuntu 20.04+","Fedora 35+","Arch Linux",{"type":11,"value":1352,"toc":2247},[1353,1355,1362,1364,1394,1398,1408,1411,1423,1426,1430,1437,1590,1601,1605,1608,1614,1629,1632,1671,1678,1680,1684,1687,1701,1704,1723,1730,1756,1766,1770,1774,1781,1795,1799,1810,1824,1830,1853,1857,1862,1909,1912,1926,1929,1933,1936,2020,2023,2044,2061,2063,2109,2111,2115,2126,2139,2143,2154,2158,2181,2185,2190,2194,2218,2224,2232,2244],[14,1354,17],{"id":16},[19,1356,1357,1358,1361],{},"Приглашение командной строки (bash prompt) — это строка, которую вы видите перед курсором в терминале. По умолчанию оно обычно выглядит как ",[54,1359,1360],{},"user@host:~/path$",". Кастомизация prompt делает работу в терминале более информативной и визуально приятной. Вы можете добавить отображение текущего времени, статуса последней команды, ветки Git, а также использовать цвета для выделения важной информации. После выполнения этого гайда вы получите prompt, который будет подстраиваться под ваши задачи и предпочтения.",[14,1363,25],{"id":24},[30,1365,1366,1372,1378,1391],{},[33,1367,1368,1369,332],{},"У вас должен быть установлен bash (версии 4.0 и выше). Проверить версию: ",[54,1370,1371],{},"bash --version",[33,1373,1374,1375,332],{},"Убедитесь, что у вас есть доступ к домашней директории и возможность редактировать файл ",[54,1376,1377],{},"~/.bashrc",[33,1379,1380,1381,1384,1385,165,1388,191],{},"Рекомендуется использовать терминал, поддерживающий 256 цветов (например, GNOME Terminal, Konsole, iTerm2). Проверить: ",[54,1382,1383],{},"echo $TERM"," (должно быть ",[54,1386,1387],{},"xterm-256color",[54,1389,1390],{},"screen-256color",[33,1392,1393],{},"Базовые знания о редактировании текстовых файлов в Linux (nano, vim, etc.).",[14,1395,1397],{"id":1396},"шаг-1-найдите-и-откройте-конфигурационный-файл-bash","Шаг 1: Найдите и откройте конфигурационный файл bash",[19,1399,1400,1401,1403,1404,1407],{},"Бash читает конфигурационные файлы при запуске. Для интерактивных оболочек это обычно ",[54,1402,1377],{}," (для пользователя) или ",[54,1405,1406],{},"/etc/bash.bashrc"," (системный). Мы будем редактировать пользовательский файл, чтобы изменения не затрагивали других пользователей.",[19,1409,1410],{},"Откройте терминал и выполните:",[47,1412,1414],{"className":49,"code":1413,"language":51,"meta":52,"style":52},"nano ~/.bashrc\n",[54,1415,1416],{"__ignoreMap":52},[57,1417,1418,1420],{"class":59,"line":60},[57,1419,1065],{"class":598},[57,1421,1422],{"class":605}," ~/.bashrc\n",[19,1424,1425],{},"Или используйте предпочитаемый редактор (vim, code, gedit). Если файл пустой или отсутствует, создайте его.",[14,1427,1429],{"id":1428},"шаг-2-поймите-структуру-переменной-ps1","Шаг 2: Поймите структуру переменной PS1",[19,1431,1432,1433,1436],{},"Переменная ",[54,1434,1435],{},"PS1"," определяет основной prompt. Она поддерживает множество escape-последовательностей, которые заменяются на актуальные данные. Вот основные:",[1438,1439,1440,1453],"table",{},[1441,1442,1443],"thead",{},[1444,1445,1446,1450],"tr",{},[1447,1448,1449],"th",{},"Escape-последовательность",[1447,1451,1452],{},"Описание",[1454,1455,1456,1467,1477,1487,1501,1511,1527,1537,1547,1557,1567,1577],"tbody",{},[1444,1457,1458,1464],{},[1459,1460,1461],"td",{},[54,1462,1463],{},"\\u",[1459,1465,1466],{},"Имя текущего пользователя",[1444,1468,1469,1474],{},[1459,1470,1471],{},[54,1472,1473],{},"\\h",[1459,1475,1476],{},"Имя хоста (до первой точки)",[1444,1478,1479,1484],{},[1459,1480,1481],{},[54,1482,1483],{},"\\H",[1459,1485,1486],{},"Полное имя хоста",[1444,1488,1489,1494],{},[1459,1490,1491],{},[54,1492,1493],{},"\\w",[1459,1495,1496,1497,1500],{},"Полный путь текущей директории, с ",[54,1498,1499],{},"~"," для домашней",[1444,1502,1503,1508],{},[1459,1504,1505],{},[54,1506,1507],{},"\\W",[1459,1509,1510],{},"Только имя текущей директории",[1444,1512,1513,1518],{},[1459,1514,1515],{},[54,1516,1517],{},"\\$",[1459,1519,1520,1522,1523,1526],{},[54,1521,845],{}," для root, ",[54,1524,1525],{},"$"," для обычного пользователя",[1444,1528,1529,1534],{},[1459,1530,1531],{},[54,1532,1533],{},"\\t",[1459,1535,1536],{},"Текущее время в 24-часовом формате (HH:MM:SS)",[1444,1538,1539,1544],{},[1459,1540,1541],{},[54,1542,1543],{},"\\T",[1459,1545,1546],{},"Время в 12-часовом формате (HH:MM:SS)",[1444,1548,1549,1554],{},[1459,1550,1551],{},[54,1552,1553],{},"\\@",[1459,1555,1556],{},"Время в 12-часовом формате с AM/PM",[1444,1558,1559,1564],{},[1459,1560,1561],{},[54,1562,1563],{},"\\d",[1459,1565,1566],{},"Дата в формате \"День ММ ГГГГ\"",[1444,1568,1569,1574],{},[1459,1570,1571],{},[54,1572,1573],{},"\\n",[1459,1575,1576],{},"Новая строка",[1444,1578,1579,1587],{},[1459,1580,1581,901,1584],{},[54,1582,1583],{},"\\[",[54,1585,1586],{},"\\]",[1459,1588,1589],{},"Обозначают начало и конец непечатаемых символов (например, для цветов)",[19,1591,1592,1595,1596,901,1598,1600],{},[36,1593,1594],{},"Важно",": Для цветов используются escape-последовательности ANSI, которые нужно заключать в ",[54,1597,1583],{},[54,1599,1586],{},", чтобы bash правильно считал длину prompt.",[14,1602,1604],{"id":1603},"шаг-3-добавьте-простые-цвета-и-информацию","Шаг 3: Добавьте простые цвета и информацию",[19,1606,1607],{},"Давайте создадим простой цветной prompt, который показывает пользователя, хост и текущую директорию.",[19,1609,1610,1611,1613],{},"Добавьте в ",[54,1612,1377],{}," строку:",[47,1615,1617],{"className":49,"code":1616,"language":51,"meta":52,"style":52},"PS1='\\[\\e[0;32m\\]\\u@\\h:\\w\\$ \\[\\e[m\\] '\n",[54,1618,1619],{"__ignoreMap":52},[57,1620,1621,1623,1626],{"class":59,"line":60},[57,1622,1435],{"class":67},[57,1624,1625],{"class":784},"=",[57,1627,1628],{"class":605},"'\\[\\e[0;32m\\]\\u@\\h:\\w\\$ \\[\\e[m\\] '\n",[19,1630,1631],{},"Разберем:",[94,1633,1634,1648,1662,1668],{},[33,1635,1636,1639,1640,1643,1644,1647],{},[54,1637,1638],{},"\\[\\e[0;32m\\]"," — включает зеленый цвет (код 32). ",[54,1641,1642],{},"\\e"," — escape-символ, ",[54,1645,1646],{},"[0;32m"," — код цвета.",[33,1649,1650,1653,1654,1657,1658,165,1660,332],{},[54,1651,1652],{},"\\u@\\h:\\w\\$"," — комбинация escape-последовательностей: пользователь, символ ",[54,1655,1656],{},"@",", хост, двоеточие, текущий путь, ",[54,1659,1525],{},[54,1661,845],{},[33,1663,1664,1667],{},[54,1665,1666],{},"\\[\\e[m\\]"," — сброс цветов к стандартным.",[33,1669,1670],{},"Пробел в конце для удобства.",[19,1672,1673,1674,1677],{},"После сохранения файла выполните ",[54,1675,1676],{},"source ~/.bashrc"," или откройте новый терминал. Вы должны увидеть зеленый prompt.",[555,1679],{},[14,1681,1683],{"id":1682},"шаг-4-используйте-более-сложные-цвета-и-форматирование","Шаг 4: Используйте более сложные цвета и форматирование",[19,1685,1686],{},"Вы можете комбинировать цвета и атрибуты (жирный, подчеркивание). Например, для жирного зеленого текста:",[47,1688,1690],{"className":49,"code":1689,"language":51,"meta":52,"style":52},"PS1='\\[\\e[1;32m\\]\\u@\\h\\[\\e[m\\]:\\[\\e[1;34m\\]\\w\\[\\e[m\\]\\$ '\n",[54,1691,1692],{"__ignoreMap":52},[57,1693,1694,1696,1698],{"class":59,"line":60},[57,1695,1435],{"class":67},[57,1697,1625],{"class":784},[57,1699,1700],{"class":605},"'\\[\\e[1;32m\\]\\u@\\h\\[\\e[m\\]:\\[\\e[1;34m\\]\\w\\[\\e[m\\]\\$ '\n",[19,1702,1703],{},"Здесь:",[94,1705,1706,1712,1717],{},[33,1707,1708,1711],{},[54,1709,1710],{},"\\[\\e[1;32m\\]"," — жирный зеленый (1 — жирный, 32 — зеленый).",[33,1713,1714,1716],{},[54,1715,1666],{}," — сброс после имени пользователя и хоста.",[33,1718,1719,1722],{},[54,1720,1721],{},"\\[\\e[1;34m\\]"," — жирный синий для пути.",[19,1724,1725,1726,1729],{},"Список цветов (перед кодом можно добавить ",[54,1727,1728],{},"1;"," для жирного):",[94,1731,1732,1735,1738,1741,1744,1747,1750,1753],{},[33,1733,1734],{},"Черный: 30",[33,1736,1737],{},"Красный: 31",[33,1739,1740],{},"Зеленый: 32",[33,1742,1743],{},"Желтый: 33",[33,1745,1746],{},"Синий: 34",[33,1748,1749],{},"Пурпурный: 35",[33,1751,1752],{},"Голубой: 36",[33,1754,1755],{},"Белый: 37",[19,1757,1758,1759,169,1762,1765],{},"Также можно использовать 256-цветовую палитру: ",[54,1760,1761],{},"\\[\\e[38;5;{номер}м\\]",[54,1763,1764],{},"\\[\\e[38;5;202m\\]"," для оранжевого). Номер цвета от 0 до 255.",[14,1767,1769],{"id":1768},"шаг-5-добавьте-динамическую-информацию-время-статус-git","Шаг 5: Добавьте динамическую информацию (время, статус, Git)",[89,1771,1773],{"id":1772},"время","Время",[19,1775,1776,1777,165,1779,602],{},"Чтобы добавить текущее время, используйте ",[54,1778,1533],{},[54,1780,1553],{},[47,1782,1784],{"className":49,"code":1783,"language":51,"meta":52,"style":52},"PS1='\\[\\e[0;33m\\]\\t \\[\\e[m\\]\\u@\\h:\\w\\$ '\n",[54,1785,1786],{"__ignoreMap":52},[57,1787,1788,1790,1792],{"class":59,"line":60},[57,1789,1435],{"class":67},[57,1791,1625],{"class":784},[57,1793,1794],{"class":605},"'\\[\\e[0;33m\\]\\t \\[\\e[m\\]\\u@\\h:\\w\\$ '\n",[89,1796,1798],{"id":1797},"статус-последней-команды","Статус последней команды",[19,1800,1801,1802,1805,1806,1809],{},"Escape-последовательность ",[54,1803,1804],{},"\\$?"," возвращает код выхода последней команды (0 — успех, не 0 — ошибка). Но в PS1 она не работает напрямую. Нужно использовать команду-подстановку или условную конструкцию. Пример с отображением ",[54,1807,1808],{},"!"," при ошибке:",[47,1811,1813],{"className":49,"code":1812,"language":51,"meta":52,"style":52},"PS1='\\[\\e[0;31m\\]$(if [[ $? != 0 ]]; then echo \"! \"; fi)\\[\\e[m\\]\\u@\\h:\\w\\$ '\n",[54,1814,1815],{"__ignoreMap":52},[57,1816,1817,1819,1821],{"class":59,"line":60},[57,1818,1435],{"class":67},[57,1820,1625],{"class":784},[57,1822,1823],{"class":605},"'\\[\\e[0;31m\\]$(if [[ $? != 0 ]]; then echo \"! \"; fi)\\[\\e[m\\]\\u@\\h:\\w\\$ '\n",[19,1825,1826,1827,602],{},"Однако это может замедлять prompt, так как выполняется для каждого вызова. Более эффективный способ — использовать ",[54,1828,1829],{},"PROMPT_COMMAND",[47,1831,1833],{"className":49,"code":1832,"language":51,"meta":52,"style":52},"PROMPT_COMMAND='RET=$?; [[ $RET != 0 ]] && echo -n \"!$RET \"'\nPS1='\\[\\e[0;33m\\]\\u@\\h:\\w\\$ \\[\\e[m\\]'\n",[54,1834,1835,1844],{"__ignoreMap":52},[57,1836,1837,1839,1841],{"class":59,"line":60},[57,1838,1829],{"class":67},[57,1840,1625],{"class":784},[57,1842,1843],{"class":605},"'RET=$?; [[ $RET != 0 ]] && echo -n \"!$RET \"'\n",[57,1845,1846,1848,1850],{"class":59,"line":595},[57,1847,1435],{"class":67},[57,1849,1625],{"class":784},[57,1851,1852],{"class":605},"'\\[\\e[0;33m\\]\\u@\\h:\\w\\$ \\[\\e[m\\]'\n",[89,1854,1856],{"id":1855},"информация-о-git","Информация о Git",[19,1858,1859,1860,602],{},"Если вы работаете с Git, полезно отображать текущую ветку. Добавьте функцию в ",[54,1861,1377],{},[47,1863,1865],{"className":49,"code":1864,"language":51,"meta":52,"style":52},"parse_git_branch() {\n    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \\(.*\\)/ (\\1)/'\n}\n",[54,1866,1867,1874,1905],{"__ignoreMap":52},[57,1868,1869,1872],{"class":59,"line":60},[57,1870,1871],{"class":598},"parse_git_branch",[57,1873,776],{"class":67},[57,1875,1876,1879,1882,1885,1888,1891,1894,1897,1900,1902],{"class":59,"line":595},[57,1877,1878],{"class":598},"    git",[57,1880,1881],{"class":605}," branch",[57,1883,1884],{"class":784}," 2>",[57,1886,1887],{"class":605}," /dev/null",[57,1889,1890],{"class":784}," |",[57,1892,1893],{"class":598}," sed",[57,1895,1896],{"class":63}," -e",[57,1898,1899],{"class":605}," '/^[^*]/d'",[57,1901,1896],{"class":63},[57,1903,1904],{"class":605}," 's/* \\(.*\\)/ (\\1)/'\n",[57,1906,1907],{"class":59,"line":612},[57,1908,802],{"class":67},[19,1910,1911],{},"Затем используйте в PS1:",[47,1913,1915],{"className":49,"code":1914,"language":51,"meta":52,"style":52},"PS1='\\[\\e[0;36m\\]\\u@\\h\\[\\e[m\\]:\\[\\e[1;34m\\]\\w\\[\\e[0;33m\\]$(parse_git_branch)\\[\\e[m\\]\\$ '\n",[54,1916,1917],{"__ignoreMap":52},[57,1918,1919,1921,1923],{"class":59,"line":60},[57,1920,1435],{"class":67},[57,1922,1625],{"class":784},[57,1924,1925],{"class":605},"'\\[\\e[0;36m\\]\\u@\\h\\[\\e[m\\]:\\[\\e[1;34m\\]\\w\\[\\e[0;33m\\]$(parse_git_branch)\\[\\e[m\\]\\$ '\n",[19,1927,1928],{},"Эта функция будет показывать ветку в скобках, если текущая директория — репозиторий Git.",[14,1930,1932],{"id":1931},"шаг-6-оптимизируйте-и-комбинируйте","Шаг 6: Оптимизируйте и комбинируйте",[19,1934,1935],{},"Теперь объединим всё: цвета, время, Git, статус. Пример продвинутого prompt:",[47,1937,1939],{"className":49,"code":1938,"language":51,"meta":52,"style":52},"# Функция для Git\nparse_git_branch() {\n    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \\(.*\\)/ (\\1)/'\n}\n\n# PROMPT_COMMAND для статуса\nPROMPT_COMMAND='RET=$?; [[ $RET != 0 ]] && echo -ne \"\\e[0;31m!$RET \\e[m\"'\n\n# Сам PS1\nPS1='\\[\\e[0;33m\\]\\t \\[\\e[m\\]\\u@\\h:\\[\\e[1;34m\\]\\w\\[\\e[0;32m\\]$(parse_git_branch)\\[\\e[m\\]\\$ '\n",[54,1940,1941,1946,1952,1974,1978,1983,1989,1999,2004,2010],{"__ignoreMap":52},[57,1942,1943],{"class":59,"line":60},[57,1944,1945],{"class":591},"# Функция для Git\n",[57,1947,1948,1950],{"class":59,"line":595},[57,1949,1871],{"class":598},[57,1951,776],{"class":67},[57,1953,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972],{"class":59,"line":612},[57,1955,1878],{"class":598},[57,1957,1881],{"class":605},[57,1959,1884],{"class":784},[57,1961,1887],{"class":605},[57,1963,1890],{"class":784},[57,1965,1893],{"class":598},[57,1967,1896],{"class":63},[57,1969,1899],{"class":605},[57,1971,1896],{"class":63},[57,1973,1904],{"class":605},[57,1975,1976],{"class":59,"line":626},[57,1977,802],{"class":67},[57,1979,1980],{"class":59,"line":640},[57,1981,1982],{"emptyLinePlaceholder":1239},"\n",[57,1984,1986],{"class":59,"line":1985},6,[57,1987,1988],{"class":591},"# PROMPT_COMMAND для статуса\n",[57,1990,1992,1994,1996],{"class":59,"line":1991},7,[57,1993,1829],{"class":67},[57,1995,1625],{"class":784},[57,1997,1998],{"class":605},"'RET=$?; [[ $RET != 0 ]] && echo -ne \"\\e[0;31m!$RET \\e[m\"'\n",[57,2000,2002],{"class":59,"line":2001},8,[57,2003,1982],{"emptyLinePlaceholder":1239},[57,2005,2007],{"class":59,"line":2006},9,[57,2008,2009],{"class":591},"# Сам PS1\n",[57,2011,2013,2015,2017],{"class":59,"line":2012},10,[57,2014,1435],{"class":67},[57,2016,1625],{"class":784},[57,2018,2019],{"class":605},"'\\[\\e[0;33m\\]\\t \\[\\e[m\\]\\u@\\h:\\[\\e[1;34m\\]\\w\\[\\e[0;32m\\]$(parse_git_branch)\\[\\e[m\\]\\$ '\n",[19,2021,2022],{},"Этот prompt:",[94,2024,2025,2028,2031,2034,2037],{},[33,2026,2027],{},"Показывает время (желтый).",[33,2029,2030],{},"Имя пользователя и хост (стандартный цвет).",[33,2032,2033],{},"Текущий путь (жирный синий).",[33,2035,2036],{},"Ветку Git (зеленый).",[33,2038,2039,2040,2043],{},"При ошибке предыдущей команды выводит ",[54,2041,2042],{},"!код"," красным.",[19,2045,2046,2049,2050,2053,2054,2057,2058,2060],{},[36,2047,2048],{},"Совет",": Если prompt становится слишком длинным или медленным (например, из-за частых вызовов ",[54,2051,2052],{},"git","), упростите его. Для Git можно использовать более быстрые альтернативы, например, ",[54,2055,2056],{},"__git_ps1"," из пакета ",[54,2059,2052],{}," (если установлен).",[14,2062,878],{"id":877},[30,2064,2065,2074,2077,2098],{},[33,2066,2067,2068,2070,2071,2073],{},"После внесения изменений в ",[54,2069,1377],{}," выполните ",[54,2072,1676],{}," или закройте и откройте терминал заново.",[33,2075,2076],{},"Убедитесь, что prompt отображается с цветами и информацией.",[33,2078,2079,2080],{},"Проверьте сценарии:\n",[94,2081,2082,2085,2092],{},[33,2083,2084],{},"Перейдите в директорию с Git-репозиторием — должна отобразиться ветка.",[33,2086,2087,2088,2091],{},"Выполните команду, которая завершится с ошибкой (например, ",[54,2089,2090],{},"ls non_existent_file","). В следующем prompt должен появиться код ошибки.",[33,2093,2094,2095,2097],{},"Проверьте, что цвета не \"разбегаются\" (после сброса ",[54,2096,1666],{}," следующий текст должен быть стандартного цвета).",[33,2099,2100,2101,2103,2104,861,2106,2108],{},"Если что-то не работает, проверьте синтаксис в ",[54,2102,1377],{}," (лишние кавычки, отсутствие ",[54,2105,1583],{},[54,2107,1586],{}," для цветов).",[14,2110,986],{"id":985},[89,2112,2114],{"id":2113},"проблема-1-цвета-не-отображаются-или-разбегаются","Проблема 1: Цвета не отображаются или \"разбегаются\"",[19,2116,2117,2120,2121,901,2123,2125],{},[36,2118,2119],{},"Причина",": Неправильное использование ",[54,2122,1583],{},[54,2124,1586],{}," вокруг непечатаемых символов (escape-последовательностей). Bash использует эти маркеры для корректного расчета длины prompt. Если их нет, курсор может смещаться.",[19,2127,2128,2130,2131,901,2133,2135,2136,332],{},[36,2129,1010],{},": Убедитесь, что каждый блок цвета (включая сброс) обернут в ",[54,2132,1583],{},[54,2134,1586],{},". Пример правильного: ",[54,2137,2138],{},"\\[\\e[0;32m\\]...\\[\\e[m\\]",[89,2140,2142],{"id":2141},"проблема-2-prompt-слишком-медленный","Проблема 2: Prompt слишком медленный",[19,2144,2145,2147,2148,165,2151,2153],{},[36,2146,2119],{},": Выполнение тяжелых команд (например, ",[54,2149,2150],{},"git status",[54,2152,1871],{}," без кэширования) при каждом выводе prompt.",[19,2155,2156,602],{},[36,2157,1010],{},[94,2159,2160,2169,2178],{},[33,2161,2162,2163,2165,2166,2168],{},"Упростите функцию Git, используя ",[54,2164,2056],{}," (если установлен пакет ",[54,2167,2052],{},"). Он оптимизирован.",[33,2170,2171,2172,2174,2175,191],{},"Или добавьте кэширование: например, обновлять информацию о Git только при изменении директории (через ",[54,2173,1829],{}," и проверку ",[54,2176,2177],{},"$PWD",[33,2179,2180],{},"Удалите ненужные данные из PS1.",[89,2182,2184],{"id":2183},"проблема-3-unicode-символы-или-эмодзи-отображаются-некорректно","Проблема 3: Unicode-символы или эмодзи отображаются некорректно",[19,2186,2187,2189],{},[36,2188,2119],{},": Терминал или шрифт не поддерживают эти символы, или локаль не в UTF-8.",[19,2191,2192,602],{},[36,2193,1010],{},[94,2195,2196,2199,2215],{},[33,2197,2198],{},"Установите шрифт с поддержкой эмодзи (например, Nerd Fonts).",[33,2200,2201,2202,2205,2206,2209,2210,1124,2213,332],{},"Проверьте локаль: ",[54,2203,2204],{},"locale"," должен содержать ",[54,2207,2208],{},"UTF-8",". При необходимости: ",[54,2211,2212],{},"export LANG=en_US.UTF-8",[54,2214,1377],{},[33,2216,2217],{},"Убедитесь, что терминал настроен на UTF-8.",[89,2219,2221,2222],{"id":2220},"проблема-4-изменения-не-применяются-после-source-bashrc","Проблема 4: Изменения не применяются после ",[54,2223,1676],{},[19,2225,2226,2228,2229,2231],{},[36,2227,2119],{},": Синтаксическая ошибка в ",[54,2230,1377],{}," (например, незакрытая кавычка). Bash может не загружать файл при ошибке.",[19,2233,2234,2236,2237,2240,2241,2243],{},[36,2235,1010],{},": Проверьте файл на синтаксис, выполнив ",[54,2238,2239],{},"bash -n ~/.bashrc",". Исправьте ошибки. Также убедитесь, что вы не перезаписываете ",[54,2242,1435],{}," позже в том же файле (порядок важен).",[1151,2245,2246],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":52,"searchDepth":595,"depth":595,"links":2248},[2249,2250,2251,2252,2253,2254,2255,2260,2261,2262],{"id":16,"depth":595,"text":17},{"id":24,"depth":595,"text":25},{"id":1396,"depth":595,"text":1397},{"id":1428,"depth":595,"text":1429},{"id":1603,"depth":595,"text":1604},{"id":1682,"depth":595,"text":1683},{"id":1768,"depth":595,"text":1769,"children":2256},[2257,2258,2259],{"id":1772,"depth":612,"text":1773},{"id":1797,"depth":612,"text":1798},{"id":1855,"depth":612,"text":1856},{"id":1931,"depth":595,"text":1932},{"id":877,"depth":595,"text":878},{"id":985,"depth":595,"text":986,"children":2263},[2264,2265,2266,2267],{"id":2113,"depth":612,"text":2114},{"id":2141,"depth":612,"text":2142},{"id":2183,"depth":612,"text":2184},{"id":2220,"depth":612,"text":2268},"Проблема 4: Изменения не применяются после source ~/.bashrc","2026-02-16 12:52:35","Полное руководство по изменению приглашения командной строки в bash. Научитесь настраивать PS1, добавлять цвета, время, текущую директорию и другие данные. Примеры для Ubuntu, Fedora, Arch Linux.","medium","15-30 мин",[2274,2277,2280,2283],{"answer":2275,"question":2276},"Чтобы вернуть стандартный prompt, удалите или закомментируйте изменения в переменной PS1 в файле ~/.bashrc и выполните `source ~/.bashrc`.","Как вернуть стандартный prompt в bash?",{"answer":2278,"question":2279},"Убедитесь, что ваш терминал поддерживает 256 цветов и что вы используете правильные escape-последовательности. Также проверьте, что переменная TERM установлена в xterm-256color.","Почему цвета в bash prompt не работают?",{"answer":2281,"question":2282},"Используйте escape-последовательность `\\` (полный путь) или `\\` (только имя текущей директории) в значении PS1.","Как добавить текущую директорию в prompt?",{"answer":2284,"question":2285},"Да, но убедитесь, что ваш терминал и шрифт поддерживают эти символы. Также может потребоваться установка локали в UTF-8.","Можно ли использовать Unicode символы в bash prompt?",[2287,2290,2293,2296],{"name":2288,"text":2289},"Откройте файл ~/.bashrc","Откройте файл ~/.bashrc в любом текстовом редакторе (nano, vim, code и т.д.).",{"name":2291,"text":2292},"Найдите переменную PS1","В файле найдите строку, начинающуюся с `PS1=`. Если такой строки нет, добавьте ее.",{"name":2294,"text":2295},"Измените PS1 под свои нужды","Измените значение PS1, используя escape-последовательности для цветов и информации. Пример: `PS1='\\\\[0;32m\\\\@\\:\\\\ \\\\[m\\'`.",{"name":2297,"text":2298},"Примените изменения","Сохраните файл и выполните команду `source ~/.bashrc` или перезапустите терминал.","PT20M",[2301,2302,2303,2304,2305,2306,2307,2308,2309,2310],"кастомизация bash prompt","изменить приглащение bash","PS1 bash","цвета в bash prompt","bashrc prompt","как настроить bash prompt","пользовательское приглащение bash","bash prompt цвета","bash prompt примеры","bash prompt текущая директория",{},[2313,2314,2315],"/guides/linux/bash-aliases","/guides/linux/bashrc-configuration","/guides/linux/zsh-vs-bash",{"title":1345,"description":2270},"guides/linux/customize-bash-prompt","В этом гайде вы узнаете, как полностью кастомизировать приглашение bash (prompt) с помощью переменной PS1. Мы рассмотрим настройку цветов, отображение системной информации и условные конструкции.",[51,1241,2320,1251,1435,2321,2322],"конфигурация","色彩","customization","nL2QII9BRgeGBvAWvnK6BOYToaJ6SD_f9eJn1ZjgJLU",{"id":2325,"title":2326,"appliesTo":2327,"author":9,"body":2332,"canonical":1186,"code":1186,"createdAt":3892,"description":3893,"difficulty":2271,"draft":1190,"estimatedTime":2272,"extension":1192,"faq":3894,"howToSteps":3907,"howToTotalTime":2299,"image":1186,"keywords":3926,"locale":1237,"meta":3935,"navigation":1239,"path":1244,"platform":1241,"related":3936,"section":1246,"seo":3940,"severity":1186,"stem":3941,"summary":3942,"tags":3943,"twitterCreator":1186,"twitterSite":1186,"type":1257,"updatedAt":3892,"__hash__":3947},"content_ru/guides/linux/process-management-basics.md","Управление процессами в Linux: от базовых команд до systemd",[2328,2329,2330,2331],"Ubuntu 22.04+","Debian 11+","CentOS Stream/RHEL 8+","Linux с systemd",{"type":11,"value":2333,"toc":3855},[2334,2338,2341,2355,2369,2373,2380,2385,2390,2407,2410,2439,2456,2479,2492,2526,2545,2555,2560,2567,2611,2627,2631,2634,2638,2641,2668,2687,2709,2715,2719,2726,2740,2744,2747,2760,2769,2773,2777,2784,2890,2904,2908,2981,2985,2988,3087,3100,3104,3108,3115,3139,3142,3146,3178,3182,3191,3250,3254,3259,3263,3434,3438,3525,3527,3531,3538,3548,3608,3618,3624,3627,3693,3703,3706,3741,3758,3762,3845,3852],[14,2335,2337],{"id":2336},"введение-зачем-управлять-процессами","Введение: зачем управлять процессами?",[19,2339,2340],{},"Каждая запущенная программа в Linux — это процесс. Управление ими — одна из ключевых задач системного администратора и разработчика. Нужно ли вам:",[94,2342,2343,2346,2349,2352],{},[33,2344,2345],{},"Найти и завершить \"зависший\" процесс, который съедает всю память?",[33,2347,2348],{},"Узнать, какой именно процесс слушает сетевой порт?",[33,2350,2351],{},"Запустить задачу в фоне, чтобы закрыть терминал?",[33,2353,2354],{},"Настроить автозапуск важного сервиса?",[19,2356,2357,2358,901,2361,2364,2365,2368],{},"Этот гайд покрывает всё — от базовых команд ",[54,2359,2360],{},"ps",[54,2362,2363],{},"kill"," до современного менеджера системных сервисов ",[54,2366,2367],{},"systemd",". Вы получите практические навыки, которые пригодятся ежедневно.",[14,2370,2372],{"id":2371},"базовый-мониторинг-ps-top-и-htop","Базовый мониторинг: ps, top и htop",[89,2374,2376,2377,2379],{"id":2375},"команда-ps-снимок-процессов","Команда ",[54,2378,2360],{}," — снимок процессов",[19,2381,2382,2384],{},[54,2383,2360],{}," (process status) показывает статический список процессов на момент запуска команды.",[19,2386,2387],{},[36,2388,2389],{},"Самые полезные варианты:",[47,2391,2393],{"className":49,"code":2392,"language":51,"meta":52,"style":52},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\nps aux\n",[54,2394,2395,2400],{"__ignoreMap":52},[57,2396,2397],{"class":59,"line":60},[57,2398,2399],{"class":591},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\n",[57,2401,2402,2404],{"class":59,"line":595},[57,2403,2360],{"class":598},[57,2405,2406],{"class":605}," aux\n",[19,2408,2409],{},"Ключевые столбцы:",[94,2411,2412,2418,2424,2433],{},[33,2413,2414,2417],{},[54,2415,2416],{},"USER"," — владелец процесса.",[33,2419,2420,2423],{},[54,2421,2422],{},"PID"," — уникальный идентификатор процесса (главное, что нужно для управления).",[33,2425,2426,279,2429,2432],{},[54,2427,2428],{},"%CPU",[54,2430,2431],{},"%MEM"," — потребление процессорного времени и памяти.",[33,2434,2435,2438],{},[54,2436,2437],{},"COMMAND"," — команда, запустившая процесс.",[47,2440,2442],{"className":49,"code":2441,"language":51,"meta":52,"style":52},"# Альтернативный, более детальный формат (POSIX-стиль)\nps -ef\n",[54,2443,2444,2449],{"__ignoreMap":52},[57,2445,2446],{"class":59,"line":60},[57,2447,2448],{"class":591},"# Альтернативный, более детальный формат (POSIX-стиль)\n",[57,2450,2451,2453],{"class":59,"line":595},[57,2452,2360],{"class":598},[57,2454,2455],{"class":63}," -ef\n",[19,2457,2458,2459,279,2462,279,2464,2467,2468,2471,2472,2475,2476,332],{},"Здесь столбцы: ",[54,2460,2461],{},"UID",[54,2463,2422],{},[54,2465,2466],{},"PPID"," (PID родителя), ",[54,2469,2470],{},"C"," (коэффициент использования CPU), ",[54,2473,2474],{},"STIME"," (время запуска), ",[54,2477,2478],{},"CMD",[19,2480,2481,2484,2485,2487,2488,2491],{},[36,2482,2483],{},"Фильтрация:"," Всегда комбинируйте ",[54,2486,2360],{}," с ",[54,2489,2490],{},"grep"," для поиска.",[47,2493,2495],{"className":49,"code":2494,"language":51,"meta":52,"style":52},"ps aux | grep nginx\nps -ef | grep python3\n",[54,2496,2497,2512],{"__ignoreMap":52},[57,2498,2499,2501,2504,2506,2509],{"class":59,"line":60},[57,2500,2360],{"class":598},[57,2502,2503],{"class":605}," aux",[57,2505,1890],{"class":784},[57,2507,2508],{"class":598}," grep",[57,2510,2511],{"class":605}," nginx\n",[57,2513,2514,2516,2519,2521,2523],{"class":59,"line":595},[57,2515,2360],{"class":598},[57,2517,2518],{"class":63}," -ef",[57,2520,1890],{"class":784},[57,2522,2508],{"class":598},[57,2524,2525],{"class":605}," python3\n",[76,2527,2528],{},[19,2529,2530,2531,2534,2535,2537,2538,2541,2542,332],{},"⚠️ ",[36,2532,2533],{},"Важно:"," ",[54,2536,2490],{}," сам появится в выводе. Используйте ",[54,2539,2540],{},"pgrep"," для чистого поиска по имени: ",[54,2543,2544],{},"pgrep -l nginx",[89,2546,2548,901,2551,2554],{"id":2547},"top-и-htop-интерактивный-мониторинг",[54,2549,2550],{},"top",[54,2552,2553],{},"htop"," — интерактивный мониторинг",[19,2556,2557,2559],{},[54,2558,2550],{}," — классическая утилита, которая обновляет список процессов в реальном времени (по умолчанию каждые 3 секунды).",[19,2561,2562],{},[36,2563,2564,2565,602],{},"Основные клавиши в ",[54,2566,2550],{},[94,2568,2569,2575,2581,2587,2593,2599,2605],{},[33,2570,2571,2574],{},[54,2572,2573],{},"P"," — сортировка по загрузке CPU (по умолчанию).",[33,2576,2577,2580],{},[54,2578,2579],{},"M"," — сортировка по использованию памяти.",[33,2582,2583,2586],{},[54,2584,2585],{},"N"," — сортировка по PID.",[33,2588,2589,2592],{},[54,2590,2591],{},"k"," — убить процесс (запросит PID и сигнал).",[33,2594,2595,2598],{},[54,2596,2597],{},"r"," — изменить приоритет (renice) процесса.",[33,2600,2601,2604],{},[54,2602,2603],{},"u"," — показать процессы только указанного пользователя.",[33,2606,2607,2610],{},[54,2608,2609],{},"q"," — выйти.",[19,2612,2613,2615,2616,2618,2619,2622,2623,2626],{},[54,2614,2553],{}," — более удобная и наглядная цветовая альтернатива ",[54,2617,2550],{},". Она часто не установлена по умолчанию, но её стоит установить (",[54,2620,2621],{},"sudo apt install htop"," / ",[54,2624,2625],{},"sudo yum install htop","). Позволяет управлять процессами прямо из интерфейса (F9 для kill, F5 для дерева, F6 для сортировки).",[14,2628,2630],{"id":2629},"поиск-процессов-не-только-по-имени","Поиск процессов: не только по имени",[19,2632,2633],{},"Иногда нужно найти процесс не по его имени, а по другим признакам.",[89,2635,2637],{"id":2636},"по-открытому-порту-или-сокету","По открытому порту или сокету",[19,2639,2640],{},"Частая задача: \"Кто слушает порт 80?\".",[47,2642,2644],{"className":49,"code":2643,"language":51,"meta":52,"style":52},"# Рекомендуемый современный способ (из пакета iproute2)\nsudo ss -tulpn | grep :80\n",[54,2645,2646,2651],{"__ignoreMap":52},[57,2647,2648],{"class":59,"line":60},[57,2649,2650],{"class":591},"# Рекомендуемый современный способ (из пакета iproute2)\n",[57,2652,2653,2655,2658,2661,2663,2665],{"class":59,"line":595},[57,2654,429],{"class":598},[57,2656,2657],{"class":605}," ss",[57,2659,2660],{"class":63}," -tulpn",[57,2662,1890],{"class":784},[57,2664,2508],{"class":598},[57,2666,2667],{"class":605}," :80\n",[19,2669,2670,2671,2674,2675,2678,2679,2682,2683,2686],{},"Опции: ",[54,2672,2673],{},"-t"," (TCP), ",[54,2676,2677],{},"-u"," (UDP), ",[54,2680,2681],{},"-l"," (только слушающие), ",[54,2684,2685],{},"-p"," (показать процесс/программу).",[47,2688,2690],{"className":49,"code":2689,"language":51,"meta":52,"style":52},"# Классический способ (из пакета net-tools)\nsudo lsof -i :80\n",[54,2691,2692,2697],{"__ignoreMap":52},[57,2693,2694],{"class":59,"line":60},[57,2695,2696],{"class":591},"# Классический способ (из пакета net-tools)\n",[57,2698,2699,2701,2704,2707],{"class":59,"line":595},[57,2700,429],{"class":598},[57,2702,2703],{"class":605}," lsof",[57,2705,2706],{"class":63}," -i",[57,2708,2667],{"class":605},[19,2710,2711,2714],{},[54,2712,2713],{},"lsof"," (list open files) показывает все открытые файлы, включая сетевые сокеты. Очень мощный инструмент.",[89,2716,2718],{"id":2717},"по-файлу-или-каталогу","По файлу или каталогу",[19,2720,2721,2722,2725],{},"Какой процесс держит открытым файл ",[54,2723,2724],{},"/var/log/app.log"," и мешает его удалить?",[47,2727,2729],{"className":49,"code":2728,"language":51,"meta":52,"style":52},"sudo lsof /var/log/app.log\n",[54,2730,2731],{"__ignoreMap":52},[57,2732,2733,2735,2737],{"class":59,"line":60},[57,2734,429],{"class":598},[57,2736,2703],{"class":605},[57,2738,2739],{"class":605}," /var/log/app.log\n",[89,2741,2743],{"id":2742},"по-дереву-процессов","По дереву процессов",[19,2745,2746],{},"Чтобы увидеть иерархию (родительские и дочерние процессы), используйте:",[47,2748,2750],{"className":49,"code":2749,"language":51,"meta":52,"style":52},"pstree -p\n",[54,2751,2752],{"__ignoreMap":52},[57,2753,2754,2757],{"class":59,"line":60},[57,2755,2756],{"class":598},"pstree",[57,2758,2759],{"class":63}," -p\n",[19,2761,2762,2763,2765,2766,332],{},"Или в ",[54,2764,2553],{}," нажмите ",[54,2767,2768],{},"F5",[14,2770,2772],{"id":2771},"завершение-процессов-kill-killall-pkill","Завершение процессов: kill, killall, pkill",[89,2774,2776],{"id":2775},"сигналы-язык-общения-с-процессами","Сигналы: язык общения с процессами",[19,2778,2779,2780,2783],{},"Завершение — это не просто \"выстрел\". Это отправка ",[36,2781,2782],{},"сигнала"," — короткого сообщения процессу. Основные:",[1438,2785,2786,2803],{},[1441,2787,2788],{},[1444,2789,2790,2794,2797,2800],{},[1447,2791,2793],{"align":2792},"left","Сигнал",[1447,2795,2796],{"align":2792},"Номер",[1447,2798,2799],{"align":2792},"Действие (по умолчанию)",[1447,2801,2802],{"align":2792},"Как использовать",[1454,2804,2805,2827,2851,2872],{},[1444,2806,2807,2812,2815,2821],{},[1459,2808,2809],{"align":2792},[54,2810,2811],{},"SIGTERM",[1459,2813,2814],{"align":2792},"15",[1459,2816,2817,2820],{"align":2792},[36,2818,2819],{},"Вежливое завершение."," Процесс может обработать сигнал, сохранить состояние и корректно закрыться.",[1459,2822,2823,2826],{"align":2792},[54,2824,2825],{},"kill \u003CPID>"," (этот сигнал отправляется по умолч.)",[1444,2828,2829,2834,2837,2843],{},[1459,2830,2831],{"align":2792},[54,2832,2833],{},"SIGKILL",[1459,2835,2836],{"align":2792},"9",[1459,2838,2839,2842],{"align":2792},[36,2840,2841],{},"Немедленное принудительное завершение."," Обработчик сигнала игнорируется. Процесс не может сохранить данные.",[1459,2844,2845,165,2848],{"align":2792},[54,2846,2847],{},"kill -9 \u003CPID>",[54,2849,2850],{},"kill -KILL \u003CPID>",[1444,2852,2853,2858,2861,2867],{},[1459,2854,2855],{"align":2792},[54,2856,2857],{},"SIGINT",[1459,2859,2860],{"align":2792},"2",[1459,2862,2863,2864,2866],{"align":2792},"Прерывание (как ",[54,2865,485],{}," в терминале).",[1459,2868,2869],{"align":2792},[54,2870,2871],{},"kill -2 \u003CPID>",[1444,2873,2874,2879,2882,2885],{},[1459,2875,2876],{"align":2792},[54,2877,2878],{},"SIGHUP",[1459,2880,2881],{"align":2792},"1",[1459,2883,2884],{"align":2792},"\"Перезагрузка\". Часто используется для перечитывания конфигурационных файлов без полного перезапуска.",[1459,2886,2887],{"align":2792},[54,2888,2889],{},"kill -HUP \u003CPID>",[19,2891,2892,2895,2896,2898,2899,2901,2902,332],{},[36,2893,2894],{},"Правило:"," Сначала пробуйте ",[54,2897,2811],{}," (просто ",[54,2900,2363],{},"). Если процесс не реагирует (виснет), используйте ",[54,2903,2833],{},[89,2905,2907],{"id":2906},"инструменты","Инструменты",[94,2909,2910,2919,2935,2955,2967],{},[33,2911,2912,503,2916,2918],{},[36,2913,2914],{},[54,2915,2825],{},[54,2917,2811],{}," конкретному PID.",[33,2920,2921,165,2926,2931,2932,332],{},[36,2922,2923],{},[54,2924,2925],{},"kill -s SIGNAL \u003CPID>",[36,2927,2928],{},[54,2929,2930],{},"kill -SIGNAL \u003CPID>"," — отправить конкретный сигнал. Пример: ",[54,2933,2934],{},"kill -HUP 1234",[33,2936,2937,2942,2943,2946,2947,2950,2951,2954],{},[36,2938,2939],{},[54,2940,2941],{},"killall \u003Cимя_процесса>"," — завершить ",[36,2944,2945],{},"все"," процессы с указанным именем. ",[54,2948,2949],{},"killall nginx",". ",[36,2952,2953],{},"Осторожно!"," Убедитесь, что убиваете то, что нужно.",[33,2956,2957,2962,2963,2966],{},[36,2958,2959],{},[54,2960,2961],{},"pkill \u003Cпаттерн>"," — завершить процессы, соответствующие шаблону (по имени, пользователю и т.д.). ",[54,2964,2965],{},"pkill -f \"python3 script.py\""," (ищет в полной командной строке). Мощный, но требует аккуратности.",[33,2968,2969,386,2974,2977,2978,332],{},[36,2970,2971],{},[54,2972,2973],{},"pgrep \u003Cпаттерн>",[36,2975,2976],{},"только найти"," PID по шаблону. Идеально для комбинации: ",[54,2979,2980],{},"kill $(pgrep -f \"python3 script.py\")",[14,2982,2984],{"id":2983},"управление-приоритетами-nice-и-renice","Управление приоритетами: nice и renice",[19,2986,2987],{},"Linux планировщик распределяет время CPU между процессами. Приоритет можно влиять.",[94,2989,2990,3049],{},[33,2991,2992,2997,2998,3001,3002],{},[36,2993,2994],{},[54,2995,2996],{},"nice"," — запускает процесс с заданным ",[36,2999,3000],{},"статическим"," приоритетом.",[94,3003,3004,3018,3039],{},[33,3005,3006,3007,3010,3011,3013,3014,3017],{},"Диапазон: от ",[54,3008,3009],{},"-20"," (наивысший приоритет, требует ",[54,3012,429],{},") до ",[54,3015,3016],{},"+19"," (наинизший).",[33,3019,3020,3021],{},"Пример запуска с низким приоритетом (чтобы не мешал другим задачам):\n",[47,3022,3024],{"className":49,"code":3023,"language":51,"meta":52,"style":52},"nice -n 19 ./долгая_расчётная_задача.sh\n",[54,3025,3026],{"__ignoreMap":52},[57,3027,3028,3030,3033,3036],{"class":59,"line":60},[57,3029,2996],{"class":598},[57,3031,3032],{"class":63}," -n",[57,3034,3035],{"class":63}," 19",[57,3037,3038],{"class":605}," ./долгая_расчётная_задача.sh\n",[33,3040,3041,3042,3045,3046,332],{},"Если не указать ",[54,3043,3044],{},"-n",", по умолчанию используется ",[54,3047,3048],{},"+10",[33,3050,3051,3056,3057,3060,3061],{},[36,3052,3053],{},[54,3054,3055],{},"renice"," — меняет приоритет ",[36,3058,3059],{},"уже запущенного"," процесса.",[47,3062,3064],{"className":49,"code":3063,"language":51,"meta":52,"style":52},"# Повысить приоритет (уменьшить значение nice) для PID 5678\nsudo renice -5 -p 5678\n",[54,3065,3066,3071],{"__ignoreMap":52},[57,3067,3068],{"class":59,"line":60},[57,3069,3070],{"class":591},"# Повысить приоритет (уменьшить значение nice) для PID 5678\n",[57,3072,3073,3075,3078,3081,3084],{"class":59,"line":595},[57,3074,429],{"class":598},[57,3076,3077],{"class":605}," renice",[57,3079,3080],{"class":63}," -5",[57,3082,3083],{"class":63}," -p",[57,3085,3086],{"class":63}," 5678\n",[76,3088,3089],{},[19,3090,3091,3092,3095,3096,3099],{},"💡 ",[36,3093,3094],{},"Совет:"," Не повышайте (",[54,3097,3098],{},"nice \u003C 0",") приоритет важных системных процессов без необходимости. Это может привести к \"голоданию\" других задач.",[14,3101,3103],{"id":3102},"фоновые-процессы-и-управление-заданиями","Фоновые процессы и управление заданиями",[89,3105,3107],{"id":3106},"простое-фоновое-выполнение","Простое фоновое выполнение",[19,3109,3110,3111,3114],{},"Добавьте ",[54,3112,3113],{},"&"," в конец команды:",[47,3116,3118],{"className":49,"code":3117,"language":51,"meta":52,"style":52},"long_running_command &\n[1] 2345  # [1] - номер задания, 2345 - PID\n",[54,3119,3120,3128],{"__ignoreMap":52},[57,3121,3122,3125],{"class":59,"line":60},[57,3123,3124],{"class":598},"long_running_command",[57,3126,3127],{"class":67}," &\n",[57,3129,3130,3133,3136],{"class":59,"line":595},[57,3131,3132],{"class":67},"[1] ",[57,3134,3135],{"class":598},"2345",[57,3137,3138],{"class":591},"  # [1] - номер задания, 2345 - PID\n",[19,3140,3141],{},"Команда вернёт управление терминалу сразу.",[89,3143,3145],{"id":3144},"управление-заданиями-job-control","Управление заданиями (job control)",[94,3147,3148,3155,3163,3171],{},[33,3149,3150,3154],{},[36,3151,3152],{},[54,3153,535],{}," — показать список фоновых заданий текущей оболочки.",[33,3156,3157,3162],{},[36,3158,3159],{},[54,3160,3161],{},"fg %1"," — вернуть задание №1 на передний план (foreground).",[33,3164,3165,3170],{},[36,3166,3167],{},[54,3168,3169],{},"bg %1"," — возобновить остановленное задание №1 в фоне (background).",[33,3172,3173,3177],{},[36,3174,3175],{},[54,3176,494],{}," — приостановить (stop) текущий foreground-процесс (не завершает!).",[89,3179,3181],{"id":3180},"независимость-от-терминала-nohup-и-disown","Независимость от терминала: nohup и disown",[19,3183,3184,3185,3187,3188,3190],{},"По умолчанию фоновый процесс (",[54,3186,3113],{},") всё равно \"привязан\" к терминалу. Если терминал закроется (например, разорвётся SSH-соединение), процесс получит сигнал ",[54,3189,2878],{}," и, скорее всего, завершится.",[94,3192,3193,3231],{},[33,3194,3195,3200,3201,3203,3204,3227,3228,332],{},[36,3196,3197],{},[54,3198,3199],{},"nohup"," (no hang up) — запускает процесс, игнорирующий сигнал ",[54,3202,2878],{},".\n",[47,3205,3207],{"className":49,"code":3206,"language":51,"meta":52,"style":52},"nohup ./my_server.py > server.log 2>&1 &\n",[54,3208,3209],{"__ignoreMap":52},[57,3210,3211,3213,3216,3219,3222,3225],{"class":59,"line":60},[57,3212,3199],{"class":598},[57,3214,3215],{"class":605}," ./my_server.py",[57,3217,3218],{"class":784}," >",[57,3220,3221],{"class":605}," server.log",[57,3223,3224],{"class":784}," 2>&1",[57,3226,3127],{"class":67},"\nВывод перенаправляется в файл ",[54,3229,3230],{},"server.log",[33,3232,3233,3238,3239,3242,3243,3246,3247,3249],{},[36,3234,3235],{},[54,3236,3237],{},"disown"," — после запуска процесса в фоне (",[54,3240,3241],{},"command &",") можно \"отсоединить\" его от текущей оболочки: ",[54,3244,3245],{},"disown %1",". После этого процесс не будет получать ",[54,3248,2878],{}," при закрытии терминала.",[14,3251,3253],{"id":3252},"современный-подход-systemd-и-systemctl","Современный подход: systemd и systemctl",[19,3255,3256,3257,332],{},"Для долгоживущих системных сервисов (веб-серверы, базы данных, демоны) в современных дистрибутивах (Ubuntu 15.04+, CentOS 7+, Debian 8+) используется ",[36,3258,2367],{},[89,3260,3262],{"id":3261},"основные-команды-systemctl","Основные команды systemctl",[47,3264,3266],{"className":49,"code":3265,"language":51,"meta":52,"style":52},"# Статус сервиса (запущен ли, PID, последние логи)\nsudo systemctl status nginx\n\n# Запуск/остановка/перезапуск\nsudo systemctl start nginx\nsudo systemctl stop nginx\nsudo systemctl restart nginx   # мягкий перезапуск (может отключить на мгновение)\nsudo systemctl reload nginx    # перечитать конфиг без остановки (если поддерживает)\n\n# Включение/отключение автозапуска при загрузке системы\nsudo systemctl enable nginx\nsudo systemctl disable nginx\n\n# Просмотр всех юнитов (сервисов, таймеров, сокетов)\nsystemctl list-units --type=service --all\n\n# Просмотр логов сервиса (аналог journalctl)\nsudo journalctl -u nginx -f  # -f — следить в реальном времени\n",[54,3267,3268,3273,3285,3289,3294,3305,3316,3331,3345,3349,3354,3366,3378,3383,3389,3404,3409,3415],{"__ignoreMap":52},[57,3269,3270],{"class":59,"line":60},[57,3271,3272],{"class":591},"# Статус сервиса (запущен ли, PID, последние логи)\n",[57,3274,3275,3277,3280,3283],{"class":59,"line":595},[57,3276,429],{"class":598},[57,3278,3279],{"class":605}," systemctl",[57,3281,3282],{"class":605}," status",[57,3284,2511],{"class":605},[57,3286,3287],{"class":59,"line":612},[57,3288,1982],{"emptyLinePlaceholder":1239},[57,3290,3291],{"class":59,"line":626},[57,3292,3293],{"class":591},"# Запуск/остановка/перезапуск\n",[57,3295,3296,3298,3300,3303],{"class":59,"line":640},[57,3297,429],{"class":598},[57,3299,3279],{"class":605},[57,3301,3302],{"class":605}," start",[57,3304,2511],{"class":605},[57,3306,3307,3309,3311,3314],{"class":59,"line":1985},[57,3308,429],{"class":598},[57,3310,3279],{"class":605},[57,3312,3313],{"class":605}," stop",[57,3315,2511],{"class":605},[57,3317,3318,3320,3322,3325,3328],{"class":59,"line":1991},[57,3319,429],{"class":598},[57,3321,3279],{"class":605},[57,3323,3324],{"class":605}," restart",[57,3326,3327],{"class":605}," nginx",[57,3329,3330],{"class":591},"   # мягкий перезапуск (может отключить на мгновение)\n",[57,3332,3333,3335,3337,3340,3342],{"class":59,"line":2001},[57,3334,429],{"class":598},[57,3336,3279],{"class":605},[57,3338,3339],{"class":605}," reload",[57,3341,3327],{"class":605},[57,3343,3344],{"class":591},"    # перечитать конфиг без остановки (если поддерживает)\n",[57,3346,3347],{"class":59,"line":2006},[57,3348,1982],{"emptyLinePlaceholder":1239},[57,3350,3351],{"class":59,"line":2012},[57,3352,3353],{"class":591},"# Включение/отключение автозапуска при загрузке системы\n",[57,3355,3357,3359,3361,3364],{"class":59,"line":3356},11,[57,3358,429],{"class":598},[57,3360,3279],{"class":605},[57,3362,3363],{"class":605}," enable",[57,3365,2511],{"class":605},[57,3367,3369,3371,3373,3376],{"class":59,"line":3368},12,[57,3370,429],{"class":598},[57,3372,3279],{"class":605},[57,3374,3375],{"class":605}," disable",[57,3377,2511],{"class":605},[57,3379,3381],{"class":59,"line":3380},13,[57,3382,1982],{"emptyLinePlaceholder":1239},[57,3384,3386],{"class":59,"line":3385},14,[57,3387,3388],{"class":591},"# Просмотр всех юнитов (сервисов, таймеров, сокетов)\n",[57,3390,3392,3395,3398,3401],{"class":59,"line":3391},15,[57,3393,3394],{"class":598},"systemctl",[57,3396,3397],{"class":605}," list-units",[57,3399,3400],{"class":63}," --type=service",[57,3402,3403],{"class":63}," --all\n",[57,3405,3407],{"class":59,"line":3406},16,[57,3408,1982],{"emptyLinePlaceholder":1239},[57,3410,3412],{"class":59,"line":3411},17,[57,3413,3414],{"class":591},"# Просмотр логов сервиса (аналог journalctl)\n",[57,3416,3418,3420,3423,3426,3428,3431],{"class":59,"line":3417},18,[57,3419,429],{"class":598},[57,3421,3422],{"class":605}," journalctl",[57,3424,3425],{"class":63}," -u",[57,3427,3327],{"class":605},[57,3429,3430],{"class":63}," -f",[57,3432,3433],{"class":591},"  # -f — следить в реальном времени\n",[89,3435,3437],{"id":3436},"создание-собственного-сервиса","Создание собственного сервиса",[30,3439,3440,3446,3519],{},[33,3441,3442,3443],{},"Создайте файл конфигурации: ",[54,3444,3445],{},"sudo nano /etc/systemd/system/myapp.service",[33,3447,3448,3449],{},"Базовый шаблон:\n",[47,3450,3454],{"className":3451,"code":3452,"language":3453,"meta":52,"style":52},"language-ini shiki shiki-themes github-light github-dark","[Unit]\nDescription=Мой кастомный сервис\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/bin/python3 /opt/myapp/main.py\nRestart=on-failure\nUser=appuser\nWorkingDirectory=/opt/myapp\n\n[Install]\nWantedBy=multi-user.target\n","ini",[54,3455,3456,3461,3466,3471,3475,3480,3485,3490,3495,3500,3505,3509,3514],{"__ignoreMap":52},[57,3457,3458],{"class":59,"line":60},[57,3459,3460],{},"[Unit]\n",[57,3462,3463],{"class":59,"line":595},[57,3464,3465],{},"Description=Мой кастомный сервис\n",[57,3467,3468],{"class":59,"line":612},[57,3469,3470],{},"After=network.target\n",[57,3472,3473],{"class":59,"line":626},[57,3474,1982],{"emptyLinePlaceholder":1239},[57,3476,3477],{"class":59,"line":640},[57,3478,3479],{},"[Service]\n",[57,3481,3482],{"class":59,"line":1985},[57,3483,3484],{},"Type=simple\n",[57,3486,3487],{"class":59,"line":1991},[57,3488,3489],{},"ExecStart=/usr/bin/python3 /opt/myapp/main.py\n",[57,3491,3492],{"class":59,"line":2001},[57,3493,3494],{},"Restart=on-failure\n",[57,3496,3497],{"class":59,"line":2006},[57,3498,3499],{},"User=appuser\n",[57,3501,3502],{"class":59,"line":2012},[57,3503,3504],{},"WorkingDirectory=/opt/myapp\n",[57,3506,3507],{"class":59,"line":3356},[57,3508,1982],{"emptyLinePlaceholder":1239},[57,3510,3511],{"class":59,"line":3368},[57,3512,3513],{},"[Install]\n",[57,3515,3516],{"class":59,"line":3380},[57,3517,3518],{},"WantedBy=multi-user.target\n",[33,3520,3521,3522,332],{},"Активируйте: ",[54,3523,3524],{},"sudo systemctl daemon-reload && sudo systemctl enable --now myapp.service",[555,3526],{},[14,3528,3530],{"id":3529},"продвинутый-мониторинг-и-анализ","Продвинутый мониторинг и анализ",[89,3532,3534,3537],{"id":3533},"strace-трассировка-системных-вызовов",[54,3535,3536],{},"strace"," — трассировка системных вызовов",[19,3539,3540,3541,3544,3545,3547],{},"Если нужно понять, ",[36,3542,3543],{},"что именно"," делает \"зависший\" процесс, используйте ",[54,3546,3536],{},". Он показывает все взаимодействия процесса с ядром (чтение/запись файлов, сетевые запросы и т.д.).",[47,3549,3551],{"className":49,"code":3550,"language":51,"meta":52,"style":52},"# Трассировать уже запущенный процесс\nsudo strace -p \u003CPID> -o trace.log\n\n# Запустить команду под strace\nsudo strace -o trace.log ./my_program\n",[54,3552,3553,3558,3585,3589,3594],{"__ignoreMap":52},[57,3554,3555],{"class":59,"line":60},[57,3556,3557],{"class":591},"# Трассировать уже запущенный процесс\n",[57,3559,3560,3562,3565,3567,3570,3573,3576,3579,3582],{"class":59,"line":595},[57,3561,429],{"class":598},[57,3563,3564],{"class":605}," strace",[57,3566,3083],{"class":63},[57,3568,3569],{"class":784}," \u003C",[57,3571,3572],{"class":605},"PI",[57,3574,3575],{"class":67},"D",[57,3577,3578],{"class":784},">",[57,3580,3581],{"class":63}," -o",[57,3583,3584],{"class":605}," trace.log\n",[57,3586,3587],{"class":59,"line":612},[57,3588,1982],{"emptyLinePlaceholder":1239},[57,3590,3591],{"class":59,"line":626},[57,3592,3593],{"class":591},"# Запустить команду под strace\n",[57,3595,3596,3598,3600,3602,3605],{"class":59,"line":640},[57,3597,429],{"class":598},[57,3599,3564],{"class":605},[57,3601,3581],{"class":63},[57,3603,3604],{"class":605}," trace.log",[57,3606,3607],{"class":605}," ./my_program\n",[19,3609,858,3610,3613,3614,3617],{},[54,3611,3612],{},"-c"," для статистики по системным вызовам, ",[54,3615,3616],{},"-f"," для следования за дочерними процессами.",[89,3619,3621,3623],{"id":3620},"lsof-что-открыто",[54,3622,2713],{}," — \"что открыто?\"",[19,3625,3626],{},"Уже упоминалась, но стоит выделить отдельно. Это швейцарский нож для анализа.",[47,3628,3630],{"className":49,"code":3629,"language":51,"meta":52,"style":52},"# Все открытые файлы для конкретного PID\nsudo lsof -p \u003CPID>\n\n# Все сетевые соединения (аналог netstat)\nsudo lsof -i\n\n# Кто держит каталог /mnt/backup (например, для unmount)\nsudo lsof +D /mnt/backup\n",[54,3631,3632,3637,3654,3658,3663,3672,3676,3681],{"__ignoreMap":52},[57,3633,3634],{"class":59,"line":60},[57,3635,3636],{"class":591},"# Все открытые файлы для конкретного PID\n",[57,3638,3639,3641,3643,3645,3647,3649,3651],{"class":59,"line":595},[57,3640,429],{"class":598},[57,3642,2703],{"class":605},[57,3644,3083],{"class":63},[57,3646,3569],{"class":784},[57,3648,3572],{"class":605},[57,3650,3575],{"class":67},[57,3652,3653],{"class":784},">\n",[57,3655,3656],{"class":59,"line":612},[57,3657,1982],{"emptyLinePlaceholder":1239},[57,3659,3660],{"class":59,"line":626},[57,3661,3662],{"class":591},"# Все сетевые соединения (аналог netstat)\n",[57,3664,3665,3667,3669],{"class":59,"line":640},[57,3666,429],{"class":598},[57,3668,2703],{"class":605},[57,3670,3671],{"class":63}," -i\n",[57,3673,3674],{"class":59,"line":1985},[57,3675,1982],{"emptyLinePlaceholder":1239},[57,3677,3678],{"class":59,"line":1991},[57,3679,3680],{"class":591},"# Кто держит каталог /mnt/backup (например, для unmount)\n",[57,3682,3683,3685,3687,3690],{"class":59,"line":2001},[57,3684,429],{"class":598},[57,3686,2703],{"class":605},[57,3688,3689],{"class":605}," +D",[57,3691,3692],{"class":605}," /mnt/backup\n",[89,3694,3696,901,3699,3702],{"id":3695},"vmstat-и-iostat-общая-нагрузка-на-систему",[54,3697,3698],{},"vmstat",[54,3700,3701],{},"iostat"," — общая нагрузка на систему",[19,3704,3705],{},"Чтобы понять, проблема в процессе или в системе в целом:",[47,3707,3709],{"className":49,"code":3708,"language":51,"meta":52,"style":52},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\nvmstat 2\n\n# Статистика по дисковому вводу-выводу\niostat -xz 2\n",[54,3710,3711,3716,3723,3727,3732],{"__ignoreMap":52},[57,3712,3713],{"class":59,"line":60},[57,3714,3715],{"class":591},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\n",[57,3717,3718,3720],{"class":59,"line":595},[57,3719,3698],{"class":598},[57,3721,3722],{"class":63}," 2\n",[57,3724,3725],{"class":59,"line":612},[57,3726,1982],{"emptyLinePlaceholder":1239},[57,3728,3729],{"class":59,"line":626},[57,3730,3731],{"class":591},"# Статистика по дисковому вводу-выводу\n",[57,3733,3734,3736,3739],{"class":59,"line":640},[57,3735,3701],{"class":598},[57,3737,3738],{"class":63}," -xz",[57,3740,3722],{"class":63},[19,3742,3743,3744,3746,3747,3750,3751,861,3754,3757],{},"Если ",[54,3745,3698],{}," показывает высокий ",[54,3748,3749],{},"wa"," (I/O wait) — проблема в дисках. Если высокий ",[54,3752,3753],{},"us",[54,3755,3756],{},"sy"," (user/system CPU) — проблема в процессах.",[14,3759,3761],{"id":3760},"заключение-и-лучшие-практики","Заключение и лучшие практики",[30,3763,3764,3777,3792,3803,3814,3823,3832],{},[33,3765,3766,3776],{},[36,3767,3768,3769,165,3772,861,3774],{},"Начинайте с ",[54,3770,3771],{},"ps aux",[54,3773,2550],{},[54,3775,2553],{}," для общего обзора.",[33,3778,3779,3788,3789,332],{},[36,3780,858,3781,861,3783,861,3785],{},[54,3782,2490],{},[54,3784,2540],{},[54,3786,3787],{},"pkill"," для поиска, но проверяйте вывод перед ",[54,3790,3791],{},"killall",[33,3793,3794,279,3800,3802],{},[36,3795,3796,3797,3799],{},"Отправляйте ",[54,3798,2811],{}," (kill) в первую очередь",[54,3801,2833],{}," (-9) — только в крайнем случае.",[33,3804,3805,3810,3811,3813],{},[36,3806,3807,3808],{},"Для сервисов используйте ",[54,3809,3394],{},", а не ручной запуск через ",[54,3812,3113],{},". Это даст автоматический перезапуск, логирование и управление.",[33,3815,3816,3822],{},[36,3817,3818,901,3820],{},[54,3819,3199],{},[54,3821,3237],{}," — ваши друзья для долгих задач в нестабильном SSH-сессии.",[33,3824,3825,3831],{},[36,3826,3827,901,3829],{},[54,3828,3536],{},[54,3830,2713],{}," — мощные отладочные инструменты для глубокого анализа.",[33,3833,3834,3837,3838,165,3840,3842,3843,332],{},[36,3835,3836],{},"Права:"," Для управления чужими процессами (особенно через ",[54,3839,2363],{},[54,3841,3055],{},") часто нужны права ",[54,3844,429],{},[19,3846,3847,3848,3851],{},"Управление процессами — это навык, который оттачивается практикой. Экспериментируйте в тестовой среде, создавайте \"игрушечные\" зависшие процессы (",[54,3849,3850],{},"sleep 1000 &",") и отрабатывайте на них команды.",[1151,3853,3854],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":52,"searchDepth":595,"depth":595,"links":3856},[3857,3858,3864,3869,3873,3874,3879,3883,3891],{"id":2336,"depth":595,"text":2337},{"id":2371,"depth":595,"text":2372,"children":3859},[3860,3862],{"id":2375,"depth":612,"text":3861},"Команда ps — снимок процессов",{"id":2547,"depth":612,"text":3863},"top и htop — интерактивный мониторинг",{"id":2629,"depth":595,"text":2630,"children":3865},[3866,3867,3868],{"id":2636,"depth":612,"text":2637},{"id":2717,"depth":612,"text":2718},{"id":2742,"depth":612,"text":2743},{"id":2771,"depth":595,"text":2772,"children":3870},[3871,3872],{"id":2775,"depth":612,"text":2776},{"id":2906,"depth":612,"text":2907},{"id":2983,"depth":595,"text":2984},{"id":3102,"depth":595,"text":3103,"children":3875},[3876,3877,3878],{"id":3106,"depth":612,"text":3107},{"id":3144,"depth":612,"text":3145},{"id":3180,"depth":612,"text":3181},{"id":3252,"depth":595,"text":3253,"children":3880},[3881,3882],{"id":3261,"depth":612,"text":3262},{"id":3436,"depth":612,"text":3437},{"id":3529,"depth":595,"text":3530,"children":3884},[3885,3887,3889],{"id":3533,"depth":612,"text":3886},"strace — трассировка системных вызовов",{"id":3620,"depth":612,"text":3888},"lsof — \"что открыто?\"",{"id":3695,"depth":612,"text":3890},"vmstat и iostat — общая нагрузка на систему",{"id":3760,"depth":595,"text":3761},"2026-02-14 12:11:36","Полное руководство по мониторингу и управлению процессами в Linux. Изучите ps, top, kill, nice, systemctl и другие инструменты для эффективной администрирования системы.",[3895,3898,3901,3904],{"question":3896,"answer":3897},"В чём разница между командами kill и killall?","`kill` завершает процесс по его PID (идентификатору), который нужно предварительно узнать. `killall` завершает все процессы с указанным именем, что удобно, но может быть опаснее, если у программы несколько экземпляров.",{"question":3899,"answer":3900},"Как найти PID процесса, который слушает определённый порт (например, 8080)?","Используйте команду `sudo ss -tulpn | grep :8080` или `sudo lsof -i :8080`. В выводе вы увидите PID и имя программы.",{"question":3902,"answer":3903},"Почему команда top не показывает все мои процессы?","По умолчанию `top` показывает процессы текущего пользователя. Нажмите `u` в top и введите имя пользователя (или оставьте пустым для всех), чтобы seeing процессы всех пользователей. Также убедитесь, что вы запустили top с правами sudo для полной картины.",{"question":3905,"answer":3906},"Что такое zombie-процесс и как от него избавиться?","Zombie (зомби) — это завершившийся процесс, запись о котором ещё не удалена из таблицы процессов, так как родительский процесс не прочитал её статус. Обычно они исчезают сами после завершения родителя. Если зомби накапливаются, нужно перезапустить или исправить родительский процесс.",[3908,3911,3914,3917,3920,3923],{"name":3909,"text":3910},"Просмотр списка активных процессов","Используйте команду `ps` для снимка процессов или `top`/`htop` для интерактивного мониторинга в реальном времени. Ключевые опции: `ps aux` (все процессы) и `ps -ef` (полный формат).",{"name":3912,"text":3913},"Поиск конкретного процесса","Комбинируйте `ps` или `top` с `grep` для поиска по имени: `ps aux | grep nginx`. Для поиска по порту используйте `ss` или `lsof`.",{"name":3915,"text":3916},"Завершение (убийство) процесса","Найдите PID процесса и выполните `kill \u003CPID>`. Для принудительного завершения используйте сигнал `KILL` (9): `kill -9 \u003CPID>`. Для завершения по имени — `killall \u003Cимя_процесса>`.",{"name":3918,"text":3919},"Изменение приоритета процесса","Запустите процесс с низким приоритетом через `nice -n 19 команда`. Для уже запущенного процесса используйте `renice \u003Cновый_приоритет> -p \u003CPID>` (требует sudo для повышения приоритета).",{"name":3921,"text":3922},"Запуск процесса в фоне и управление им","Добавьте `&` в конец команды для запуска в фоне: `команда &`. Используйте `jobs` для просмотра фоновых задач, `fg %1` для возврата на передний план, `bg %1` для возобновления в фоне. `nohup` и `disown` позволяют сделать процесс независимым от терминала.",{"name":3924,"text":3925},"Управление сервисами через systemd","Для долгоживущих сервисов используйте systemd: `sudo systemctl start \u003Cservice>`, `sudo systemctl status \u003Cservice>`, `sudo systemctl enable \u003Cservice>` (автозапуск). Это предпочтительный способ для production-сервисов.",[3927,3928,3929,3930,3931,3932,3933,3934],"управление процессами linux","команда ps linux примеры","как убить процесс в linux","systemd управление сервисами","мониторинг процессов linux top","сигналы linux kill term","приоритет процесса nice renice","фоновые процессы linux & nohup",{},[3937,3938,3939],"/guides/linux/systemd-service-creation","/guides/linux/log-analysis-basics","/errors/linux/process-zombie",{"title":2326,"description":3893},"guides/linux/process-management-basics","Этот гайд научит вас находить, анализировать и управлять процессами в Linux с помощью командной строки. Вы освоите как базовые утилиты (ps, top, kill), так и современный менеджер systemd, что позволит вам контролировать работу системы и решать связанные проблемы.",[1241,3944,2367,1254,3945,51,3946],"process management","администрирование","мониторинг","GkIEx60u1G9Bya8wIG_B7gM7Bghf81SASMUfFUPpAZo",{"id":3949,"title":3950,"appliesTo":3951,"author":9,"body":3953,"canonical":1186,"code":1186,"createdAt":4913,"description":4914,"difficulty":1189,"draft":1190,"estimatedTime":4915,"extension":1192,"faq":4916,"howToSteps":4929,"howToTotalTime":1225,"image":1186,"keywords":4945,"locale":1237,"meta":4956,"navigation":1239,"path":1245,"platform":1241,"related":4957,"section":1246,"seo":4960,"severity":1186,"stem":4961,"summary":4962,"tags":4963,"twitterCreator":1186,"twitterSite":1186,"type":1257,"updatedAt":4913,"__hash__":4968},"content_ru/guides/linux/zsh-installation-configuration.md","Установка и настройка Zsh на Linux: полное руководство",[2328,2329,1349,1350,3952],"Any Linux with package manager",{"type":11,"value":3954,"toc":4889},[3955,3957,3964,3981,3983,3986,4025,4029,4032,4037,4064,4069,4087,4092,4110,4115,4131,4134,4146,4153,4157,4160,4183,4200,4206,4216,4221,4225,4228,4253,4256,4273,4282,4286,4293,4313,4324,4339,4342,4356,4362,4366,4372,4376,4394,4399,4417,4426,4428,4432,4442,4505,4510,4569,4583,4587,4593,4606,4609,4613,4668,4670,4673,4690,4693,4718,4720,4727,4734,4752,4756,4764,4770,4777,4796,4800,4807,4823,4827,4843,4886],[14,3956,17],{"id":16},[19,3958,3959,3960,3963],{},"Zsh (Z shell) — это современная, расширяемая оболочка командной строки, которая предлагает мощные возможности по сравнению с стандартным Bash: улучшенное автодополнение, тему оформления, плагины и более удобную навигацию по истории. Установка Zsh с менеджером конфигураций ",[36,3961,3962],{},"Oh My Zsh"," превратит ваш терминал в продуктивную среду для разработки и администрирования. После выполнения этого гайда вы получите:",[94,3965,3966,3969,3972,3975,3978],{},[33,3967,3968],{},"Быстрое автодополнение команд, путей и аргументов.",[33,3970,3971],{},"Цветовое выделение синтаксиса в реальном времени.",[33,3973,3974],{},"Интеграцию с Git (показ ветки, статуса).",[33,3976,3977],{},"Готовые плагины для Docker, Kubernetes, Python и других инструментов.",[33,3979,3980],{},"Красивые и информативные темы оформления.",[14,3982,25],{"id":24},[19,3984,3985],{},"Перед началом убедитесь, что:",[30,3987,3988,3991,4004,4016],{},[33,3989,3990],{},"У вас есть доступ к терминалу Linux с правами sudo (для установки пакетов).",[33,3992,3993,3994,279,3997,279,4000,4003],{},"Дистрибутив поддерживает пакетный менеджер (",[54,3995,3996],{},"apt",[54,3998,3999],{},"dnf",[54,4001,4002],{},"pacman"," и т.д.).",[33,4005,4006,4007,279,4010,861,4012,279,4014,191],{},"Вы знакомы с базовыми командами (",[54,4008,4009],{},"cd",[54,4011,1065],{},[54,4013,1062],{},[54,4015,2052],{},[33,4017,4018,4021,4022,4024],{},[36,4019,4020],{},"Рекомендуется",": создайте резервную копию текущего файла ",[54,4023,1377],{},", если хотите сохранить настройки Bash.",[14,4026,4028],{"id":4027},"шаг-1-установите-zsh","Шаг 1: Установите Zsh",[19,4030,4031],{},"Zsh доступен в репозиториях всех популярных дистрибутивов. Выберите команду для вашей системы:",[19,4033,4034],{},[36,4035,4036],{},"Ubuntu/Debian:",[47,4038,4040],{"className":49,"code":4039,"language":51,"meta":52,"style":52},"sudo apt update && sudo apt install zsh -y\n",[54,4041,4042],{"__ignoreMap":52},[57,4043,4044,4046,4048,4050,4052,4054,4056,4059,4062],{"class":59,"line":60},[57,4045,429],{"class":598},[57,4047,933],{"class":605},[57,4049,936],{"class":605},[57,4051,939],{"class":67},[57,4053,429],{"class":598},[57,4055,933],{"class":605},[57,4057,4058],{"class":605}," install",[57,4060,4061],{"class":605}," zsh",[57,4063,949],{"class":63},[19,4065,4066],{},[36,4067,4068],{},"Fedora/RHEL/CentOS:",[47,4070,4072],{"className":49,"code":4071,"language":51,"meta":52,"style":52},"sudo dnf install zsh -y\n",[54,4073,4074],{"__ignoreMap":52},[57,4075,4076,4078,4081,4083,4085],{"class":59,"line":60},[57,4077,429],{"class":598},[57,4079,4080],{"class":605}," dnf",[57,4082,4058],{"class":605},[57,4084,4061],{"class":605},[57,4086,949],{"class":63},[19,4088,4089],{},[36,4090,4091],{},"Arch Linux:",[47,4093,4095],{"className":49,"code":4094,"language":51,"meta":52,"style":52},"sudo pacman -S zsh\n",[54,4096,4097],{"__ignoreMap":52},[57,4098,4099,4101,4104,4107],{"class":59,"line":60},[57,4100,429],{"class":598},[57,4102,4103],{"class":605}," pacman",[57,4105,4106],{"class":63}," -S",[57,4108,4109],{"class":605}," zsh\n",[19,4111,4112],{},[36,4113,4114],{},"openSUSE:",[47,4116,4118],{"className":49,"code":4117,"language":51,"meta":52,"style":52},"sudo zypper install zsh\n",[54,4119,4120],{"__ignoreMap":52},[57,4121,4122,4124,4127,4129],{"class":59,"line":60},[57,4123,429],{"class":598},[57,4125,4126],{"class":605}," zypper",[57,4128,4058],{"class":605},[57,4130,4109],{"class":605},[19,4132,4133],{},"После установки проверьте версию:",[47,4135,4137],{"className":49,"code":4136,"language":51,"meta":52,"style":52},"zsh --version\n",[54,4138,4139],{"__ignoreMap":52},[57,4140,4141,4143],{"class":59,"line":60},[57,4142,1255],{"class":598},[57,4144,4145],{"class":63}," --version\n",[19,4147,4148,4149,4152],{},"Ожидаемый вывод: ",[54,4150,4151],{},"zsh 5.9"," (или новее).",[14,4154,4156],{"id":4155},"шаг-2-сделайте-zsh-оболочкой-по-умолчанию","Шаг 2: Сделайте Zsh оболочкой по умолчанию",[19,4158,4159],{},"Чтобы Zsh запускалась при каждом открытии терминала, измените оболочку для текущего пользователя:",[47,4161,4163],{"className":49,"code":4162,"language":51,"meta":52,"style":52},"chsh -s $(which zsh)\n",[54,4164,4165],{"__ignoreMap":52},[57,4166,4167,4170,4173,4176,4179,4181],{"class":59,"line":60},[57,4168,4169],{"class":598},"chsh",[57,4171,4172],{"class":63}," -s",[57,4174,4175],{"class":67}," $(",[57,4177,4178],{"class":63},"which",[57,4180,4061],{"class":605},[57,4182,797],{"class":67},[76,4184,4185],{},[19,4186,2530,4187,998,4189,4192,4193,4196,4197,4199],{},[36,4188,1594],{},[54,4190,4191],{},"which zsh"," возвращает путь к исполняемому файлу (обычно ",[54,4194,4195],{},"/usr/bin/zsh","). Команда ",[54,4198,4169],{}," требует ввода пароля.",[19,4201,4202,4205],{},[36,4203,4204],{},"Проверка",": Закройте и откройте терминал заново или выполните:",[47,4207,4208],{"className":49,"code":50,"language":51,"meta":52,"style":52},[54,4209,4210],{"__ignoreMap":52},[57,4211,4212,4214],{"class":59,"line":60},[57,4213,64],{"class":63},[57,4215,68],{"class":67},[19,4217,4218,4219,332],{},"Вывод должен быть: ",[54,4220,4195],{},[14,4222,4224],{"id":4223},"шаг-3-установите-oh-my-zsh-опционально-но-рекомендуется","Шаг 3: Установите Oh My Zsh (опционально, но рекомендуется)",[19,4226,4227],{},"Oh My Zsh — это фреймворк для управления конфигурацией Zsh. Он автоматически устанавливает плагины и темы.",[47,4229,4231],{"className":49,"code":4230,"language":51,"meta":52,"style":52},"sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"\n",[54,4232,4233],{"__ignoreMap":52},[57,4234,4235,4238,4241,4244,4247,4250],{"class":59,"line":60},[57,4236,4237],{"class":598},"sh",[57,4239,4240],{"class":63}," -c",[57,4242,4243],{"class":605}," \"$(",[57,4245,4246],{"class":598},"curl",[57,4248,4249],{"class":63}," -fsSL",[57,4251,4252],{"class":605}," https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"\n",[19,4254,4255],{},"Процесс:",[30,4257,4258,4264,4270],{},[33,4259,4260,4261,332],{},"Скрипт клонирует репозиторий в ",[54,4262,4263],{},"~/.oh-my-zsh",[33,4265,4266,4267,4269],{},"Создаст резервную копию вашего текущего ",[54,4268,671],{}," (если есть) и запишет базовый конфиг.",[33,4271,4272],{},"Предложит изменить оболочку на Zsh (если вы ещё не сделали этого).",[76,4274,4275],{},[19,4276,3091,4277,4279,4280,332],{},[36,4278,2048],{},": Если вы уже установили Zsh и сделали её оболочкой по умолчанию, скрипт просто настроит ",[54,4281,671],{},[14,4283,4285],{"id":4284},"шаг-4-настройте-тему-оформления","Шаг 4: Настройте тему оформления",[19,4287,4288,4289,4292],{},"Тема определяет внешний вид приглашения командной строки (",[54,4290,4291],{},"prompt","). Популярные варианты:",[94,4294,4295,4301,4307],{},[33,4296,4297,4300],{},[54,4298,4299],{},"robbyrussell"," (по умолчанию) — минималистичная, показывает Git-статус.",[33,4302,4303,4306],{},[54,4304,4305],{},"agnoster"," — информативная, требует шрифт с поддержкой Powerline.",[33,4308,4309,4312],{},[54,4310,4311],{},"avit"," — компактная, показывает время и путь.",[19,4314,4315,4316,4319,4320,4323],{},"Откройте ",[54,4317,4318],{},"~/.zshshrc"," в редакторе (например, ",[54,4321,4322],{},"nano ~/.zshrc",") и найдите строку:",[47,4325,4327],{"className":49,"code":4326,"language":51,"meta":52,"style":52},"ZSH_THEME=\"robbyrussell\"\n",[54,4328,4329],{"__ignoreMap":52},[57,4330,4331,4334,4336],{"class":59,"line":60},[57,4332,4333],{"class":67},"ZSH_THEME",[57,4335,1625],{"class":784},[57,4337,4338],{"class":605},"\"robbyrussell\"\n",[19,4340,4341],{},"Измените значение на желаемую тему, например:",[47,4343,4345],{"className":49,"code":4344,"language":51,"meta":52,"style":52},"ZSH_THEME=\"agnoster\"\n",[54,4346,4347],{"__ignoreMap":52},[57,4348,4349,4351,4353],{"class":59,"line":60},[57,4350,4333],{"class":67},[57,4352,1625],{"class":784},[57,4354,4355],{"class":605},"\"agnoster\"\n",[19,4357,4358,4359,332],{},"Список всех встроенных тем: ",[54,4360,4361],{},"~/.oh-my-zsh/themes/",[89,4363,4365],{"id":4364},"установка-шрифта-для-тем-powerline-если-нужно","Установка шрифта для тем Powerline (если нужно)",[19,4367,4368,4369,4371],{},"Темы вроде ",[54,4370,4305],{}," используют специальные символы. Установите шрифт Nerd Fonts:",[19,4373,4374],{},[36,4375,4036],{},[47,4377,4379],{"className":49,"code":4378,"language":51,"meta":52,"style":52},"sudo apt install fonts-powerline -y\n",[54,4380,4381],{"__ignoreMap":52},[57,4382,4383,4385,4387,4389,4392],{"class":59,"line":60},[57,4384,429],{"class":598},[57,4386,933],{"class":605},[57,4388,4058],{"class":605},[57,4390,4391],{"class":605}," fonts-powerline",[57,4393,949],{"class":63},[19,4395,4396],{},[36,4397,4398],{},"Fedora:",[47,4400,4402],{"className":49,"code":4401,"language":51,"meta":52,"style":52},"sudo dnf install powerline-fonts -y\n",[54,4403,4404],{"__ignoreMap":52},[57,4405,4406,4408,4410,4412,4415],{"class":59,"line":60},[57,4407,429],{"class":598},[57,4409,4080],{"class":605},[57,4411,4058],{"class":605},[57,4413,4414],{"class":605}," powerline-fonts",[57,4416,949],{"class":63},[19,4418,4419,4420,165,4423,332],{},"Затем настройте терминал (например, GNOME Terminal) на использование шрифта ",[54,4421,4422],{},"DejaVu Sans Mono for Powerline",[54,4424,4425],{},"FiraCode Nerd Font",[555,4427],{},[14,4429,4431],{"id":4430},"шаг-5-добавьте-плагины-для-расширения-функциональности","Шаг 5: Добавьте плагины для расширения функциональности",[19,4433,4434,4435,4437,4438,4441],{},"Плагины Oh My Zsh добавляют команды и автодополнение для конкретных технологий. В том же файле ",[54,4436,671],{}," найдите массив ",[54,4439,4440],{},"plugins"," и добавьте нужные:",[47,4443,4445],{"className":49,"code":4444,"language":51,"meta":52,"style":52},"plugins=(\n  git\n  docker\n  kubectl\n  python\n  pip\n  sudo\n  z\n  history-substring-search\n  syntax-highlighting\n)\n",[54,4446,4447,4456,4461,4466,4471,4476,4481,4486,4491,4496,4501],{"__ignoreMap":52},[57,4448,4449,4451,4453],{"class":59,"line":60},[57,4450,4440],{"class":67},[57,4452,1625],{"class":784},[57,4454,4455],{"class":67},"(\n",[57,4457,4458],{"class":59,"line":595},[57,4459,4460],{"class":605},"  git\n",[57,4462,4463],{"class":59,"line":612},[57,4464,4465],{"class":605},"  docker\n",[57,4467,4468],{"class":59,"line":626},[57,4469,4470],{"class":605},"  kubectl\n",[57,4472,4473],{"class":59,"line":640},[57,4474,4475],{"class":605},"  python\n",[57,4477,4478],{"class":59,"line":1985},[57,4479,4480],{"class":605},"  pip\n",[57,4482,4483],{"class":59,"line":1991},[57,4484,4485],{"class":605},"  sudo\n",[57,4487,4488],{"class":59,"line":2001},[57,4489,4490],{"class":605},"  z\n",[57,4492,4493],{"class":59,"line":2006},[57,4494,4495],{"class":605},"  history-substring-search\n",[57,4497,4498],{"class":59,"line":2012},[57,4499,4500],{"class":605},"  syntax-highlighting\n",[57,4502,4503],{"class":59,"line":3356},[57,4504,797],{"class":67},[19,4506,4507],{},[36,4508,4509],{},"Описание ключевых плагинов:",[94,4511,4512,4533,4542,4551,4563],{},[33,4513,4514,4516,4517,4519,4520,4523,4524,279,4527,4523,4530,191],{},[54,4515,2052],{}," — сокращения для ",[54,4518,2052],{}," (",[54,4521,4522],{},"gco"," = ",[54,4525,4526],{},"git checkout",[54,4528,4529],{},"gcm",[54,4531,4532],{},"git commit",[33,4534,4535,2622,4538,4541],{},[54,4536,4537],{},"docker",[54,4539,4540],{},"kubectl"," — автодополнение для контейнеров и Kubernetes.",[33,4543,4544,4547,4548,191],{},[54,4545,4546],{},"z"," — быстрая навигация по часто используемым директориям (",[54,4549,4550],{},"z \u003Cпапка>",[33,4552,4553,4556,4557,861,4560,191],{},[54,4554,4555],{},"history-substring-search"," — поиск по истории команд (введите часть команды и нажмите ",[54,4558,4559],{},"↑",[54,4561,4562],{},"↓",[33,4564,4565,4568],{},[54,4566,4567],{},"syntax-highlighting"," — подсветка синтаксиса при вводе (ошибки красным, корректные — зелёным).",[76,4570,4571],{},[19,4572,2530,4573,4575,4576,4578,4579,4582],{},[36,4574,1594],{},": Плагин ",[54,4577,4567],{}," должен быть ",[36,4580,4581],{},"последним"," в списке. Oh My Zsh автоматически подключает его, если он установлен.",[14,4584,4586],{"id":4585},"шаг-6-примените-изменения-и-проверьте-работу","Шаг 6: Примените изменения и проверьте работу",[19,4588,4589,4590,4592],{},"После редактирования ",[54,4591,671],{}," выполните:",[47,4594,4596],{"className":49,"code":4595,"language":51,"meta":52,"style":52},"source ~/.zshrc\n",[54,4597,4598],{"__ignoreMap":52},[57,4599,4600,4603],{"class":59,"line":60},[57,4601,4602],{"class":63},"source",[57,4604,4605],{"class":605}," ~/.zshrc\n",[19,4607,4608],{},"Или перезапустите терминал.",[89,4610,4612],{"id":4611},"что-проверить","Что проверить:",[30,4614,4615,4621,4634,4659],{},[33,4616,4617,4620],{},[36,4618,4619],{},"Тема",": Приглашение командной строки изменилось (показывает ветку Git, если вы в репозитории).",[33,4622,4623,4626,4627,325,4630,4633],{},[36,4624,4625],{},"Автодополнение",": Введите ",[54,4628,4629],{},"docker ",[54,4631,4632],{},"Tab"," — должны появиться подкоманды.",[33,4635,4636,4639,4640],{},[36,4637,4638],{},"Плагины",":\n",[94,4641,4642,4651],{},[33,4643,4644,4647,4648,332],{},[54,4645,4646],{},"z Documents"," — перейдёт в папку ",[54,4649,4650],{},"Documents",[33,4652,4653,4655,4656,332],{},[54,4654,2150],{}," → можно сократить до ",[54,4657,4658],{},"gst",[33,4660,4661,4626,4664,4667],{},[36,4662,4663],{},"Подсветка синтаксиса",[54,4665,4666],{},"ls /nonexistent"," — путь должен подсветиться красным.",[14,4669,878],{"id":877},[19,4671,4672],{},"Успешная настройка подтверждается:",[94,4674,4675,4678,4681,4684],{},[33,4676,4677],{},"Приглашение командной строки отображает информацию (ветка Git, путь, время — в зависимости от темы).",[33,4679,4680],{},"Автодополнение работает без задержек.",[33,4682,4683],{},"Плагины добавляют сокращения и команды.",[33,4685,4686,4687,191],{},"Нет ошибок при запуске (сообщения вида ",[54,4688,4689],{},"zsh: command not found: ...",[19,4691,4692],{},"Дополнительно проверьте:",[47,4694,4696],{"className":49,"code":4695,"language":51,"meta":52,"style":52},"echo $ZSH_VERSION  # Должна показать версию Zsh\necho $ZSH          # Должна показать путь к Oh My Zsh (~/.oh-my-zsh)\n",[54,4697,4698,4708],{"__ignoreMap":52},[57,4699,4700,4702,4705],{"class":59,"line":60},[57,4701,64],{"class":63},[57,4703,4704],{"class":67}," $ZSH_VERSION  ",[57,4706,4707],{"class":591},"# Должна показать версию Zsh\n",[57,4709,4710,4712,4715],{"class":59,"line":595},[57,4711,64],{"class":63},[57,4713,4714],{"class":67}," $ZSH          ",[57,4716,4717],{"class":591},"# Должна показать путь к Oh My Zsh (~/.oh-my-zsh)\n",[14,4719,986],{"id":985},[89,4721,4723,4724,4726],{"id":4722},"ошибка-zsh-command-not-found-после-установки-плагина","Ошибка: ",[54,4725,4689],{}," после установки плагина",[19,4728,4729,4731,4732,602],{},[36,4730,2119],{},": Плагин не загружен или не установлен.\n",[36,4733,1010],{},[30,4735,4736,4741,4747],{},[33,4737,4738,4739,332],{},"Убедитесь, что имя плагина написано верно в ",[54,4740,671],{},[33,4742,4743,4744,332],{},"Проверьте, что плагин существует в ",[54,4745,4746],{},"~/.oh-my-zsh/plugins/",[33,4748,4749,4750,332],{},"Перезагрузите конфиг: ",[54,4751,719],{},[89,4753,4755],{"id":4754},"тема-отображается-некорректно-кракозябры-пропущенные-символы","Тема отображается некорректно (кракозябры, пропущенные символы)",[19,4757,4758,4760,4761,4763],{},[36,4759,2119],{},": Шрифт не поддерживает Powerline-символы.\n",[36,4762,1010],{},": Установите Nerd Font или Powerline Fonts и настройте терминал на его использование.",[89,4765,4767,4768],{"id":4766},"zsh-не-стала-оболочкой-по-умолчанию-после-chsh","Zsh не стала оболочкой по умолчанию после ",[54,4769,4169],{},[19,4771,4772,4774,4775,602],{},[36,4773,2119],{},": Не перезашли в терминал или путь к Zsh неверный.\n",[36,4776,1010],{},[30,4778,4779,4787,4790],{},[33,4780,4781,4782,4784,4785,191],{},"Проверьте путь: ",[54,4783,4191],{}," (обычно ",[54,4786,4195],{},[33,4788,4789],{},"Перезайдите в учётную запись или перезагрузитесь.",[33,4791,4792,4793,332],{},"Проверьте: ",[54,4794,4795],{},"echo $SHELL",[89,4797,4799],{"id":4798},"медленная-загрузка-zsh-задержка-1-сек","Медленная загрузка Zsh (задержка >1 сек)",[19,4801,4802,4804,4805,602],{},[36,4803,2119],{},": Слишком много плагинов или тяжёлая тема.\n",[36,4806,1010],{},[30,4808,4809,4814,4817],{},[33,4810,4811,4812,191],{},"Упростите тему (выберите ",[54,4813,4299],{},[33,4815,4816],{},"Уменьшите список плагинов.",[33,4818,4819,4820,4822],{},"Отключите тяжёлые плагины (например, ",[54,4821,4555],{}," может замедлять поиск).",[89,4824,4826],{"id":4825},"конфликт-с-другими-менеджерами-конфигураций-например-prezto","Конфликт с другими менеджерами конфигураций (например, Prezto)",[19,4828,4829,4831,4832,3203,4834,4836,4837,4839,4840,4842],{},[36,4830,2119],{},": Два фреймворка управляют ",[54,4833,671],{},[36,4835,1010],{},": Удалите один из них. Для Oh My Zsh: удалите папку ",[54,4838,4263],{}," и создайте чистый ",[54,4841,671],{}," вручную.",[47,4844,4846],{"className":49,"code":4845,"language":51,"meta":52,"style":52},"rm -rf ~/.oh-my-zsh\necho \"export ZSH=\\\"\\$HOME/.oh-my-zsh\\\"\" > ~/.zshrc  # Пример минимального конфига\n",[54,4847,4848,4859],{"__ignoreMap":52},[57,4849,4850,4853,4856],{"class":59,"line":60},[57,4851,4852],{"class":598},"rm",[57,4854,4855],{"class":63}," -rf",[57,4857,4858],{"class":605}," ~/.oh-my-zsh\n",[57,4860,4861,4863,4866,4869,4872,4875,4878,4880,4883],{"class":59,"line":595},[57,4862,64],{"class":63},[57,4864,4865],{"class":605}," \"export ZSH=",[57,4867,4868],{"class":63},"\\\"\\$",[57,4870,4871],{"class":605},"HOME/.oh-my-zsh",[57,4873,4874],{"class":63},"\\\"",[57,4876,4877],{"class":605},"\"",[57,4879,3218],{"class":784},[57,4881,4882],{"class":605}," ~/.zshrc",[57,4884,4885],{"class":591},"  # Пример минимального конфига\n",[1151,4887,4888],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":52,"searchDepth":595,"depth":595,"links":4890},[4891,4892,4893,4894,4895,4896,4899,4900,4903,4904],{"id":16,"depth":595,"text":17},{"id":24,"depth":595,"text":25},{"id":4027,"depth":595,"text":4028},{"id":4155,"depth":595,"text":4156},{"id":4223,"depth":595,"text":4224},{"id":4284,"depth":595,"text":4285,"children":4897},[4898],{"id":4364,"depth":612,"text":4365},{"id":4430,"depth":595,"text":4431},{"id":4585,"depth":595,"text":4586,"children":4901},[4902],{"id":4611,"depth":612,"text":4612},{"id":877,"depth":595,"text":878},{"id":985,"depth":595,"text":986,"children":4905},[4906,4908,4909,4911,4912],{"id":4722,"depth":612,"text":4907},"Ошибка: zsh: command not found: ... после установки плагина",{"id":4754,"depth":612,"text":4755},{"id":4766,"depth":612,"text":4910},"Zsh не стала оболочкой по умолчанию после chsh",{"id":4798,"depth":612,"text":4799},{"id":4825,"depth":612,"text":4826},"2026-02-16 20:08:53","Пошаговая инструкция по установке Zsh, настройке Oh My Zsh и кастомизации в Linux. Улучшите терминал за 15 минут с темами, плагинами и автодополнением.","10-20 мин",[4917,4920,4923,4926],{"question":4918,"answer":4919},"Zsh и Bash — в чём разница и стоит ли переходить?","Zsh предлагает более продвинутые функции: улучшенное автодополнение, тему оформления, плагины и более удобную историю команд. Для повседневной работы и разработки Zsh обычно удобнее.",{"question":4921,"answer":4922},"Что делать, если после установки Zsh не становится оболочкой по умолчанию?","Запустите команду `chsh -s $(which zsh)`, затем перезайдите в терминал или перезагрузитесь. Проверьте текущую оболочку командой `echo $SHELL`.",{"question":4924,"answer":4925},"Можно ли использовать Zsh без Oh My Zsh?","Да, можно настраивать вручную через файл ~/.zshrc. Oh My Zsh упрощает управление темами и плагинами, но добавляет небольшую нагрузку на запуск.",{"question":4927,"answer":4928},"Как вернуться к Bash, если Zsh не нравится?","Выполните `chsh -s $(which bash)` и перезайдите. Удалить Oh My Zsh можно, удалив папку ~/.oh-my-zsh и очистив ~/.zshrc.",[4930,4933,4936,4939,4942],{"name":4931,"text":4932},"Проверьте текущую оболочку и установите Zsh","Узнайте, какая оболочка используется сейчас (`echo $SHELL`), затем установите Zsh через менеджер пакетов вашего дистрибутива.",{"name":4934,"text":4935},"Сделайте Zsh оболочкой по умолчанию","Используйте `chsh -s $(which zsh)`, чтобы изменить оболочку для текущего пользователя.",{"name":4937,"text":4938},"Установите Oh My Zsh (опционально)","Склонируйте репозиторий Oh My Zsh для автоматической настройки тем и плагинов.",{"name":4940,"text":4941},"Настройте тему и плагины","Отредактируйте ~/.zshrc, выбрав тему из каталога и подключив нужные плагины (git, docker, syntax-highlighting).",{"name":4943,"text":4944},"Примените изменения и проверьте работу","Выполните `source ~/.zshrc` или перезапустите терминал, чтобы увидеть новый интерфейс.",[4946,4947,4948,4949,4950,4951,4952,4953,4954,4955],"установка zsh linux","настройка oh my zsh","zsh vs bash","как сменить оболочку linux","установка zsh ubuntu","установка zsh fedora","настройка терминала zsh","oh my zsh themes","zsh plugins","ошибка zsh command not found",{},[1243,4958,4959],"/guides/linux/tmux-basics","/errors/linux/zsh-command-not-found",{"title":3950,"description":4914},"guides/linux/zsh-installation-configuration","В этом гайде вы установите мощную оболочку Zsh на Linux, настроите менеджер конфигураций Oh My Zsh и кастомизируете интерфейс под свои задачи. Получите продвинутый терминал с автодополнением, историей команд и удобными плагинами.",[1241,1255,4964,4965,4966,51,2320,4967],"terminal","oh-my-zsh","оболочка","CLI","GcrP_1Zyflwi0nO7TrU00JQeTM8AosMtY7l6mF8ycEw"]