1 – Como saber cuanto ocupa una carpeta en Linux.

¿Cuantas veces necesitaste conocer cuanto espacio ocupa un directorio en particular? Desde la consola al ejecutar «du» por «Disk Ussage«:

~ # du /home/dvr/video/movie/

Te devuelve el tamaño en bloques del directorio en cuestión:

48004   /home/dvr/video/movie/

Como al sistema de archivos lo formateé en su momento con un tamaño de bloque de 1024 bytes –Por defecto se usan 4096 bytes si no se especifica un valor diferente para el parámetro en el argumento de la utilidad que formatea-, la cuenta es facil: 48004 bloques de 1024 bytes cada uno suman 49156096 bytes.

Como no podía ser de otra forma, para no tener que andar haciendo cálculos estrambóticos, se le puede pasar a la utilidad como argumento «-h» por «Human Readable»  para que devuelva el resultado en formato entendible por humanos:

~ # du /home/dvr/video/movie/ -h
47M     /home/dvr/video/movie/

Como el comando es recursivo, puede que te interese además agregarle la opción «-s» por «silent» para que cuando tenga que navegar muchos subdirectorios para sacar la cuenta no te llene la pantalla de texto. La otra muy util que tiene de entre tantas opciones disponibles es la posibilidad de producir un «gran total» con la opción «-c«, por ejemplo:

~ # du /home/dvr/video/movie/ -csh
47M     /home/dvr/video/movie/
47M     total

2 – Conocer el espacio utilizado/disponible por partición

Con la salida en modo «bloques» para el comando «df» por «Disk Free«:

~ # df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3              9297812   1988296   6837208  23% /
/dev/sdb1               397475    295084     75886  80% /usr/portage
/dev/sdb2             78628740   6382688  72246052   9% /home

O en modo «Human Readable» pasándole el argumento «-h«:

~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.9G  1.9G  6.6G  23% /
/dev/sdb1             389M  289M   75M  80% /usr/portage
/dev/sdb2              75G  6.1G   69G   9% /home

3 – Gráficos en la consola

Por ultimo la frutillita del postre, el que uso todo el tiempo, powered by python, «pydf«:

pydf en funcionamiento, mas gráfico imposible (para ser en consola).

pydf en funcionamiento, mas gráfico imposible (para ser en consola).

Cada quien sabrá como lo instala con el gestor de paquetes de su distribución de cabecera, en Gentoo es tan simple como ejecutar:


~ # emerge pydf

Como seguramente habrá mas aplicaciones que no conozco, ¿Conocen ustedes algo mejorcito que pydf?

¿Quién no se manda una metida de pata cada tanto? Yo tengo varias de diversa índole en prácticamente todos los aspectos de la vida. Estas son las mejores que puedo recordar que me hayan pasado en Linux tipeando comandos en la consola:

haha_nelson

Ejecutar comandos en el host equivocado:

Ejecutar un comando creyendo estar en la consola local cuando en realidad se trataba de una jaula chroot o un host remoto:

# reboot

# halt

# killall (nombre de proceso importante)

De a poco se me ha hecho costumbre cambiarle el nombre al shell ni bien inicio sesión remotamente. Si me logueo en un Host cuyo nombre es pepito, renombro el prompt para que lo refleje:

# export PS1=”[pepito] $PS1”

Cambiar el puerto del servidor SSH

Eso, por muy boludo que suene ya me pasó unas dos o tres veces cambiar el puerto en el que escucha el servidor SSH y olvidarme de modificar el reenvío de puertos en el router que hace NAT o en el Firewall con lo que me encierro solo del lado de afuera y no puedo volver a conectarme remotamente:

# echo “Port 12345” >> /etc/ssh/sshd_config && /etc/init.d/sshd restart

De ahí viene la costumbre que tengo de instalar una VPN que traspase el firewall en cuanto servidor tengo bajo mi control.

Bajar la interface WAN en lugar de la LAN

Estando logueado por SSH, en lugar de bajar eth1 que era la interface LAN, bajé eth0 que era la WAN. El servidor se queda sin internet, yo me quedo fuera sin conexión. El servidor está a 70 kilómetros de distancia y es domingo a la siesta, nada mas que hacer hasta el lunes a la mañana en que alguien físicamente pueda solucionar el “problemita” reinciando el servidor o levantando eth0 nuevamente.

ifconfig eth0 down

Desde entonces tengo la costumbre de usar variables para asignarle nombres a las interfaces de red y usar la variable en lugar del nombre en el script:

export wan=eth0

Compilar mal el kernel

En un servidor remoto, compilar mal el kernel y reiniciar para probarlo resultando en un kernel panic o en quedarme sin conectividad en el servidor imposibilitando la reconexión remota por SSH para verificar los cambios.

make –j4 && make modules_install && cp arch/i386/boot/bzImage /boot/kernel && reboot

