Actualizar la hora en linux con NTPDATE y HWCLOCK

Un problema comun que nos encontramos muchas veces es que la hora del sistema no es la misma que con la que estamos trabajanda.

Pero esto podemos cambiarlo facilmente con ntpdate y hwclock.

Ntpdate es un comando que utiliza el protocolo Network Time Protocol (NTP) para sincronizar los relojes de los sistemas informáticos.

Existen muchos servidores para utilziar el protocolo NTP, en el ejemplo voy a utilizar el oficial en España. hora.roa.es

Con el comando “ntpdate -s hora.roa.es” actualizamos la hora del sistema y con el comando “hwclock –hctosys” forzar al sistema a estar sincronizado, con lo que combinando los comandos y configurandolo en el crontab obtenemos un perfecta tarea para mantener sincronizado el sistema informatico.

crontab -e
# Sincronizamos la hora de madrugada
10 5 * * * ntpdate -s hora.roa.es; hwclock --systohc

Listar directorios en linux y ordenar por tamaño

En determinadas ocasiones y mas en equipos compartidos se disparan los tamaños de los directorios y queremos saber cual son los que mas ocupan.

En en linux se realiza de una manera muy sencilla con du (disk usage).

Con el comando du -s nombre_directorio sabremos el tamaño que tiene, y añadiendo -h nos dice el tamaño en formato legible para humanos, es decir en kb, mb, etc.

du -sh tmp
532M   tmp

Ahora que ya sabemos el espacio de un directorio queremos saber, el espacio de su contenido y lo haremos añadiendlo el parametro –max-depth=1

cd /tmp
du -h --max-depth=1
900K    ./Example
4.0K    ./Foredettinghelgen
44K     ./IssueTrackerBlogInterface
1.9M    ./IssueTrackerProduct
12K     ./fried
2.1M    ./ies4linux-2.0.5
4.8M    ./pyexcelerator
52K     ./levenstein
4.0K    ./newitpdesign
4.7M    ./photoresizing
69M     ./databases
4.5M    ./i18nextract-sa
532M    .

Y ya por ultimo si lo queremos tener ordenado por tamaño añadimos el comando sort

cd /tmp
du --max-depth=1 | sort -n
4       ./Foredettinghelgen
4       ./newitpdesign
12      ./fried
44      ./IssueTrackerBlogInterface
52      ./levenstein
900     ./Example
1856    ./IssueTrackerProduct
2140    ./ies4linux-2.0.5
4528    ./i18nextract-sa
4796    ./photoresizing
4872    ./pyexcelerator
70392   ./databases
544608  .

Con estos sencillos comandos puedes obtener el tamaño de tus directoiros y ordenarlos segun tus necesidades.

Ver fichero en linux sin comentarios

A veces nos encontramos con que queremos editar un fichero y esta lleno de comentarios y se hace dificil de leer, pues voy a explciar una manera muy sencilla de mostrar el fichero sin los famosos comentarios.

Para ver el fichero sin comentarios utilzaremos el comando grep.

Partimos del comando grep “#” comentarios.txt que lo que lo que haces es mostarnos las lineas con comentarios (caracter #):

grep "#" comentarios.txt
#Comentario 1
#Comentario 2

Lo siguiente es lanzar el comando grep -v “#” comentarios.txt para que nos muestra el resultado inverso.

grep -v "#" comentarios.txt
Texto 1
Texto 2

Y si lo que queremos es guardarlo en un fichero a parte redirigimos las salida con grep -v “#” comentarios.txt > sincomentarios.txt:

grep -v "#" comentarios.txt > sincomentarios.txt

cat sincomentarios.txt
Texto 1
Texto 2

Con estos sencillos comandos podemos servirnos para omitir comentarios en los ficheros

¿Como solucionar el error “curl: (60) SSL certificate problem: unable to get local issuer certificate “?

Estamos ante un error poco común, si has instalado curl desde repositorio con yum o con apt probablemente nunca encontraras un error de este tipo.

Este error suele aparecer en distros antiguas y esta relacionada con el cambio de versión de curl, si te ha salido este error es porque seguramente hayas actualizado curl compilándolo y no hayas incluido el certificado de confianza.

Tambien puede aparecer al intentar hacer un wget con las nuevas versiones de openssl:

OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
 Unable to establish SSL connection

Estos errores son debidos a que en versiones antiguas de curl o openssl no se establecía relación de confianza y no se necesitaba ningún certificado, pero las versiones actuales si lo requieren y al no encontrarlo el sistema devuelve este error.

La solución es bastante sencilla, basta con descargarse el certificado en la página oficial de  curl https://curl.haxx.se/ca/cacert.pem y guardarlo en la ubicación de los certificados de la versión de Linux en la que estés trabajando.

"/etc/ssl/certs/ca-certificates.crt",                // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt",                  // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem",                            // OpenSUSE
"/etc/pki/tls/cacert.pem",                           // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7

En el caso de que necesites utilizar curl con php bastaría con añadirlo al fichero de configuración php.ini

curl.cainfo = "/etc/ssl/certs/cacert.pem"
openssl.cafile  = "/etc/ssl/certs/cacert.pem"

Con estos pasos el error queda resuelto y podrás utilizar curl perfectamente.

Como añadir la variable MySQL al $PATH para resolver el error: “mysql: command not found”

En sistemas Linux nunca tiramos de rutas absolutas u utilizamos las variables del sistema como en el caso del cliente mysql.

Sera costumbre de instalar todo con apt o yum, etc.

Pero bueno siempre hay casoso especiales, como tener que compilar mysql porque lo pide tu jefe o que en un caso de muñonismo hayas borrado la variable del path.

En cualquier caso si lanzas el comando mysql y te muestra el error “mysql: command not found” no hay que preocuparse porque hay fácil solución.

Basta con añadir la ruta del mysql a la variable del sistema con:

export PATH=${PATH}/usr/local/mysql/bin/

en este caso probamos el comando mysql y si nos funciona lo siguente es añadirlo permanente en el fichero . bash_profile del usuario que queremos que ejecute el comando

echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.bash_profile

Nunca me acuerdo del barrabin barrabash #!/bin/bash

Bienvenidos a mi blog de autoayuda para administradores de sistemas, los más puristas no lo reconocerán pero a todo el mundo se le olvida el dichoso barrabin barrabash (#!/bin/bash) y que mejor que utilizar la primera entrada para la cabecera de los scripts en bash.

Dejo el código del archiconocido hola mundo:

#!/bin/bash

echo 'hola mundo';

Y ya sabeis no os olvides de dar permisos de ejecución al script (chmod +x)