Ubuntu, clave para la producción de la pelicula Avatar

La revolucionaria película “Avatar” se ha convertido en una referencia para el futuro del cine en tres dimensiones, pero aquellos que quieran producir una película similar tendrán que tener en cuenta las ingentes necesidades que impone.

Una charla de uno de los administradores de sistemas de Weta Digital -la empresa encargada de los efectos especiales- ha revelado algunos detalles sobre los centros de datos que se utilizaron para una producción que usó  Ubuntu como sistema operativo.

Uno de los asistentes a las conferencias Linux Conf Australia 2010 (LCA2010) ha contado cómo en una de las charlas intervino Paul Gunn, administrador de sistemas en Weta Digital, responsable de los efectos visuales de la película Avatar.

En el post de Dustin Kirkland -que trabaja en Ubuntu Server- se indica que la infraestructura del centro de datos que tuvo que poner en marcha Weta Digital para esta producción fue impresionante. Ya habíamos hablado de la matriz de almacenamiento con capacidad para hasta 2 Petabytes, pero aún hay más detalles.

Entre otros, que se usó una red de conectividad a 10 Gbps, que había más de 4.000 HP Blades con cerca de 35.000 núcleos de proceso en su interior en el centro de datos y 104 Tbytes de memoria RAM en total, y que aún así se tardaba 48 horas en renderizar algunas de las secuencias gráficas.

Según Paul Gunn, responsable de la charla “Challenges in Data Center Growth“, Ubuntu fue el sistema operativo base de todo este desarrollo, y estaba instalado en todos los nodos de renderizado y en el 90% de los PCs de sobremesa de Weta Digital. De hecho, Gunn indicó que su propia “granja de renderizado” hace uso de Ubuntu Server, y no de RHEL como se publicó en algunos medios.

Eso ha permitido generar una película en la cual cada minuto ha ocupado nada menos que 17,28 Gbytes de datos, y curiosamente para refrigerar toda la instalación se limitaron a establecer la temperatura a 25º C, una cifra mayor que la mayoría de centros de datos, pero que les permitió ahorros energéticos importantes.

Nota: si quereis bajaros la pelicula Avatar visitar tuentishare.com

Las mejores Cheat Sheets de Linux

Aqui os dejo amigos Linuxeros una lista de las mejores Cheat Sheets (Chuletas en Castellano) de Linux, para todos los iniciados, expertos y gurús de GNU/Linux ¡¡¡¡

PDF | Command Line Interface (CLI), Security, Networking

HTML | CLI, Gnome/KDE

HTML | Linux Distributions Cheat Sheets

HTML/PDF | vi, sed, awk

Script para notificar intrusiones en tu red (Wifi o cableada) con Ubuntu

Este es un script que detecta quien se esta conectandoa tu red, y como comenta su autor Franklin Aliaga, es muy util si usas un Modem Router Inalambrico para detectar personas que se pueden estar conectando a tu red, hoy en dia existen infinidades de metodos para entrar a una red inalambrica asi que hay que estar monitoreando siempre la red, en este caso el script funciona de la siguiente manera, mientras tu estas haciendo tus trabajos hay un demonio que cada 3 min. ejecutara el script y mostrara en una alerta en el panel de notificaciones de tu Ubuntu.

Requisitos:

sudo apt-get install libnotify-bin nmap

Para crear el script sigue los siguientes pasos:

Abre una consola y en tu /home, teclea:

sudo gedit alertared

Copia y pega el siguiente codigo:

#!/bin/bash
#script creado por: franklin aliaga
#si no tienes nmap digita sudo apt-get install nmap
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en un archivo *.txt

#script mejorado y actualizado por: microstudi (lector de tuxapuntes)

# Modificica esta linea a tu gusto si deseas guardar los temporales en otra ruta.

ARCHIVOS="$HOME/bin/hosts"

/usr/bin/nmap -sP 192.168.2.1/24 -oG $ARCHIVOS/hosts_ip.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
#y mandarlo a otro archivo *.txt
cat $ARCHIVOS/hosts_ip.txt | grep Host | cut -c 7-20 | tr -d "\()" > $ARCHIVOS/host_ip1.txt

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo
contador=$(wc -l $ARCHIVOS/host_ip1.txt | cut -c 1-2)

#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-)
echo "Mi ip: $ip"
total=$(expr $contador - 1)

var=0

while [ $var -le $total ]; do
let var=$var+1
#capturamos la ip por linea
linea=$(cat $ARCHIVOS/host_ip1.txt | sed -n "$var p")
if [ $linea != "192.168.2.1" ]; then
if [ $linea != $ip ]; then
/usr/bin/notify-send "Conectado $linea"
#Para enterar-se por la consola también:
echo "Conectado $linea"
fi
fi
done

Guarda el fichero que acabas de crear y en consola teclea:

sudo chmod +x alertared

Despues creamos el demonio:

crontab -e

Y añadimos la linea:

*/3 * * * * /home/tu nombre de usuario/alertared

*Con esto el sistema ejecutara cada 3 minutos el script y nos notificara los intrusos.

Solución al error: MySQL query failed: Incorrect information in file: ‘./psa/misc.frm’

Síntomas

En la página Inicio de Sesión de Parallels Plesk Panel en https://plesk.host.name:8443, aparece el siguiente error:

ERROR: PleskMainDBException
MySQL query failed: Incorrect information in file: ‘./psa/misc.frm’