Desde entonces, si necesito reiniciar un host linux que no se si va a volver a la vida después del reboot uso una combinación de este watchdog en caso de pérdida de conectividad con este sistema de reinicio automático en caso de kernel panic y el método fallback que provee grubya voy a escribir al respecto alguna vez– para asegurarme de que si algo me salió mal, el equipo se reinicie solo volviendo a usar la configuración anterior en donde todo funcionaba.

Echando a perder se aprende, ¿Vieron?

Típico caso: Recuperación de datos, el medio ha sido sobreescrito con información reciente, con lo que no todos los archivos recuperables a bajo nivel salen sanos.

Lo que haría todo el mundo es abrir archivo por archivo de a uno verificando cuales estan sanos y cuales rotos lo que por resumirlo de alguna manera que englobe totalmente el concepto que quiero transmitir: Es un reverendísimo dolor de bolas.

Acción y efecto de probar todos los archivos recuperados uno por uno para detectar de forma manual cuales están corruptos

Acción y efecto de probar todos los archivos recuperados uno por uno para detectar de forma manual cuales están corruptos

Buscar de entre los miles de archivos que nos puedan interesar cuales salieron sanos y cuales se corrompieron de manera manual como hice toda la vida es la parte que mas tiempo y recursos (mentales) consume. Por suerte alguien en los foros de Gentoofuente de eterna sabiduría informática si las hay– tuvo la misma inquietud pero además fué un poco mas inteligente que yo, quería hacerlo automáticamente. Ya de entrada venía bien encaminado cuando dijo:

Hola,

Tengo un respaldo de archivos antiguos de mi trabajo (principalmente MSOffice), en algún momento varios archivos se corrompieron, por lo que hay archivos que se pueden abrir y otros que no hay caso.

Quiero eliminar los archivos corruptos.

Para diferenciarlos de los buenos se me ocurrió utilizar el comando «file»

Ahí fué que se me encendió la lamparita y vengo utilizando este método automático desde entonces exitosamente. Es que el comando «file«, puede diferenciar a la perfección un tipo de archivo de otro con lo que cualquier archivo que estuviera corrupto, ya sea una imagen, un video, música o un documento de office en lugar de ser identificado como corresponde, simplemente figurará como de tipo «data«.

Tan sencillo como eso, eliminar del directorio que contiene los archivos recuperados, todos aquellos que figuren como de tipo «data«, a lo que Stolz, moderador del foro y mago programador de Bash respondió con este sencillo script que navega subdirectorios recursivamente eliminando todos los archivos que sean de tipo «data»:

find . -type f | while read linea; do
  tipo=`file -b "$linea"`
  if [[ $tipo == "data" ]];then
    rm  "$linea"
  fi
done

Paso a paso:

Se crea un archivo dentro de /usr/bin para que contenga al script, lo llamaremos «borrador_de_archivos_corruptos«:

nano /usr/bin/borrador_de_archivos_corruptos

Se copia el contenido del script y se pega dentro del archivo que estamos editando con nano (o el que sea tu editor de texto de cabecera).

Se sale guardando los cambios.

Se convierte el archivo en ejecutable:

chmod +x /usr/bin/borrador_de_archivos_corruptos

Y ya estça listo para usar.

IMPORTANTE: Ejecutar borrador_de_archivos_corruptos únicamente dentro de la carpeta que contiene la información salvada del proceso de recuperación de datos. Ejecutar el script fuera de la misma te va a borrar archivos que son de tipo «data» por que tienen que serlo, te va a hacer mierda todo lo que encuentre a su paso, para que se entienda.

Ya tenés otro motivo mas para tener un Linux siempre a mano.

Esta es dificilísima de usar, como todo en Linux.

Ripear CD en linux desde el CD a WAV y de WAV a mp3

Usando este avanzadísimo y super complicado script podés ripear tus CD de audio a MP3 para guardarlos en tu PC en caso de que se rompa el CD y subirlos a Grooveshark en caso de que se rompa tu PC:

#!/bin/bash
# ----------------------------------------------------------------------------
# Written by Vivek Gite <http://www.cyberciti.biz/>
# (c) 2006 nixCraft under GNU GPL v2.0+
# ----------------------------------------------------------------------------
read -p "Comenzando en 5 segundos ( CTRL + C para abortar ) " -t 5
cdparanoia -B
for i in *.wav
do
	lame --vbr-new -b 360 "$i" "${i%%.cdda.wav}.mp3"
	rm -f "$i"
done

¿Cómo se usa? Simple: ejecutás el script en la carpeta en donde quieras almacenar los mp3, el script se conecta a CDDA y te baja desde internet el título de la canción y el artista y los usa como nombre para el archivo .mp3 que genera. Tiene como dependencias cdparanoia y lame. La instalación de estas dependencias en Gentoo no podría ser mas complicada:

emerge lame cdparanoia

Todos los créditos para el autor intelectual del script. Yo apenas si traduje una línea.

No vas a encontrar un método mas simple que este.