Како покренути и контролисати позадинске процесе на Линуку

Користите Басх љуску у Линуку за управљање процесима у првом плану и у позадини. Можете користити Басх-ове функције и сигнале за контролу послова да бисте добили већу флексибилност у начину на који изводите команде. Показаћемо вам како.

Све о процесима

Кад год се програм извршава у Линук или Уник оперативном систему, покреће се процес. „Процес“ је назив за интерни приказ програма који се извршава у меморији рачунара. За сваки активан програм постоји процес. У ствари, постоји процес за скоро све што се покреће на вашем рачунару. То укључује компоненте вашег графичко окружење радне површине (ГДЕ) као нпр ГНОМЕ или КДЕ, и систем демони који се покрећу при покретању.

Зашто скоро све што ради? Па, Басх уграђени програми као што су цд, пвд, и алиас не морају имати процес покренут (или „покренути“) када се покрећу. Басх извршава ове команде унутар инстанце Басх љуске која је покренута у прозору вашег терминала. Ове команде су брзе управо зато што не морају да имају покренут процес да би се извршиле. (Можете да откуцате помоћ у прозору терминала да бисте видели листу уграђених Басх-а.)

Процеси могу бити покренути у првом плану, у ком случају преузимају ваш терминал док се не заврше, или се могу покренути у позадини. Процеси који се покрећу у позадини не доминирају прозором терминала и можете наставити да радите у њему. Или барем, они не доминирају прозором терминала ако не генеришу излаз на екрану.

Неуредан пример

Почећемо са једноставним пингом трчање трагова. Пинговаћемо домен Хов-То Геек. Ово ће се извршити као процес у првом плану.

ping www.wdzwdz.com

Добијамо очекиване резултате померањем надоле кроз прозор терминала. Не можемо ништа друго да урадимо у прозору терминала док је пинг покренут. Да бисте прекинули команду, притисните Цтрл+Ц.

Ctrl+C

Видљиви ефекат Цтрл+Ц је истакнут на снимку екрана. пинг даје кратак резиме и затим се зауставља.

Поновимо то. Али овог пута ћемо притиснути Цтрл+З уместо Цтрл+Ц. Задатак неће бити прекинут. То ће постати позадински задатак. Добијамо контролу над прозором терминала.

ping www.wdzwdz.com
Ctrl+Z

Видљиви ефекат притискања Цтрл+З је истакнут на снимку екрана.

Овог пута нам је речено да је процес заустављен. Заустављен не значи прекинут. То је као ауто на знаку стоп. Нисмо га одбацили и бацили. Још увек је на путу, мирује, чека да крене. Процес је сада посао у позадини.

  Како одабрати тачну резолуцију екрана на вашем Мац-у

Команда послова ће навести послове које су покренуте у тренутној терминалској сесији. А пошто су послови (неизбежно) процеси, можемо користити и команду пс да их видимо. Хајде да користимо обе команде и упоредимо њихове резултате. Користићемо опцију Т опције (терминал) да наведемо само процесе који се покрећу у овом прозору терминала. Имајте на уму да нема потребе да користите цртицу – са опцијом Т.

jobs
ps T

Команда послова нам каже:

[1]: Број у угластим заградама је број посла. Можемо да користимо ово да се односимо на посао када треба да га контролишемо командама за контролу посла.
+: Знак плус + показује да је то посао на који ће се реаговати ако користимо команду за контролу посла без одређеног броја посла. То се зове подразумевани посао. Подразумевани посао је увек онај који је последњи додат на листу послова.
Заустављен: Процес се не покреће.
пинг ввв.вдзвдз.цом: Командна линија која је покренула процес.

Команда пс нам говори:

ПИД: ИД процеса процеса. Сваки процес има јединствени ИД.
ТТИ: Псеудо-телетип (прозор терминала) из којег је процес извршен.
СТАТ: Статус процеса.
ВРЕМЕ: Количина ЦПУ времена које процес троши.
КОМАНДА: Команда која је покренула процес.

Ово су уобичајене вредности за колону СТАТ:

Д: Непрекидан сан. Процес је у стању чекања, обично чека на улаз или излаз, и не може се прекинути.
И: Идле.
Р: Трчање.
С: Прекидиво спавање.
Т: Заустављен сигналом за контролу посла.
З: Процес зомбија. Процес је прекинут, али га родитељски процес није „очистио“.

Вредност у колони СТАТ може бити праћена једним од ових додатних индикатора:

<: high-priority="" task="" nice="" to="" other="" processes="" n:="" low-priority="" l:="" process="" has="" pages="" locked="" into="" memory="" used="" by="" real-time="" s:="" a="" session="" leader.="" leader="" is="" that="" launched="" groups.="" shell="" multi-thread="" process.="" foreground="">Видимо да Баш има стање Сс. Велико „С“ нам говори да Басх шкољка спава и да је прекинута. Чим нам затреба, одговориће. Мало слово „с“ нам говори да је шкољка вођа сесије.

Команда пинг има стање Т. Ово нам говори да је пинг заустављен сигналом за контролу посла. У овом примеру, то је био Цтрл+З који смо користили да га ставимо у позадину.

Команда пс Т има стање Р, што значи покретање. + означава да је овај процес члан групе у првом плану. Дакле, команда пс Т ради у првом плану.

Тхе бг Цомманд

Команда бг се користи за наставак позадинског процеса. Може се користити са или без броја посла. Ако га користите без броја посла, подразумевани посао се ставља у први план. Процес и даље ради у позадини. Не можете му послати никакав унос.

Ако издамо команду бг, наставићемо нашу пинг команду:

bg

Команда пинг се наставља и поново видимо померајући излаз у прозору терминала. За вас се приказује назив команде која је поново покренута. Ово је истакнуто на снимку екрана.

  25 Екцел формула и пречица на тастатури за уштеду времена и труда вдзвдз

