Envia un procés a Background Linux

Send Process Background Linux



Quan treballem amb entorns d'escriptori gràfics, poques vegades ens preocupem pels processos en segon pla. Si tenim un procés en execució en primer pla, podem generar ràpidament una altra finestra de terminal i continuar amb el nostre treball.

Tanmateix, si esteu en un intèrpret d'ordres de terminal en brut, com ara SSH, sovint us sentireu preocupats pels processos que ocupen i bloquegen l'intèrpret d'ordres fins que es completen, especialment en treballs de llarga durada. Aquí és on entra en joc el concepte de processos de fons i de primer pla.







En aquest tutorial es parlarà de quins són els processos de fons i de primer pla, inclosa la creació i gestió dels mateixos a Linux.



Què és un procés?

Permeteu-me començar al nivell bàsic: què és un procés?



A Linux, un procés és una instància d’un programa. Normalment, això significa que qualsevol ordre o executable en un intèrpret d'ordres és un procés.





Hi ha principalment dos tipus de processos:

  • Processos en primer pla
  • Processos de fons

Els processos de primer pla són principalment aplicacions típiques que llancem i interactuem amb ells. Un exemple seria el gestor de fitxers nautilus a Gnome. En la majoria dels casos, podem iniciar processos en primer pla des de l’intèrpret d’ordres o de l’escriptori.



D’altra banda, els processos en segon pla s’executen en segon pla i no requereixen cap entrada ni interacció per part de l’usuari. Un exemple seria qualsevol dimoni Linux típic.

Com executar un procés en segon pla

Suposem que tenim un procés que, mentre s'executa, ocupa la sessió de l'intèrpret d'ordres i ens impedeix executar ordres fins que surt.

Per exemple, si executem el navegador Firefox a l'intèrpret d'ordres, ocuparà la sessió fins que finalitzi el procés.

$firefox


Com podeu veure, mentre el Firefox s’executa, l’indicador d’intèrpret d’ordres no està disponible i no podem executar cap altra ordre.

Per solucionar-ho, podem fer-ho de dues maneres:

1: Utilitzar una marca Ampersand (&)

El primer mètode és utilitzar el signe i & amp; Això indica a l'intèrpret d'ordres que executi qualsevol ordre que precedeixi el signe ampersand en segon pla.

Un exemple:

firefox&

En aquest escenari, el procés s’executa en segon pla i apareix com un nou intèrpret d’ordres que ens permet continuar executant ordres.

També proporciona dos identificadors numèrics. El primer entre claudàtors és l’identificador de treball, mentre que el següent és l’identificador de procés.

2: mitjançant CTRL + Z, ordre bg.

El següent mètode que podeu utilitzar per posar un procés en segon pla és fer servir la drecera CTRL + Z. Això impedeix que el procés bloquegi el shell. A continuació, podeu utilitzar l'ordre bg per passar al fons.

Per exemple, comenceu per iniciar Firefox com:

$Firefox

Mentre s’executa el procés, premeu CTRL + Z. Això retorna el vostre intèrpret d’ordres. Finalment, introduïu l'ordre bg per empènyer el procés en segon pla.

Com es mostren els processos de fons

Per veure i gestionar processos en segon pla, utilitzeu l'ordre de treballs a l'intèrpret d'ordres. Això mostrarà els treballs en segon pla a la sessió del terminal actual.

Per exemple:

$feines

Un exemple de sortida de treballs en segon pla:

Per portar un procés que s’executa en segon pla al primer pla, utilitzeu l’ordre fg seguida de l’identificador del treball.

Per exemple, per posar el treball de firefox en primer pla, fem servir l'ordre:

$F g %1

Per tornar-lo a posar en segon pla, premeu CTRL + Z seguit de l'ordre bg.

Com fer que un procés sigui persistent després de morir Shell

Quan s'executen processos en segon pla i la sessió de l'intèrpret d'ordres mor, acaben tots els processos associats, cosa que pot ser problemàtica, especialment si es tracta d'una sessió SSH.

Tot i això, no és un problema massa gran si utilitzeu un multiplexor de terminal com tmux o screen perquè, en aquest cas, podeu simplement tornar a connectar la sessió.

Tanmateix, si executeu una sessió d'intèrpret d'ordres sense multiplexor, podeu utilitzar l'ordre nohup.

L'ordre nohup és immune a les penjades i pot ignorar el senyal SIGHUP enviat a un procés.

Per tant, si executeu una ordre amb nohup, continuarà executant-se fins i tot si la sessió de l'intèrpret d'ordres mor accidentalment.

Per exemple, per executar Firefox amb nohup, utilitzeu l'ordre:

nohupFirefox&

Això executarà el procés en segon pla mentre es mantingui un final de l'intèrpret d'ordres.

Podeu executar una nova sessió de terminal i veure els treballs en segon pla. Veureu que el procés encara s’executa en segon pla.

Conclusió

En aquest tutorial, hem discutit diverses maneres d'executar i enviar processos a un segon pla a Linux. També vam tractar com fer que un procés en segon pla es mantingui en segon pla i persistir en penjar una vegada finalitzada la shell.