ULTIMAS OCURRENCIAS DEL PROYECTO

Archivos para: Junio 2010

Named Pipes ¿Que son?

Sin duda una de las herramientas más útiles, características e indispensables de cualquier shell de sistemas tipo Unix (Linux incluido of course), son las llamadas tuberías o pipes. Las tuberías (representadas con el carácter ASCII |)se emplean para interconectar procesos, siendo su uso más habitual el pasar el resultado de la ejecución de un comando a la entrada de otro. Un ejemplo habitual sería:

ps -ef | grep wine.exe

En este comando estamo ejecutando ps con las opciones e y f, con lo que obtenemos un listado completo de procesos con nombre de usuario, PID, y el comando completo que ha lanzado el proceso, entre otras cosas. Toda esa información, en lugar de mostrarla por salida estándar, se la pasamos como entrada mediante una pipe a grep, al que le indicamos que tome dicha entrada, filtre aquellas líneas que contienen la cadena “wine.exe”, y nos las muestre por salida estándar. Con esto localizaríamos todos los procesos que contengan dicha cadena, lo cual a efectos de administración es algo muy cómodo.

En principio conocemos a los pipes como pipes o tuberías, pero sería mas correcto conocerlos como pipes anonimos, puesto que existe otro tipo de tuberías con similares características pero diferente finalidad y uso llamadas Named Pipes (Tuberías con Nombre).

Las Named Pipes son, basicamente, un fichero en disco. La diferencia consiste en que en lugar de ser un contenedor de datos, los Named Pipes actúan como torrentes de caracteres (stream), por lo que se puede indicar a otro o a otros procesos que lo lean y capturen al vuelo la información que contiene.

Ya tenemos las dos primeras diferencias entre una pipe y un Named Pipe: De un Named Pipe pueden leer varios procesos al mismo tiempo, cada uno de ellos puede extraer la información que necesita y procesarla sin tener que esperar turno. Otra característica importante es que los Named Pipes no almacenan datos, por lo que una vez terminado su uso simplemente vuelven a tamaño cero.

Pero, ¿para que podemos usar un Named Pipe? Supongamos que tenemos un script de Perl que lee de varios ficheros de log del sistema y genera un reporte. Dicho reporte es muy largo y el fichero generado es muy pesado, por lo que queremos comprimirlo en un tar.gz para enviarlo por email. Dado que tar y gzip no leen por entrada estándar, es necesario especificarles un fichero, por lo que el proceso normal consistiría en ejecutar el script de Perl, escribir el fichero, y después generar el tar.gz.

Sin embargo, si utilizamos una Named Pipe, podemos hacer que el script vuelque su salida en un Named Pipe y mientras tanto tar vaya leyendo el Named Pipe y comprimiendo. El resultado será únicamente el fichero comprimido, pues el tamaño de la tubería seguirá siendo 0. Útil si tienes el espacio en disco ajustado y quieres ahorrarte un tiempecito.

¿Como se usa una Named Pipe?

Lo primero es crearla, para ello utilizamos el comando mkfifo:

$ mkfifo /tubería

Acto seguido la tendremos disponible para realizar cualquier operación utilizando redirecciones:

ls -lrt > /tuberia

De cara a un script, sería más sencillo introducirla en una variable:

mituberia = /tuberia
mkfifo $mituberia
ls -lrt > $tuberia.

Las Named Pipes no son ni de lejos las más utilizadas en Bash Script. De hecho, no es habitual verlas puesto que en la mayoría de los casos es más sencillo utilizar tuberías anónimas. En cualquier caso, es muy interesante saber de su existencia porque en determinados contextos pueden sernos de gran utilidad.

Unix y el 2038: El otro "bug" del milenio

Para aquellos que sigan pensando que el año que viene se acaba el mundo porque lo dijeron los mayas, que sepan que están equivocados. No muy lejos queda el fin del mundo, pero no será hasta el 2038 que se irá todo a la porra.

¿Y porqué se irá a la porra? Porque la gran mayoría de nuestros sistemas informáticos no está diseñado para generar una fecha superior al 19 de Febrero de 2038.

Bueno, el mundo no se acabará (esperemos), pero el problema en si es real y se están buscando soluciones.

