Как да стартирате и контролирате фонови процеси в Linux
Фатмавати Ахмад Заенури/Shutterstock.com
Използвайте обвивката на Bash в Linux, за да управлявате процеси на преден и заден план. Можете да използвате функциите и сигналите за контрол на заданията на Bash, за да ви даде повече гъвкавост в начина, по който изпълнявате команди. Ние ви показваме как.
Всичко за процесите
Всеки път, когато дадена програма се изпълнява в операционна система, подобна на Linux или Unix, се стартира процес. Процесът е името на вътрешното представяне на изпълняващата се програма в паметта на компютъра. За всяка активна програма има процес. Всъщност има процес за почти всичко, което се изпълнява на вашия компютър. Това включва компонентите на вашия графична среда на работния плот (GDE) като напр GNOME или КЪДЕТО , и система демони които се стартират при стартиране.
Защо почти всичко, което работи? Е, вградени в Bash като напр CD , Pwd , и псевдоним не е необходимо процесът да бъде стартиран (или създаден), когато се изпълняват. Bash изпълнява тези команди в рамките на екземпляра на обвивката на Bash, която се изпълнява във вашия терминален прозорец. Тези команди са бързи именно защото не е необходимо да имат стартиран процес, за да ги изпълнят. (Можете да напишете |_+_| в прозорец на терминала, за да видите списъка с вградени Bash.)
Процесите могат да се изпълняват на преден план, като в този случай те поемат вашия терминал, докато не завършат, или могат да се изпълняват на заден план. Процесите, които се изпълняват във фонов режим, не доминират в прозореца на терминала и можете да продължите да работите в него. Или поне те не доминират в прозореца на терминала, ако не генерират изход на екрана.
Разхвърлян пример
Ще започнем просто |_+_| трасиране . Отиваме на |_+_| домейнът How-To Geek. Това ще се изпълни като процес на преден план.
help
Реклама
Получаваме очакваните резултати, превъртайки надолу прозореца на терминала. Не можем да направим нищо друго в прозореца на терминала, докато |_+_| бяга. За да прекратите командата, натиснете |_+_|.
ping
Видимият ефект на |_+_| е подчертано на екранната снимка. |_+_| дава кратко резюме и след това спира.
Нека повторим това. Но този път ще ударим |_+_| вместо |_+_|. Задачата няма да бъде прекратена. Това ще се превърне във фонова задача. Получаваме контрола върху прозореца на терминала, върнат ни.
ping
ping
Видимият ефект от удрянето |_+_| е подчертано на екранната снимка.
Този път ни казват, че процесът е спрян. Спрян не означава прекратен. Това е като кола на знак за спиране. Не сме го бракували и изхвърлили. Все още е на пътя, неподвижно, чака да си тръгне. Процесът вече е фон работа .
|_+_| команда ще изброи работните места които са стартирани в текущата терминална сесия. И тъй като работните места са (неизбежно) процеси, можем да използваме и |_+_| заповядайте да ги видите. Нека използваме и двете команди и да сравним техните резултати. Ще използваме |_+_| опция (терминал) опция за изброяване само на процесите, които се изпълняват в този терминален прозорец. Имайте предвид, че не е необходимо да използвате тире |_+_| с |_+_| опция.
Ctrl+C
Ctrl+C
|_+_| команда ни казва:
- Поставяне на процес във фонов режим.
- Възстановяване на процеса до работещо състояние във фонов режим.
- Връщане на процеса на преден план.
- Прекратяване на процеса.
- командна линия & : Добавяне на амперсанд |_+_| до края на командния ред изпълнява тази команда като фонова задача, която се изпълнява.
- & rsaquo; Как да използвате филтри на Wireshark в Linux
- & rsaquo; Как да убиете зомби процеси в Linux
- › Как да намерите своя Spotify Wrapped 2021
- & rsaquo; Кибер понеделник 2021: Най-добрите технологични сделки
- & rsaquo; Кибер понеделник 2021: Най-добрите оферти за Apple
- › Компютърната папка е 40: Как звездата на Xerox създаде работния плот
- › 5 уебсайта, които всеки потребител на Linux трябва да направи отметка
- › Функции срещу формули в Microsoft Excel: Каква е разликата?
|_+_| команда ни казва:
Това са общи стойности за колоната STAT:
Стойността в колоната STAT може да бъде последвана от един от тези допълнителни индикатори:
Можем да видим, че Bash има състояние |_+_|. Главното S ни казва, че обвивката на Bash спи и е прекъсваема. Веднага щом имаме нужда от него, той ще отговори. Малките букви s ни казват, че обвивката е лидер на сесията.
Командата ping има състояние |_+_|. Това ни казва, че |_+_| е спрян от сигнал за управление на заданието. В този пример това беше |_+_| ние го поставяхме на заден план.
|_+_| командата има състояние |_+_|, което означава изпълняване. |_+_| показва, че този процес е член на групата на преден план. Така че |_+_| командата се изпълнява на преден план.
Командата bg
|_+_| командата се използва за възобновяване на фонов процес. Може да се използва със или без номер на работа. Ако го използвате без номер на задание, заданието по подразбиране се извежда на преден план. Процесът все още работи във фонов режим. Не можете да изпратите никакви данни към него.
Ако издадем |_+_| команда, ще възобновим нашата |_+_| команда:
ping
Реклама
|_+_| командата се възобновява и отново виждаме превъртащия се изход в прозореца на терминала. Показва се името на командата, която е била рестартирана. Това е подчертано на екранната снимка.
Но имаме проблем. Задачата се изпълнява във фонов режим и не приема въвеждане. И така, как да го спрем? |_+_| не прави нищо. Можем да го видим, когато го въвеждаме, но фоновата задача не получава тези натискания на клавиши, така че продължава да пингува весело.
Всъщност сега сме в странен режим на смесване. Можем да въвеждаме в прозореца на терминала, но това, което въвеждаме, бързо се помита от превъртащия изход от |_+_| команда. Всичко, което въвеждаме, влиза в сила на преден план.
За да спрем нашата фонова задача, трябва да я изведем на преден план и след това да я спрем.
Командата fg
|_+_| команда ще изведе фонова задача на преден план. Точно като |_+_| команда, може да се използва със или без номер на задание. Използването му с номер на работа означава, че ще работи на конкретна работа. Ако се използва без номер на задание, се използва последната команда, изпратена на заден план.
Ако напишем |_+_| нашите |_+_| командата ще бъде изведена на преден план. Знаците, които въвеждаме, се смесват с изхода от |_+_| команда, но те се управляват от обвивката, сякаш са били въведени в командния ред, както обикновено. И всъщност, от гледна точка на Bash shell, точно това се е случило.
Ctrl+Z
Реклама
И сега, когато имаме |_+_| команда, която се изпълнява отново на преден план, можем да използваме |_+_| да го убиеш.
Ctrl+C
Трябва да изпращаме правилните сигнали
Това не беше точно красиво. Очевидно стартирането на процес във фонов режим работи най-добре, когато процесът не произвежда изход и не изисква въвеждане.
Но, разхвърлян или не, нашият пример постигна:
Когато използвате |_+_| и |_+_| , изпращате сигнали към процеса. Това са стенографски начини на използване на |_+_| команда. Има 64 различни сигнала че |_+_| Може да се изпрати. Използвайте |_+_| в командния ред, за да ги изброите. |_+_| не е единственият източник на тези сигнали. Някои от тях се повдигат автоматично от други процеси в системата
Ето някои от често използваните.
Трябва да използваме |_+_| команда за издаване на сигнали, които нямат присвоени комбинации от клавиши.
Допълнителен контрол на работата
Процес, преместен във фонов режим с помощта на |_+_| се поставя в спряно състояние. Трябва да използваме |_+_| команда, за да стартирате отново. Стартирането на програма като работещ фонов процес е лесно. Добавете амперсанд |_+_| до края на командния ред.
Въпреки че е най-добре фоновите процеси да не пишат в прозореца на терминала, ще използваме примери, които го правят. Трябва да имаме нещо в екранните снимки, на което можем да се позоваваме. Тази команда ще стартира безкраен цикъл като фонов процес:
Рекламадокато е вярно; echo How-To Geek Loop Process; сън 3; Свършен &
Казват ни номера на заданието и идентификационния номер на процеса на процеса. Номерът на нашата работа е 1, а идентификаторът на процеса е 1979. Можем да използваме тези идентификатори, за да контролираме процеса.
Резултатът от нашия безкраен цикъл започва да се появява в прозореца на терминала. Както преди, можем да използваме командния ред, но всички команди, които издаваме, се разпръскват с изхода от цикъла.
ls
За да спрем нашия процес, можем да използваме |_+_| за да си напомним какъв е номерът на заданието и след това използвайте |_+_|.
|_+_| съобщава, че нашият процес е задача номер 1. За да използваме този номер с |_+_| трябва да го предхождаме със знак за процент |_+_|.
Ctrl+Z
jobs
СВЪРЗАНИ: Как работят сигналите на Linux: SIGINT, SIGTERM и SIGKILL
|_+_| изпраща |_+_| сигнал, сигнал номер 15, към процеса и той се прекратява. При следващото натискане на клавиша Enter се показва състоянието на заданието. Той посочва процеса като прекратен. Ако процесът не отговаря на |_+_| команда можете да я повишите. Използвайте |_+_| с |_+_| , сигнал номер 9. Просто поставете числото 9 между |_+_| командвайте номера на заданието.
ps
Неща, които сме обхванали
СВЪРЗАНИ: Как да убивате процеси от терминала на Linux
СВЪРЗАНИ: Най-добрите Linux лаптопи за разработчици и ентусиасти
ПРОЧЕТЕТЕ СЛЕДВАЩОДейв Маккей за първи път използва компютри, когато перфорираната хартиена лента беше на мода и оттогава той програмира. След повече от 30 години в ИТ индустрията, той вече е технологичен журналист на пълен работен ден. По време на кариерата си той е работил като програмист на свободна практика, мениджър на международен екип за разработка на софтуер, ръководител на проекти за ИТ услуги и, последно, като служител по защита на данните. Неговото писане е публикувано от howtogeek.com, cloudsavvyit.com, tenterpriser.com и opensource.com. Дейв е евангелист на Linux и привърженик на отворен код.
Прочетете пълната биография