0: /usr/local/psa/admin/plib/common_func.php3:216
db_query(string ‘select param, val from misc’)
1: /usr/local/psa/admin/plib/common_func.php3:513
get_param(string ‘mysql41_compatible’)
2: /usr/local/psa/admin/plib/common_func.php3:410
db_set_names()
3: /usr/local/psa/admin/plib/common_func.php3:389
db_connect_real(string ‘localhost’, string ‘admin’, string ‘***********’, string ‘psa’)
4: /usr/local/psa/admin/plib/common_func.php3:369
db_connect()
5: /usr/local/psa/admin/auto_prepend/auth.php3:87

Causa

La causa de este problema son unos permisos incorrectos al directorio /tmp. Por este motivo, MySQL no puede crear sus archivos temporales correctamente para el motor InnoDB en el inicio.

Los permisos correctos son:

~# ls -ld /tmp/
drwxrwxrwt 4 root root 36864 Aug  8 08:41 /tmp/
~#

Resolución

Corrija los permisos con el siguiente comentario:

~# chmod 1777 /tmp

Información Adicional

Para ver el error, actualice la sección [mysqld] en el archivo /etc/my.cnf con esta línea:

/etc/my.cnf
--->8---
[mysqld]
innodb_force_recovery = 4
---8<---

Ahora reinicie el servicio con:

~# /etc/init.d/mysqld restart
Stopping MySQL:                                            [  OK ]
Starting MySQL:                                            [  OK ]
~#

En el archivo de registro de errores de MySQL debería aparecer el siguiente error:

/var/log/mysqld.log
--->8---
^G/usr/libexec/mysqld: Can't create/write to file '/tmp/ib1suXEE' (Errcode: 13)
020326 22:26:17  InnoDB: Error: unable to create temporary file; errno: 13
020326 22:26:18 [Note] /usr/libexec/mysqld: ready for connections.
---8<---

La ubicación del archivo de registro de errores de MySQL se define en el archivo de configuración:

~# grep log-error /etc/my.cnf
log-error=/var/log/mysqld.log
~#

Tips y comandos útiles de Linux que no te sabías

Muchos de los que leeis este blog seguro que os considerareis unos verdaderos eruditos de GNU/Linux, otros simplemente estareis empezando con el pingüino. Sea cual sea vuestro caso aquí teneis una lista con algunos comandos curiosos que quizá no conocíais.

Nota: todos los comandos y tips mostrados a continuación deben escribirse en una sola línea.

  • Deshabilitar el historial de bash (donde se almacenan los últimos comandos ejecutados

rm ~/.bash_history ; ln -sf /dev/null .bash_history

  • Si intentas realizar una tarea reservada el sistema te dirá que no puedes por falta de permisos. Pues bien, si después quieres ejecutar la misma tarea, pero como sudo, en lugar de escribir “sudo” seguido del comando, prueba:

sudo !!

  • Para eliminar una palabra completa en la consola: Mantén presionado ESC y pulsa BACKSPACE (borrar, encima del enter).
  • Si deseas crear múltiples directorios con nombres dir1, dir2, dir3… por ejemplo, usa el comando siguiente (análogamente puedes usar este sistema con otros comandos como touch, para crear archivos):

mkdir dir{1,2,3}

  • Para usar un comando con los mismos argumentos que se le pasaron al comando anterior (en nuestro ejemplo utilizamos el comando touch, pero el sistema es el mismo para cualquier otro):

touch !*

  • Genera aleatoriamente un password (en nuestro ejemplo, de 8 caracteres –para otra longitud cambia el número 8 por el que desees–):

< /dev/urandom tr -dc A-Za-z0-9_ | head -c8 ; echo

  • Para copiar un fichero con nombre muy largo sin tener que escribirlo dos veces puedes utilizar un método llamado expansión, de la siguiente forma:

cp NombreDeArchivoMuyLargo{,.orig}

  • Si deseas ejecutar un comando en consola, pero no quieres que se muestre ninguno de los posibles errores que puedan surgir, lo mejor es redireccionar la salida de error a /dev/null (pongamos que es una especie de agujero negro, XD):

[comando_a_ejecutar] 2> /dev/null

  • Para pasar un manual del comando man a pdf, tal y como vimos en un post pasado, puedes ejecutar (todo en la misma linea):

man -t <nombre_programa> | ps2pdf – > <ruta_destino/nombre_destino.pdf>

  • Si quieres cambiar la extensión a varios archivos a la vez, prueba lo siguiente. Ten en cuenta que en este ejemplo, la extensión que tienen los archivos a modificar es “.txt” y la nueva extensión que queremos asignarles es “.html”, modifícalo a tu gusto según tus necesidades:

for i in *.txt; do mv $i ${i%%.txt}.html; done

  • ¡Demasiados argumentos!. En ciertas ocasiones la consola nos lo dirá, por ejemplo si intentamos ejecutar rm * en un directorio donde haya muchos ficheros. La solución es una pequeña tubería utilizando “ls”  y “xargs”, como la siguiente (en este ejemplo usamos el comando “rm” pero puedes emplear cualquier otro):

ls | xargs rm

  • Si quieres conocer el nombre del directorio en el que te encuentras (Ojo, no me refiero al nombre completo del tipo /home/pepe/…/naturaleza/laguna, sino sólo al nombre. Por ejemplo, en el caso anterior, el nombre sería laguna), puedes usar el siguiente comando:

echo ${PWD##*/}

Espero que os hayan venido bien estos comandos curiosos, más adelante postearé algunos más que me vayan surgiendo.

Un saludo