Bienvenido a Computer Facil

Ya somos 40483 miembros registrados, ¡ Únete tu también !
  Crea tu cuenta Computer Facil Inicio     Foros Foros     Descargas Descargas     VideoJuegos VideoJuegos     Tutoriales Tutoriales de Informática Traducción a Inglés    
    


  Personal
 Agregar a Favoritos
 Tu Página de Inicio
 Contacta al Webmaster
 

  Secciones

    Inicio
    Tu cuenta
    Envia hoy tu noticia
    Escríbenos
    Recomiendanos
    Firma hoy el Libro de Visitas!

    Artículos y Manuales
    Trucos Windows
    FAQ

    Foros de Informatica
    Foros de Ocio
    Chat

    Descargas

    Todo MSN


    Tiendas Online, Viajes

    AbandonWare
    Juegos Flash
    Trucos de Juegos
    Ajedrez

    Galería de Fotos
    Famosa del día
    Famoso del día

    Enlaces Web Clasificados
    Ranking de Webs
    Servicios Gratuitos
    Envía Tarjetas o Postales

    Elinks ed2k
    Manual de Emule
    Emule FAQ


    Amor y Amistad

    Todo Móvil
    Todo Móvil 2
    Juegos Móvil

    Humor

    Premios Web
    Enciclopedia Informática
    Temas
    Archivo de Noticias
    Encuestas
    Estadísticas
    Top 10
    Buscador Interno
    Webs Afiliadas

  Recomendados


  Famosa del dí­a
Fotos de Famosas

  Top Sonidos Móvil

  Juegos

  Prensa de Hoy

Selecciona el periódico:

  Radio Online
Selecciona una emisora de radio para escucharla en directo:

  Horóscopo
Selecciona tu signo del zodíaco para ver la predicción de hoy:

  Top Posteadores
      Forista del Mes:
gabyrossi


      dejavi 
    Mensajes: 
    3498 

      agm 
    Mensajes: 
    2552 

      gabyrossi 
    Mensajes: 
    1799 

      arag 
    Mensajes: 
    1790 

      TvK10 
    Mensajes: 
    1398 

Entrega 9. Continuamos con el control de tareas
CURSO DESDE 0 DE GNU/LINUX. Versión 2




Entrega 9. Continuamos con el control de tareas.


                        %touch me

			touch: cannot touch me: permission denied

Mata que te mata.

Después de la introducción en la anterior entrega vamos a ponernos manos a la obra. Para ello vamos a ver un comando que para mi es casi totalmente inútil pero que nos servirá muy bien para las explicaciones, es el comando:

yes [string]

Este comando simplemente va a repetir lo que le indiquemos en string indefinidamente y en su defecto nos dará una ristra de 'y' si no le indicamos nada. En los manuales de los que yo aprendí ponía que era utilísimo para no tener que estar diciendo siempre que si a un comando (recordar el uso de redirección y pipes), pero, ¿realmente alguien le ve la utilidad a decir todo que si sin leer antes?.

Paro probarlo tecleemos yes y haber que pasa:


[matados2k@fortaleza curso]$ yes

y

y

y

....

Ya aburridos de ver 'y' sin parar lo que vamos hacer el matarlo por cansino y aburrido ;) para ello pulsamos 'Ctrl + c' y se acabo.

Como al hacer la pruebas no nos interesa estar mirando un montón de 'y' lo que haremos es redirigir la salida del comando 'yes' hacia '/dev/null' que es algo así como un agujero negro, es decir todo lo que allí mandamos desaparece (mas de uno querría un '/dev/null' en la vida real).

Enviando al segundo plano.

Ahora lo que queremos hacer es arrancar el comando yes con la redirección a '/dev/null' y arrancarlo en segundo plano consiguiendo un bonito gasto de cpu :). Para ello debemos añadir el simbolo '&' al final de la línea, como vemos en el ejemplo.


[matados2k@fortaleza curso]$ yes > /dev/null &

[1] 5064

[matados2k@fortaleza curso]$

Este es el resultado, volvemos a tener el prompt para nosotros y dos curiosos números. Esos dos números son las referencias a la tarea, el '[1]' representa el número de tarea y el 5064 es el identificador de proceso o PID que es ni mas ni menos el número que le asigna el sistema al proceso.

Pero ¿donde se ha metido? .

¿Y ahora que hacemos para ver que a pasado con nuestro querido comando? Pues simple, usamos unos de los comandos internos del interprete de comando, este es 'jobs' que da un listado de las tareas que tenemos en ejecución y su estado:


[matados2k@fortaleza curso]$ jobs

[1]+ Running yes >/dev/null &

[matados2k@fortaleza curso]$

Como veis nos indica el número de tarea, el estado (en esta caso corriendo o mejor dicho ejecutándose) y la forma en que lo llamamos.

Mas formas de matar.

Siguiendo con nuestras ganas de eliminar a 'yes' de nuestro sistema (ahora no nos vale 'Ctrl + c' ) tenemos 2 formas de hacerlo con un mismo comando, este es 'kill' que así sin mas envía una señal de fin de proceso al proceso que le indiquemos.

Para hacerlo tenemos dos formas de referenciarlo, la mas cómoda sería con el número de tarea y para ello usamos el símbolo '%' de la siguiente manera:


[matados2k@fortaleza curso]$ kill %1

[matados2k@fortaleza curso]$

Así que recordad para usar el número de tarea hay que usar un '%' delante y para usar el PID simplemente pondremos el PID. Así que 'kill %1' y 'kill 5064' serian equivalentes.

