miércoles, agosto 13

Como reemplazar texto de varios archivos en Linux


A continuación voy a explicar como reemplazar texto en varios archivos de texto plano de Linux. Esto es muy útil cuando por ejemplo tenemos un sitio web donde queremos modificar el nombre de un objeto o de una variable que sabemos se encuentra en muchos archivos.

El comando para reemplazar texto es el siguiente.

# sed -i 's/palabra-antigua/palabra-nueva/g' *.txt

Aqui estamos reemplazando en todos los archivos *.txt del directorio actual la palabra "palabra-antigua" por la palabra "palabra-nueva".

Tomar en cuenta que reconoce mayúsculas y minúsculas, es decir los siguientes dos comandos reemplazan palabras diferentes.

# sed -i 's/Pedro/Juan/g' *.*

# sed -i 's/pedro/juan/g' *.*


sábado, agosto 9

Como saber que librerias utiliza un programa o proceso en Linux


En ocasiones necesitamos saber que librerias utiliza un programa instalado en Linux o talvez de un proceso que se encuentra en ejecución, para lo cual podemos ocupar los siguientes comandos.

ldd /carpeta/comando

Por ejemplo.

# ldd /usr/bin/ssh

Retornará un resultado como el siguiente.

        linux-gate.so.1 (0xffffe000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xb7601000)
        libcrypto.so.1 => /lib/libcrypto.so.1 (0xb7444000)
        libdl.so.2 => /lib/libdl.so.2 (0xb743f000)
        libutil.so.1 => /lib/libutil.so.1 (0xb743b000)
        libz.so.1 => /lib/libz.so.1 (0xb7424000)
        libnsl.so.1 => /lib/libnsl.so.1 (0xb7409000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0xb73d6000)
        libc.so.6 => /lib/libc.so.6 (0xb724b000)
        /lib/ld-linux.so.2 (0xb76ff000)


Otra forma de obtenerlo es con el comando siguiente.

objdump -p /carpeta/comando | greep NEEDED

Por ejemplo

objdump -p /usr/bin/ssh | grep NEEDED

Lo que retorna el siguiente resultado.

  NEEDED               libresolv.so.2
  NEEDED               libcrypto.so.1
  NEEDED               libdl.so.2
  NEEDED               libutil.so.1
  NEEDED               libz.so.1
  NEEDED               libnsl.so.1
  NEEDED               libcrypt.so.1
  NEEDED               libc.so.6

Ahora si queremos saber que librerías ejecuta un proceso que se esta ejecutando, utilizamos el siguiente comando.

pldd PID

Por ejemplo.

# pldd 823

Retorna el siguiente resultado.

823:    /usr/bin/wbar
linux-gate.so.1
/usr/local/lib/libImlib2.so.1
/usr/lib/libX11.so.6
/usr/lib/libstdc++.so.6
/lib/libm.so.6
/usr/lib/libgcc_s.so.1
/lib/libc.so.6
/usr/lib/libXext.so.6
/usr/lib/libxcb.so.1
/usr/lib/libXau.so.6
/usr/lib/libXdmcp.so.6
/usr/lib/libfreetype.so.6
/lib/libbz2.so.1
/usr/lib/libpng14.so.14
/lib/libz.so.1
/lib/libdl.so.2
/lib/ld-linux.so.2
/usr/local/lib/imlib2/loaders/zlib.so
/usr/local/lib/imlib2/loaders/xpm.so
/usr/local/lib/imlib2/loaders/tiff.so
/usr/lib/libtiff.so.3
/usr/lib/libjpeg.so.8
/usr/local/lib/imlib2/loaders/tga.so
/usr/local/lib/imlib2/loaders/pnm.so
/usr/local/lib/imlib2/loaders/png.so
/usr/local/lib/imlib2/loaders/lbm.so
/usr/local/lib/imlib2/loaders/jpeg.so
/usr/local/lib/imlib2/loaders/id3.so
/usr/lib/libid3tag.so.0
/usr/local/lib/imlib2/loaders/gif.so
/usr/lib/libgif.so.4
/usr/local/lib/imlib2/loaders/bz2.so
/usr/local/lib/imlib2/loaders/bmp.so
/usr/local/lib/imlib2/loaders/argb.so

También el programa "pmap" puede ser usado para el mismo fin como muestro a continuación.

# pmap 823

