En Linux, un trabajo se refiere a un proceso iniciado y administrado por el shell. Ese puede ser un solo comando, un comando de shell largo y complejo que incluye tuberías y redirecciones, un ejecutable o un script. Cada trabajo en Linux se gestiona asignando un trabajo secuencial IP asociado con un proceso específico.
Un concepto clave para comprender sobre los trabajos de Linux son sus estados. Hay dos estados principales para los trabajos de Linux:
Trabajos en primer plano
Un trabajo de primer plano se refiere a un comando o un programa ejecutado en el shell y ocupa la sesión de la terminal hasta que se complete. Un ejemplo sería iniciar un administrador de archivos o un navegador en el terminal
Por ejemplo, la siguiente captura de pantalla muestra una ventana de terminal con un trabajo de primer plano.
En la imagen de arriba, el indicador no está disponible hasta que se cierra la ventana Firefox.
Trabajos de fondo
Lo opuesto al primer plano es trabajos de fondo. Para iniciar un trabajo en el shell como un trabajo de fondo, usamos el símbolo Ampersand (&). Usar esto le dice al shell que ponga los comandos que vengan antes que los ampers y en el fondo e inmediatamente muestren la solicitud de shell.
El siguiente ejemplo muestra cómo poner el trabajo de Firefox (en el ejemplo anterior) en segundo plano.
Como puede ver, el mensaje de shell ahora está disponible a pesar de que Firefox sigue funcionando.
Notará valores numéricos que se muestran para trabajos de fondo. El primero, indicado por los soportes cuadrados ([]), muestra la identificación del trabajo, mientras que el otro valor indica el PID del proceso asociado con el trabajo.
Cómo administrar trabajos de fondo
El comando de trabajos maneja el control de trabajo. Esto le permite ver los trabajos en segundo plano.
trabajos de sudo
Ejecución del comando anterior muestra trabajos de fondo como se muestra a continuación:
Comenzando en el lado izquierdo, tenemos la identificación de trabajo.
Seguir inmediatamente después de los soportes es el signo más (+) o menos (-). El signo más indica que este es el trabajo actual, mientras que el número menos muestra el siguiente trabajo.
El siguiente grupo muestra el estado del trabajo. Que se puede ejecutar, detener, terminar, hacer o salir con un código de estado.
Finalmente, la última parte muestra el nombre real del trabajo.
Mostrar trabajos con PID
Para mostrar trabajos de fondo con sus valores PID correspondientes, usamos el indicador -l como:
Jobs -l
Que mostrarán los trabajos de fondo con sus valores PID, como se muestra en la imagen a continuación.
Trabajos de fondo con salida
Supongamos que tenemos un trabajo que queremos ejecutar en segundo plano que arroje una salida en la pantalla. Por ejemplo, en el ejemplo anterior, pongo el comando APT, que tiene mucha salida en segundo plano, sin estropear mi terminal.
Para hacer esto, puede redirigir la salida en /dev /null como:
SUDO apt-get actualización> /dev /null &
Cómo llevar el trabajo de fondo al primer plano
Podemos llevar trabajos de fondo en primer plano utilizando el comando FG. Por ejemplo, para llevar el trabajo de Firefox con ID de trabajo de 1 al fondo, podemos hacer:
FG %1
Eso traerá el trabajo en primer plano como:
ubuntu@ubuntu20: ~ $ fg %1
Firefox
Opciones de comando de trabajos
El comando de trabajos no tiene muchas opciones.
Ya hemos discutido el -l para mostrar los trabajos con sus identificaciones de proceso.
Otras opciones que puede pasar al comando de trabajo incluyen:
Cómo terminar o matar trabajos
Podemos finalizar trabajos usando el comando Kill seguido de la identificación de trabajo, una subcadena o la ID del proceso.
Mata usando ID de trabajo
Para matar un trabajo con la identificación de trabajo, usamos el % seguido del valor de identificación como:
matar %%
Esto matará el trabajo actual; Esto es similar al %+.
Mata un trabajo con una subcadena
Matar un trabajo con una subcadena, prefije la subcadena con %? seguido del valor de la subcadena como:
matar %?calculadora gnomo
NOTA: Linux ejecuta trabajos simultáneamente. Eso significa que salta de un lado a otro entre los trabajos disponibles hasta que completen. Por lo tanto, terminar una sesión de terminal con trabajos en ejecución finalizará todos sus trabajos.
No tiene que preocuparse por esto si usa un multiplexor terminal como Tmux o pantalla, ya que puede volver a colocarlos.
Cómo matar los trabajos detenidos
Para que matemos todos los trabajos detenidos, necesitamos unir dos comandos. El primero obtendrá los PID de todos los trabajos detenidos, y el siguiente matará todos los trabajos proporcionados.
Para ver los trabajos detenidos, usamos el comando
Jobs -S
Este comando muestra todos los trabajos detenidos.
Al tener esto, podemos obtener los PID de los trabajos detenidos y completarlos para que maten el comando como:
sudo Kill -9 'Jobs -p -s'
Esto matará todos los trabajos detenidos.
Conclusión
Este tutorial revisó los conceptos de control de trabajo en Linux y cómo obtener información sobre los trabajos. Es bueno tener en cuenta que el control de trabajo puede no estar disponible dependiendo de su caparazón de elección.
Gracias por leer y felices conchas.