Y para cerciorarnos de su defunción consultamos a nuestro querido 'jobs':


[matados2k@fortaleza curso]$ jobs

[1]+ Terminado yes >/dev/null

[matados2k@fortaleza curso]$

Hay que destacar que 'jobs' guarda la información del proceso muerto para mostrarla 1 vez ya que si ejecutamos de nuevo 'jobs' ya nada se sabrá de la tarea muerta:


[matados2k@fortaleza curso]$ jobs

[matados2k@fortaleza curso]$

Parar y seguir.

Hay otra forma de mandar una tarea a segundo plano y es ejecutarla normalmente y hacerla suspenderse o dormirse, para ello usaremos la combinación de teclas ' Ctrl+z ':


[matados2k@fortaleza curso]$ yes > /dev/null

[1]+ Stopped yes >/dev/null

[matados2k@fortaleza curso]$ jobs

[1]+ Stopped yes >/dev/null

[matados2k@fortaleza curso]$

Para volverla a reanudar en primer plano usaremos el comando interno 'fg' (foreground) continuando la tarea justo donde se dejo (hay que recalcar que cuando una tarea esta parada no usa tiempo de cpu).


[matados2k@fortaleza curso]$ fg

yes >/dev/null

[1]+ Stopped yes >/dev/null

[matados2k@fortaleza curso]$

Vemos como la hemos reanudado y la hemos vuelto a parar, pero en este caso ya si que la vamos a mandar al segundo plano con el comando interno 'bg' (background) que continuara con la ejecución del comando en segundo plano.


[matados2k@fortaleza curso]$ bg

[1]+ yes >/dev/null &

[matados2k@fortaleza curso]$

Recapitulando.

Las tareas pueden estar en primer y segundo plano y estas pueden estar a bien ejecutándose, paradas o terminadas (muertas). Las tareas en segundo plano no pueden pararse ni eliminarlas mediante 'Ctrl + c' si no que antes hay que pasarlas a primer plano para poder realizar esto.

Una tarea parada no consume tiempo de cpu, pero sigo manteniendo la memoria que estuviese usando, simplemente espera a que se le de la oportunidad de continuar con su tarea.

Aunque una tarea en segundo plano no puede recibir nada desde el teclado si que puede enviar datos a la pantalla y puede resultar muy muy molesto.

Por ejemplo si se te hubiera ocurrido ejecutar 'yes &' no podridas detenerlo con 'Ctrl +c' o con 'Ctrl + z' ya que esta en segundo plano, pero nos esta abrumando con una ristra interminables de 'y' que no nos deja ver nuestro prompt, con lo que para remediar esto debemos teclear a ciegas 'fg' para traernos la tarea al primer plano y esta vez si la podremos parar por ese método (también podríamos haberla eliminado con un 'kill' a ciegas con su número de tarea).

Mas sobre 'fg' y 'bg'.

Estos dos comandos actúan sobre sobre el último proceso parado o creado, indicado por un '+' cuando ejecutamos 'jobs' (mirad los ejemplos anteriores). Si tuviéramos varias tareas para indicarle a 'fg' y 'bg' sobre cual actuar utilizaríamos como con 'kill' el símbolo '%' mas su número de tarea.


[matados2k@fortaleza curso]$ yes > /dev/null &

[2] 5592

[matados2k@fortaleza curso]$ yes > /dev/null &

[3] 5593

[matados2k@fortaleza curso]$ yes > /dev/null &

[4] 5594

[matados2k@fortaleza curso]$ jobs

[1] Running yes >/dev/null &

[2] Running yes >/dev/null &

[3]- Running yes >/dev/null &

[4]+ Running yes >/dev/null &

[matados2k@fortaleza curso]$ fg %2

yes >/dev/null

[2]+ Stopped yes >/dev/null

[matados2k@fortaleza curso]$ jobs

[1] Running yes >/dev/null &

[2]+ Stopped yes >/dev/null

[3] Running yes >/dev/null &

[4]- Running yes >/dev/null &

[matados2k@fortaleza curso]$ kill %1

[matados2k@fortaleza curso]$ kill %4

[1] Terminado yes >/dev/null

[matados2k@fortaleza curso]$

Despedida.

Y ya visto este ejemplo mas complejo terminamos con el control de tareas. En la próxima entrega veremos una colección de comandos que nos serán de gran utilidad, asta la semana que viene ;)

Agradecimientos: · Revisión del documento: karuchi (Carolina García).

Página oficial y dominio de mi propiedad http://matados2k.es
Matados'2k Usuario y moderador de foro.noticias3d.com
Matados'2k Usuario y moderador de www.sinuh.org
matados2k (arroba) gmail (punto) com

Este documento está sometido a la licencia de creative commons en su variante “Reconocimiento-NoComercial-SinObraDerivada 2.1 España” . Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.










Copyright © por Computer Facil ,Derechos Reservados.

Publicado en: 2007-01-26 (2375 Lecturas)

[ Volver Atrás ]
Content ©

Foros de Informatica  Foros   Foros  Todos los Foros  Ofertas PCs   Ofertas Pcs  Venta Portatiles  Informatica Oferta   Descargas Web  Computer Hoy  Foros Posicionamiento Web   Consultor de Marketing Online  Descargas Web  Emoticonos Animados

Contacto -- (CC) 2004-2007 ComputerFacil.com . Algunos derechos reservados. Aviso Legal.