Rss

  • flickr
  • linkedin
  • google

Archives for : Utilidades

Acelerar linux disminuyendo el uso de swap y mejorando la gestion de caché

Vamos a ver como podemos aumentar la velocidad de nuestro sistema linux, bien sea un un equipo de escritorio, o un servidor, aplicando una sencilla configuración para que el sistema operativo no “abuse” del uso de swap.

 

Que es la swap

La swap también llamada espacio de intercambio, es na partición de no de nuestros discos duros, que podríamos decir que se usa del mismo modo que la RAM, para complementar a esta. Esto que en principio es una solución para cuando andamos justos de memoria RAM, puede llegar a ser un problema, dado que las tasas de lectura y escritura en nuestro disco duro son infinitamente menores que las memorias RAM. Se pueden tener en cuenta diferentes factores para incrementar la velocidad de la swap:

  • Si disponemos de varios discos duros, debemos de tener la partición de la swap en el disco que menos uso tenga, normalmente uno en el cual no esté situado el sistema operativo.
  • Si tenemos la posibilidad de situar la swap en un disco de estado sólido (SSD), también conseguiríamos aumentar  su velocidad.
  • Y por último el caso que vamos a tratar aquí,  modificar el “swappiness

 

Modificar el uso de SWAP

El “encargado” de decidir cuando se comenzará a usar la swap es nuestro kernel, y nosotros (humildes usuarios), podemos decirle al kernel, si queremos que empiece a usar la swap más pronto o más tarde mediante la modificación del valor de swappiness.

El valor de swappiness puede tomar oscila entre 0 y 100, siendo 0 el valor en el cual no se usará swap, y 100, para un uso constante de swap. En la mayoría de de sistemas operativos linux, el valor de swappiness viene fijado en 60, y esto puede provocar situaciones en las que teniendo más de la mitad de la RAM libre, ya estemos usando “considerable” swap.

Comprobar el valor de swappiness

Para comprobar que valor de swappiness tenemos configurado, usaremos el siguiente comando

cat /proc/sys/vm/swappiness

Modificar valor de swappiness, comprobar valor de swappiness

 

 

Cambiar valor de swappiness

El valor de swappiness es pasado al kernel a través del fichero /etc/sysctl.conf. Por tanto, debemos acceder a el y modificarlo con el valor que consideremos oportuno.

sudo nano /etc/sysctl.conf

y al final del archivo añadiremos:

# Disminuir el uso de intercambio a 10
vm.swappiness=10
# Mejorar la gestión de cacahe
vm.vfs_cache_pressure=50

Modificar valor de swappiness

 

 

Una vez guardados los cambios, reiniciaremos nuestro sistema operativo y ya tendremos la nueva configuración de swappiness en funcionamiento. Lo podremos comprobar con el comando anterior.

Con esto aumentaremos el rendimiento en los equipos en los que el rendimiento se ve reducido porque estamos usando swap cuando aún disponemos de memoria RAM libre, obviamente, si el kernel hace uso de swap porque la RAM se ha acabado, esta configuración nova a servir de nada. De todas formas, lo mejor en cada caso es experimentar con diferentes valores de swappiness y ver cual es el que mejor rendimiento nos aporta en nuestro caso.

Usar Amazon EC2 como servidor git para control de versiones

Vamos a ver como usar nuestra instancia de Amazon EC2, para albergar en ella nuestro servidor de control de versiones con git. Aunque del mismo modo, lo podríamos realizar en cualquier otro servidor o incluso en un PC que usemos para dicho propósito.

 

Para los que desconozcan lo que es un sistema de control de versiones (aunque su propio nombre nos lo da a entender),  es un sistema que nos permite la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Se puede resumir como un sistema de copia de seguridad de nuestro trabajo, que realiza y almacena copias del estado del mismo durante su desarrollo para poder revertirlo, o para poder consultar cambios en cualquier momento.

 

Instalar git en nuestro equipo local

Antes de nada, si no tenemos instalado git en nuestro equipo local, procedemos haciéndolo:

sudo apt-get install git

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en equipo local

 

Configurar git en el equipo local