Али имамо проблем. Задатак ради у позадини и не прихвата унос. Па како да то зауставимо? Цтрл+Ц не ради ништа. Можемо да га видимо када га откуцамо, али задатак у позадини не прима те притиске на тастере, тако да непрестано пингује.

У ствари, сада смо у чудном комбинованом режиму. Можемо да куцамо у прозору терминала, али оно што укуцамо брзо се брише померањем излаза из команде пинг. Све што унесемо ступа на снагу у првом плану.

Да бисмо зауставили наш задатак у позадини, морамо га ставити у први план, а затим зауставити.

Команда фг

Команда фг ће довести позадински задатак у први план. Баш као и команда бг, може се користити са или без броја посла. Коришћење са бројем посла значи да ће радити на одређеном послу. Ако се користи без броја посла, користи се последња команда која је послата у позадину.

Ако откуцамо фг, наша пинг команда ће бити доведена у први план. Знакови које укуцавамо су помешани са излазом из команде пинг, али њима ради љуска као да су унети на командној линији као и обично. И у ствари, са тачке гледишта Басх шкољке, управо се то догодило.

fg

И сада када имамо команду пинг која је поново покренута у првом плану, можемо користити Цтрл+Ц да је убијемо.

Ctrl+C

Морамо да шаљемо праве сигнале

То није било баш лепо. Очигледно покретање процеса у позадини најбоље функционише када процес не производи излаз и не захтева унос.

Али, неуредан или не, наш пример је постигао:

Стављање процеса у позадину.
Враћање процеса у радно стање у позадини.
Враћање процеса у први план.
Прекидање процеса.

Када користите Цтрл+Ц и Цтрл+З, шаљете сигнале процесу. Су стенографски начини коришћења команде килл. Постоје 64 различита сигнала то убиство може послати. Користите килл -л у командној линији да их наведете. килл није једини извор ових сигнала. Неке од њих аутоматски подижу други процеси у систему

Ево неких од најчешће коришћених.

СИГХУП: Сигнал 1. Аутоматски се шаље процесу када је терминал на којем ради затворен.
СИГИНТ: Сигнал 2. Послато процесу који притиснете Цтрл+Ц. Процес се прекида и каже да се прекине.
СИГКУИТ: Сигнал 3. Шаље се процесу ако корисник пошаље сигнал за излаз Цтрл+Д.
СИГКИЛЛ: Сигнал 9. Процес је одмах прекинут и неће покушати да се чисто затвори. Процес се не спушта грациозно.
СИГТЕРМ: Сигнал 15. Ово је подразумевани сигнал који шаље килл. То је стандардни сигнал завршетка програма.
СИГТСТП: Сигнал 20. Шаље се процесу када користите Цтрл+З. Зауставља процес и ставља га у позадину.

  6 онлајн курсева цртања да бисте постали уметник

Морамо користити команду килл за издавање сигнала који немају додељене комбинације тастера.

Даља контрола посла

Процес премештен у позадину коришћењем Цтрл+З ставља се у заустављено стање. Морамо да употребимо команду бг да поново покренемо. Покретање програма као покренутог позадинског процеса је једноставно. Додајте знак & на крај командне линије.

Иако је најбоље да позадински процеси не пишу у прозор терминала, користићемо примере који то раде. Морамо да имамо нешто на снимцима екрана на шта се можемо позвати. Ова команда ће покренути бескрајну петљу као позадински процес:

док је истинито; до ецхо “Хов-То Геек Лооп Процесс”; спавање 3; Готово &

док је истинито;  до ецхо

Речено нам је број посла и ИД процеса процеса. Број нашег посла је 1, а ИД процеса је 1979. Можемо користити ове идентификаторе да контролишемо процес.

Излаз из наше бескрајне петље почиње да се појављује у прозору терминала. Као и раније, можемо да користимо командну линију, али све команде које издамо су испрекидане са излазом из процеса петље.

лс

Да бисмо зауставили наш процес, можемо да користимо послове да се подсетимо који је број посла, а затим да користимо килл.

јобс извештава да је наш процес посао број 1. Да бисмо користили тај број са килл-ом, морамо му претходити знаком процента %.

jobs
kill %1

килл шаље СИГТЕРМ сигнал, сигнал број 15, процесу и он се завршава. Када се следећи пут притисне тастер Ентер, приказује се статус задатка. Наводи процес као „завршен“. Ако процес не реагује на команду за убијање, можете је повећати. Користите килл са СИГКИЛЛ , сигнал број 9. Само ставите број 9 између команде килл и броја посла.

kill 9 %1

Ствари које смо покрили

Цтрл+Ц: Шаље СИГИНТ, сигнал 2, процесу—ако прихвата улаз—и каже му да прекине.
Цтрл+Д: Шаље СИСКУИТ, сигнал 3, процесу—ако прихвата унос—и каже му да прекине.
Цтрл+З: Шаље СИГСТП, сигнал 20, процесу и говори му да заустави (суспендује) и постане процес у позадини.
послови: Наводи позадинске послове и приказује њихов број посла.
бг јоб_нумбер: Поново покреће процес у позадини. Ако не унесете број посла, користи се последњи процес који је претворен у задатак у позадини.
фг јоб_нумбер: доводи процес у позадини у први план и поново га покреће. Ако не унесете број посла, користи се последњи процес који је претворен у задатак у позадини.
командна линија &: Додавање знака & на крај командне линије извршава ту команду као задатак у позадини, који је покренут.
килл %јоб_нумбер: Шаље СИГТЕРМ, сигнал 15, процесу да га прекине.
килл 9 %јоб_нумбер: Шаље СИГКИЛЛ, сигнал 9, процесу и нагло га прекида.