Пошаљите процес позадинском Линук -у

Send Process Background Linux



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

Међутим, ако се налазите у сировој терминалној љусци, као што је ССХ, често ћете бити забринути због процеса који заузимају и блокирају љуску док се не заврше, посебно на дуготрајним пословима. Ту долази до изражаја концепт процеса позадине и предњег плана.





Овај водич ће расправљати о процесима у позадини и предњем плану, укључујући њихово креирање и управљање у Линуку.



Шта је процес?

Дозволите ми да почнем на основном нивоу: шта је процес?



У Линуксу процес је инстанца програма. Обично то значи да је било која команда или извршна датотека у љусци процес.





Постоје углавном две врсте процеса:

  • Процеси у првом плану
  • Позадински процеси

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



С друге стране, позадински процеси раде у позадини и не захтевају унос или интеракцију од корисника. Пример би био било који типични Линук демон.

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

Претпоставимо да имамо процес који, док је покренут, заузима сесију љуске и омета нас у извршавању наредби док не изађе.

На пример, ако покренемо Фирефок претраживач у љусци, он ће заузети сесију до завршетка процеса.

$фирефок


Као што видите, све док је Фирефок покренут, одзивник љуске је недоступан и не можемо више да извршавамо команде.

Да бисмо то решили, можемо то учинити на два начина:

1: Коришћење амперсанда (&)

Први метод је коришћење знака & знака. Ово говори љусци да покрене било коју наредбу која претходи амперсанду у позадини.

Пример:

фирефок&

У таквом сценарију, процес се извршава у позадини и покреће се као нова љуска која нам омогућава да наставимо са извршавањем наредби.

Такође даје два нумеричка идентификатора. Први у угластим заградама је Јоб ИД, док је следећи ИД процеса.

2: Помоћу ЦТРЛ + З, бг команда.

Следећи метод који можете користити за стављање процеса у позадину је коришћење пречице ЦТРЛ + З. Ово спречава процес да блокира љуску. Затим можете користити команду бг да бисте је гурнули у позадину.

На пример, почните тако што ћете покренути Фирефок као:

$Фирефок

Док је процес у току, притисните ЦТРЛ + З. Ово враћа ваш схелл схелл. На крају, унесите наредбу бг да бисте процес гурнули у позадину.

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

За преглед и управљање процесима у позадини, користите наредбу јобс у љусци. То ће приказати позадинске послове у тренутној терминалској сесији.

На пример:

$послови

Пример излаза позадинских послова:

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

На пример, да ставимо фирефок посао у први план, користимо команду:

$фг %1

Да бисте поново ставили у позадину, притисните ЦТРЛ + З, а затим наредбу бг.

Како учинити процес постојаним након што шкољка умре

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

Међутим, ово није превелики проблем ако користите терминални мултиплексер, попут тмука или екрана, јер у том случају једноставно можете поново спојити сесију.

Међутим, ако покренете љуску сесију без мултиплексера, можете користити наредбу нохуп.

Наредба нохуп је имуна на прекид везе и може занемарити сигнал СИГХУП послат процесу.

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

На пример, да бисте покренули Фирефок са нохупом, користите команду:

нохупФирефок&

Ово ће покренути процес у позадини док се љуска не прекида.

Можете покренути нову терминалску сесију и прегледати позадинске послове. Видећете да процес још увек ради у позадини.

Закључак

У овом водичу смо разговарали о различитим начинима покретања и слања процеса у позадину у Линуку. Такође смо обрадили како да позадински процес доведемо у позадину и наставимо са прекидом везе након завршетка љуске.