git config --global user.name "nombre_usuario" Sustituimos nomre_usuario por nuestro nombre de usuario que deseemos usar

git config --global user.email usuario@email.com Sustituimos usuario@email.com por nuestro correo.

git config --global core.editor "sublw" Configuramos el editor que deseemos usar por defecto, en este caso Sublime Text

 

Usar Amazon EC2 como servidor git para control de versiones, configurar git en el equipo local

 

Iniciar repositorio en equipo local

cd directorio_repositorio accederemos al repositorio que deseemos usar como repositorio local sustituyendo directorio_repositorio por la ruta correspondiente.

git init Inicializamos el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio en equipo local

 

Añadir archivos y directorios al repositorio

Vamos a crear unos archivos y carpetas de ejemplo para poder añadirlos al repositorio

mkdir js css Creamos dos carpetas

touch index.html js/main.js css/style.css Creamos tres archivos vacios

 

Usar Amazon EC2 como servidor git para control de versiones, crear archivos de ejemplo

 

git add . Añadimos todos los archivos del directorio al repositorio

git commit -m "Primer commit de prueba" Validamos los cambios en el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, añadir archivos al repositorio y realizar el primer commit

 

Crear repositorio remoto

ssh usuario@servidor Accederemos por ssh a nuestro servidor remoto, en este caso, nuestra instancia de Amazon EC2 con Ubuntu Server instalado  aquí.

sudo apt-get install git Instalaremos git en el servidor

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en el servidor

 

cd directorio_servidor_remoto Nos situaremos en el directorio que deseemos usar como repositorio remoto, podemos crear uno previamente.

 

Usar Amazon EC2 como servidor git para control de versiones, acceder al directorio remoto para usar como repositorio

 

git --bare init Iniciamos el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio remoto

 

Asociar repositorio local a uno remoto

cd directorio_repositorio En el equipo local nos volvemos a situar en el directorio en el que hemos creado el repositorio al principio

git remote add nombre_repositorio usuario@servidor:git/directorio_remoto Asociamos el repositorio local al remoto

repositorio_prueba Nombre dado al repositorio

usuario Nuestro nombre de usuario para ssh

servidor Dirección de nuestro servidor ssh para acceso ssh

nombre_repositorio Directorio remoto en el que se encuentra el repositorio

git push  nombre_repositorio master Realizamos los cambios en el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, asociar repositorio local con repositorio remoto

 

De este modo, tendremos nuestros datos a salvo de cualquier problema con nuestro equipo, además de poder trabajar varias personas en el mismo proyecto, o poder revertir el estado del mismo a cualquier versión anterior de la que se haya hecho un commit.

Es muy recomendable trabajar usando control de versiones, no solo programadores, esto es extensible casi todo tipo de proyectos, y aunque al principio pueda resultar un poco lioso, pronto se le coge el truco y el hábito.

 

Aquí tenéis una chuleta de comandos útiles para usar con git.

 

Chuleta de comandos git (cheat sheet)

 

Esta es una chuleta de comandos útiles para usar con el sistema de control de versiones git.

 

Configurar git

git config --global user.name "David" Establece el nombre de usuario

git config --global user.email "usuario@email.com" Establece el correo del usuario

git config --global core.editor "editor" Configura el editor de texto sustituyendo “editor” por el editor correspondiente, por ejemplo:

sublw: SublimeText

gvim -f: gVim en linux

emacs

git config --global merge.tool meld Configura la herramienta de diferencias en este caso Meld

git config --list Muestra un listado con las configuraciones

 

Crear repositorio

cd ~/git/.... Nos situamos en directorio que deseemos

git init Inicializamos el directorio

 

Añadir archivos a un repositorio

git add .  Añade todos los archivos del directorio

git add *.c  Añade todos los archivos con extensión .c

git add README Añade el archivo README

 

Excluir archivos o directorios explicitamente

touch .gitignore Creamos el fichero .gitignore  en el cual vamos a definir los archivos o directorios que excluiremos

Ejemplo para ignorar JPG’s y PNG’s