823:   wbar
08048000     64K r-x--  /usr/bin/wbar
08058000      4K rw---  /usr/bin/wbar
08fd3000   2920K rw---    [ anon ]
b6fc3000    360K r----  /usr/share/fonts/TTF/DejaVuSerif.ttf
b701d000    280K rw---    [ anon ]
b70a9000     56K r-x--  /usr/lib/libid3tag.so.0.3.0
b70b7000      8K rw---  /usr/lib/libid3tag.so.0.3.0
b70b9000    220K r-x--  /usr/lib/libjpeg.so.8.0.1
b70f0000      4K rw---  /usr/lib/libjpeg.so.8.0.1
b70f1000    388K r-x--  /usr/lib/libtiff.so.3.9.7
b7152000      8K rw---  /usr/lib/libtiff.so.3.9.7
b7180000      4K r-x--  /usr/local/lib/imlib2/loaders/argb.so
b7181000      4K rw---  /usr/local/lib/imlib2/loaders/argb.so
b7182000     12K r-x--  /usr/local/lib/imlib2/loaders/bmp.so
b7185000      4K rw---  /usr/local/lib/imlib2/loaders/bmp.so
b7186000      4K r-x--  /usr/local/lib/imlib2/loaders/bz2.so
b7187000      4K rw---  /usr/local/lib/imlib2/loaders/bz2.so
b7188000    220K r----  /usr/lib/locale/en_US/LC_CTYPE
b71bf000     12K rw---    [ anon ]
b71c2000     12K r-x--  /lib/libdl-2.17.so
b71c5000      4K r----  /lib/libdl-2.17.so
b71c6000      4K rw---  /lib/libdl-2.17.so
b71c7000     84K r-x--  /lib/libz.so.1.2.8
b71dc000      4K rw---  /lib/libz.so.1.2.8
b71dd000    168K r-x--  /usr/lib/libpng14.so.14.12.0
b7207000      4K rw---  /usr/lib/libpng14.so.14.12.0
b7208000     64K r-x--  /lib/libbz2.so.1.0.6
b7218000      4K rw---  /lib/libbz2.so.1.0.6
b7219000    548K r-x--  /usr/lib/libfreetype.so.6.10.2
b72a2000     16K rw---  /usr/lib/libfreetype.so.6.10.2
b72a6000      4K rw---    [ anon ]
b72a7000     20K r-x--  /usr/lib/libXdmcp.so.6.0.0
b72ac000      4K rw---  /usr/lib/libXdmcp.so.6.0.0
b72ad000      8K r-x--  /usr/lib/libXau.so.6.0.0
b72af000      4K rw---  /usr/lib/libXau.so.6.0.0
b72b0000    124K r-x--  /usr/lib/libxcb.so.1.1.0
b72cf000      4K rw---  /usr/lib/libxcb.so.1.1.0
b72d0000     68K r-x--  /usr/lib/libXext.so.6.4.0
b72e1000      4K rw---  /usr/lib/libXext.so.6.4.0
b72e2000   1556K r-x--  /lib/libc-2.17.so
b7467000      8K r----  /lib/libc-2.17.so
b7469000      4K rw---  /lib/libc-2.17.so
b746a000     12K rw---    [ anon ]
b746d000    108K r-x--  /usr/lib/libgcc_s.so.1
b7488000      4K rw---  /usr/lib/libgcc_s.so.1
b7489000      4K rw---    [ anon ]
b748a000    256K r-x--  /lib/libm-2.17.so
b74ca000      4K r----  /lib/libm-2.17.so
b74cb000      4K rw---  /lib/libm-2.17.so
b74cc000    876K r-x--  /usr/lib/libstdc++.so.6.0.18
b75a7000      4K -----  /usr/lib/libstdc++.so.6.0.18
b75a8000     16K r----  /usr/lib/libstdc++.so.6.0.18
b75ac000      4K rw---  /usr/lib/libstdc++.so.6.0.18
b75ad000     28K rw---    [ anon ]
b75b4000   1228K r-x--  /usr/lib/libX11.so.6.3.0
b76e7000     16K rw---  /usr/lib/libX11.so.6.3.0
b76eb000    384K r-x--  /usr/local/lib/libImlib2.so.1.4.6
b774b000      4K rw---  /usr/local/lib/libImlib2.so.1.4.6
b774c000     80K rw---    [ anon ]
b7760000     28K r-x--  /usr/lib/libgif.so.4.1.6
b7767000      4K rw---  /usr/lib/libgif.so.4.1.6
b7768000      8K r-x--  /usr/local/lib/imlib2/loaders/gif.so
b776a000      4K rw---  /usr/local/lib/imlib2/loaders/gif.so
b776b000     12K r-x--  /usr/local/lib/imlib2/loaders/id3.so
b776e000      4K rw---  /usr/local/lib/imlib2/loaders/id3.so
b776f000      8K r-x--  /usr/local/lib/imlib2/loaders/jpeg.so
b7771000      4K rw---  /usr/local/lib/imlib2/loaders/jpeg.so
b7772000     12K r-x--  /usr/local/lib/imlib2/loaders/lbm.so
b7775000      4K rw---  /usr/local/lib/imlib2/loaders/lbm.so
b7776000     12K r-x--  /usr/local/lib/imlib2/loaders/png.so
b7779000      4K rw---  /usr/local/lib/imlib2/loaders/png.so
b777a000      8K r-x--  /usr/local/lib/imlib2/loaders/pnm.so
b777c000      4K rw---  /usr/local/lib/imlib2/loaders/pnm.so
b777d000      8K r-x--  /usr/local/lib/imlib2/loaders/tga.so
b777f000      4K rw---  /usr/local/lib/imlib2/loaders/tga.so
b7780000     12K r-x--  /usr/local/lib/imlib2/loaders/tiff.so
b7783000      4K rw---  /usr/local/lib/imlib2/loaders/tiff.so
b7784000     12K r-x--  /usr/local/lib/imlib2/loaders/xpm.so
b7787000      4K rw---  /usr/local/lib/imlib2/loaders/xpm.so
b7788000      4K r-x--  /usr/local/lib/imlib2/loaders/zlib.so
b7789000      4K rw---  /usr/local/lib/imlib2/loaders/zlib.so
b778a000      4K r----  /usr/lib/locale/en_US/LC_NUMERIC
b778b000      4K r----  /usr/lib/locale/en_US/LC_TIME
b778c000      4K r----  /usr/lib/locale/en_US/LC_MONETARY
b778d000      4K r----  /usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
b778e000      4K r----  /usr/lib/locale/en_US/LC_PAPER
b778f000      4K r----  /usr/lib/locale/en_US/LC_NAME
b7790000      4K r----  /usr/lib/locale/en_US/LC_ADDRESS
b7791000      4K r----  /usr/lib/locale/en_US/LC_TELEPHONE
b7792000      4K r----  /usr/lib/locale/en_US/LC_MEASUREMENT
b7793000      4K r----  /usr/lib/locale/en_US/LC_IDENTIFICATION
b7794000      4K rw---    [ anon ]
b7795000    132K r-x--  /lib/ld-2.17.so
b77b6000      4K r----  /lib/ld-2.17.so
b77b7000      4K rw---  /lib/ld-2.17.so
bfa1e000    132K rw---    [ stack ]
ffffe000      4K r-x--    [ anon ]
 total    10816K





