Trucos y curiosidades para Linux

Daniel Clemente Laboreo
Actualizado el 06-03-2005

Cosas sueltas que creo que son interesantes que conozcas, aunque explicadas muy por encima.

La partición de swap

Probablemente al instalar Linux alguien te recomendó crear una partición de swap. swap significa intercambio y es un espacio usado como memoria adicional pero que está en el disco duro; por lo tanto sólo te será de utilidad si crees que te faltará RAM para tu trabajo diario. Puedes no tener partición de swap, o crearla tan grande como quieras.

De todas formas, puedes crear y borrar swaps: en /proc/swaps verás una lista de las activas, y con swapon y swapoff las puedes modificar como quieras. Por cierto, prueba a hacer un cat o un strings a alguna swap, verás cosas muy interesantes (yo he llegado a ver mi contraseña de root :-) ). Recuerda que una diferencia entre swap y RAM es que la RAM se vacía al apagar el ordenador, la swap no.

¿Cómo crear una swap? Muy fácil: crea un archivo vacío con dd if=/dev/zero of=/usr/swap bs=1024 count=100M (100 Mb en este caso), conviértelo en swap con mkswap /usr/swap y actívalo con swapon /usr/swap. Haz free o cat /proc/swaps para comprobarlo. Recuerda modificar /etc/fstab.conf para que se monte al inicio la próxima vez.

Por cierto, busca mejores discusiones sobre si usar swap o no.

Cambiar fuente de consola

En un 'terminal emulator' ya hay opciones para ello, pero en la consola real (Ctrl+Alt+F1, etc) puedes escribir en ruso o poner letras más pequeñas para que quepan el doble de líneas, sin necesidad del framebuffer.

Localiza el directorio de fuentes en tu ditribución (por ejemplo, /usr/share/consolefonts o /usr/lib/kbd/consolefonts) y haz un consolechars -f nombre

Arreglar caracteres extraños de consola

Si haces cosas raras (ej. cat /dev/hda) puede que envies códigos de control a la consola, y eso puede hacer que después del Ctrl+C los caracteres se vuelvan ilegibles. Para volver a dejarlo bien ejecuta reset

Qué hacer con FIFOs

Un FIFO (First In = First Out) es una lista de la que sólo se puede sacar el primer elemento metido (a diferencia de la pila, que es LIFO). Imagina a Mr. FIFO como una cinta transportadora en la que se van poniendo objetos en un cierto orden y en el otro extremo alguien los va cogiendo mientras llegan (primero el 1º, luego el 2º, etc.). Como ves, el FIFO sólo hace de intermediario.

Con Linux podemos crear fifos, y es muy sencillo: haz mkfifo fi y habrás creado uno (un ls -l lo muestra como tal). Ahora haz un cat fi (se quedará parado) y en otra terminal un echo Hola >fi. Verás que el cat que estaba esperando datos ya los ha recibido; el fifo ha hecho su trabajo.

Puedes hacer cosas muy raras con fifos: por ejemplo, imagínate que dices a cdrecord que te grabe la ISO mififo (se quedaría esperando a que le entre contenido al fifo) y después haces un wget servidorveloz.com/linux.iso -O mififo (esto especifica el fichero de destino). ¡Estarías grabando un CD al mismo tiempo que lo descargas! Usa la imaginación para descubrir otros utilidades...

Paréntesis en bash

Prueba un echo Hola | nano (no explicaré el | aquí), verás que no puedes escribir (lógico, porque la entrada la coge del echo Hola, no de STDIN). Ahora prueba un cat | nano, irá perfecto porque cat coge la entrada y la manda por la salida (pruébalo suelto, un cat). Pues, ¿por qué no pruebas a ponerlo todo como un sólo comando? Haz (echo Hola; cat) | nano

PS: esto lo he visto en exploits que dan shell; si un echo $shellcode | ./programa crea una shell pero no te permite escribir, usa este truco.

Aprender vim

