Як забіць працэс у Лінукс

Anonim

Як забіць працэс у Лінукс

Кожная праграма, ўтыліта ці нейкай іншай элемент аперацыйнай сістэмы Linux рэалізоўваецца ў выглядзе аднаго або некалькіх працэсаў, якія функцыянуюць у фонавым альбо актыўным рэжыме. Кожны такі працэс спажывае пэўную колькасць сістэмных рэсурсаў і дзейнічае адведзены прамежак часу. Часам здараюцца сітуацыі, якія патрабуюць неадкладнага завяршэння ( «забойства») такой аперацыі, што звязана з непатрэбнасцю яе выканання або узнікненнем памылак. У рамках сённяшняга артыкула мы хочам пагаварыць аб метадах ажыццяўлення гэтай задачы.

Тыпы сігналаў для завяршэння працэсаў

Для пачатку закранем тэму алгарытмаў завяршэння працэсаў у дыстрыбутывах, заснаваных на Linux. Дзеянне сістэмных сродкаў залежыць ад дасылаемых сігналаў, якія маюць розныя значэнні і прымушаюць выконваць пэўную паслядоўнасць задач. Ніжэй будуць прадстаўлены спосабы, дзе можна паказваць тып сігналу для «забойства» аперацыі, таму мы рэкамендуем вывучыць іх усё, каб разабрацца ў правільнасці прымянення.
  1. SIGINT - стандартны сігнал, які выкарыстоўваецца і ў графічных абалонках. Пры яго адпраўленні працэс захоўвае ўсе змены, завяршае выкананыя дзеянні і толькі потым адключаецца. Калі вы працуеце праз «Тэрмінал», выкарыстоўвайце камбінацыю клавіш Ctrl + C, каб хутка «забіць» бягучы працэс.
  2. SIGQUIT - практычна не адрозніваецца ад папярэдняга сігналу, але пры яго адпраўцы праграма ўжо сама вырашае, ці варта завяршаць працу. Пры гэтым ствараецца дамп памяці, што можа быць карысна вызначаным карыстальнікам. Гэта другі і апошні сігнал, які можна паслаць спалучэннем клавіш пры ўзаемадзеянні з «тэрміналаў". Для гэтага выкарыстоўваецца камбінацыя Ctrl + /.
  3. SIGHUP - выкарыстоўваецца для разрыву сувязі з «тэрміналаў". Рэкамендуецца задзейнічаць гэты сігнал, калі патрабуецца перапыніць злучэнне з інтэрнэтам.
  4. SIGTERM - адразу ж выдаляе працэс, але яго даччыныя опцыі працягваюць выконвацца да поўнага завяршэння аперацый, а пасля вырабляецца вызваленне сістэмных рэсурсаў.
  5. SIGKILL - аналагічны папярэдняму сігнал, але пры гэтым засталіся даччыныя задачы не спыняюць сваё функцыянаванне.

Цяпер вы ведаеце аб усіх даступных сігналах, якія выкарыстоўваюцца пры «забойстве» працэсаў у розных дыстрыбутывах Linux. Выкарыстоўвайце іх разам з прыведзенымі ў метадах ніжэй камандамі ў якасці аргументу.

Завяршаем працэсы ў Linux

Існуюць розныя сістэмныя сродкі, якія дазваляюць «забіць» якой-небудзь працэс. Часам для гэтага даводзіцца даведвацца яго ідэнтыфікатар, а ў іншых сітуацыях дастаткова толькі назвы. Далей мы прапануем дэталёва вывучыць усе прадстаўленыя метады, каб знайсці аптымальны для сябе і выконваць яго пры неабходнасці, улічваючы апісаныя раней сігналы.

Спосаб 1: «Сістэмны манітор»

Пачнем з самага простага, але менш варыятыўнага метаду, які ажыццяўляецца праз праграму графічнага інтэрфейсу і будзе карысны тым карыстальнікам, хто проста хоча завяршыць працэс, не звяртаючыся пры гэтым да запуску тэрмінальных каманд. Разгледзім гэту аперацыю на стандартнай абалонцы дыстрыбутыва Ubuntu.

  1. Перайдзіце ў меню «Паказаць прыкладання», дзе адшукайце «Сістэмны манітор» і запусціце яго, клікнуўшы па значку левай кнопкай мышы.
  2. Запуск сістэмнага манітора ў Linux для завяршэння працэсаў

  3. У якое з'явілася акне вы ўбачыце спіс працэсаў. Знайдзіце імя неабходнай для завяршэння задачы.
  4. Пошук працэсаў праз сістэмны манітор у Linux

  5. Дадаткова вы можаце перамясціцца ў ўласцівасці аб'екта праз кантэкстнае меню, каб паглядзець усю інфармацыю пра яго.
  6. Прагляд агульны звестак аб працэсе праз сістэмны манітор у Linux

  7. Пстрыкніце правай кнопкай мышы па радку і абярыце пункт «Завяршыць». Гэта ж дзеянне выконваецца праз гарачую клавіш Ctrl + E. Яшчэ ўнізе маецца кнопка, якая дазваляе завяршыць працэс без выкліку кантэкстнага меню.
  8. Спыненьне патокаў праз сістэмны манітор у Linux

  9. Калі ж аперацыя не завяршылася па якіх-небудзь прычынах, задзейнічайце опцыю «Забіць».
  10. Прымусовае забойства працэсу праз сістэмны манітор у Linux

  11. Азнаёмцеся з інфармацыяй у папярэджанні і пацвердзіце свае намеры.
  12. Пацверджанне забойства працэсу праз сістэмны манітор у Linux