/*.jpg
/*.jpeg
/*.png

Ejemplo para ignorar carpetas vacías

/empty

Ejemplo para ignorar un archivo individual

/archivo.dumm

Eliminar archivos

git rm README Elimina el archivo README del disco y del repositorio (una vez commiteado).

git rm --cached README Elimina el archivo README del repositorio pero no del disco duro.

 

Renombrar archivos

git mv original novo Cambiamos el nombre del archivo “original” a “nuevo”.

 

Validar los cambios – commit

git commit -m “Mensaje” Añade los archivos y realiza el commit.

git commit -a -m “Mensaje” Añade los archivos y realiza el commit, pero en caso de haber creado o eliminado archivos, se debe de usar el comando add previamente al commit.

git commit --amend Para modificar el último commit y volver a hacerlo. Ejemplo:

git commit -m “mensaje” Añadimos los archivos y realizamos el commit.

git add archivo_del_que_nos_olvidamos_antes Añadimos el archivo archivo_del_que_nos_olvidamos_antes del que nos habíamos olvidado.

git commit –amend Modifica el último commit para incluir el archivo archivo_del_que_nos_olvidamos_antes.

git reset HEAD file Nos permite hacer unstaging sobre file, para que no sea enviado en el próximo commit. Lógicamente ya había sido añadido anteriormente con git add file.

 

Monitorizar proyecto:

git status Muestra el estado del proyecto.

git log Lista todos los commits (con la fecha y hora, el autor y la suma de verificación) realizados en orden cronológico inverso, es decir los más recientes primero.

git log -p -2 La opción -p nos mostrará además las diferencias, y la opción -2 limitará la salida a los dos últimos commits.

git log --stat Muestra estadísticas abreviadas de los commits.

git log --pretty:oneline Muestra estadísticas en una línea

git log --pretty=format:”%h - %an, %ar : %s ” Muestra estadísticas formateadas a nuestro gusto:

%H  Commit hash
%h  Abbreviated commit hash
%T  Tree hash
%t  Abbreviated tree hash
%P  Parent hashes
%p  Abbreviated parent hashes
%an Author name
%ae Author e-mail
%ad Author date (format respects the –date= option)
%ar Author date, relative
%cn Committer name
%ce Committer email
%cd Committer date
%cr Committer date, relative
%s  Subject

gitk Muestra herramienta gráfica con las estadísticas de los commits.

 

Restaurar el estado del último commit:

git checkout -f Forzamos la recuperación total del repositorio al último commit.

git checkout -- file Recuperamos la última versión de file de la que hemos realizado un commit.

 

Crear repositorio remoto usando ssh

ssh usuario@servidor Accedemos por ssh al servidor

cd ~/git/carpeta Nos situamos en la carpeta en la que deseamos ubicar el repositorio

git --bare init Iniciamos el repositorio.

 

Asociar repositorio local a uno remoto

cd ~/git/carpeta Nos situamos en la carpeta correspondiente.

git init Iniciamos el repositorio

git remote add origin david@hptc.davidpuente.es:git/carpeta Asociamos el repositorio local al remoto. origin es el nombre dado al repositorio.

git add . Añadimos todos los ficheros y directorios.

git commit -m “Mensaje” Realizamos el commit en local.

git push origin master Realizamos los cambios en el servidor remoto.

 

Clonar repositorio remoto por ssh

git clone servidor.com:git/proba Clonará el repositorio remoto.

git clone servidor.com:git/proba proba2 Repositorio clonado en carpeta proba2

Diferencias

git diff Muestra las diferencias de los archivos modificados que aún no se han estacionado.

git diff --cached o git diff --staged (versiones posteriores a la 1.6.1) Muestra las diferencias de los archivos modificados y estacionados, a la espera de ser commiteados.

 

Esto es todo de momento, si creéis que falta algo de uso habitual, lo podéis añadir a los comentarios y estaré encantado de añadirlo.

 

Instalar jdk java 8 de forma fácil y rápida en Ubuntu

 

En esta entrada vamos a ver como instalar java fácilmente en en ubuntu (o en xubuntu, kubuntu, etc.).

 

Añadir repositorio para java

Añadiremos un repositorio desde el que instalar java con el comando:

sudo add-apt-repository ppa:webupd8team/java

Instalar Java en ubuntu, añadir repositorio java

Instalar java

A continuación realizamos un update de los paquetes de nuestra lista de repositorios:

sudo apt-get update

Y ya podremos proceder con la instalación (en realidad lo que hace el siguiente comando es descargar el instalador de java y lanzarlo)

sudo apt-get install oracle-java8-installer

También podríamos instalar java 6 o java 7 sustituyendo el comando anterior por uno de los siguientes comandos:

sudo apt-get install oracle-java6-installer

o

sudo apt-get install oracle-java7-installer

Nos comunicará que para continuar con la instalación, debemos aceptar la licencia disponible en java.com/license, (podemos echarle un vistazo, y si estamos de acuerdo con ella) aceptamos.

Instalar Java en ubuntu, aceptar licencia

 

Nos volverá a preguntar por otra licencia, en este caso “Oracle binary code license terms”, respondemos que si.

Instalar Java en ubuntu, aceptar licencia 2

 

Y comenzará el proceso de descarga del jdk de java

 

Instalar Java en ubuntu, descarga jdk java

 

Normalmente en el proceso de instalación, ya se configura como la opción predeterminada de java la que estamos instalando. Podremos comprobar la versión de java y javac en uso con:

java -version

y

javac -version

Instalar Java en ubuntu, comprobar versión java y javac

 

Pero en caso de no estar como predeterminado nuestro java recién instalado, lo podremos seleccionar entre alternativas disponibles con:

sudo update-alternatives –config java para java

y

sudo update-alternatives –config javac para javac

 

Y ya está listo nuestro java para ser usado, en este caso su primer uso va a ser con Android Studio

 

Truco editor vi, guardar un archivo que hemos abierto sin permisos

Seguramente que no soy el único que se ha olvidado el sudo abriendo un fichero protegido alguna vez, ha modificado el fichero, y a la hora de guardarlo, zas, en toda la boca! (Bazzinga).

Pues hay una solución muy interesante para estos casos, bastará con ejecutar el siguiente comando dentro de vi:

:w  !sudo  tee  %

 

Sencillo y muy útil , por lo menos para mi. Hay que ver que corto se hizo este artículo…

Ejecutar el último comando usado o el ultimo que empieza por … con !!

Vamos a ver un un comando muy simple y que a primera vista parece que no tiene mucha utilidad, pero en realidad puede tener más de la que parece, el comando en cuestión es !!, y lo que hace es repetir la última orden introducida en el terminal.

!!

repetir_comando

En este ejemplo podemos ver una utilidad del comando !!, en la primera linea, he intentado recargar el servicio de apache con service apache2 reload, con un usuario sin privilegios,  y he recibido el correspondiente mensaje de error. A continuación podía haber escrito el comando correctamente sudo service apache2 reload, podía haber pulsado la tecla arriba para que me apareciese la última linea escrita, desplazarme al principio de la linea y añadir sudo, o hacer uso de !!, escribiendo sudo !!, lo que me parece lo más rápido.

También podemos ejecutar el último comando que empiece por determinada letra.

!c

Ejecutará el último comando introducido que empiece por la letra c

 

Espero que os sea útil.

Encontrar un comando del que no me acuerdo

¿Cuantas veces queremos hacer algo muy concreto en una terminal, y se nos olvidó el comando en cuestión?

O incluso necesitamos hacer algo, no sabemos si hay algún comando que lo haga, y no disponemos de internet para buscarlo en ese momento.

Pues existe un comando que nos puede ayudar en estos casos, y es apropos. Lo que hace este comando es buscar dentro de man la palabra que pasemos como argumento.

Por ejemplo hoy lo he usado para buscar un programa que probé hace unos días para realizar capturas de pantalla, y que por mucho que lo intenté, no me acordaba del nombre. Pues bien, como es un programa para realizar capturas de pantalla, lo obvio es que en su man aparezca la palabra screenshot (captura de pantalla en inglés), por lo que tecleé:

apropos screenshot

y el resultado fue el siguiente:

apropos

Tras lo cual ya recordé el nombre del programa, shutter, nombre obvio por otro lado.

 

Espero que les sea tan útil este comando como me lo ha sido a mi hoy.