¿Y porqué se acaba el mundo? Sencillamente, por una limitación de diseño en los sistemas basados en POSIX, en los cuales el tiempo se va midiendo en forma de un número decimal, encarnado por el número de segundos transcurridos desde el 1 de Enero de 1970 hasta ahora.

El problema es que ese número decimál, de tipo Integer, es de 32 bits. Y las fechas superiores a la indicada arriba desbordan la capacidad de este tipo de números, con lo que los sistemas, que son muy cucos, convierten dicho número en negativo. En la práctica volvemos a 1970.

Si con esto no te enteras de ná, este gráfico de la Wikipedia es muy explícito:

En el se puede comprobar como efectivamente a partir de 19 de Enero de 2038 el número entero que define el tiempo transcurrido se vuelve negativo, se resetea a si mismo. Es algo parecido a lo que sucedió con el famoso Efecto 2000, salvo que en aquel caso el problema erá también de hardware. En este caso, el hardware no tiene problema.

¿Y como vamos a evitar que una cosa tan tonta no nos arruine? Pues sencillamente, desarrollando e implantando los sistemas de 64 bits. En realidad todos los que hayáis adquirido un PC en los útlimos 2 o 3 años no tendréis este problema mientras instaléis un Sistema Operativo de 64 bits. El verdadero problema está en las grandes infraestructuras bancarias, militares, científicas, corporativas, etc. cuya tecnología se remonta al amanecer de los tiempos y que no queda más que migrar, en casos mediante inversiones millonarias.

Y si no, ya vendrá John Titor a salvarnos.

Referencias:

Algunos cambios

En la línea de cambios que estoy llevando, y a modo informativo, os informo que he cambiado lo siguiente:

- autoestopistainformatico.proyectopqmc.com ya no existe. Para darle más coherencia, la página de siempre estará accesible a través de guia.proyectopqmc.com. Mas facilito de recordar, ¿eh?

- Al blog nuevo se accederá simplemente mediante blog.proyectopqmc.com.

- En breve se aplicará un proxy inverso para dejar las URL’s limpias y accesibles. A Google le va a encantar y a vosotros se que también.

Todos estos cambios desde ya. Si me tenéis enlazado, por favor cambiad los enlaces.

Por que Vim y no Vi

Pues sencillamente por esto:

¿Fichero corrupto? ¡No toques nada todavía!

Si uno tiene que manejar cadenas de comandos muy largas, comandos con muchísimas opciones, o es aficionado al &&, se puede encontrar con que un día, no puede editar un script porque se encuentra con una pantalla como la anterior. ¿Pero que significa esto? ¿Acaso el fichero de texto se ha corrompido? Y sobre todo, ¿por qué more me muestra la información del fichero correctamente?

La respuesta es que el viejo Vi sólo puede manejar líneas de fichero con una longitud máxima de 2048 caracteres (espacios incluidos). En el momento en que la línea sea màs larga os mostrará una pantalla como la que véis y un bonito mensaje como el que aparece en la última línea.

Por eso Vim y no Vi. Porque Vi como tal apenas ha sufrido cambias en sus ultimas versiones, mientras que Vim y otros clones han aumentado sus capacidades para ofrecer el manejo de líneas y ficheros más grandes, así como por ejemplo, sintaxis resaltada. Que es bien útil.

Que sea nuevo no significa que sea mejor. Que sea improved sí.

-Sobre Vim -> http://www.vim.org/

Tito Pelon EmailSoftware, PROPermalink 1 comentario . Rastreo (0)
Oscuro estreno

Amigos míos, queridos lectores. Hoy estreno mi propio alter-blog: El Autoestopista Informático.

No les aburro con más perorata aquí. Sigan el enlace y descubrandlo por ustedes mismos.ç

Y siiii… Ya tengo twitter.

Tito Pelon EmailPROPermalink 2 comentarios . Rastreo (0)

NUESTROS BLOGS








ˇHazte Fan!

Proyecto PQMC en Facebook

Quien esta en linea?

  • Visitantes: 4

Log-in/Cuenta

Viste esto??

La cagaste!!

Creative Commons License
Proyecto PQMC by Proyecto PQMC Staff is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España License.