Empieza con el man vim, luego vimtutor, y luego :help dentro del programa. Cuando te lo sepas todo empieza con el verdadero manual: vim y dentro :help user-manual

Abrir varias X

Igual que tienes varias consolas de texto a la vez (Ctrl+Alt+F1, Ctrl+Alt+F2, ...), también puedes tener varias de modo gráfico (en Ctrl+Alt+F7, Ctrl+Alt+F8, ...). Haciéndolo paso por paso, sería:

  1. Desde el modo texto, ejecuta X :1 & para abrir un servidor gráfico en el display 1 (puede que el :0 lo tengas ocupado con tu primera sesión gráfica). Lo que se abre es el servidor X; ahora falta que los programas (clientes) se conecten para mostrar gráficos.
  2. Como hay varios servidores, los programas tienen que saber en cuál de ellos hay que mostrar los gráficos. Eso se controla con la variable de entorno DISPLAY (pon echo $DISPLAY para verla). Para cambiarla, pon export DISPLAY=:1 si usas la shell bash.
  3. ¡Ahora ya puedes abrir programas! Prueba xterm &. Se abrirá la ventana; o sea que los programas ya pueden mostrar gráficos. Probablemente eches en falta un gestor de ventanas, abrélo ahora como cualquier otro programa.

X en modo texto

Primero haz pruebas con aa (Ascii Art). Prueba aafire, asciiview, y sobre todo, no te dejes el bb. La librería caca hace lo mismo pero en color (cacafire, cacaview, ...).

Luego puedes usar el proyecto XGGI, que es una abstracción de las X que te permitirá ejecutarlas usando otra librería, como la aa o el framebuffer. Funciona muy bien (hasta el ratón). Hay alguna guía sobre lo de las X en modo texto.

Cambiar el brillo de la pantalla

Muchas veces me he visto enfrente de pantallas tan modernas que no tienen las ruedas para cambiar el brillo y contraste (parece que hay que acceder a unos menús internos por medio de varias pulsaciones de unos botones en el orden correcto). En esos casos, prefiero hacer que la imagen del servidor gráfico brille más o menos con el comando xgamma: prueba xgamma -gamma 2.0 o con 1.0 para restaurar, y mira el manual para más opciones.

¡Es muy útil asignar este comando a los botones multimedia de un teclado! (sigue leyendo).

Asigna comandos a las teclas multimedia

Si junto con el teclado te vendieron muchas teclas inútiles que están por los bordes, puedes aprovecharlas para hacer todo lo que se te ocurra. Yo lo he hecho usando el servidor lineak. Parece algo difícil, pero si usas herramientas como klineakconfig es extremadamente sencillo.

¿Qué puedes hacer con esto? Pues de todo. Yo, por ejemplo, tengo puesto: controlar el volumen, mudo, controlar brillo de pantalla (tengo 3 brillos diferentes: 1, 2 y 3), abrir xterm, y abrir mozilla.

Sobrecargando Linux con fork

fork hace que un proceso se divida en dos. Prueba este programa de C y verás cómo funciona: main(){while(fork());}

Ejecútalo mientras haces un watch -n 1 "ps axu | wc -l" o algo así para contar procesos, verás como crecen sin parar hasta que lo canceles, se cuelgue, o llegue al límite marcado por la cuota de procesos (un buen sistema lo tendría que tener así, con cuotas). Si das shell a alguien vigila que no te haga esto...

Por cierto, si te atreves, ejecuta esto (o pide a alguien que lo ejecute... :-): echo && :(){ :|:& };: y si tienes tiempo, intenta entenderlo (es muy instructivo).

Operaciones matemáticas en bash

Para cálculos rápidos y poco precisos, bash tiene una expresión del tipo echo $(( 142857 * 3 )) Aunque, si tienes Google, usa su calculadora.

Tonterías

Sugerencias estúpidas:


Volver a la sección de cosas de Linux.

06-03-2005, Daniel Clemente Laboreo, e-mail n142857--/en/-g-m-a-i-l--/punto/-com. Información libre, sin licencias.