У пераважнай большасці графічных абалонак сістэмны манітор рэалізаваны падобным чынам, таму якіх-то праблем з разуменнем інтэрфейсу паўстаць не павінна.

Спосаб 2: Каманда kill

Для ўжывання каманды kill спатрэбіцца веданне PID (ідэнтыфікатара працэсу), паколькі менавіта так ажыццяўляецца прымяненне аргументаў. У артыкуле ніжэй мы дэталёва апісалі аперацыю па журнал працэсаў для атрымання рознай інфармацыі. Абавязкова азнаёмцеся з ёй перад выкананнем наступнай інструкцыі.

Чытаць далей: Прагляд спісу працэсаў у Linux

Далей застаецца толькі запусціць «Тэрмінал» і задзейнічаць згаданую каманду. Для пачатку вывучыце яе просты сінтаксіс: kill -сигнал pid_процесса. Зараз давайце разгледзім прыклад «забойства».

  1. Адкрыйце меню прыкладанняў і запусціце «Тэрмінал».
  2. Запуск Тэрмінала для завяршэння працэсаў у Linux

  3. Увядзіце простую каманду ps aux | grep name для атрымання інфармацыі аб паказаным працэсе, дзе name - імя жаданай праграмы.
  4. Каманда для пошуку ідэнтыфікатара працэсу пры завяршэнні праз kill ў Linux

  5. У адлюстраваў выніку адшукайце галоўны PID і запомніце яго.
  6. Прагляд ідэнтыфікатара працэсу для завяршэння праз kill ў Linux

  7. Увядзіце kill PID для завяршэння працэсу праз сігнал SIGTERM. Замест PID вам трэба напісаць пэўны раней нумар ідэнтыфікатара.
  8. Завяршэнне працэсу праз тэрмінальную каманду kill ў Linux

  9. Цяпер вы можаце зноў выкарыстоўваць ps aux | grep name, каб праверыць, ці была завершана аперацыя.
  10. Праверка завяршэння працэсу праз каманду kill ў Linux

  11. Тое ж самае дзеянне па «забойства» ажыццяўляецца і праз іншы аргумент шляхам уводу kill -TERM.
  12. Выкарыстанне сігналаў пры ўводзе каманды kill ў Linux

  13. Калі прыведзеныя вышэй каманды не прынеслі ніякага выніку, спатрэбіцца пазначыць сігнал SIGKILL, уставіўшы каманду kill -KILL.
  14. Прымусовае забойства працэсу праз каманду kill ў Linux

Улічыце, што некаторыя працэсы запускаюцца ад імя суперпользователя, адпаведна, для іх завяршэння патрабуюцца прывілеі. Калі пры спробе ўводу kill вы атрымліваеце інфармацыю «Адмоўлена ў доступе", ўводзіце перад асноўнай камандай sudo, каб атрымалася sudo kill.

Спосаб 3: Каманда pkill

Наступны кансольная ўтыліта называецца pkill і з'яўляецца мадэрнізаванай версіяй папярэдняй каманды. Тут усё рэалізавана сапраўды па такім жа вобразу, але замест PID ад карыстальніка патрабуецца уводзіць назву працэсу.

  1. Для адпраўкі сігналу SIGTERM выкарыстоўвайце pkill + назву працэсу.
  2. Выкарыстанне каманды pkill ў Linux для завяршэння працэсу

  3. Пасля вы можаце пераканацца, што аперацыя была паспяхова завершана.
  4. Праверка завяршэння працэсу праз каманду pkill ў Linux

  5. Задайце ўручную тып сігналу, увёўшы такую ​​форму pkill -TERM ping, дзе -TERM - неабходны сігнал.
  6. Выкарыстанне сігналаў для завяршэння працэсаў праз каманду pkill ў Linux

  7. Выкарыстоўвайце pgrep для вызначэння таго, што працэс больш не выконваецца, калі вы не хочаце задзейнічаць ps
  8. Праверка дрэва працэсаў пры выкарыстанні pkill ў Linux

Спосаб 4: Каманда killall

У якасці апошняга спосабу мы разгледзім каманду пад назвай killall. Яе функцыянаванне і сінтаксіс выглядаюць сапраўды гэтак жа, як ва ўсіх папярэдніх утыліт, таму спыняцца на гэтым мы не будзем. Толькі ўдакладнім, што гэтая каманда дазваляе завяршыць усе працэсы з паказаным назвай разам і можа быць выкарыстана ў розных выпадках.

Выкарыстанне каманды killall ў Linux для завяршэння ўсіх працэсаў з аднолькавай назвай

Цяпер вы ведаеце ўсё аб завяршэнні працэсаў у Linux. Перад выкананнем метадаў пераканайцеся, што прымусовае «забойства» не прывядзе да сістэмным збояў. Калі ж ні адзін варыянт не дазволіў цалкам пазбавіцца ад працэсу, паспрабуйце проста перазагрузіць кампутар або выдаліць софт, звязаны з гэтай опцыяй.

Чытаць далей