[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/process-zombie":3,"mdc--wsr4l4-key":759,"mdc-kyeu69-key":769,"mdc-l233vj-key":777,"mdc-t36dur-key":785,"mdc-syuy55-key":793,"mdc-wk79h3-key":815,"mdc--po1xpp-key":832,"mdc-2vuy4a-key":849,"mdc-96z3oy-key":866,"related-/guides/linux/process-management-basics,/errors/linux/process-kill-fail,/guides/linux/systemd-service-failed":882},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":690,"code":61,"createdAt":691,"description":692,"difficulty":693,"draft":694,"estimatedTime":695,"extension":696,"faq":697,"howToSteps":710,"howToTotalTime":726,"image":690,"keywords":727,"locale":738,"meta":739,"navigation":475,"path":740,"platform":741,"related":742,"section":746,"seo":747,"severity":748,"stem":749,"summary":750,"tags":751,"twitterCreator":690,"twitterSite":690,"type":757,"updatedAt":691,"__hash__":758},"content_ru/errors/linux/process-zombie.md","Зомби-процессы в Linux: как найти и устранить",[7,8,9,10],"Linux 5.x+","Ubuntu 20.04+","CentOS 8+","Debian 11+","FixPedia Team",{"type":13,"value":14,"toc":676},"minimark",[15,20,29,44,47,52,62,73,77,80,132,136,139,143,152,225,238,242,259,320,324,337,340,367,370,394,397,401,404,449,452,506,510,513,662,665,669,672],[16,17,19],"h2",{"id":18},"что-такое-зомби-процесс-в-linux","Что такое зомби-процесс в Linux",[21,22,23,24,28],"p",{},"Зомби-процесс (zombie process) — это процесс, который уже завершил своё выполнение, но его запись остаётся в таблице процессов системы. Это происходит, когда родительский процесс не прочитал статус завершения дочернего процесса с помощью системного вызова ",[25,26,27],"code",{},"wait()"," или его вариаций.",[21,30,31,32,35,36,39,40,43],{},"В выводе команды ",[25,33,34],{},"ps aux"," или ",[25,37,38],{},"top"," такой процесс отображается с состоянием ",[25,41,42],{},"Z",". У зомби-процесса нет потребления процессорного времени или оперативной памяти, но он занимает запись в таблице процессов (и, следовательно, один из доступных идентификаторов процесса — PID).",[21,45,46],{},"Обычно зомби-процесс — это временное состояние, которое длится микросекунды. Однако если родительский процесс \"забыл\" о своём дочернем, зомби может оставаться в системе неопределённо долго.",[48,49,51],"h3",{"id":50},"как-выглядит-ошибка","Как выглядит ошибка?",[53,54,59],"pre",{"className":55,"code":57,"language":58},[56],"language-text","$ ps aux | grep Z\nUSER       PID  %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND\nroot      1234   0.0  0.0      0     0 ?        Z    10:00   0:00 [defunct] \u003Cимя_процесса>\n","text",[25,60,57],{"__ignoreMap":61},"",[21,63,64,65,68,69,72],{},"Символ ",[25,66,67],{},"[defunct]"," в колонке ",[25,70,71],{},"COMMAND"," явно указывает на зомби-процесс.",[16,74,76],{"id":75},"причины-возникновения","Причины возникновения",[21,78,79],{},"Зомби-процессы появляются по одной основной причине и нескольким косвенным:",[81,82,83,103,113,126],"ol",{},[84,85,86,92,93,96,97,35,99,102],"li",{},[87,88,89,90],"strong",{},"Родительский процесс не вызывает ",[25,91,27],{},". Это самая частая причина. После того как дочерний процесс завершается (например, через ",[25,94,95],{},"exit()","), ядро сохраняет информацию о его завершении (код возврата, использование ресурсов) в структуре процесса. Родитель должен прочитать эту информацию с помощью ",[25,98,27],{},[25,100,101],{},"waitpid()",". Если родитель этого не делает, запись дочернего процесса остаётся в таблице процессов как \"зомби\".",[84,104,105,108,109,112],{},[87,106,107],{},"Родительский процесс \"завис\" или некорректно обрабатывает сигналы",". Если родительский процесс игнорирует сигнал ",[25,110,111],{},"SIGCHLD"," (который ядро отправляет при завершении ребёнка) или сам завершился, не дождавшись детей, это приводит к появлению зомби.",[84,114,115,118,119,121,122,125],{},[87,116,117],{},"Ошибка в программе",". В коде родительского процесса может отсутствовать вызов ",[25,120,27],{}," после ",[25,123,124],{},"fork()",", или он может быть заблокирован на другом действии (например, на ожидании ввода-вывода).",[84,127,128,131],{},[87,129,130],{},"Ошибка в системном скрипте или демоне",". Некоторые старые или некорректно написанные демоны могут создавать зомби при обработке запросов.",[16,133,135],{"id":134},"способы-устранения-зомби-процессов","Способы устранения зомби-процессов",[21,137,138],{},"Поскольку зомби-процесс уже мёртв, его нельзя \"убить\". Единственный способ освободить запись в таблице процессов — заставить родительский процесс прочитать статус завершения. Если родитель не может или не хочет этого сделать, нужно завершить самого родителя.",[48,140,142],{"id":141},"способ-1-отправить-сигнал-sigchld-родительскому-процессу","Способ 1: Отправить сигнал SIGCHLD родительскому процессу",[21,144,145,146,148,149,151],{},"Это самый аккуратный способ. Сигнал ",[25,147,111],{}," (сигнал о завершении потомка) может заставить родительский процесс, который его корректно обрабатывает, вызвать ",[25,150,27],{}," и \"подобрать\" зомби.",[81,153,154,160,218],{},[84,155,156,157,159],{},"Найдите PID родительского процесса (PPID) зомби-процесса (из вывода ",[25,158,34],{},").",[84,161,162,163,197,198],{},"Отправьте ему сигнал:\n",[53,164,168],{"className":165,"code":166,"language":167,"meta":61,"style":61},"language-bash shiki shiki-themes github-light github-dark","kill -SIGCHLD \u003CPPID>\n","bash",[25,169,170],{"__ignoreMap":61},[171,172,175,179,182,186,190,194],"span",{"class":173,"line":174},"line",1,[171,176,178],{"class":177},"sj4cs","kill",[171,180,181],{"class":177}," -SIGCHLD",[171,183,185],{"class":184},"szBVR"," \u003C",[171,187,189],{"class":188},"sZZnC","PPI",[171,191,193],{"class":192},"sVt8B","D",[171,195,196],{"class":184},">\n","\nили просто:\n",[53,199,201],{"className":165,"code":200,"language":167,"meta":61,"style":61},"kill -18 \u003CPPID>\n",[25,202,203],{"__ignoreMap":61},[171,204,205,207,210,212,214,216],{"class":173,"line":174},[171,206,178],{"class":177},[171,208,209],{"class":177}," -18",[171,211,185],{"class":184},[171,213,189],{"class":188},[171,215,193],{"class":192},[171,217,196],{"class":184},[84,219,220,221,224],{},"Проверьте, исчез ли зомби: ",[25,222,223],{},"ps aux | grep 'Z'",".",[226,227,228],"blockquote",{},[21,229,230,231,234,235,237],{},"⚠️ ",[87,232,233],{},"Важно:"," Многие программы не имеют кастомного обработчика для ",[25,236,111],{}," по умолчанию. В таком случае ядро просто игнорирует этот сигнал, и зомби останется.",[48,239,241],{"id":240},"способ-2-завершить-родительский-процесс","Способ 2: Завершить родительский процесс",[21,243,244,245,248,249,252,253,255,256,258],{},"Если сигнал не помог, самым надёжным способом является завершение родительского процесса. После этого зомби-процесс становится \"сиротой\" и наследуется специальным процессом ",[25,246,247],{},"init"," (с PID 1) или ",[25,250,251],{},"systemd"," (в современных системах). Процесс ",[25,254,247],{}," периодически выполняет ",[25,257,27],{}," для всех своих дочерних процессов, поэтому зомби будет автоматически собран.",[81,260,261,276,317],{},[84,262,263,264,267,268,271,272,275],{},"Убедитесь, что PID родителя (PPID) корректен и вы готовы его завершить. ",[87,265,266],{},"Внимание:"," завершение системного процесса (например, ",[25,269,270],{},"sshd",", ",[25,273,274],{},"cron",") может привести к временной неработоспособности службы.",[84,277,278,279,296,297],{},"Отправьте сигнал завершения:\n",[53,280,282],{"className":165,"code":281,"language":167,"meta":61,"style":61},"kill \u003CPPID>\n",[25,283,284],{"__ignoreMap":61},[171,285,286,288,290,292,294],{"class":173,"line":174},[171,287,178],{"class":177},[171,289,185],{"class":184},[171,291,189],{"class":188},[171,293,193],{"class":192},[171,295,196],{"class":184},"\nЕсли процесс не реагирует, используйте принудительное завершение:\n",[53,298,300],{"className":165,"code":299,"language":167,"meta":61,"style":61},"kill -9 \u003CPPID>\n",[25,301,302],{"__ignoreMap":61},[171,303,304,306,309,311,313,315],{"class":173,"line":174},[171,305,178],{"class":177},[171,307,308],{"class":177}," -9",[171,310,185],{"class":184},[171,312,189],{"class":188},[171,314,193],{"class":192},[171,316,196],{"class":184},[84,318,319],{},"После завершения родителя проверьте список процессов. Зомби должен исчезнуть.",[48,321,323],{"id":322},"способ-3-перезапуск-родительского-процесса-если-это-сервис","Способ 3: Перезапуск родительского процесса (если это сервис)",[21,325,326,327,271,330,271,333,336],{},"Если родительский процесс — это системный демон (например, ",[25,328,329],{},"apache2",[25,331,332],{},"nginx",[25,334,335],{},"mysql","), правильным решением будет его перезапуск через менеджер служб.",[21,338,339],{},"Для systemd:",[53,341,343],{"className":165,"code":342,"language":167,"meta":61,"style":61},"sudo systemctl restart \u003Cимя_сервиса>\n",[25,344,345],{"__ignoreMap":61},[171,346,347,351,354,357,359,362,365],{"class":173,"line":174},[171,348,350],{"class":349},"sScJk","sudo",[171,352,353],{"class":188}," systemctl",[171,355,356],{"class":188}," restart",[171,358,185],{"class":184},[171,360,361],{"class":188},"имя_сервис",[171,363,364],{"class":192},"а",[171,366,196],{"class":184},[21,368,369],{},"Для SysVinit (старые системы):",[53,371,373],{"className":165,"code":372,"language":167,"meta":61,"style":61},"sudo service \u003Cимя_сервиса> restart\n",[25,374,375],{"__ignoreMap":61},[171,376,377,379,382,384,386,388,391],{"class":173,"line":174},[171,378,350],{"class":349},[171,380,381],{"class":188}," service",[171,383,185],{"class":184},[171,385,361],{"class":188},[171,387,364],{"class":192},[171,389,390],{"class":184},">",[171,392,393],{"class":188}," restart\n",[21,395,396],{},"Перезапуск службы гарантирует, что новый экземпляр процесса-родителя начнёт корректно управлять своими дочерними процессами.",[48,398,400],{"id":399},"способ-4-отладка-и-исправление-исходного-кода-для-разработчиков","Способ 4: Отладка и исправление исходного кода (для разработчиков)",[21,402,403],{},"Если зомби-процессы постоянно появляются в вашем собственном приложении, необходимо исправить его код.",[81,405,406,411,422],{},[84,407,408,409,224],{},"Найдите в коде родительского процесса места после ",[25,410,124],{},[84,412,413,414,416,417,35,419,421],{},"Убедитесь, что сразу после ",[25,415,124],{}," в родительской ветке есть вызов ",[25,418,27],{},[25,420,101],{}," для сбора статуса дочернего процесса.",[84,423,424,425],{},"Если родитель должен работать параллельно с дочерним процессом, необходимо:\n",[426,427,428,440,446],"ul",{},[84,429,430,431,433,434,35,437,224],{},"Установить обработчик сигнала ",[25,432,111],{}," с помощью ",[25,435,436],{},"signal()",[25,438,439],{},"sigaction()",[84,441,442,443,445],{},"Внутри обработчика вызывать ",[25,444,101],{}," в цикле (чтобы собрать всех завершившихся детей).",[84,447,448],{},"Или периодически (неблокирующим вызовом) проверять наличие завершившихся детей.",[21,450,451],{},"Пример корректного обработчика на C:",[53,453,457],{"className":454,"code":455,"language":456,"meta":61,"style":61},"language-c shiki shiki-themes github-light github-dark","#include \u003Csys/wait.h>\n#include \u003Csignal.h>\n\nvoid sigchld_handler(int s) {\n    while (waitpid(-1, NULL, WNOHANG) > 0);\n}\n\n// В main(): signal(SIGCHLD, sigchld_handler);\n","c",[25,458,459,464,470,477,483,489,495,500],{"__ignoreMap":61},[171,460,461],{"class":173,"line":174},[171,462,463],{},"#include \u003Csys/wait.h>\n",[171,465,467],{"class":173,"line":466},2,[171,468,469],{},"#include \u003Csignal.h>\n",[171,471,473],{"class":173,"line":472},3,[171,474,476],{"emptyLinePlaceholder":475},true,"\n",[171,478,480],{"class":173,"line":479},4,[171,481,482],{},"void sigchld_handler(int s) {\n",[171,484,486],{"class":173,"line":485},5,[171,487,488],{},"    while (waitpid(-1, NULL, WNOHANG) > 0);\n",[171,490,492],{"class":173,"line":491},6,[171,493,494],{},"}\n",[171,496,498],{"class":173,"line":497},7,[171,499,476],{"emptyLinePlaceholder":475},[171,501,503],{"class":173,"line":502},8,[171,504,505],{},"// В main(): signal(SIGCHLD, sigchld_handler);\n",[16,507,509],{"id":508},"профилактика","Профилактика",[21,511,512],{},"Чтобы избежать накопления зомби-процессов в будущем:",[81,514,515,524,557],{},[84,516,517,520,521,523],{},[87,518,519],{},"Для системных администраторов",": Регулярно проверяйте список процессов на наличие зомби (",[25,522,223],{},"), особенно после запуска/останова критичных служб. Если зомби появляются из-за конкретного демона, ищите обновления для этого ПО или сообщайте баг разработчикам.",[84,525,526,529,530],{},[87,527,528],{},"Для разработчиков",":",[426,531,532,540,547],{},[84,533,534,535,537,538,224],{},"Всегда обрабатывайте сигнал ",[25,536,111],{}," в родительских процессах, которые создают дочерние через ",[25,539,124],{},[84,541,542,543,546],{},"Используйте неблокирующий вызов ",[25,544,545],{},"waitpid(-1, &status, WNOHANG)"," в цикле внутри обработчика, чтобы собрать всех завершившихся детей.",[84,548,549,550,553,554,224],{},"Рассмотрите возможность использования более высокоуровневых конструкций (например, ",[25,551,552],{},"subprocess"," в Python, который автоматически собирает статусы) вместо прямого ",[25,555,556],{},"fork/exec",[84,558,559,562,563],{},[87,560,561],{},"Мониторинг",": Настройте простой скрипт для мониторинга количества зомби-процессов и оповещения, если их число превышает, например, 10.",[53,564,566],{"className":165,"code":565,"language":167,"meta":61,"style":61},"#!/bin/bash\nZOMBIE_COUNT=$(ps aux | grep -c ' Z ')\nif [ \"$ZOMBIE_COUNT\" -gt 10 ]; then\n    echo \"Внимание: обнаружено $ZOMBIE_COUNT зомби-процессов!\" | wall\n    # Можно также добавить отправку email или вызов pagerduty\nfi\n",[25,567,568,574,606,634,652,657],{"__ignoreMap":61},[171,569,570],{"class":173,"line":174},[171,571,573],{"class":572},"sJ8bj","#!/bin/bash\n",[171,575,576,579,582,585,588,591,594,597,600,603],{"class":173,"line":466},[171,577,578],{"class":192},"ZOMBIE_COUNT",[171,580,581],{"class":184},"=",[171,583,584],{"class":192},"$(",[171,586,587],{"class":349},"ps",[171,589,590],{"class":188}," aux",[171,592,593],{"class":184}," |",[171,595,596],{"class":349}," grep",[171,598,599],{"class":177}," -c",[171,601,602],{"class":188}," ' Z '",[171,604,605],{"class":192},")\n",[171,607,608,611,614,617,620,622,625,628,631],{"class":173,"line":472},[171,609,610],{"class":184},"if",[171,612,613],{"class":192}," [ ",[171,615,616],{"class":188},"\"",[171,618,619],{"class":192},"$ZOMBIE_COUNT",[171,621,616],{"class":188},[171,623,624],{"class":184}," -gt",[171,626,627],{"class":177}," 10",[171,629,630],{"class":192}," ]; ",[171,632,633],{"class":184},"then\n",[171,635,636,639,642,644,647,649],{"class":173,"line":479},[171,637,638],{"class":177},"    echo",[171,640,641],{"class":188}," \"Внимание: обнаружено ",[171,643,619],{"class":192},[171,645,646],{"class":188}," зомби-процессов!\"",[171,648,593],{"class":184},[171,650,651],{"class":349}," wall\n",[171,653,654],{"class":173,"line":485},[171,655,656],{"class":572},"    # Можно также добавить отправку email или вызов pagerduty\n",[171,658,659],{"class":173,"line":491},[171,660,661],{"class":184},"fi\n",[663,664],"in-article-ad",{},[16,666,668],{"id":667},"заключение","Заключение",[21,670,671],{},"Зомби-процессы в Linux — это в основном следствие ошибок в родительских программах, а не критичная системная проблема. Они не потребляют значительных ресурсов, но их накопление указывает на некорректно работающий софт. В большинстве случаев достаточно завершить родительский процесс зомби, после чего ядро само очистит его запись. Для постоянного решения проблемы разработчикам необходимо исправлять код, а администраторам — следить за состоянием служб и обновлять ПО.",[673,674,675],"style",{},"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 .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 .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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":61,"searchDepth":466,"depth":466,"links":677},[678,681,682,688,689],{"id":18,"depth":466,"text":19,"children":679},[680],{"id":50,"depth":472,"text":51},{"id":75,"depth":466,"text":76},{"id":134,"depth":466,"text":135,"children":683},[684,685,686,687],{"id":141,"depth":472,"text":142},{"id":240,"depth":472,"text":241},{"id":322,"depth":472,"text":323},{"id":399,"depth":472,"text":400},{"id":508,"depth":466,"text":509},{"id":667,"depth":466,"text":668},null,"2026-02-16 18:33:58","Узнайте, что такое зомби-процессы в Linux, почему они появляются и как их безопасно удалить. Пошаговая инструкция с командами для диагностики и устранения.","easy",false,"10-15 мин","md",[698,701,704,707],{"question":699,"answer":700},"Чем зомби-процесс отличается от сиротского (orphan)?","Зомби-процесс (Z) уже завершил выполнение, но его запись остаётся в таблице процессов, так как родитель не прочитал его статус. Сирота — это процесс, чей родитель завершился, и он был усыновлён init-процессом (PID 1).",{"question":702,"answer":703},"Могут ли зомби-процессы нагружать систему?","Нет, сами по себе они не потребляют CPU или память, но занимают запись в таблице процессов. Большое количество зомби (тысячи) может исчерпать лимит PID, мешая запуску новых процессов.",{"question":705,"answer":706},"Как предотвратить появление зомби-процессов?","В программах на C/C++ и других языках необходимо корректно обрабатывать сигнал SIGCHLD или использовать системный вызов wait/waitpid в родительском процессе после fork().",{"question":708,"answer":709},"Почему команда kill -9 не работает на зомби?","Зомби-процесс уже завершён ядром, его нет в памяти. Сигнал kill может быть отправлен только живым процессам. Убрать зомби можно, только завершив его родительский процесс.",[711,714,717,720,723],{"name":712,"text":713},"Определите зомби-процессы","Используйте команду `ps aux` или `top` и найдите процессы в состоянии 'Z' (зомби). Обратите внимание на PPID (PID родителя).",{"name":715,"text":716},"Убедитесь, что родительский процесс существует","Найдите родительский процесс (PPID) через `ps -p \u003CPPID>`. Если его нет, значит, он уже завершился, и зомби должен быть автоматически собран init-процессом (PID 1).",{"name":718,"text":719},"Отправьте сигнал SIGCHLD родителю","Если родитель жив, попробуйте отправить ему сигнал SIGCHLD: `kill -SIGCHLD \u003CPPID>`. Это может побудить его корректно завершить дочерний процесс.",{"name":721,"text":722},"Завершите родительский процесс (осторожно)","Если сигнал не помог, завершите родительский процесс: `kill \u003CPPID>`. После этого зомби-процесс станет сиротой и будет автоматически собран init-процессом (PID 1).",{"name":724,"text":725},"Проверьте результат","Снова выполните `ps aux | grep 'Z'`. Зомби-процесс должен исчезнуть из списка.","PT15M",[728,729,730,731,732,733,734,735,736,737],"зомби процесс linux","как убрать зомби процесс","ps aux зомби","zombie process linux","убить зомби процесс","ошибка состояние Z linux","системные процессы linux","управление процессами linux","wait системный вызов","сигнал SIGCHLD","ru_RU",{},"/errors/linux/process-zombie","linux",[743,744,745],"/guides/linux/process-management-basics","/errors/linux/process-kill-fail","/guides/linux/systemd-service-failed","Ошибки Linux",{"title":5,"description":692},"low","errors/linux/process-zombie","Статья объясняет природу зомби-процессов в Linux и предоставляет практические методы их устранения. Вы научитесь находить зомби-процессы и применять правильные команды для очистки системы.",[752,741,753,754,755,756,167],"процессы","zombie process","sysadmin","ошибка","terminal","error","pJFIhOXScOs92oZ2q0OSMTh9AnWYTW2aTehPcKvfrvw",{"data":760,"body":761},{},{"type":762,"children":763},"root",[764],{"type":765,"tag":21,"props":766,"children":767},"element",{},[768],{"type":58,"value":700},{"data":770,"body":771},{},{"type":762,"children":772},[773],{"type":765,"tag":21,"props":774,"children":775},{},[776],{"type":58,"value":703},{"data":778,"body":779},{},{"type":762,"children":780},[781],{"type":765,"tag":21,"props":782,"children":783},{},[784],{"type":58,"value":706},{"data":786,"body":787},{},{"type":762,"children":788},[789],{"type":765,"tag":21,"props":790,"children":791},{},[792],{"type":58,"value":709},{"data":794,"body":795},{},{"type":762,"children":796},[797],{"type":765,"tag":21,"props":798,"children":799},{},[800,802,807,808,813],{"type":58,"value":801},"Используйте команду ",{"type":765,"tag":25,"props":803,"children":805},{"className":804},[],[806],{"type":58,"value":34},{"type":58,"value":35},{"type":765,"tag":25,"props":809,"children":811},{"className":810},[],[812],{"type":58,"value":38},{"type":58,"value":814}," и найдите процессы в состоянии 'Z' (зомби). Обратите внимание на PPID (PID родителя).",{"data":816,"body":817},{},{"type":762,"children":818},[819],{"type":765,"tag":21,"props":820,"children":821},{},[822,824,830],{"type":58,"value":823},"Найдите родительский процесс (PPID) через ",{"type":765,"tag":25,"props":825,"children":827},{"className":826},[],[828],{"type":58,"value":829},"ps -p \u003CPPID>",{"type":58,"value":831},". Если его нет, значит, он уже завершился, и зомби должен быть автоматически собран init-процессом (PID 1).",{"data":833,"body":834},{},{"type":762,"children":835},[836],{"type":765,"tag":21,"props":837,"children":838},{},[839,841,847],{"type":58,"value":840},"Если родитель жив, попробуйте отправить ему сигнал SIGCHLD: ",{"type":765,"tag":25,"props":842,"children":844},{"className":843},[],[845],{"type":58,"value":846},"kill -SIGCHLD \u003CPPID>",{"type":58,"value":848},". Это может побудить его корректно завершить дочерний процесс.",{"data":850,"body":851},{},{"type":762,"children":852},[853],{"type":765,"tag":21,"props":854,"children":855},{},[856,858,864],{"type":58,"value":857},"Если сигнал не помог, завершите родительский процесс: ",{"type":765,"tag":25,"props":859,"children":861},{"className":860},[],[862],{"type":58,"value":863},"kill \u003CPPID>",{"type":58,"value":865},". После этого зомби-процесс станет сиротой и будет автоматически собран init-процессом (PID 1).",{"data":867,"body":868},{},{"type":762,"children":869},[870],{"type":765,"tag":21,"props":871,"children":872},{},[873,875,880],{"type":58,"value":874},"Снова выполните ",{"type":765,"tag":25,"props":876,"children":878},{"className":877},[],[879],{"type":58,"value":223},{"type":58,"value":881},". Зомби-процесс должен исчезнуть из списка.",[883,2510],{"id":884,"title":885,"appliesTo":886,"author":11,"body":890,"canonical":690,"code":690,"createdAt":2450,"description":2451,"difficulty":2452,"draft":694,"estimatedTime":2453,"extension":696,"faq":2454,"howToSteps":2467,"howToTotalTime":2486,"image":690,"keywords":2487,"locale":738,"meta":2495,"navigation":475,"path":743,"platform":741,"related":2496,"section":2499,"seo":2500,"severity":690,"stem":2501,"summary":2502,"tags":2503,"twitterCreator":690,"twitterSite":690,"type":2508,"updatedAt":2450,"__hash__":2509},"content_ru/guides/linux/process-management-basics.md","Управление процессами в Linux: от базовых команд до systemd",[887,10,888,889],"Ubuntu 22.04+","CentOS Stream/RHEL 8+","Linux с systemd",{"type":13,"value":891,"toc":2413},[892,896,899,913,925,929,936,941,946,963,966,994,1011,1034,1047,1079,1096,1105,1110,1117,1161,1177,1181,1184,1188,1191,1218,1237,1259,1265,1269,1276,1290,1294,1297,1310,1319,1323,1327,1334,1447,1461,1465,1540,1544,1547,1646,1659,1663,1667,1674,1698,1701,1705,1739,1743,1752,1811,1815,1820,1824,1995,1999,2086,2088,2092,2099,2109,2166,2177,2183,2186,2251,2261,2264,2299,2317,2321,2403,2410],[16,893,895],{"id":894},"введение-зачем-управлять-процессами","Введение: зачем управлять процессами?",[21,897,898],{},"Каждая запущенная программа в Linux — это процесс. Управление ими — одна из ключевых задач системного администратора и разработчика. Нужно ли вам:",[426,900,901,904,907,910],{},[84,902,903],{},"Найти и завершить \"зависший\" процесс, который съедает всю память?",[84,905,906],{},"Узнать, какой именно процесс слушает сетевой порт?",[84,908,909],{},"Запустить задачу в фоне, чтобы закрыть терминал?",[84,911,912],{},"Настроить автозапуск важного сервиса?",[21,914,915,916,918,919,921,922,924],{},"Этот гайд покрывает всё — от базовых команд ",[25,917,587],{}," и ",[25,920,178],{}," до современного менеджера системных сервисов ",[25,923,251],{},". Вы получите практические навыки, которые пригодятся ежедневно.",[16,926,928],{"id":927},"базовый-мониторинг-ps-top-и-htop","Базовый мониторинг: ps, top и htop",[48,930,932,933,935],{"id":931},"команда-ps-снимок-процессов","Команда ",[25,934,587],{}," — снимок процессов",[21,937,938,940],{},[25,939,587],{}," (process status) показывает статический список процессов на момент запуска команды.",[21,942,943],{},[87,944,945],{},"Самые полезные варианты:",[53,947,949],{"className":165,"code":948,"language":167,"meta":61,"style":61},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\nps aux\n",[25,950,951,956],{"__ignoreMap":61},[171,952,953],{"class":173,"line":174},[171,954,955],{"class":572},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\n",[171,957,958,960],{"class":173,"line":466},[171,959,587],{"class":349},[171,961,962],{"class":188}," aux\n",[21,964,965],{},"Ключевые столбцы:",[426,967,968,974,980,989],{},[84,969,970,973],{},[25,971,972],{},"USER"," — владелец процесса.",[84,975,976,979],{},[25,977,978],{},"PID"," — уникальный идентификатор процесса (главное, что нужно для управления).",[84,981,982,271,985,988],{},[25,983,984],{},"%CPU",[25,986,987],{},"%MEM"," — потребление процессорного времени и памяти.",[84,990,991,993],{},[25,992,71],{}," — команда, запустившая процесс.",[53,995,997],{"className":165,"code":996,"language":167,"meta":61,"style":61},"# Альтернативный, более детальный формат (POSIX-стиль)\nps -ef\n",[25,998,999,1004],{"__ignoreMap":61},[171,1000,1001],{"class":173,"line":174},[171,1002,1003],{"class":572},"# Альтернативный, более детальный формат (POSIX-стиль)\n",[171,1005,1006,1008],{"class":173,"line":466},[171,1007,587],{"class":349},[171,1009,1010],{"class":177}," -ef\n",[21,1012,1013,1014,271,1017,271,1019,1022,1023,1026,1027,1030,1031,224],{},"Здесь столбцы: ",[25,1015,1016],{},"UID",[25,1018,978],{},[25,1020,1021],{},"PPID"," (PID родителя), ",[25,1024,1025],{},"C"," (коэффициент использования CPU), ",[25,1028,1029],{},"STIME"," (время запуска), ",[25,1032,1033],{},"CMD",[21,1035,1036,1039,1040,1042,1043,1046],{},[87,1037,1038],{},"Фильтрация:"," Всегда комбинируйте ",[25,1041,587],{}," с ",[25,1044,1045],{},"grep"," для поиска.",[53,1048,1050],{"className":165,"code":1049,"language":167,"meta":61,"style":61},"ps aux | grep nginx\nps -ef | grep python3\n",[25,1051,1052,1065],{"__ignoreMap":61},[171,1053,1054,1056,1058,1060,1062],{"class":173,"line":174},[171,1055,587],{"class":349},[171,1057,590],{"class":188},[171,1059,593],{"class":184},[171,1061,596],{"class":349},[171,1063,1064],{"class":188}," nginx\n",[171,1066,1067,1069,1072,1074,1076],{"class":173,"line":466},[171,1068,587],{"class":349},[171,1070,1071],{"class":177}," -ef",[171,1073,593],{"class":184},[171,1075,596],{"class":349},[171,1077,1078],{"class":188}," python3\n",[226,1080,1081],{},[21,1082,230,1083,1085,1086,1088,1089,1092,1093,224],{},[87,1084,233],{}," ",[25,1087,1045],{}," сам появится в выводе. Используйте ",[25,1090,1091],{},"pgrep"," для чистого поиска по имени: ",[25,1094,1095],{},"pgrep -l nginx",[48,1097,1099,918,1101,1104],{"id":1098},"top-и-htop-интерактивный-мониторинг",[25,1100,38],{},[25,1102,1103],{},"htop"," — интерактивный мониторинг",[21,1106,1107,1109],{},[25,1108,38],{}," — классическая утилита, которая обновляет список процессов в реальном времени (по умолчанию каждые 3 секунды).",[21,1111,1112],{},[87,1113,1114,1115,529],{},"Основные клавиши в ",[25,1116,38],{},[426,1118,1119,1125,1131,1137,1143,1149,1155],{},[84,1120,1121,1124],{},[25,1122,1123],{},"P"," — сортировка по загрузке CPU (по умолчанию).",[84,1126,1127,1130],{},[25,1128,1129],{},"M"," — сортировка по использованию памяти.",[84,1132,1133,1136],{},[25,1134,1135],{},"N"," — сортировка по PID.",[84,1138,1139,1142],{},[25,1140,1141],{},"k"," — убить процесс (запросит PID и сигнал).",[84,1144,1145,1148],{},[25,1146,1147],{},"r"," — изменить приоритет (renice) процесса.",[84,1150,1151,1154],{},[25,1152,1153],{},"u"," — показать процессы только указанного пользователя.",[84,1156,1157,1160],{},[25,1158,1159],{},"q"," — выйти.",[21,1162,1163,1165,1166,1168,1169,1172,1173,1176],{},[25,1164,1103],{}," — более удобная и наглядная цветовая альтернатива ",[25,1167,38],{},". Она часто не установлена по умолчанию, но её стоит установить (",[25,1170,1171],{},"sudo apt install htop"," / ",[25,1174,1175],{},"sudo yum install htop","). Позволяет управлять процессами прямо из интерфейса (F9 для kill, F5 для дерева, F6 для сортировки).",[16,1178,1180],{"id":1179},"поиск-процессов-не-только-по-имени","Поиск процессов: не только по имени",[21,1182,1183],{},"Иногда нужно найти процесс не по его имени, а по другим признакам.",[48,1185,1187],{"id":1186},"по-открытому-порту-или-сокету","По открытому порту или сокету",[21,1189,1190],{},"Частая задача: \"Кто слушает порт 80?\".",[53,1192,1194],{"className":165,"code":1193,"language":167,"meta":61,"style":61},"# Рекомендуемый современный способ (из пакета iproute2)\nsudo ss -tulpn | grep :80\n",[25,1195,1196,1201],{"__ignoreMap":61},[171,1197,1198],{"class":173,"line":174},[171,1199,1200],{"class":572},"# Рекомендуемый современный способ (из пакета iproute2)\n",[171,1202,1203,1205,1208,1211,1213,1215],{"class":173,"line":466},[171,1204,350],{"class":349},[171,1206,1207],{"class":188}," ss",[171,1209,1210],{"class":177}," -tulpn",[171,1212,593],{"class":184},[171,1214,596],{"class":349},[171,1216,1217],{"class":188}," :80\n",[21,1219,1220,1221,1224,1225,1228,1229,1232,1233,1236],{},"Опции: ",[25,1222,1223],{},"-t"," (TCP), ",[25,1226,1227],{},"-u"," (UDP), ",[25,1230,1231],{},"-l"," (только слушающие), ",[25,1234,1235],{},"-p"," (показать процесс/программу).",[53,1238,1240],{"className":165,"code":1239,"language":167,"meta":61,"style":61},"# Классический способ (из пакета net-tools)\nsudo lsof -i :80\n",[25,1241,1242,1247],{"__ignoreMap":61},[171,1243,1244],{"class":173,"line":174},[171,1245,1246],{"class":572},"# Классический способ (из пакета net-tools)\n",[171,1248,1249,1251,1254,1257],{"class":173,"line":466},[171,1250,350],{"class":349},[171,1252,1253],{"class":188}," lsof",[171,1255,1256],{"class":177}," -i",[171,1258,1217],{"class":188},[21,1260,1261,1264],{},[25,1262,1263],{},"lsof"," (list open files) показывает все открытые файлы, включая сетевые сокеты. Очень мощный инструмент.",[48,1266,1268],{"id":1267},"по-файлу-или-каталогу","По файлу или каталогу",[21,1270,1271,1272,1275],{},"Какой процесс держит открытым файл ",[25,1273,1274],{},"/var/log/app.log"," и мешает его удалить?",[53,1277,1279],{"className":165,"code":1278,"language":167,"meta":61,"style":61},"sudo lsof /var/log/app.log\n",[25,1280,1281],{"__ignoreMap":61},[171,1282,1283,1285,1287],{"class":173,"line":174},[171,1284,350],{"class":349},[171,1286,1253],{"class":188},[171,1288,1289],{"class":188}," /var/log/app.log\n",[48,1291,1293],{"id":1292},"по-дереву-процессов","По дереву процессов",[21,1295,1296],{},"Чтобы увидеть иерархию (родительские и дочерние процессы), используйте:",[53,1298,1300],{"className":165,"code":1299,"language":167,"meta":61,"style":61},"pstree -p\n",[25,1301,1302],{"__ignoreMap":61},[171,1303,1304,1307],{"class":173,"line":174},[171,1305,1306],{"class":349},"pstree",[171,1308,1309],{"class":177}," -p\n",[21,1311,1312,1313,1315,1316,224],{},"Или в ",[25,1314,1103],{}," нажмите ",[25,1317,1318],{},"F5",[16,1320,1322],{"id":1321},"завершение-процессов-kill-killall-pkill","Завершение процессов: kill, killall, pkill",[48,1324,1326],{"id":1325},"сигналы-язык-общения-с-процессами","Сигналы: язык общения с процессами",[21,1328,1329,1330,1333],{},"Завершение — это не просто \"выстрел\". Это отправка ",[87,1331,1332],{},"сигнала"," — короткого сообщения процессу. Основные:",[1335,1336,1337,1357],"table",{},[1338,1339,1340],"thead",{},[1341,1342,1343,1348,1351,1354],"tr",{},[1344,1345,1347],"th",{"align":1346},"left","Сигнал",[1344,1349,1350],{"align":1346},"Номер",[1344,1352,1353],{"align":1346},"Действие (по умолчанию)",[1344,1355,1356],{"align":1346},"Как использовать",[1358,1359,1360,1383,1407,1429],"tbody",{},[1341,1361,1362,1368,1371,1377],{},[1363,1364,1365],"td",{"align":1346},[25,1366,1367],{},"SIGTERM",[1363,1369,1370],{"align":1346},"15",[1363,1372,1373,1376],{"align":1346},[87,1374,1375],{},"Вежливое завершение."," Процесс может обработать сигнал, сохранить состояние и корректно закрыться.",[1363,1378,1379,1382],{"align":1346},[25,1380,1381],{},"kill \u003CPID>"," (этот сигнал отправляется по умолч.)",[1341,1384,1385,1390,1393,1399],{},[1363,1386,1387],{"align":1346},[25,1388,1389],{},"SIGKILL",[1363,1391,1392],{"align":1346},"9",[1363,1394,1395,1398],{"align":1346},[87,1396,1397],{},"Немедленное принудительное завершение."," Обработчик сигнала игнорируется. Процесс не может сохранить данные.",[1363,1400,1401,35,1404],{"align":1346},[25,1402,1403],{},"kill -9 \u003CPID>",[25,1405,1406],{},"kill -KILL \u003CPID>",[1341,1408,1409,1414,1417,1424],{},[1363,1410,1411],{"align":1346},[25,1412,1413],{},"SIGINT",[1363,1415,1416],{"align":1346},"2",[1363,1418,1419,1420,1423],{"align":1346},"Прерывание (как ",[25,1421,1422],{},"Ctrl+C"," в терминале).",[1363,1425,1426],{"align":1346},[25,1427,1428],{},"kill -2 \u003CPID>",[1341,1430,1431,1436,1439,1442],{},[1363,1432,1433],{"align":1346},[25,1434,1435],{},"SIGHUP",[1363,1437,1438],{"align":1346},"1",[1363,1440,1441],{"align":1346},"\"Перезагрузка\". Часто используется для перечитывания конфигурационных файлов без полного перезапуска.",[1363,1443,1444],{"align":1346},[25,1445,1446],{},"kill -HUP \u003CPID>",[21,1448,1449,1452,1453,1455,1456,1458,1459,224],{},[87,1450,1451],{},"Правило:"," Сначала пробуйте ",[25,1454,1367],{}," (просто ",[25,1457,178],{},"). Если процесс не реагирует (виснет), используйте ",[25,1460,1389],{},[48,1462,1464],{"id":1463},"инструменты","Инструменты",[426,1466,1467,1477,1493,1513,1525],{},[84,1468,1469,1473,1474,1476],{},[87,1470,1471],{},[25,1472,1381],{}," — отправить ",[25,1475,1367],{}," конкретному PID.",[84,1478,1479,35,1484,1489,1490,224],{},[87,1480,1481],{},[25,1482,1483],{},"kill -s SIGNAL \u003CPID>",[87,1485,1486],{},[25,1487,1488],{},"kill -SIGNAL \u003CPID>"," — отправить конкретный сигнал. Пример: ",[25,1491,1492],{},"kill -HUP 1234",[84,1494,1495,1500,1501,1504,1505,1508,1509,1512],{},[87,1496,1497],{},[25,1498,1499],{},"killall \u003Cимя_процесса>"," — завершить ",[87,1502,1503],{},"все"," процессы с указанным именем. ",[25,1506,1507],{},"killall nginx",". ",[87,1510,1511],{},"Осторожно!"," Убедитесь, что убиваете то, что нужно.",[84,1514,1515,1520,1521,1524],{},[87,1516,1517],{},[25,1518,1519],{},"pkill \u003Cпаттерн>"," — завершить процессы, соответствующие шаблону (по имени, пользователю и т.д.). ",[25,1522,1523],{},"pkill -f \"python3 script.py\""," (ищет в полной командной строке). Мощный, но требует аккуратности.",[84,1526,1527,1532,1533,1536,1537,224],{},[87,1528,1529],{},[25,1530,1531],{},"pgrep \u003Cпаттерн>"," — ",[87,1534,1535],{},"только найти"," PID по шаблону. Идеально для комбинации: ",[25,1538,1539],{},"kill $(pgrep -f \"python3 script.py\")",[16,1541,1543],{"id":1542},"управление-приоритетами-nice-и-renice","Управление приоритетами: nice и renice",[21,1545,1546],{},"Linux планировщик распределяет время CPU между процессами. Приоритет можно влиять.",[426,1548,1549,1608],{},[84,1550,1551,1556,1557,1560,1561],{},[87,1552,1553],{},[25,1554,1555],{},"nice"," — запускает процесс с заданным ",[87,1558,1559],{},"статическим"," приоритетом.",[426,1562,1563,1577,1598],{},[84,1564,1565,1566,1569,1570,1572,1573,1576],{},"Диапазон: от ",[25,1567,1568],{},"-20"," (наивысший приоритет, требует ",[25,1571,350],{},") до ",[25,1574,1575],{},"+19"," (наинизший).",[84,1578,1579,1580],{},"Пример запуска с низким приоритетом (чтобы не мешал другим задачам):\n",[53,1581,1583],{"className":165,"code":1582,"language":167,"meta":61,"style":61},"nice -n 19 ./долгая_расчётная_задача.sh\n",[25,1584,1585],{"__ignoreMap":61},[171,1586,1587,1589,1592,1595],{"class":173,"line":174},[171,1588,1555],{"class":349},[171,1590,1591],{"class":177}," -n",[171,1593,1594],{"class":177}," 19",[171,1596,1597],{"class":188}," ./долгая_расчётная_задача.sh\n",[84,1599,1600,1601,1604,1605,224],{},"Если не указать ",[25,1602,1603],{},"-n",", по умолчанию используется ",[25,1606,1607],{},"+10",[84,1609,1610,1615,1616,1619,1620],{},[87,1611,1612],{},[25,1613,1614],{},"renice"," — меняет приоритет ",[87,1617,1618],{},"уже запущенного"," процесса.",[53,1621,1623],{"className":165,"code":1622,"language":167,"meta":61,"style":61},"# Повысить приоритет (уменьшить значение nice) для PID 5678\nsudo renice -5 -p 5678\n",[25,1624,1625,1630],{"__ignoreMap":61},[171,1626,1627],{"class":173,"line":174},[171,1628,1629],{"class":572},"# Повысить приоритет (уменьшить значение nice) для PID 5678\n",[171,1631,1632,1634,1637,1640,1643],{"class":173,"line":466},[171,1633,350],{"class":349},[171,1635,1636],{"class":188}," renice",[171,1638,1639],{"class":177}," -5",[171,1641,1642],{"class":177}," -p",[171,1644,1645],{"class":177}," 5678\n",[226,1647,1648],{},[21,1649,1650,1651,1654,1655,1658],{},"💡 ",[87,1652,1653],{},"Совет:"," Не повышайте (",[25,1656,1657],{},"nice \u003C 0",") приоритет важных системных процессов без необходимости. Это может привести к \"голоданию\" других задач.",[16,1660,1662],{"id":1661},"фоновые-процессы-и-управление-заданиями","Фоновые процессы и управление заданиями",[48,1664,1666],{"id":1665},"простое-фоновое-выполнение","Простое фоновое выполнение",[21,1668,1669,1670,1673],{},"Добавьте ",[25,1671,1672],{},"&"," в конец команды:",[53,1675,1677],{"className":165,"code":1676,"language":167,"meta":61,"style":61},"long_running_command &\n[1] 2345  # [1] - номер задания, 2345 - PID\n",[25,1678,1679,1687],{"__ignoreMap":61},[171,1680,1681,1684],{"class":173,"line":174},[171,1682,1683],{"class":349},"long_running_command",[171,1685,1686],{"class":192}," &\n",[171,1688,1689,1692,1695],{"class":173,"line":466},[171,1690,1691],{"class":192},"[1] ",[171,1693,1694],{"class":349},"2345",[171,1696,1697],{"class":572},"  # [1] - номер задания, 2345 - PID\n",[21,1699,1700],{},"Команда вернёт управление терминалу сразу.",[48,1702,1704],{"id":1703},"управление-заданиями-job-control","Управление заданиями (job control)",[426,1706,1707,1715,1723,1731],{},[84,1708,1709,1714],{},[87,1710,1711],{},[25,1712,1713],{},"jobs"," — показать список фоновых заданий текущей оболочки.",[84,1716,1717,1722],{},[87,1718,1719],{},[25,1720,1721],{},"fg %1"," — вернуть задание №1 на передний план (foreground).",[84,1724,1725,1730],{},[87,1726,1727],{},[25,1728,1729],{},"bg %1"," — возобновить остановленное задание №1 в фоне (background).",[84,1732,1733,1738],{},[87,1734,1735],{},[25,1736,1737],{},"Ctrl+Z"," — приостановить (stop) текущий foreground-процесс (не завершает!).",[48,1740,1742],{"id":1741},"независимость-от-терминала-nohup-и-disown","Независимость от терминала: nohup и disown",[21,1744,1745,1746,1748,1749,1751],{},"По умолчанию фоновый процесс (",[25,1747,1672],{},") всё равно \"привязан\" к терминалу. Если терминал закроется (например, разорвётся SSH-соединение), процесс получит сигнал ",[25,1750,1435],{}," и, скорее всего, завершится.",[426,1753,1754,1792],{},[84,1755,1756,1761,1762,1764,1765,1788,1789,224],{},[87,1757,1758],{},[25,1759,1760],{},"nohup"," (no hang up) — запускает процесс, игнорирующий сигнал ",[25,1763,1435],{},".\n",[53,1766,1768],{"className":165,"code":1767,"language":167,"meta":61,"style":61},"nohup ./my_server.py > server.log 2>&1 &\n",[25,1769,1770],{"__ignoreMap":61},[171,1771,1772,1774,1777,1780,1783,1786],{"class":173,"line":174},[171,1773,1760],{"class":349},[171,1775,1776],{"class":188}," ./my_server.py",[171,1778,1779],{"class":184}," >",[171,1781,1782],{"class":188}," server.log",[171,1784,1785],{"class":184}," 2>&1",[171,1787,1686],{"class":192},"\nВывод перенаправляется в файл ",[25,1790,1791],{},"server.log",[84,1793,1794,1799,1800,1803,1804,1807,1808,1810],{},[87,1795,1796],{},[25,1797,1798],{},"disown"," — после запуска процесса в фоне (",[25,1801,1802],{},"command &",") можно \"отсоединить\" его от текущей оболочки: ",[25,1805,1806],{},"disown %1",". После этого процесс не будет получать ",[25,1809,1435],{}," при закрытии терминала.",[16,1812,1814],{"id":1813},"современный-подход-systemd-и-systemctl","Современный подход: systemd и systemctl",[21,1816,1817,1818,224],{},"Для долгоживущих системных сервисов (веб-серверы, базы данных, демоны) в современных дистрибутивах (Ubuntu 15.04+, CentOS 7+, Debian 8+) используется ",[87,1819,251],{},[48,1821,1823],{"id":1822},"основные-команды-systemctl","Основные команды systemctl",[53,1825,1827],{"className":165,"code":1826,"language":167,"meta":61,"style":61},"# Статус сервиса (запущен ли, 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",[25,1828,1829,1834,1845,1849,1854,1865,1876,1890,1904,1909,1915,1927,1939,1944,1950,1965,1970,1976],{"__ignoreMap":61},[171,1830,1831],{"class":173,"line":174},[171,1832,1833],{"class":572},"# Статус сервиса (запущен ли, PID, последние логи)\n",[171,1835,1836,1838,1840,1843],{"class":173,"line":466},[171,1837,350],{"class":349},[171,1839,353],{"class":188},[171,1841,1842],{"class":188}," status",[171,1844,1064],{"class":188},[171,1846,1847],{"class":173,"line":472},[171,1848,476],{"emptyLinePlaceholder":475},[171,1850,1851],{"class":173,"line":479},[171,1852,1853],{"class":572},"# Запуск/остановка/перезапуск\n",[171,1855,1856,1858,1860,1863],{"class":173,"line":485},[171,1857,350],{"class":349},[171,1859,353],{"class":188},[171,1861,1862],{"class":188}," start",[171,1864,1064],{"class":188},[171,1866,1867,1869,1871,1874],{"class":173,"line":491},[171,1868,350],{"class":349},[171,1870,353],{"class":188},[171,1872,1873],{"class":188}," stop",[171,1875,1064],{"class":188},[171,1877,1878,1880,1882,1884,1887],{"class":173,"line":497},[171,1879,350],{"class":349},[171,1881,353],{"class":188},[171,1883,356],{"class":188},[171,1885,1886],{"class":188}," nginx",[171,1888,1889],{"class":572},"   # мягкий перезапуск (может отключить на мгновение)\n",[171,1891,1892,1894,1896,1899,1901],{"class":173,"line":502},[171,1893,350],{"class":349},[171,1895,353],{"class":188},[171,1897,1898],{"class":188}," reload",[171,1900,1886],{"class":188},[171,1902,1903],{"class":572},"    # перечитать конфиг без остановки (если поддерживает)\n",[171,1905,1907],{"class":173,"line":1906},9,[171,1908,476],{"emptyLinePlaceholder":475},[171,1910,1912],{"class":173,"line":1911},10,[171,1913,1914],{"class":572},"# Включение/отключение автозапуска при загрузке системы\n",[171,1916,1918,1920,1922,1925],{"class":173,"line":1917},11,[171,1919,350],{"class":349},[171,1921,353],{"class":188},[171,1923,1924],{"class":188}," enable",[171,1926,1064],{"class":188},[171,1928,1930,1932,1934,1937],{"class":173,"line":1929},12,[171,1931,350],{"class":349},[171,1933,353],{"class":188},[171,1935,1936],{"class":188}," disable",[171,1938,1064],{"class":188},[171,1940,1942],{"class":173,"line":1941},13,[171,1943,476],{"emptyLinePlaceholder":475},[171,1945,1947],{"class":173,"line":1946},14,[171,1948,1949],{"class":572},"# Просмотр всех юнитов (сервисов, таймеров, сокетов)\n",[171,1951,1953,1956,1959,1962],{"class":173,"line":1952},15,[171,1954,1955],{"class":349},"systemctl",[171,1957,1958],{"class":188}," list-units",[171,1960,1961],{"class":177}," --type=service",[171,1963,1964],{"class":177}," --all\n",[171,1966,1968],{"class":173,"line":1967},16,[171,1969,476],{"emptyLinePlaceholder":475},[171,1971,1973],{"class":173,"line":1972},17,[171,1974,1975],{"class":572},"# Просмотр логов сервиса (аналог journalctl)\n",[171,1977,1979,1981,1984,1987,1989,1992],{"class":173,"line":1978},18,[171,1980,350],{"class":349},[171,1982,1983],{"class":188}," journalctl",[171,1985,1986],{"class":177}," -u",[171,1988,1886],{"class":188},[171,1990,1991],{"class":177}," -f",[171,1993,1994],{"class":572},"  # -f — следить в реальном времени\n",[48,1996,1998],{"id":1997},"создание-собственного-сервиса","Создание собственного сервиса",[81,2000,2001,2007,2080],{},[84,2002,2003,2004],{},"Создайте файл конфигурации: ",[25,2005,2006],{},"sudo nano /etc/systemd/system/myapp.service",[84,2008,2009,2010],{},"Базовый шаблон:\n",[53,2011,2015],{"className":2012,"code":2013,"language":2014,"meta":61,"style":61},"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",[25,2016,2017,2022,2027,2032,2036,2041,2046,2051,2056,2061,2066,2070,2075],{"__ignoreMap":61},[171,2018,2019],{"class":173,"line":174},[171,2020,2021],{},"[Unit]\n",[171,2023,2024],{"class":173,"line":466},[171,2025,2026],{},"Description=Мой кастомный сервис\n",[171,2028,2029],{"class":173,"line":472},[171,2030,2031],{},"After=network.target\n",[171,2033,2034],{"class":173,"line":479},[171,2035,476],{"emptyLinePlaceholder":475},[171,2037,2038],{"class":173,"line":485},[171,2039,2040],{},"[Service]\n",[171,2042,2043],{"class":173,"line":491},[171,2044,2045],{},"Type=simple\n",[171,2047,2048],{"class":173,"line":497},[171,2049,2050],{},"ExecStart=/usr/bin/python3 /opt/myapp/main.py\n",[171,2052,2053],{"class":173,"line":502},[171,2054,2055],{},"Restart=on-failure\n",[171,2057,2058],{"class":173,"line":1906},[171,2059,2060],{},"User=appuser\n",[171,2062,2063],{"class":173,"line":1911},[171,2064,2065],{},"WorkingDirectory=/opt/myapp\n",[171,2067,2068],{"class":173,"line":1917},[171,2069,476],{"emptyLinePlaceholder":475},[171,2071,2072],{"class":173,"line":1929},[171,2073,2074],{},"[Install]\n",[171,2076,2077],{"class":173,"line":1941},[171,2078,2079],{},"WantedBy=multi-user.target\n",[84,2081,2082,2083,224],{},"Активируйте: ",[25,2084,2085],{},"sudo systemctl daemon-reload && sudo systemctl enable --now myapp.service",[663,2087],{},[16,2089,2091],{"id":2090},"продвинутый-мониторинг-и-анализ","Продвинутый мониторинг и анализ",[48,2093,2095,2098],{"id":2094},"strace-трассировка-системных-вызовов",[25,2096,2097],{},"strace"," — трассировка системных вызовов",[21,2100,2101,2102,2105,2106,2108],{},"Если нужно понять, ",[87,2103,2104],{},"что именно"," делает \"зависший\" процесс, используйте ",[25,2107,2097],{},". Он показывает все взаимодействия процесса с ядром (чтение/запись файлов, сетевые запросы и т.д.).",[53,2110,2112],{"className":165,"code":2111,"language":167,"meta":61,"style":61},"# Трассировать уже запущенный процесс\nsudo strace -p \u003CPID> -o trace.log\n\n# Запустить команду под strace\nsudo strace -o trace.log ./my_program\n",[25,2113,2114,2119,2143,2147,2152],{"__ignoreMap":61},[171,2115,2116],{"class":173,"line":174},[171,2117,2118],{"class":572},"# Трассировать уже запущенный процесс\n",[171,2120,2121,2123,2126,2128,2130,2133,2135,2137,2140],{"class":173,"line":466},[171,2122,350],{"class":349},[171,2124,2125],{"class":188}," strace",[171,2127,1642],{"class":177},[171,2129,185],{"class":184},[171,2131,2132],{"class":188},"PI",[171,2134,193],{"class":192},[171,2136,390],{"class":184},[171,2138,2139],{"class":177}," -o",[171,2141,2142],{"class":188}," trace.log\n",[171,2144,2145],{"class":173,"line":472},[171,2146,476],{"emptyLinePlaceholder":475},[171,2148,2149],{"class":173,"line":479},[171,2150,2151],{"class":572},"# Запустить команду под strace\n",[171,2153,2154,2156,2158,2160,2163],{"class":173,"line":485},[171,2155,350],{"class":349},[171,2157,2125],{"class":188},[171,2159,2139],{"class":177},[171,2161,2162],{"class":188}," trace.log",[171,2164,2165],{"class":188}," ./my_program\n",[21,2167,2168,2169,2172,2173,2176],{},"Используйте ",[25,2170,2171],{},"-c"," для статистики по системным вызовам, ",[25,2174,2175],{},"-f"," для следования за дочерними процессами.",[48,2178,2180,2182],{"id":2179},"lsof-что-открыто",[25,2181,1263],{}," — \"что открыто?\"",[21,2184,2185],{},"Уже упоминалась, но стоит выделить отдельно. Это швейцарский нож для анализа.",[53,2187,2189],{"className":165,"code":2188,"language":167,"meta":61,"style":61},"# Все открытые файлы для конкретного PID\nsudo lsof -p \u003CPID>\n\n# Все сетевые соединения (аналог netstat)\nsudo lsof -i\n\n# Кто держит каталог /mnt/backup (например, для unmount)\nsudo lsof +D /mnt/backup\n",[25,2190,2191,2196,2212,2216,2221,2230,2234,2239],{"__ignoreMap":61},[171,2192,2193],{"class":173,"line":174},[171,2194,2195],{"class":572},"# Все открытые файлы для конкретного PID\n",[171,2197,2198,2200,2202,2204,2206,2208,2210],{"class":173,"line":466},[171,2199,350],{"class":349},[171,2201,1253],{"class":188},[171,2203,1642],{"class":177},[171,2205,185],{"class":184},[171,2207,2132],{"class":188},[171,2209,193],{"class":192},[171,2211,196],{"class":184},[171,2213,2214],{"class":173,"line":472},[171,2215,476],{"emptyLinePlaceholder":475},[171,2217,2218],{"class":173,"line":479},[171,2219,2220],{"class":572},"# Все сетевые соединения (аналог netstat)\n",[171,2222,2223,2225,2227],{"class":173,"line":485},[171,2224,350],{"class":349},[171,2226,1253],{"class":188},[171,2228,2229],{"class":177}," -i\n",[171,2231,2232],{"class":173,"line":491},[171,2233,476],{"emptyLinePlaceholder":475},[171,2235,2236],{"class":173,"line":497},[171,2237,2238],{"class":572},"# Кто держит каталог /mnt/backup (например, для unmount)\n",[171,2240,2241,2243,2245,2248],{"class":173,"line":502},[171,2242,350],{"class":349},[171,2244,1253],{"class":188},[171,2246,2247],{"class":188}," +D",[171,2249,2250],{"class":188}," /mnt/backup\n",[48,2252,2254,918,2257,2260],{"id":2253},"vmstat-и-iostat-общая-нагрузка-на-систему",[25,2255,2256],{},"vmstat",[25,2258,2259],{},"iostat"," — общая нагрузка на систему",[21,2262,2263],{},"Чтобы понять, проблема в процессе или в системе в целом:",[53,2265,2267],{"className":165,"code":2266,"language":167,"meta":61,"style":61},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\nvmstat 2\n\n# Статистика по дисковому вводу-выводу\niostat -xz 2\n",[25,2268,2269,2274,2281,2285,2290],{"__ignoreMap":61},[171,2270,2271],{"class":173,"line":174},[171,2272,2273],{"class":572},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\n",[171,2275,2276,2278],{"class":173,"line":466},[171,2277,2256],{"class":349},[171,2279,2280],{"class":177}," 2\n",[171,2282,2283],{"class":173,"line":472},[171,2284,476],{"emptyLinePlaceholder":475},[171,2286,2287],{"class":173,"line":479},[171,2288,2289],{"class":572},"# Статистика по дисковому вводу-выводу\n",[171,2291,2292,2294,2297],{"class":173,"line":485},[171,2293,2259],{"class":349},[171,2295,2296],{"class":177}," -xz",[171,2298,2280],{"class":177},[21,2300,2301,2302,2304,2305,2308,2309,2312,2313,2316],{},"Если ",[25,2303,2256],{}," показывает высокий ",[25,2306,2307],{},"wa"," (I/O wait) — проблема в дисках. Если высокий ",[25,2310,2311],{},"us","/",[25,2314,2315],{},"sy"," (user/system CPU) — проблема в процессах.",[16,2318,2320],{"id":2319},"заключение-и-лучшие-практики","Заключение и лучшие практики",[81,2322,2323,2335,2350,2361,2372,2381,2390],{},[84,2324,2325,2334],{},[87,2326,2327,2328,35,2330,2312,2332],{},"Начинайте с ",[25,2329,34],{},[25,2331,38],{},[25,2333,1103],{}," для общего обзора.",[84,2336,2337,2346,2347,224],{},[87,2338,2168,2339,2312,2341,2312,2343],{},[25,2340,1045],{},[25,2342,1091],{},[25,2344,2345],{},"pkill"," для поиска, но проверяйте вывод перед ",[25,2348,2349],{},"killall",[84,2351,2352,271,2358,2360],{},[87,2353,2354,2355,2357],{},"Отправляйте ",[25,2356,1367],{}," (kill) в первую очередь",[25,2359,1389],{}," (-9) — только в крайнем случае.",[84,2362,2363,2368,2369,2371],{},[87,2364,2365,2366],{},"Для сервисов используйте ",[25,2367,1955],{},", а не ручной запуск через ",[25,2370,1672],{},". Это даст автоматический перезапуск, логирование и управление.",[84,2373,2374,2380],{},[87,2375,2376,918,2378],{},[25,2377,1760],{},[25,2379,1798],{}," — ваши друзья для долгих задач в нестабильном SSH-сессии.",[84,2382,2383,2389],{},[87,2384,2385,918,2387],{},[25,2386,2097],{},[25,2388,1263],{}," — мощные отладочные инструменты для глубокого анализа.",[84,2391,2392,2395,2396,35,2398,2400,2401,224],{},[87,2393,2394],{},"Права:"," Для управления чужими процессами (особенно через ",[25,2397,178],{},[25,2399,1614],{},") часто нужны права ",[25,2402,350],{},[21,2404,2405,2406,2409],{},"Управление процессами — это навык, который оттачивается практикой. Экспериментируйте в тестовой среде, создавайте \"игрушечные\" зависшие процессы (",[25,2407,2408],{},"sleep 1000 &",") и отрабатывайте на них команды.",[673,2411,2412],{},"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":61,"searchDepth":466,"depth":466,"links":2414},[2415,2416,2422,2427,2431,2432,2437,2441,2449],{"id":894,"depth":466,"text":895},{"id":927,"depth":466,"text":928,"children":2417},[2418,2420],{"id":931,"depth":472,"text":2419},"Команда ps — снимок процессов",{"id":1098,"depth":472,"text":2421},"top и htop — интерактивный мониторинг",{"id":1179,"depth":466,"text":1180,"children":2423},[2424,2425,2426],{"id":1186,"depth":472,"text":1187},{"id":1267,"depth":472,"text":1268},{"id":1292,"depth":472,"text":1293},{"id":1321,"depth":466,"text":1322,"children":2428},[2429,2430],{"id":1325,"depth":472,"text":1326},{"id":1463,"depth":472,"text":1464},{"id":1542,"depth":466,"text":1543},{"id":1661,"depth":466,"text":1662,"children":2433},[2434,2435,2436],{"id":1665,"depth":472,"text":1666},{"id":1703,"depth":472,"text":1704},{"id":1741,"depth":472,"text":1742},{"id":1813,"depth":466,"text":1814,"children":2438},[2439,2440],{"id":1822,"depth":472,"text":1823},{"id":1997,"depth":472,"text":1998},{"id":2090,"depth":466,"text":2091,"children":2442},[2443,2445,2447],{"id":2094,"depth":472,"text":2444},"strace — трассировка системных вызовов",{"id":2179,"depth":472,"text":2446},"lsof — \"что открыто?\"",{"id":2253,"depth":472,"text":2448},"vmstat и iostat — общая нагрузка на систему",{"id":2319,"depth":466,"text":2320},"2026-02-14 12:11:36","Полное руководство по мониторингу и управлению процессами в Linux. Изучите ps, top, kill, nice, systemctl и другие инструменты для эффективной администрирования системы.","medium","15-30 мин",[2455,2458,2461,2464],{"question":2456,"answer":2457},"В чём разница между командами kill и killall?","`kill` завершает процесс по его PID (идентификатору), который нужно предварительно узнать. `killall` завершает все процессы с указанным именем, что удобно, но может быть опаснее, если у программы несколько экземпляров.",{"question":2459,"answer":2460},"Как найти PID процесса, который слушает определённый порт (например, 8080)?","Используйте команду `sudo ss -tulpn | grep :8080` или `sudo lsof -i :8080`. В выводе вы увидите PID и имя программы.",{"question":2462,"answer":2463},"Почему команда top не показывает все мои процессы?","По умолчанию `top` показывает процессы текущего пользователя. Нажмите `u` в top и введите имя пользователя (или оставьте пустым для всех), чтобы seeing процессы всех пользователей. Также убедитесь, что вы запустили top с правами sudo для полной картины.",{"question":2465,"answer":2466},"Что такое zombie-процесс и как от него избавиться?","Zombie (зомби) — это завершившийся процесс, запись о котором ещё не удалена из таблицы процессов, так как родительский процесс не прочитал её статус. Обычно они исчезают сами после завершения родителя. Если зомби накапливаются, нужно перезапустить или исправить родительский процесс.",[2468,2471,2474,2477,2480,2483],{"name":2469,"text":2470},"Просмотр списка активных процессов","Используйте команду `ps` для снимка процессов или `top`/`htop` для интерактивного мониторинга в реальном времени. Ключевые опции: `ps aux` (все процессы) и `ps -ef` (полный формат).",{"name":2472,"text":2473},"Поиск конкретного процесса","Комбинируйте `ps` или `top` с `grep` для поиска по имени: `ps aux | grep nginx`. Для поиска по порту используйте `ss` или `lsof`.",{"name":2475,"text":2476},"Завершение (убийство) процесса","Найдите PID процесса и выполните `kill \u003CPID>`. Для принудительного завершения используйте сигнал `KILL` (9): `kill -9 \u003CPID>`. Для завершения по имени — `killall \u003Cимя_процесса>`.",{"name":2478,"text":2479},"Изменение приоритета процесса","Запустите процесс с низким приоритетом через `nice -n 19 команда`. Для уже запущенного процесса используйте `renice \u003Cновый_приоритет> -p \u003CPID>` (требует sudo для повышения приоритета).",{"name":2481,"text":2482},"Запуск процесса в фоне и управление им","Добавьте `&` в конец команды для запуска в фоне: `команда &`. Используйте `jobs` для просмотра фоновых задач, `fg %1` для возврата на передний план, `bg %1` для возобновления в фоне. `nohup` и `disown` позволяют сделать процесс независимым от терминала.",{"name":2484,"text":2485},"Управление сервисами через systemd","Для долгоживущих сервисов используйте systemd: `sudo systemctl start \u003Cservice>`, `sudo systemctl status \u003Cservice>`, `sudo systemctl enable \u003Cservice>` (автозапуск). Это предпочтительный способ для production-сервисов.","PT20M",[735,2488,2489,2490,2491,2492,2493,2494],"команда ps linux примеры","как убить процесс в linux","systemd управление сервисами","мониторинг процессов linux top","сигналы linux kill term","приоритет процесса nice renice","фоновые процессы linux & nohup",{},[2497,2498,740],"/guides/linux/systemd-service-creation","/guides/linux/log-analysis-basics","Гайды Linux",{"title":885,"description":2451},"guides/linux/process-management-basics","Этот гайд научит вас находить, анализировать и управлять процессами в Linux с помощью командной строки. Вы освоите как базовые утилиты (ps, top, kill), так и современный менеджер systemd, что позволит вам контролировать работу системы и решать связанные проблемы.",[741,2504,251,2505,2506,167,2507],"process management","cli","администрирование","мониторинг","guide","GkIEx60u1G9Bya8wIG_B7gM7Bghf81SASMUfFUPpAZo",{"id":2511,"title":2512,"appliesTo":2513,"author":11,"body":2517,"canonical":690,"code":2528,"createdAt":3272,"description":3273,"difficulty":693,"draft":694,"estimatedTime":3274,"extension":696,"faq":3275,"howToSteps":3287,"howToTotalTime":3303,"image":690,"keywords":3304,"locale":738,"meta":3315,"navigation":475,"path":744,"platform":741,"related":3316,"section":746,"seo":3320,"severity":3321,"stem":3322,"summary":3323,"tags":3324,"twitterCreator":690,"twitterSite":690,"type":757,"updatedAt":3272,"__hash__":3326},"content_ru/errors/linux/process-kill-fail.md","Ошибка 'Operation not permitted' при kill в Linux: причины и решения",[2514,8,2515,2516],"Linux ядро 4.x+","CentOS 7+","Debian 10+",{"type":13,"value":2518,"toc":3259},[2519,2523,2533,2547,2555,2557,2599,2603,2607,2610,2634,2639,2680,2696,2700,2703,2727,2742,2747,2818,2822,2830,2848,2851,2929,2931,2935,2942,2947,3022,3027,3092,3100,3105,3166,3174,3176,3256],[16,2520,2522],{"id":2521},"что-означает-ошибка-kill-pid-operation-not-permitted","Что означает ошибка \"kill: (PID) - Operation not permitted\"",[21,2524,2525,2526,2529,2530,2532],{},"Эта ошибка соответствует коду ",[25,2527,2528],{},"EPERM"," (Operation not permitted) и появляется, когда процесс ",[25,2531,178],{}," не может отправить сигнал указанному процессу. Полный текст обычно выглядит так:",[53,2534,2536],{"className":165,"code":2535,"language":167,"meta":61,"style":61},"kill: (1234) - Operation not permitted\n",[25,2537,2538],{"__ignoreMap":61},[171,2539,2540,2542,2544],{"class":173,"line":174},[171,2541,178],{"class":177},[171,2543,529],{"class":188},[171,2545,2546],{"class":192}," (1234) - Operation not permitted\n",[21,2548,2549,2550,35,2552,2554],{},"Ошибка означает, что ядро Linux отклонил запрос на отправку сигнала (например, ",[25,2551,1367],{},[25,2553,1389],{},"). Это происходит не из-за опечатки в PID, а из-за системных ограничений: недостатка прав, особого состояния процесса или политик безопасности.",[16,2556,76],{"id":75},[81,2558,2559,2570,2578,2584,2590],{},[84,2560,2561,2564,2565,2567,2568,224],{},[87,2562,2563],{},"Недостаточно прав"," — вы пытаетесь завершить процесс, принадлежащий другому пользователю (например, ",[25,2566,762],{},"), без использования ",[25,2569,350],{},[84,2571,2572,2575,2576,224],{},[87,2573,2574],{},"Процесс в uninterruptible sleep (D-состояние)"," — процесс ожидает завершения системного вывода (часто ввода-вывода к устройству) и игнорирует все сигналы, включая ",[25,2577,1389],{},[84,2579,2580,2583],{},[87,2581,2582],{},"Зомби-процесс (zombie)"," — процесс уже завершён, но его запись в таблице процессов не удалена, так как родитель не прочитал статус. Зомби не могут быть убиты.",[84,2585,2586,2589],{},[87,2587,2588],{},"Политики безопасности"," — SELinux, AppArmor или Linux capabilities могут запрещать завершение определённых процессов (например, системных служб).",[84,2591,2592,2595,2596,2598],{},[87,2593,2594],{},"Критичные системные процессы"," — попытка убить ",[25,2597,247],{}," (PID 1) или другие процессы, управляемые ядром, будет отклонена.",[16,2600,2602],{"id":2601},"способы-решения","Способы решения",[48,2604,2606],{"id":2605},"способ-1-проверьте-права-и-используйте-sudo","Способ 1: Проверьте права и используйте sudo",[21,2608,2609],{},"Самая частая причина — отсутствие прав. Убедитесь, что процесс не принадлежит другому пользователю:",[53,2611,2613],{"className":165,"code":2612,"language":167,"meta":61,"style":61},"ps -o user= -p \u003CPID>\n",[25,2614,2615],{"__ignoreMap":61},[171,2616,2617,2619,2621,2624,2626,2628,2630,2632],{"class":173,"line":174},[171,2618,587],{"class":349},[171,2620,2139],{"class":177},[171,2622,2623],{"class":188}," user=",[171,2625,1642],{"class":177},[171,2627,185],{"class":184},[171,2629,2132],{"class":188},[171,2631,193],{"class":192},[171,2633,196],{"class":184},[21,2635,2636,2637,529],{},"Если пользователь не вы, завершите процесс с ",[25,2638,350],{},[53,2640,2642],{"className":165,"code":2641,"language":167,"meta":61,"style":61},"sudo kill \u003CPID>\n# Или принудительно\nsudo kill -9 \u003CPID>\n",[25,2643,2644,2659,2664],{"__ignoreMap":61},[171,2645,2646,2648,2651,2653,2655,2657],{"class":173,"line":174},[171,2647,350],{"class":349},[171,2649,2650],{"class":188}," kill",[171,2652,185],{"class":184},[171,2654,2132],{"class":188},[171,2656,193],{"class":192},[171,2658,196],{"class":184},[171,2660,2661],{"class":173,"line":466},[171,2662,2663],{"class":572},"# Или принудительно\n",[171,2665,2666,2668,2670,2672,2674,2676,2678],{"class":173,"line":472},[171,2667,350],{"class":349},[171,2669,2650],{"class":188},[171,2671,308],{"class":177},[171,2673,185],{"class":184},[171,2675,2132],{"class":188},[171,2677,193],{"class":192},[171,2679,196],{"class":184},[226,2681,2682],{},[21,2683,230,2684,2686,2687,2689,2690,2692,2693,2695],{},[87,2685,233],{}," Сигнал ",[25,2688,1389],{}," (-9) должен использоваться только если ",[25,2691,1367],{}," (стандартный ",[25,2694,178],{},") не сработал, так как он не даёт процессу chance на корректное завершение.",[48,2697,2699],{"id":2698},"способ-2-определите-состояние-процесса","Способ 2: Определите состояние процесса",[21,2701,2702],{},"Проверьте, не находится ли процесс в uninterruptible sleep (D-состояние):",[53,2704,2706],{"className":165,"code":2705,"language":167,"meta":61,"style":61},"ps -o stat= -p \u003CPID>\n",[25,2707,2708],{"__ignoreMap":61},[171,2709,2710,2712,2714,2717,2719,2721,2723,2725],{"class":173,"line":174},[171,2711,587],{"class":349},[171,2713,2139],{"class":177},[171,2715,2716],{"class":188}," stat=",[171,2718,1642],{"class":177},[171,2720,185],{"class":184},[171,2722,2132],{"class":188},[171,2724,193],{"class":192},[171,2726,196],{"class":184},[21,2728,2729,2730,2732,2733,2736,2737],{},"Если в выводе есть буква ",[25,2731,193],{}," (например, ",[25,2734,2735],{},"D+","), процесс в uninterruptible sleep. Такие процессы обычно ждут ответа от драйвера устройства (диск, NFS, сетевой интерфейс). ",[87,2738,2739,2740,224],{},"Они не реагируют на ",[25,2741,1389],{},[2743,2744,2746],"h4",{"id":2745},"что-делать-для-d-процессов","Что делать для D-процессов:",[81,2748,2749,2790,2811],{},[84,2750,2751,2752,2754,2755,2757,2758],{},"Узнайте, какой ресурс блокирует процесс, через ",[25,2753,2097],{}," (может потребовать ",[25,2756,350],{},"):\n",[53,2759,2761],{"className":165,"code":2760,"language":167,"meta":61,"style":61},"sudo strace -p \u003CPID> 2>&1 | grep -i \"EAGAIN\\|ETIMEDOUT\\|NFS\"\n",[25,2762,2763],{"__ignoreMap":61},[171,2764,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787],{"class":173,"line":174},[171,2766,350],{"class":349},[171,2768,2125],{"class":188},[171,2770,1642],{"class":177},[171,2772,185],{"class":184},[171,2774,2132],{"class":188},[171,2776,193],{"class":192},[171,2778,390],{"class":184},[171,2780,1785],{"class":184},[171,2782,593],{"class":184},[171,2784,596],{"class":349},[171,2786,1256],{"class":177},[171,2788,2789],{"class":188}," \"EAGAIN\\|ETIMEDOUT\\|NFS\"\n",[84,2791,2792,2793],{},"Если процесс завис из-за NFS, попробуйте принудительно размонтировать файловую систему:\n",[53,2794,2796],{"className":165,"code":2795,"language":167,"meta":61,"style":61},"sudo umount -l /точка/монтирования\n",[25,2797,2798],{"__ignoreMap":61},[171,2799,2800,2802,2805,2808],{"class":173,"line":174},[171,2801,350],{"class":349},[171,2803,2804],{"class":188}," umount",[171,2806,2807],{"class":177}," -l",[171,2809,2810],{"class":188}," /точка/монтирования\n",[84,2812,2813,2814,2817],{},"Если процесс связан с диском (например, ",[25,2815,2816],{},"ksoftirqd","), возможно, проблема в драйвере или аппаратуре. В крайнем случае — перезагрузите систему.",[48,2819,2821],{"id":2820},"способ-3-очистите-зомби-процессы","Способ 3: Очистите зомби-процессы",[21,2823,2824,2825,2827,2828,529],{},"Зомби-процессы отображаются в ",[25,2826,587],{}," с состоянием ",[25,2829,42],{},[53,2831,2833],{"className":165,"code":2832,"language":167,"meta":61,"style":61},"ps aux | grep '^.* Z .*'\n",[25,2834,2835],{"__ignoreMap":61},[171,2836,2837,2839,2841,2843,2845],{"class":173,"line":174},[171,2838,587],{"class":349},[171,2840,590],{"class":188},[171,2842,593],{"class":184},[171,2844,596],{"class":349},[171,2846,2847],{"class":188}," '^.* Z .*'\n",[21,2849,2850],{},"Зомби не потребляют CPU или память, но занимают запись в таблице процессов. Их нельзя убить — нужно завершить родительский процесс (PPID):",[81,2852,2853,2881],{},[84,2854,2855,2856],{},"Найдите PPID зомби:\n",[53,2857,2859],{"className":165,"code":2858,"language":167,"meta":61,"style":61},"ps -o ppid= -p \u003CZombiePID>\n",[25,2860,2861],{"__ignoreMap":61},[171,2862,2863,2865,2867,2870,2872,2874,2877,2879],{"class":173,"line":174},[171,2864,587],{"class":349},[171,2866,2139],{"class":177},[171,2868,2869],{"class":188}," ppid=",[171,2871,1642],{"class":177},[171,2873,185],{"class":184},[171,2875,2876],{"class":188},"ZombiePI",[171,2878,193],{"class":192},[171,2880,196],{"class":184},[84,2882,2883,2884,2905,2906],{},"Завершите родительский процесс (осторожно, это может повлиять на другие дочерние процессы):\n",[53,2885,2887],{"className":165,"code":2886,"language":167,"meta":61,"style":61},"sudo kill -9 \u003CPPID>\n",[25,2888,2889],{"__ignoreMap":61},[171,2890,2891,2893,2895,2897,2899,2901,2903],{"class":173,"line":174},[171,2892,350],{"class":349},[171,2894,2650],{"class":188},[171,2896,308],{"class":177},[171,2898,185],{"class":184},[171,2900,189],{"class":188},[171,2902,193],{"class":192},[171,2904,196],{"class":184},"\nИли перезапустите службу, если это системный процесс:\n",[53,2907,2909],{"className":165,"code":2908,"language":167,"meta":61,"style":61},"sudo systemctl restart \u003Cservice-name>\n",[25,2910,2911],{"__ignoreMap":61},[171,2912,2913,2915,2917,2919,2921,2924,2927],{"class":173,"line":174},[171,2914,350],{"class":349},[171,2916,353],{"class":188},[171,2918,356],{"class":188},[171,2920,185],{"class":184},[171,2922,2923],{"class":188},"service-nam",[171,2925,2926],{"class":192},"e",[171,2928,196],{"class":184},[663,2930],{},[48,2932,2934],{"id":2933},"способ-4-проверьте-selinux-и-apparmor","Способ 4: Проверьте SELinux и AppArmor",[21,2936,2937,2938,2941],{},"Политики безопасности могут блокировать завершение процессов, особенно если они относятся к защищённым доменам (например, ",[25,2939,2940],{},"httpd_t"," для Apache).",[21,2943,2944],{},[87,2945,2946],{},"Для SELinux:",[81,2948,2949,2967,3005],{},[84,2950,2951,2952],{},"Временно переведите в permissive-режим (логирует, но не блокирует):\n",[53,2953,2955],{"className":165,"code":2954,"language":167,"meta":61,"style":61},"sudo setenforce 0\n",[25,2956,2957],{"__ignoreMap":61},[171,2958,2959,2961,2964],{"class":173,"line":174},[171,2960,350],{"class":349},[171,2962,2963],{"class":188}," setenforce",[171,2965,2966],{"class":177}," 0\n",[84,2968,2969,2970],{},"Попробуйте завершить процесс снова. Если сработало, настройте политику:\n",[53,2971,2973],{"className":165,"code":2972,"language":167,"meta":61,"style":61},"sudo audit2allow -M mypol \u003C /var/log/audit/audit.log\nsudo semodule -i mypol.pp\n",[25,2974,2975,2993],{"__ignoreMap":61},[171,2976,2977,2979,2982,2985,2988,2990],{"class":173,"line":174},[171,2978,350],{"class":349},[171,2980,2981],{"class":188}," audit2allow",[171,2983,2984],{"class":177}," -M",[171,2986,2987],{"class":188}," mypol",[171,2989,185],{"class":184},[171,2991,2992],{"class":188}," /var/log/audit/audit.log\n",[171,2994,2995,2997,3000,3002],{"class":173,"line":466},[171,2996,350],{"class":349},[171,2998,2999],{"class":188}," semodule",[171,3001,1256],{"class":177},[171,3003,3004],{"class":188}," mypol.pp\n",[84,3006,3007,3008],{},"Верните enforcing-режим:\n",[53,3009,3011],{"className":165,"code":3010,"language":167,"meta":61,"style":61},"sudo setenforce 1\n",[25,3012,3013],{"__ignoreMap":61},[171,3014,3015,3017,3019],{"class":173,"line":174},[171,3016,350],{"class":349},[171,3018,2963],{"class":188},[171,3020,3021],{"class":177}," 1\n",[21,3023,3024],{},[87,3025,3026],{},"Для AppArmor:",[81,3028,3029,3057,3089],{},[84,3030,3031,3032],{},"Проверьте, есть ли профиль для процесса:\n",[53,3033,3035],{"className":165,"code":3034,"language":167,"meta":61,"style":61},"sudo apparmor_status | grep \u003Cимя_процесса>\n",[25,3036,3037],{"__ignoreMap":61},[171,3038,3039,3041,3044,3046,3048,3050,3053,3055],{"class":173,"line":174},[171,3040,350],{"class":349},[171,3042,3043],{"class":188}," apparmor_status",[171,3045,593],{"class":184},[171,3047,596],{"class":349},[171,3049,185],{"class":184},[171,3051,3052],{"class":188},"имя_процесс",[171,3054,364],{"class":192},[171,3056,196],{"class":184},[84,3058,3059,3060],{},"Временно отключите профиль:\n",[53,3061,3063],{"className":165,"code":3062,"language":167,"meta":61,"style":61},"sudo apparmor_parser -R /etc/apparmor.d/usr.bin.\u003Cпроцесс>\n",[25,3064,3065],{"__ignoreMap":61},[171,3066,3067,3069,3072,3075,3078,3081,3084,3087],{"class":173,"line":174},[171,3068,350],{"class":349},[171,3070,3071],{"class":188}," apparmor_parser",[171,3073,3074],{"class":177}," -R",[171,3076,3077],{"class":188}," /etc/apparmor.d/usr.bin.",[171,3079,3080],{"class":184},"\u003C",[171,3082,3083],{"class":188},"процес",[171,3085,3086],{"class":192},"с",[171,3088,196],{"class":184},[84,3090,3091],{},"Если проблема исчезла, отредактируйте профиль, добавив разрешение на сигналы.",[48,3093,3095,3096,3099],{"id":3094},"способ-5-используйте-proc-для-принудительного-завершения-крайний-случай","Способ 5: Используйте ",[25,3097,3098],{},"/proc"," для принудительного завершения (крайний случай)",[21,3101,3102,3103,529],{},"Если процесс игнорирует все сигналы (редко, но возможно при ошибках в ядре), можно попробовать \"убить\" его через файловую систему ",[25,3104,3098],{},[53,3106,3108],{"className":165,"code":3107,"language":167,"meta":61,"style":61},"echo 1 > /proc/\u003CPID>/coredump_filter 2>/dev/null\necho 9 > /proc/\u003CPID>/signal 2>/dev/null\n",[25,3109,3110,3140],{"__ignoreMap":61},[171,3111,3112,3115,3118,3120,3123,3125,3127,3129,3131,3134,3137],{"class":173,"line":174},[171,3113,3114],{"class":177},"echo",[171,3116,3117],{"class":177}," 1",[171,3119,1779],{"class":184},[171,3121,3122],{"class":188}," /proc/",[171,3124,3080],{"class":184},[171,3126,2132],{"class":188},[171,3128,193],{"class":192},[171,3130,390],{"class":184},[171,3132,3133],{"class":188},"/coredump_filter",[171,3135,3136],{"class":184}," 2>",[171,3138,3139],{"class":188},"/dev/null\n",[171,3141,3142,3144,3147,3149,3151,3153,3155,3157,3159,3162,3164],{"class":173,"line":466},[171,3143,3114],{"class":177},[171,3145,3146],{"class":177}," 9",[171,3148,1779],{"class":184},[171,3150,3122],{"class":188},[171,3152,3080],{"class":184},[171,3154,2132],{"class":188},[171,3156,193],{"class":192},[171,3158,390],{"class":184},[171,3160,3161],{"class":188},"/signal",[171,3163,3136],{"class":184},[171,3165,3139],{"class":188},[226,3167,3168],{},[21,3169,230,3170,3173],{},[87,3171,3172],{},"Экспериментальный метод."," Может привести к нестабильности системы. Используйте только если другие способы не помогли и перезагрузка невозможна.",[16,3175,509],{"id":508},[426,3177,3178,3192,3211,3237,3243],{},[84,3179,3180,3183,3184,2692,3186,3188,3189,3191],{},[87,3181,3182],{},"Корректно завершайте процессы"," — используйте сначала ",[25,3185,1367],{},[25,3187,178],{},"), затем ",[25,3190,1389],{},". Это даёт процессу chance на сохранение данных.",[84,3193,3194,3197,3198,3200,3201,3203,3204,3206,3207,3210],{},[87,3195,3196],{},"Мониторинг D-состояний"," — регулярно проверяйте процессы в состоянии ",[25,3199,193],{}," через ",[25,3202,38],{}," (нажмите ",[25,3205,193],{}," для сортировки) или ",[25,3208,3209],{},"ps aux | grep '^.* D .*'",". Частые D-процессы могут указывать на проблемы с оборудованием или драйверами.",[84,3212,3213,3216,3217,3219,3220,3223,3224,3227,3228,3231,3232,3234,3235,224],{},[87,3214,3215],{},"Настройка родительских процессов"," — для служб под ",[25,3218,251],{}," убедитесь, что ",[25,3221,3222],{},"PIDFile"," указан корректно, а ",[25,3225,3226],{},"KillMode"," установлен в ",[25,3229,3230],{},"control-group"," (по умолчанию). Для кастомных скриптов — всегда обрабатывайте ",[25,3233,111],{}," и вызывайте ",[25,3236,27],{},[84,3238,3239,3242],{},[87,3240,3241],{},"Обновляйте ядро и драйверы"," — многие проблемы с uninterruptible sleep исправляются в обновлениях.",[84,3244,3245,3248,3249,918,3252,3255],{},[87,3246,3247],{},"Осторожно с NFS"," — при монтировании удалённых файловых систем используйте опции ",[25,3250,3251],{},"soft",[25,3253,3254],{},"timeo",", чтобы процессы не зависали навсегда при потере связи.",[673,3257,3258],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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":61,"searchDepth":466,"depth":466,"links":3260},[3261,3262,3263,3271],{"id":2521,"depth":466,"text":2522},{"id":75,"depth":466,"text":76},{"id":2601,"depth":466,"text":2602,"children":3264},[3265,3266,3267,3268,3269],{"id":2605,"depth":472,"text":2606},{"id":2698,"depth":472,"text":2699},{"id":2820,"depth":472,"text":2821},{"id":2933,"depth":472,"text":2934},{"id":3094,"depth":472,"text":3270},"Способ 5: Используйте /proc для принудительного завершения (крайний случай)",{"id":508,"depth":466,"text":509},"2026-02-17 12:33:03","Не удаётся завершить процесс в Linux? Узнайте, почему возникает ошибка 'kill: (PID) - Operation not permitted' и как исправить за 5 минут. Пошаговая инструкция с примерами команд.","5-10 мин",[3276,3279,3282,3284],{"question":3277,"answer":3278},"Почему kill -9 не работает, хотя я запускаю его от root?","Сигнал SIGKILL (-9) не может прервать процесс, находящийся в uninterruptible sleep (состояние D). Такие процессы обычно ждут ответа от драйвера устройства (например, NFS).",{"question":3280,"answer":3281},"Что такое uninterruptible sleep (D-состояние) и как с ним бороться?","Это состояние, когда процесс ожидает завершения системного вызова (часто ввода-вывода). Его нельзя убить стандартными сигналами. Решение — устранить причину (например, размонтировать зависший NFS) или перезагрузить систему.",{"question":705,"answer":3283},"Зомби появляются, когда родительский процесс не читает статус дочернего. Убедитесь, что родительские процессы корректно обрабатывают сигнал SIGCHLD или вызывают wait(). Используйте `systemd` или супервизоры, которые автоматически перезапускают службы.",{"question":3285,"answer":3286},"Может ли SELinux/AppArmor вызывать эту ошибку?","Да, политики безопасности могут запрещать завершение процессов. Для диагностики временно переведите SELinux в permissive-режим (`setenforce 0`) или отключите AppArmor, чтобы проверить.",[3288,3291,3294,3297,3300],{"name":3289,"text":3290},"Определите PID процесса и проверьте его состояние","Узнайте PID процесса через `ps aux` или `top`. Затем выполните `ps -o stat= -p \u003CPID>`, чтобы увидеть состояние. Если в колонке STAT есть 'D', процесс в uninterruptible sleep.",{"name":3292,"text":3293},"Попробуйте завершить процесс с правами root","Используйте `sudo kill \u003CPID>` или `sudo kill -9 \u003CPID>`. Если процесс не в D-состоянии и у вас есть права, это сработает.",{"name":3295,"text":3296},"Обработайте процессы в D-состоянии","Для D-процессов найдите, какой ресурс они ждут (например, через `strace -p \u003CPID>`). Если это сетевая файловая система (NFS), попробуйте размонтировать её (`umount -l \u003Cточка_монтирования>`). Если не помогает — перезагрузите систему.",{"name":3298,"text":3299},"Очистите зомби-процессы","Зомби не потребляют ресурсы и не могут быть убиты. Убейте их родительский процесс (`kill -9 \u003CPPID>`), после чего они исчезнут. Или перезапустите родительскую службу через `systemctl restart \u003Cservice>`.",{"name":3301,"text":3302},"Проверьте политики безопасности (SELinux/AppArmor)","Временно отключите SELinux (`setenforce 0`) или AppArmor (`systemctl stop apparmor`). Если ошибка исчезла, настройте политики, разрешающие завершение процесса.","PT10M",[3305,3306,3307,3308,3309,3310,3311,3312,3313,3314],"не удалось завершить процесс linux","kill operation not permitted","ошибка kill в терминале","kill -9 не работает","uninterruptible sleep процесс","зомби-процесс линукс","linux kill failed","как убить процесс в линукс","EPERM ошибка","процесс не завершается linux",{},[3317,3318,3319],"/errors/linux/permission-denied","/errors/linux/zombie-process","/guides/linux/process-management",{"title":2512,"description":3273},"high","errors/linux/process-kill-fail","Статья объясняет, почему команда kill может завершиться ошибкой EPERM в Linux, и предлагает проверенные способы решения проблемы — от проверки прав до работы с uninterruptible sleep.",[741,752,178,3325,754,756,2528],"ошибки","wapvFnBOnFwPCMPa0jV1lMbK_5CXcjT3ojgvnMplUAQ"]