Liberar memoria RAM caché en GNU/Linux
La memoria caché es aquella que almacena información de los procesos con el objetivo de ser reutilizada para lograr que se lleven a cabo procesamientos futuros de manera casi instantanea. Linux por sí mismo almacena esta memoria y la reutiliza cuando es requerida, pero tambien la libera cuando otro proceso requiere memoria RAM.
En Linux, desde la versión 2.6.16 del Kernel es posible para el usuario «administrar» la liberación de la memoria caché mediante el archivo /proc/sys/vm/drop_caches
No sé por qué alguien querría manejar manualmente este tipo de procesos si el Kernel por sí mismo lo hace a su manera (¿paranoia?) y nunca he sabido de algún inconveniente debido a esto.
Lo única ventaja que se me ocurre de realizar esto es para hacer una especie de «refresh» sin tener que reiniciar el Sistema; cerrar todas las aplicaciones y darle prioridad a aplicaciones que se vayan ejecutando en cierto orden. Y no estoy seguro que tenga que recurrirse a esto para lograrlo, pues al abrir una aplicación que requiera memoria, Linux se encargará de liberarla para darle prioridad a la nueva aplicación que lo requiera.
La tarea consiste simplemente en asignarle (como root) un valor del 0 al 3 al archivo /proc/sys/vm/drop_caches:
echo 0|1|2|3 > /proc/sys/vm/drop_caches
El significado de cada valor:
- 0 » Cede el control al Kernel para que administre la memoria
- 1 » Libera pagecache
- 2 » Libera dentries y inodes
- 3 » Libera pagecache, dentries y inodes
Donde:
pagecache: Memoria caché de la paginación.
dentries: (Directory Entries) Representa la relación de forma estructurada que existe entre directorios-archivos.
inodes: Son nodos índice de archivos y directorios que usa el Sistema de Archivos para administrar las actividades posibles de dichos archivos y directorios guardados en disco o memoria. Contiene la metadata de los archivos y directorios: permisos, tamaño, propietario, última fecha de acceso, creación, modificación, etc…
Se debe recomienda utilizar en primer lugar el comando sync para forzar la grabación de información pendiente en la memoria caché y de esta manera asegurarse de liberar solamente información «libre».
sync ; echo 0 > /proc/sys/vm/drop_caches sync ; echo 1 > /proc/sys/vm/drop_caches sync ; echo 2 > /proc/sys/vm/drop_caches sync ; echo 3 > /proc/sys/vm/drop_caches
Fuentes:
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html
http://redes-privadas-virtuales.blogspot.com/2009/07/liberar-la-memoria-ram-cacheada-en.html
:wq
Recuperar archivos eliminados con «rm» es posible, a veces.
Eliminar un archivo con un típico «rm archivo» en los inicios de una persona en entornos Unix es más común que hacer un ls en la terminal de windows. Cuando sea el caso y eliminemos sin querer un archivo con el comando rm es posible recuperarlo siempre y cuando exista un proceso en ejecución que involucre al archivo eliminado.
Un caso hipotético.
Lanzo el navegador Opera mediante un script llamado oopera.sh, el navegador sigue abierto y por accidente he eliminado el archivo:
rm Scripts/oopera.sh
Lo primero que hay que hacer es listar los procesos del sistema y comprobar que el archivo que hemos eliminado se encuentre ahí:
ps -A | grep -i opera
PID TTY TIME CMD 4092 ? 00:00:00 oopera.sh 4093 ? 00:11:35 opera 4219 ? 00:00:00 operapluginclean 12369 ? 00:00:02 operapluginwrap
En el directorio /proc están listados y organizados los procesos del Sistema
El subdirectorio /proc/NumeroDelPID/fd/ contiene (entre otras cosas) un enlace simbólico de cada archivo, proceso, socket, directorio activo en el Sistema.
fd = file descriptor
Teniendo el PID (Identificador del Proceso) del archivo se comprueba el estado del archivo y al mismo tiempo el nombre del enlace simbólico:
ls -l /proc/4092/fd/* | grep oopera.sh lr-x------ 1 ramonoid ramonoid 64 Apr 20 13:57 /proc/4092/fd/255 -> /home/ramonoid/Scripts/oopera.sh (deleted)
Estado: (deleted)
Enlace: 255
Y ya localizado el enlace, lo único que queda es hacer la restauración con un simple cp:
cp /proc/4092/fd/255 $HOME/Scripts/oopera.sh
:wq
Mejorando el desempeño con el comando «cd» o cómo hacernos más flojos en la terminal [1]
Existen una gran cantidad de sencillos tips para los sistemas basados en UNIX (GNU/Linux, *BSD, Solaris, etc…) que nos facilitará la vida a los que usamos la terminal, en especial a quienes usamos las coreutils en reemplazo de algún file manager. Si bien son prescindibles para el desempeño en la terminal, son de gran utilidad si se quiere ser un poco más ágil y evitarse teclear menos para tareas básicas.
En este post, mencionaré algunos básicos para movernos a lo largo del árbol de directorios *nix.
1. La variable de entorno $CDPATH
Se trata de una variable que nos permite tratar directorios como si estuvieramos todo el tiempo situados en ellos, esto nos ahorraría el trabajo de teclear una ruta completa.
Por ejemplo, en vez de teclear:
cd /home/usuario/Documentos/Escuela/Tareas/Contabilidad\ Financiera/
Si agregamos «/home/usuario/Documentos/Escuela/Tareas/» a la variable CDPATH, podriamos solamente escribir:
cd Contabilidad\ Financiera/
Para definirla, simplemente se agrega la variable «CDPATH» con los directorios separados por «:» al archivo de configuración de la shell que se esté utilizando (.zshrc .bashrc .kshrc etc…), por ejemplo:
export CDPATH="/usr/local/share/:$HOME/Documentos/"
En caso de que existan dos directorios con el mismo nombre, uno en /usr/local/share/ y otro en /home/usuario/Documentos, cd recorre en orden de izquierda a derecha los directorios en la variable CDPATH, por lo que reconocerá primero el directorio que se encuentre en /usr/local/share/ y se cambiará a ese.
2. El caracter «~»
Este caracter es el equivalente a /home/usuario/, por lo que tecleando un simple «cd ~» podriamos situarnos en nuestro $HOME desde cualquier otro directorio.
O tambien copiar un archivo a nuestro home desde /usr/share/app1/ tecleando:
cp archivo1 ~
Otra utilidad podría ser listar lo que tenemos en nuestro $HOME:
ls ~usuario
3. Zsh y el autocd
Existe una simple opción para Zsh llamada «auto_cd». La utilidad de esta opción es que se puede omitir la palabra «cd» para cambiarse a un directorio (así o más flojo).
Simplemente hay que agregar «setopt auto_cd» al .zshrc
El autocompletado y el pushd y popd son otras genialidades que deberían estar en la lista, ya lo explicaré después… tal vez.
:wq
Separar un archivo flac
Perdón a mis 1¼ lectores por no actualizar esto, tenía planeado no actualizarlo jamás pero creo que lo dejaré para poner tonterías relacionadas exclusivamente al mundillo de Unix y las compus, o no.
Hoy escribiré algo para la gente pobre que nos encanta ilusionarnos con tener música lossless en FLAC, WAV, AIFF, ALAC o lo-que-sea.
Me descargué un álbum en flac y para mi sorpresa solo venían 2 archivos .flac, 1 por cada CD rippeado, y como a mí me gusta tener las canciones separadas y scrobblear para documentar lo que escucho en (last|libre).fm pues investigué la manera de separar el archivo en las distintas canciones que conforman el álbum.
Las herramientas:
emerge -av cuetools shntool #shntool con la USE flag "flac"
cuetools se trata de una serie de scripts que ayudan a manejar los archivos con extensión «cue», en gentoo en particular uno de los scripts no se instala en donde se supone debería de instalarse, así que por comodidad, a moverlo:
mv /usr/share/doc/cuetools-*/extras/cuetag.sh /usr/local/bin
La conversión:
cuebreakpoints archivo.cue | shnsplit -o flac archivo.flac
Esto generará las canciones separadas con su extensión .flac si el archivo .cue está bien estructurado.
La taggeada:
En las versiones nuevas de cuetools hay que hacer un ajuste al script cuetag.sh para hacer que maneje sin problemas los archivos .flac
Se sustituyen simplemente unos parámetros en unas lineas del script:
sed -i 's/remove-vc-all/remove-all-tags/g;s/import-vc-from/import-tags-from/' /usr/local/bin/cuetag.sh
Y…
cuetag.sh archivo.cue split-track*.flac
Listo.
-Extra-
Generar un arhivo .cue cuando este no exista separado pero esté incluido en el archivo .flac:
metaflac --show-tag=CUESHEET archivo.flac | grep -v ^CUESHEET > archivo.cue
El álbum se trata de «Conqueror» de Jesu en su edición Japonesa con los 2 tracks extra (20 de Octubre, cualquier edición es bienvenida). http://www.discogs.com/Jesu-Conqueror/release/901537
En realidad esto ya lo había hecho meses atrás en Archlinux pero no tuve problemas y solo quería documentarlo ahora que los tuve xD!
Basado en: https://nxadm.wordpress.com/2009/02/09/split-one-flac-cue-file-into-separate-tracks/
:wq
9 tips para el cuidado de viniles
Buscando maneras de darle mantenimiento y cuidar los discos de vinil fue que me encontré esta lista de 9 tips sencillos donde explican como mantener los viniles en un buen estado que permitan preservarlos por mucho más tiempo.
http://www.vinylrevinyl.com/2008/10/02/how-to-maintain-your-vinyl-records/
Creo que resultan medio obvios los tips, pero más que nada publico esto por si alguno de mis 2½ lectores conocen a otras personas que tengan interés y conocimiento en este asunto del manejo de viniles. O mejor aún, si tienen una experiencia buena con alguno de los 23,000 productos que existen para limpiarlos.
El sitio entero está bueno por cierto.
:wq
Generar hash MD5 a partir de texto
Tip rápido que encontré en el archivo de configuración de scrobd.
Con ayuda de una librería de python podemos «hashear» de manera fácil cualquier cadena.
__import__('hashlib').md5("texto_a_convertirt").hexdigest()
:wq
Abrir URL en urxvt sin usar mouse
Era uno de los inconvenientes que tenía cuando tenía que abrir una URL desde consola. Usualmente el método era hacer click con el mouse, pero he descubierto algo mucho mejor para nosotros los flojos =P
Instalación.
Primero ocupamos tener xclip instalado.
Luego descargar el código clonando el repositorio git siguiente:
git clone git://git.jukie.net/urxvt
Ahora tendremos un directorio urxvt con todo lo necesario.
Lo último es agregar estas lineas a ~/.Xdefaults
URxvt.keysym.M-u: perl:mark-yank-urls:activate_mark_mode<br /> URxvt.underlineURLs: true<br /> URxvt.perl-lib: /home/usuario/.urxvt/ <--la ruta donde vayas a poner el directorio<br /> URxvt.perl-ext: selection,mark-yank-urls<br /> URxvt.urlLauncher: opera<br /> URxvt.colorUL: #86a2be<br />
Estos son los atajos:
Alt-U – Modo «yank URL»; seleciona la última URL; siguiente URL.
<esc> – Sale del modo «yank URL».
y – Copia la URL seleccionada al clipboard.
<enter> – Lanza el browser seleccionado en .Xdefaults.
^n – Selecciona la próxima URL.
^p – Selecciona la anterior URL.
Obviamente estos atajos se pueden cambiar.
Y todavía preguntan que qué tiene de especial urxvt =P
Fuente: http://www.jukie.net/~bart/blog/urxvt-url-yank
:wq
Vim Keybindings en Opera y algo más… o menos
No se como dí con el dato, pero en cuanto lo supe, como diría el Sosa «me emocioné como niña de 12 años con Kabah».
Y así fue. Vi/m keybindings para Opera (a weboooooo!!!).
La verdad siempre me vi atraido hacia vimperator, pero me rehusaba a usar el lento y enfadoso Phyrephox. Entonces conocí uzbl que con todo y su filosofía Unix solo lo utilizo en asuntos donde no requiero tantos recursos como consultar alguna información rápida, leer algún artículo o a veces publicar algo en mi blog. El asunto se pone dificil cuando entro a los foros o páginas disque dinámicas; el rendimiento en memoria y velocidad de uzbl aún en tabbed no suele ser tan bueno cuando de cosas modernas se trata. 😛
Instalación.
Lo único que hay que hacer es descargarse el archivo .ini que contiene la configuración, luego ir a las opciones avanzadas del teclado (Settings > Preferences > Advanced > Shortcuts) y elegir vimperopera.
Link: http://my.opera.com/Blazeix/blog/vimperator-for-opera
(Y de hecho no es reciente; está desde el 2008 y yo sin saberlo!)
Vimprobable y uzbl son bastante válidos, de hecho no pienso borrar uzbl, pero que mejor que tener el mejor browser del mundo combinado con el mejor editor de texto =P
(Si, ya se, Opera no es open source ni software libre… pero de que se chinga a todos, lo hace.)
Otra cosa que he hecho con Opera es quitarle un montón de barras que terminan siendo innecesarias al tener esta nueva forma de usarlo.
Cuando no hay tabs, la barra esa se esconde:
:wq
Suéter | Camisa -> Bolsa para Notebook
Ahora si que… Woooooow.
Fuente: http://travesuras.wordpress.com/2010/03/19/20100319-1/ (Hay video y todo).
<!—————–>
Acabo de notar que bitlbee si reconoce «TAB» para desplegar los usuarios después de poner «/M» para mandar mensaje.
Acabo de notar tambien que esto de las expresiones regulares se está sailendo de control y lo aplico a todo xD!
:wq
Canciones de goear en WordPress
goear es un servicio gratuito que te permite subir canciones y una vez subidas, escucharlas en un reproductor. Puedes tambien incrustar el reproductor en cualquier página/blog con buen soporte para flash.
Wordpress.com no cuenta con eso, y para poder insertar las canciones hospedadas en goear hay que hacer un pequeño truco: solo hay que obtener la URL directa del archivo de audio.
http://www.goear.com/files/xmlfiles/Y/secmXXXXXXX.xml
Ese formato de URL es el que dan para los archivos XML de todas las canciones; es el que nos interesa.
Las XXXXXXX son los caractéres del identificador del archivo y Y es el primer carácter alfanumérico del identificador del mismo, si el id de la canción es por ejemplo ‘cee4e69‘, nos quedaría algo como esto:
http://www.goear.com/files/xmlfiles/c/secmcee4e69.xml
La URL de mi archivo es: http://www.goear.com/files/sst5/mp3files/21012010/99b048c63de8ae81e93aed14055fdff1.mp3
Lo pongo para que no se me olvide.
Truco robado de: http://matandotigres.wordpress.com/2007/05/29/goear-wordpress-musica-en-tu-blog/
:wq
10 comments