lunes, julio 28

Como saber el número de conexiones actuales a mi servidor MySQL en Linux


Para saber cuantas conexiones actuales hay en nuestro servidor MySQL o MariaDB ejecutamos el siguiente comando en una pantalla Terminal desde el servidor o conectados a través de SSH.

$ sudo netstat -antp | grep :3306 | wc -l 

Esto devolverá el número de conexiones actuales, si queremos el detalle de las conexiones, ejecutamos el siguiente comando.

$ sudo netstat -antp | grep :3306

En ambos comandos tomo por hecho que el puerto del servidor es el 3306, si el tuyo es diferente debes modificar este parámetro.



martes, julio 22

Mozilla Firefox 31 disponible para descargar


Este día fue liberado Firefox 31 para Windows, Mac, Linux y Android.
 
Entre sus mejores principales estan:
  • Seguridad mejorada para descargas, lo cual intenta bloquear malware conocido.
  • Un cuadro de busqueda ha sido agregado al tab de nueva página.
  • Una nueva librería de vereificación de certificados.
  • Soporte para HTML WebVTT.
  • Solución a varios Bugs.
Desde este día esta disponible en su repositorio público de Mozilla.

Si ya cuentas con Firefox y quieres actualizarlo, basta con que hagas clic en el menu de Ayuda, luego en "Acerca de", automáticamente empezará a descargar la nueva versión, una vez descargada te pedirá que reinicies Firefox y eso es todo.


viernes, julio 4

¿Por cuanto tiempo debo Registrar o Contratar un Dominio?


Este es un tema que muchos pasan por alto pero es importante si queremos tener un buen ranking en los resultados de busquedas de Google.

¿Sabias que Google es un registrador de Dominios? asi es, igual que otros registradores como Godaddy, etc. Google también puede registrar dominios, es una licencia carísima que por sobre todo Google usa para ir al interior del sistema de los registradores y obtener información sobre tu dominio que de otra forma estaría prohibida para ellos.

Por ejemplo Google puede saber con que registrador has adquirido tu dominio, en que proveedor de Hosting esta alojada tu página, por cuanto tiempo lo contrataste, si esa granja de servidores aloja otras páginas de mala reputación (por ejemplo sitios pornográficos), etc.

¿Por que es importante el tiempo por el cual contrato un dominio?

La mayoría de la gente contrata dominios por un tiempo mínimo que es un año, pero este cae en el rango de los dominios que nuncan son actualizados, ni siquiera adquieren hosting por lo cual no tienen contenido y a la larga son cancelados despues de un año.

Los sitios que se registran por tres años o más años, generan confianza a Google de que son proyectos serios en los que se estará trabajando por un largo tiempo, por lo cual tienen preferencia a la hora de indexar su contenido, asi como a la hora de presentar resultados.

Asi que la próxima ves que contrates un nuevo dominio, piensa en este punto, la verdad la diferencia no es mucha y es más, mientras más tiempo contratas, más barata es la cuota.

Otros temas relacionados.

Web Hosting Top Ten, Los 10 Mejores Proveedores de Hosting Para Alojar tu Pagina
Top VPS Hosting, Los 10 Mejores Proveedores de Servers VPS