Procesos

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
 
(No se muestran 21 ediciones intermedias realizadas por 4 usuarios)
Línea 1: Línea 1:
:El hecho de que el sistema operativo sea multitarea implica que podemos lanzar más de un programa a la vez. Un proceso no es más que un programa o aplicación que se encuentra cargado en la memoria y en proceso de ejecución.  
+
Los '''procesos''' que se encuentren en ejecución en un determinado momento serán, en general, de diferente naturaleza. Podemos encontrar:
:Aunque nuestro ordenador sólo disponga de una CPU, el sistema operativo se encarga de repartir el tiempo de procesamiento de la misma para que varios procesos puedan ir realizando sus operaciones, dando la sensación de que se es  tán ejecutando todos a la vez.                                                     
+
* Procesos de sistema, o bien procesos asociados al funcionamiento local de la máquina y del [[kernel]], o bien procesos (denominados [[daemon|daemons]]) asociados al control de diferentes servicios, ya sean locales, o de red, porque estamos ofreciendo el servicio (actuamos de [[servidores|servidor]]) o estamos recibiendo el servicio (actuamos de clientes). La mayoría de estos procesos aparecerán asociados al usuario root, aunque no estemos presentes en ese momento como usuarios. Puede haber algunos servicios asociados a otros usuarios de sistema (lp, bin, www, mail, etc.), estos son usuarios “virtuales” que utiliza el sistema para ejecutar ciertos procesos.
:Para identificar de forma inequívoca cada proceso, el núcleo del sistema les asigna un número llamado PID (Process IDentification)
+
* Procesos del usuario administrador: en caso de actuar como root, nuestros procesos interactivos o aplicaciones lanzadas también aparecerán como procesos asociados al usuario root.
:Aunque podríamos pensar que con solo el nombre ya los podríamos referenciar, es imprescindible disponer de este número porque podemos ejecutar un mismo programa tantas veces como queramos, al mismo tiempo que se ejecutan diferentes instancias del mismo.     
+
* Procesos de usuarios del sistema: asociados a la ejecución de sus aplicaciones, ya sea tareas interactivas en modo texto o en modo gráfico.
:Para saber qué procesos se están ejecutando, podemos utilizar el comando '''ps'''. Para explorar un poco más todo este mecanismo de procesos, explicaremos con más detalle algunos de los parámetros que le podemos pasar a este comando:
+
:* “T”: esta opción viene por defecto y nos indica que sólo se mostrarán los procesos que se están ejecutando en el terminal dónde nos encontramos o que se hayan lanzando a partir de él.
+
:* “-a”: nos muestra los procesos de todos los terminales del sistema
+
:* “-A”: nos muestra todos los procesos del sistema. Si ejecutamos el comando, veremos que, aparte de los programas que los usuarios ejecutan, hay otros. Muchos de ellos ejecutan las funciones necesarias para que el operativo funcione correctamente, otros son los servidores de aplicaciones configurados, etc.
+
:* “-l”: enseña información extendida para cada proceso, como el  tiempo de CPU que ha utilizado, el terminal donde se ejecuta, etc.En la segunda columna también podemos ver el estado del proceso. Aunque el sistema tenga muchos procesos ejecutándose en un mismo instante de tiempo, ello no implica que todos necesiten tiempo de CPU constantemente. Por ejemplo, cuando un servidor de páginas web no tiene ninguna petición, no es necesario que haga absolutamente ninguna operación. Aunque esté en memoria preparado para ejecutarse al recibir una petición, es mejor que no pase en ningún momento por la CPU, ya que ésta puede utilizarse para otros procesos que sí que la necesitan. Internamente, el sistema operativo tiene implementados una serie de meca nismos muy eficaces para gestionar toda esta clase de operaciones. De este modo, un proceso puede estar en los siguientes estados (mostrados con el carácter correspondiente):
+
::* “D”: proceso ininterrumpible. Este tipo de proceso generalmente suele pertenecer a la entrada/salida de algún dispositivo que se dañaría si dejara de ser atendido.
+
::* “R”: proceso que en el momento de ejecutar el comando también se está ejecutando, o sea, todos aquellos que están en cola de ejecución. La cola de ejecución de procesos es donde se ponen todos aquellos que se van repartiendo el tiempo de la CPU.
+
::* “S”: proceso dormido o esperando que ocurra algún tipo de evento para que el sistema lo despierte y lo ponga en la cola de ejecución.
+
::* “T”: proceso que ha sido detenido por el usuario o el sistema.
+
::* “Z”: proceso zombie. Este estado indica que el proceso ha tenido algún fallo y no funciona correctamente. Generalmente es mejor eliminar este tipo de procesos.
+
:Otro comando muy útil es el '''top''', o mejor aún, '''htop''', que nos informa de forma interactiva de los procesos del sistema, del estado de utilización de la CPU, la memoria utilizada y libre, la RAM que utiliza cada proceso, etc.Este programa es muy indicado cuando el sistema no responde adecuadamente o notamos alguna disfunción extraña, ya que nos permite localizar rápidamente qué proceso está afectando negativamente al rendimiento del sistema.
+
:Como vemos, el sistema nos informa sobre todos los aspectos posibles de los procesos del sistema. Además de esto, podemos enviar ciertas señales a los procesos para informarles de algún evento, podemos sacarlos de la cola de ejecución, eliminarlos, darles más prioridad, etc. Saber manipular también es muy importante, ya que nos permitirá utilizar nuestro ordenador de forma más eficiente. Por ejemplo, si somos administradores de un centro de cálculo donde la mayoría de aplicaciones que se ejecutan necesitan mucho tiempo de CPU, podríamos configurar      el sistema para hacer que los más urgentes se ejecuten con más prioridad que otros y acaben primero. El comando kill nos permite  enviar señales a los procesos que nos interese. En general, todos los programas se diseñan para que puedan recibir este tipo de señales. De este modo, según el tipo de señal recibido saben que deben realizar unas operaciones u otras. Hay muchos tipos diferentes de señales, que podemos ver en el manual de kill, aunque las más utilizadas son las que nos sirven para obligar a un proceso a que termine o pause su ejecución. Con la señal TERM (“kill -15 PID”),  le indicamos al proceso que queremos que termine, de modo que al recibir la señal deberá guardar todo lo necesario y acabar su ejecución. Si hay algún tipo de problema o el programa no está preparado para recibir este tipo de señal, podemos utilizar KILL (“kill -
+
                                                               
+
  
                                                                     
+
Como comandos rápidos y más útiles podemos utilizar:
 +
* '''ps''': el comando estándar, lista los procesos con sus datos de usuario, tiempo, identificador de proceso y línea de comandos usada. Una de las opciones utilizada es ps ef, pero hay muchas opciones disponibles (ver man).
 +
* '''top''', '''htop''': una versión que nos da una lista actualizada a intervalos.
 +
* '''kill''': permite enviar señales a procesos como, por ejemplo, la de terminación kill -9 PID,donde indicamos el identificador del proceso. Útil para procesos con comportamiento inestable o programas interactivos que han dejado de responder.
  
   
+
== Redireccionamientos ==
  
 +
Cualquier proceso tiene una entrada estándar (stdin) y una salida hacia dos archivos conocidos como stdout y stderr.
 +
Veamos un ejemplo:
 +
* Ejecutamos un comando por medio del teclado. En este caso la entrada estándar es el teclado.
 +
* Una vez que el proceso comienza tendremos una salida con dos archivos, stdout y stderr, aunque uno de los dos estará vacío y por lo tanto solo veremos el otro.
 +
Normalmente la salida stdout es la pantalla, pero si hubo un error en la ejecución del proceso la salida por pantalla corresponderá a stderror con un mensaje de error. Normalmente ambas salidas están unificadas hacia la pantalla.
 +
Para comprender mejor qué es lo que sucede vamos a redireccionar la salida a otro archivo. Para esto utilizamos como redireccionador el símbolo `>`. Con esto conseguimos redireccionar a otro archivo el contenido de la salida. Este tipo de redireccionamiento borra lo que hubiese anteriormente en el archivo. Si queremos copiar el nuevo contenido debajo de la información ya existente sin borrar nada, podemos usar `>>` en lugar de `>`
  
 +
=== Redireccionando un proceso a un archivo ===
  
 +
Vamos a listar todo lo que haya en directorio raíz de la siguiente manera:
  
 +
ls /
  
 +
En este caso la salida nos mostrará algo así como:
  
 +
bin dev initrd lib mnt root sys var
 +
boot etc initrd.img lost+found opt sbin tmp vmlinuz
 +
cdrom home initrd.img.old media proc srv usr vmlinuz.old
  
 +
Para redireccionar esta salida (o sea que en lugar de salir por pantalla lo haremos hacia un archivo) debemos ejecutar el siguiente comando:
 +
ls / > listar.txt
  
 +
Si ahora quisiéramos ver el resultado por pantalla no veríamos nada ya que fue redireccionado al archivo `listar.txt`
 +
Para ver el contenido de este archivo podemos hacer lo siguiente:
 +
cat listar.txt
  
 +
Y veremos lo siguiente
 +
  boot cdrom dev etc home initrd initrd.img initrd.img.old lib lost+found
 +
  media mnt opt proc root sbin srv sys tmp usr var vmlinuz vmlinuz.old
  
 +
Si comparamos el resultado veremos que es el mismo que obtuvimos cuando hicimos `ls`antes de redireccionar.
  
 +
=== Error de proceso ===
  
 +
¿Qué pasaría si pedimos al sistema que nos muestre un proceso que tiene un error? Hagamos una prueba
  
   
+
  ls /xxx
  
 +
Como el directorio/archivo xxx no existe, se va a generar un error.
  
 +
ls: xxx: No existe el fichero o directorio
  
 +
Podemos hacer lo siguiente:
 +
ls /xxx >pepe.txt 2>>xerror.log
 +
root@losindios:~# cat xerror.log
 +
ls: /xxx: No existe el fichero o directorio
  
                                                                     
+
Esto significa que hemos redireccionado la salida del error de 'ls / xxx' a un archivo llamado pepe.txt y mediante el número 2 estamos redirigiendo a un archivo xerror.log la salida de error estándar.
 +
Mientras que el número 0 indica entrada estándar, el número 1 indica salida estándar y el número 3 indica error estándar
  
                                                                     
+
=== Procesos en primer y segundo plano ===
dores de un centro de cálculo donde la mayoría de aplicaciones que    
+
 
se ejecutan necesitan mucho tiempo de CPU, podríamos configurar        do trap.
+
Un proceso que corre en primer plano (`fg` de foreground) normalmente es aquél que ingresamos por teclado y podemos ver por pantalla. Los procesos tipo demonio no corren en primer plano, sino en segundo, no son llamados desde una terminal (tty) sino desde un puerto, y no aparecen en pantalla. Si queremos pasar un proceso que está corriendo en primer plano a segundo plano, podemos utilizar el símbolo `&`Veamos un ejemplo:
el sistema para hacer que los más urgentes se ejecuten con más prio-
+
top&
ridad que otros y acaben primero.
+
 
 +
Y el sistema nos devuelve algo como
 +
[1] 11068
 +
 
 +
Vemos que no apareció por pantalla el resultado de `top`con los procesos que hay corriendo en el sistema sino un número de trabajo asignado y el PID (Process ID) correspondiente. No es que `top` no esté corriendo sino que lo está haciendo en background.
 +
 
 +
=== Usando jobs ===
 +
 
 +
Si utilizamos `jobs`podremos ver los procesos que están corriendo en 2do.plano. Veamos cómo:
 +
jobs
 +
 
 +
Y el sistema nos devolverá
 +
jobs
 +
[1]+ Stopped top
 +
 
 +
=== Capturando ambas salidas en un solo archivo ===
 +
 
 +
Podemos capturar stdout y stderr en un solo archivo mediante el siguiente comando:
 +
ls /xxx > listar.txt 2>&1
 +
root@losindios:~# cat listar.txt
 +
 
 +
Y el 'cat' nos devuelve:
 +
 
 +
ls: /xxx: No existe el fichero o directorio
 +
 
 +
De esta manera podremos ver ambas salidas pero solo de la última vez que ejecutamos este comando. Si quisiéramos contar con un log completo de procesos podríamos utilizar un comando llamado `cron` para automatizar el comando anterior y que se repita cada cierta cantidad de veces en distintos horarios. Para que la captura no borre los resultados anteriores debemos escribir el comando en la siguiente forma
 +
ls /xxx >> listar.txt 2>&1
 +
 
 +
De esta forma el archivo conservará las entradas anteriores sin borrar nada.
 +
 
 +
=== Redirecciones, usando pipes (tuberías, fontanerías) ===
 +
 
 +
Lo que hace 'pipes' es tomar una salida de un proceso y convertirla en la entrada estándar de otro proceso. El símbolo para hacerlo es '|' que normalmente se obtiene mediante la combinación de teclas AltGr + 1 (puede ser diferente en otros teclados.)
 +
A veces cuando queremos ver un archivo demasiado grande por pantalla, estamos frente a un problema. Si el archivo tiene más contenido que lo visible en la pantalla, éste pasará muy rápido y solo veremos la parte final. Veamos un ejemplo:
 +
 
 +
ls -R /
 +
 
 +
La 'R' significa recursividad, es decir que nos va a mostrar todos los directorios/subdirectorios y archivos que se encuentren dentro de '/' Veremos algo que corre por la pantalla a gran velocidad y solo será visible al última parte del proceso 'ls' por tratarse de demasiado contenido para una sola pantalla.
 +
Tal cual vimos en su momento, el comando 'less' imprime en pantalla solo una parte del contenido total, equivalente a lo que puede verse en una pantalla completa y no más. Mediante las teclas de dirección 'arriba' y 'abajo' es posible desplazarse por la pantalla para ver todo el contenido de un archivo.
 +
 
 +
Entonces podemos escribir lo siguiente:
 +
ls -R / | less
 +
 
 +
De esta forma redireccionamos la salida del proceso 'ls' a la entrada de otro proceso llamado 'less' lo que nos permitirá ver el archivo estándar de salida 'ls' por partes.
 +
Veamos otro ejemplo donde podemos utilizar 'pipes'
 +
 
 +
==== Pipes con el comando grep ====
 +
 
 +
Como recordamos 'grep' nos permite filtrar un archivo, su contenido, un grupo de archivos, etc que tengan coincidencia con una cadena de caracteres. Por ejemplo vamos a buscar los archivos que tengan extensión 'txt' y que se encuentren dentro del directorio 'home'
 +
 
 +
ls -R /home | grep .txt
 +
 
 +
Y el sistema nos devuelve:
 +
listar.txt
 +
ls.txt
 +
 
 +
Lo que hemos hecho es buscar mediante ls -R /home en forma recursiva todos los directorios, subdirectorios y archivos dentro de /home, luego enviamos la salida de este proceso a la entrada de uno nuevo llamado 'grep'. Este último actuará como filtro utilizando la cadena de caracteres '.txt'
 +
 
 +
=== Utilizando bg ===
 +
 
 +
Mientras que '&' lleva a segundo plano un proceso existente en primer plano, 'bg' lo reinicia en segundo plano. 'bg' no utiliza el nombre del proceso ni el PID sino el número de trabajo.
 +
bg %1
 +
 
 +
=== Utilizando fg ===
 +
 
 +
Mientras que 'bg' es background o segundo plano, 'fg' es foreground o primer plano. Lo que hace este comando es traer a primer plano un proceso que normalmente corre en segundo plano, utilizando también el número de trabajo.
 +
Ejemplo:
 +
fg %1
 +
 
 +
=== Ctrl+Z ===
 +
 
 +
Para pasar a segundo plano un proceso que corre en primer plano, podemos también utilizar Ctrl + Z
 +
 
 +
== Fuentes ==
 +
 
 +
*© Fundació per a la Universitat Oberta de Catalunya
 +
: Av. Tibidabo, 39-43, 08035 Barcelona
 +
: Material realizado por Eureca Media, SL
 +
: © Autores: Josep Jorba Esteve y Remo Suppi Boldrito
 +
: Depósito legal: B-7.597-2004
 +
: ISBN: 84-9788-116-8
 +
: Se garantiza permiso para copiar, distribuir y modificar este documento según los términos de la GNU Free Documentation License,
 +
: Version 1.2 o cualquiera posterior publicada por la Free Software Foundation , sin secciones invariantes ni textos de cubierta
 +
: delantera o trasera. Se dispone de una copia de la licencia en el apartado “GNU Free Documentation License” de este curso. Puede
 +
: encontrarse una versión de la última versión de este documento en http://curso-sobre.berlios.de/introsobre.
 +
 
 +
* http://superalumnos.net/curso-gratuito-gnu-linux-intermedio
 +
 +
<!-- Categorías -->
 +
[[Categoría:Sistema Linux]]

Última revisión de 18:36 18 jun 2012

Los procesos que se encuentren en ejecución en un determinado momento serán, en general, de diferente naturaleza. Podemos encontrar:

  • Procesos de sistema, o bien procesos asociados al funcionamiento local de la máquina y del kernel, o bien procesos (denominados daemons) asociados al control de diferentes servicios, ya sean locales, o de red, porque estamos ofreciendo el servicio (actuamos de servidor) o estamos recibiendo el servicio (actuamos de clientes). La mayoría de estos procesos aparecerán asociados al usuario root, aunque no estemos presentes en ese momento como usuarios. Puede haber algunos servicios asociados a otros usuarios de sistema (lp, bin, www, mail, etc.), estos son usuarios “virtuales” que utiliza el sistema para ejecutar ciertos procesos.
  • Procesos del usuario administrador: en caso de actuar como root, nuestros procesos interactivos o aplicaciones lanzadas también aparecerán como procesos asociados al usuario root.
  • Procesos de usuarios del sistema: asociados a la ejecución de sus aplicaciones, ya sea tareas interactivas en modo texto o en modo gráfico.

Como comandos rápidos y más útiles podemos utilizar:

  • ps: el comando estándar, lista los procesos con sus datos de usuario, tiempo, identificador de proceso y línea de comandos usada. Una de las opciones utilizada es ps ef, pero hay muchas opciones disponibles (ver man).
  • top, htop: una versión que nos da una lista actualizada a intervalos.
  • kill: permite enviar señales a procesos como, por ejemplo, la de terminación kill -9 PID,donde indicamos el identificador del proceso. Útil para procesos con comportamiento inestable o programas interactivos que han dejado de responder.

Contenido

[editar] Redireccionamientos

Cualquier proceso tiene una entrada estándar (stdin) y una salida hacia dos archivos conocidos como stdout y stderr. Veamos un ejemplo:

  • Ejecutamos un comando por medio del teclado. En este caso la entrada estándar es el teclado.
  • Una vez que el proceso comienza tendremos una salida con dos archivos, stdout y stderr, aunque uno de los dos estará vacío y por lo tanto solo veremos el otro.

Normalmente la salida stdout es la pantalla, pero si hubo un error en la ejecución del proceso la salida por pantalla corresponderá a stderror con un mensaje de error. Normalmente ambas salidas están unificadas hacia la pantalla. Para comprender mejor qué es lo que sucede vamos a redireccionar la salida a otro archivo. Para esto utilizamos como redireccionador el símbolo `>`. Con esto conseguimos redireccionar a otro archivo el contenido de la salida. Este tipo de redireccionamiento borra lo que hubiese anteriormente en el archivo. Si queremos copiar el nuevo contenido debajo de la información ya existente sin borrar nada, podemos usar `>>` en lugar de `>`

[editar] Redireccionando un proceso a un archivo

Vamos a listar todo lo que haya en directorio raíz de la siguiente manera:

ls /

En este caso la salida nos mostrará algo así como:

bin dev initrd lib mnt root sys var
boot etc initrd.img lost+found opt sbin tmp vmlinuz
cdrom home initrd.img.old media proc srv usr vmlinuz.old

Para redireccionar esta salida (o sea que en lugar de salir por pantalla lo haremos hacia un archivo) debemos ejecutar el siguiente comando:

ls / > listar.txt

Si ahora quisiéramos ver el resultado por pantalla no veríamos nada ya que fue redireccionado al archivo `listar.txt` Para ver el contenido de este archivo podemos hacer lo siguiente:

cat listar.txt

Y veremos lo siguiente

 boot cdrom dev etc home initrd initrd.img initrd.img.old lib lost+found
 media mnt opt proc root sbin srv sys tmp usr var vmlinuz vmlinuz.old

Si comparamos el resultado veremos que es el mismo que obtuvimos cuando hicimos `ls`antes de redireccionar.

[editar] Error de proceso

¿Qué pasaría si pedimos al sistema que nos muestre un proceso que tiene un error? Hagamos una prueba

ls /xxx

Como el directorio/archivo xxx no existe, se va a generar un error.

ls: xxx: No existe el fichero o directorio

Podemos hacer lo siguiente:

ls /xxx >pepe.txt 2>>xerror.log
root@losindios:~# cat xerror.log
ls: /xxx: No existe el fichero o directorio

Esto significa que hemos redireccionado la salida del error de 'ls / xxx' a un archivo llamado pepe.txt y mediante el número 2 estamos redirigiendo a un archivo xerror.log la salida de error estándar. Mientras que el número 0 indica entrada estándar, el número 1 indica salida estándar y el número 3 indica error estándar

[editar] Procesos en primer y segundo plano

Un proceso que corre en primer plano (`fg` de foreground) normalmente es aquél que ingresamos por teclado y podemos ver por pantalla. Los procesos tipo demonio no corren en primer plano, sino en segundo, no son llamados desde una terminal (tty) sino desde un puerto, y no aparecen en pantalla. Si queremos pasar un proceso que está corriendo en primer plano a segundo plano, podemos utilizar el símbolo `&`Veamos un ejemplo:

top&

Y el sistema nos devuelve algo como

[1] 11068

Vemos que no apareció por pantalla el resultado de `top`con los procesos que hay corriendo en el sistema sino un número de trabajo asignado y el PID (Process ID) correspondiente. No es que `top` no esté corriendo sino que lo está haciendo en background.

[editar] Usando jobs

Si utilizamos `jobs`podremos ver los procesos que están corriendo en 2do.plano. Veamos cómo:

jobs

Y el sistema nos devolverá

jobs
[1]+ Stopped top

[editar] Capturando ambas salidas en un solo archivo

Podemos capturar stdout y stderr en un solo archivo mediante el siguiente comando:

ls /xxx > listar.txt 2>&1
root@losindios:~# cat listar.txt

Y el 'cat' nos devuelve:

ls: /xxx: No existe el fichero o directorio

De esta manera podremos ver ambas salidas pero solo de la última vez que ejecutamos este comando. Si quisiéramos contar con un log completo de procesos podríamos utilizar un comando llamado `cron` para automatizar el comando anterior y que se repita cada cierta cantidad de veces en distintos horarios. Para que la captura no borre los resultados anteriores debemos escribir el comando en la siguiente forma

ls /xxx >> listar.txt 2>&1

De esta forma el archivo conservará las entradas anteriores sin borrar nada.

[editar] Redirecciones, usando pipes (tuberías, fontanerías)

Lo que hace 'pipes' es tomar una salida de un proceso y convertirla en la entrada estándar de otro proceso. El símbolo para hacerlo es '|' que normalmente se obtiene mediante la combinación de teclas AltGr + 1 (puede ser diferente en otros teclados.) A veces cuando queremos ver un archivo demasiado grande por pantalla, estamos frente a un problema. Si el archivo tiene más contenido que lo visible en la pantalla, éste pasará muy rápido y solo veremos la parte final. Veamos un ejemplo:

ls -R /

La 'R' significa recursividad, es decir que nos va a mostrar todos los directorios/subdirectorios y archivos que se encuentren dentro de '/' Veremos algo que corre por la pantalla a gran velocidad y solo será visible al última parte del proceso 'ls' por tratarse de demasiado contenido para una sola pantalla. Tal cual vimos en su momento, el comando 'less' imprime en pantalla solo una parte del contenido total, equivalente a lo que puede verse en una pantalla completa y no más. Mediante las teclas de dirección 'arriba' y 'abajo' es posible desplazarse por la pantalla para ver todo el contenido de un archivo.

Entonces podemos escribir lo siguiente:

ls -R / | less

De esta forma redireccionamos la salida del proceso 'ls' a la entrada de otro proceso llamado 'less' lo que nos permitirá ver el archivo estándar de salida 'ls' por partes. Veamos otro ejemplo donde podemos utilizar 'pipes'

[editar] Pipes con el comando grep

Como recordamos 'grep' nos permite filtrar un archivo, su contenido, un grupo de archivos, etc que tengan coincidencia con una cadena de caracteres. Por ejemplo vamos a buscar los archivos que tengan extensión 'txt' y que se encuentren dentro del directorio 'home'

ls -R /home | grep .txt

Y el sistema nos devuelve:

listar.txt
ls.txt

Lo que hemos hecho es buscar mediante ls -R /home en forma recursiva todos los directorios, subdirectorios y archivos dentro de /home, luego enviamos la salida de este proceso a la entrada de uno nuevo llamado 'grep'. Este último actuará como filtro utilizando la cadena de caracteres '.txt'

[editar] Utilizando bg

Mientras que '&' lleva a segundo plano un proceso existente en primer plano, 'bg' lo reinicia en segundo plano. 'bg' no utiliza el nombre del proceso ni el PID sino el número de trabajo.

bg %1

[editar] Utilizando fg

Mientras que 'bg' es background o segundo plano, 'fg' es foreground o primer plano. Lo que hace este comando es traer a primer plano un proceso que normalmente corre en segundo plano, utilizando también el número de trabajo. Ejemplo:

fg %1

[editar] Ctrl+Z

Para pasar a segundo plano un proceso que corre en primer plano, podemos también utilizar Ctrl + Z

[editar] Fuentes

  • © Fundació per a la Universitat Oberta de Catalunya
Av. Tibidabo, 39-43, 08035 Barcelona
Material realizado por Eureca Media, SL
© Autores: Josep Jorba Esteve y Remo Suppi Boldrito
Depósito legal: B-7.597-2004
ISBN: 84-9788-116-8
Se garantiza permiso para copiar, distribuir y modificar este documento según los términos de la GNU Free Documentation License,
Version 1.2 o cualquiera posterior publicada por la Free Software Foundation , sin secciones invariantes ni textos de cubierta
delantera o trasera. Se dispone de una copia de la licencia en el apartado “GNU Free Documentation License” de este curso. Puede
encontrarse una versión de la última versión de este documento en http://curso-sobre.berlios.de/introsobre.
Herramientas personales