Cómo ver los metadatos de una imagen desde el terminal de Ubuntu con Imagemagick

En su día habíamos hablado sobre cómo eliminar los metadatos de una imagen en equipos con Linux, hoy vamos a ver cómo consultar esos metadatos.

Lo haremos con la herramienta Identify, que es parte del paquete de software ImageMagick presente en varios repositorios. En cualquier distribución derivada de Debian, como pueden ser Ubuntu o Mint, estará presente. Basta con abrir un terminal y teclear:

sudo apt-get install imagemagick

Ahora nos bastaría ejecutar el comando identify con la ruta de la imagen para ver sus datos:

identify nombredelaimagen.jpg

La saldría sería algo así:

¿Te parece poco detalle? Bueno, puedes sacar toda la información disponible usando el parámetro -verbose:

identify -verbose nombredelaimagen.jpg

En la captura que hice solo me entraban parte de los datos por estar en el portátil, para que te hagas una idea:

Instalar QGIS en Ubuntu 19.04

Hay un montón de cosas que me gustaría estudiar más a fondo pero tengo poco tiempo para ponerme: contabilidad, sistemas de información geográficos, contabilidad, logística, Python… Pero poco a poco voy mirando alguna cosilla de estos temas. Hoy vamos a ver cómo instalar QGIS en Ubuntu.

QGIS es un Sistema de Información Geográfica (SIG) de código abierto bajo licencia GNU, siendo uno de los más populares y existiendo versiones para Linux, Unix, Mac OSX, Windows y Android.

¿Cómo instalamos en la, hasta el momento, última versión de Ubuntu?

Lo primero es ir al fichero /etc/apt/sources.list y modificarlo con un editor de texto. Allí habría que añadir al final las líneas:

deb     https://qgis.org/ubuntu disco main
deb-src https://qgis.org/ubuntu disco main

Tras esto añadimos la clave pública del repositorio:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key CAEB3DC3BDF7FB45

Y con todo esto ya podemos instalar sin problema:

sudo apt update
sudo apt-get install qgis python3-qgis qgis-plugin-grass

Tras este proceso ya deberías poder disfrutar de QGIS en tu equipo con Ubuntu 19.04.

Encontrar y matar procesos zombie en Linux

No sólo hay zombies en la ficción, también pululan por tu sistema Linux. Tranquilo, la pantalla de tu portátil no se cerrará de golpe mordiéndote la mano y convirtiéndote en un extra de peli de Romero, se trata de un estado en el que pueden entrar algunos procesos secundarios, que aunque terminan se mantienen en la tabla de procesos hasta que termina el principal, ocupando algo de memoria. No son especialmente problemáticos ni consumen mucho, aunque si un programa deja varios procesos hijo por ahí sueltos puede ser un problema para la RAM.

¿Cómo puedo listar los procesos en estado zombie en mi equipo?

Es sencillo. Usando el comando ps podemos listar todos los procesos presentes en la tabla de procesos. Uno de los valores que tendremos en la salida de ps es el estado del proceso, que será Z para los procesos zombie. Por lo tanto, el siguiente comando listará todos los procesos zombie:

ps aux | grep 'Z'

¿Cómo eliminamos un proceso zombie?

En si no podemos matar un proceso zombie con el comando kill porque ya está muerto, la única opción sería hacerlo a través del proceso padre. Para eso necesitamos saber el pid del padre, por lo que haremos la búsqueda de procesos zombie de está forma:

ps ef | grep 'Z'

La tercera columna de la respuesta tendrá el id del proceso padre de nuestro proceso zombie. Para forzar la eliminación de estos procesos hijo zombificados usamos el siguiente comando:

kill -s SIGCHLD pid_del_proceso_padre

Cinco extensiones para GNOME muy útiles

Una de las cosas que han hecho que GNOME sea uno de los entornos de escritorio más populares para Linux es la posibilidad de instalar extensiones que nos permiten ampliar sus funcionalidades. Desde aquí os voy a recomendar 5:

Clipboard Manager: Una aplicación de gestión de portapapeles avanzada que te permitirá tener disponible varios elementos copiados o cortados a la vez para luego gestionarlos, similar al app GPaste.

Dash To Dock: Si eres un nostálgico de Unity o has migrado a Linux desde un equipo de Apple puedes usar esta extensión que agrega un dock a tu escritorio en el que podrás anclar las aplicaciones que más uses.

Easy Screencast: Una extensión que te permite grabar lo que pasa en tu escritorio de forma sencilla e intuitiva. Esto puedes hacerlo con un programa externo también, pero la ventaja de esta extensión es que es muy ligera.

Pomodoro Timer: Te permitirá organizar tu tiempo programando una serie de periodos de tiempo de actividad y de descanso en tu trabajo, de forma que puedas estar centrado al 100% en tu tarea sin preocuparte de mirar en el reloj cuánto tiempo llevas en ello.

Refresh WiFi Connections: Realmente solo es útil para usuarios con portátil que cambien bastante de ubicación, si ese es tu caso puede que te interese esta extensión que refresca las conexiones inalámbricas a tu alcance para que se conecte de forma automática, sin tener que hacerlo manualmente.

Nginx en Debian: los comandos más básicos

Vamos a darle un ojo a los comandos más básicos del servidor Nginx para sistemas operativos Debian:

Arrancar Nginx:

Para iniciar Nginx puede ser uno de estos dos comandos, dependiendo de si el gestor de servicios es systemd o sysvinit:

$ sudo systemctl start nginx #systemd
$ sudo service nginx start   #sysvinit

Reiniciar Nginx:

En caso de que necesites reiniciar Nginx sería alguno de estos dos

$ sudo systemctl restart nginx #systemd
$ sudo service nginx restart   #sysvinit

Parar Nginx:

Para detener Nginx:

$ sudo systemctl stop nginx #systemd
$ sudo service nginx stop   #sysvinit

Habilitar arranque en el inicio:

Si queremos que Nginx arranque automáticamente al iniciar el sistema operativo entonces hay que utilizar este:

$ sudo systemctl enable nginx #systemd
$ sudo service nginx enable   #sysvinit

Comprobar la configuración:

Si has hecho cambios en la configuración de Nginx este comando te dirá si la configuración es correcta:

$ sudo nginx -t

Reiniciar una descargar desde el punto en que se cortó con cURL en Linux

Si ya vimos como descargar uno y también varios ficheros en Linux mediante cURL vamos con otra funcionalidad interesante ¿cómo hacemos para reiniciar una descarga que se ha interrumpido?

Basta con invocar el comando para descargar pero añadiendo “-C – ” (es decir, -C, un espacio, un guión y otro espacio, sin las comillas).

Entonces, si así es como comenzamos una descarga:

curl -O http://dominio.com/fichero.tar.gz

Así sería cómo la reiniciaríamos desde el punto en que se cortó:

curl -C - -O http://dominio.com/fichero.tar.gz

Usar cURL en Linux para bajar varios ficheros con un mismo comando.

Si hace unos meses veíamos cómo nos podemos servir de cURL en Linux para descargar un fichero desde una URL hoy vamos a expandir un poco esta entrada: ¿podemos descargar varios ficheros a la vez con el mismo comando? Pues sí.

La sintaxis es muy simple. Recordemos primero ¿Cómo descargamos un fichero con cURL?

curl -O http://dominio.com/fichero.tar.gz

Recordado esto ¿cómo descargamos varios? Pues muy simple, añadimos más url precedidas del parámetro -O tal que así:

curl -O http://dominio.com/fichero.tar.gz -O http://dominio.com/ficheroB.tar.gz -O http://dominio.com/ficheroC.tar.gz

Ejecutar apps de Android en Linux con Anbox

Aunque el núcleo de Android es Linux sus aplicaciones no son compatibles de forma nativa con una distribución de GNU/Linux. Para correr aplicaciones Android en un sistema Linux necesitamos un emulador al estilo de Wine (que nos permite correr aplicaciones de Windows).

Existen hoy por hoy varios proyectos de emuladores que nos permiten hacer esto en nuestros sistemas Linux pero ha sido Anbox el que me ha parecido más interesante ¿por qué? Porque Anbox se sirve del propio kernel de nuestra distribución para trabajar, sobre el que extiende una capa de compatibilidad. ¿Qué implica esto? Que al no tener que emular el kernel consume menos recursos que sus competidores. Nuestro hardware queda menos cargado con el.

Podemos instalarlo mediante paquetes snap o desde la tienda de apps o los repositorios de nuestra distro. Una vez instalado basta con instalar en nuestro equipo el .apk de la aplicación que queremos correr. Para facilitar esta instalación lo mejor es que instalemos también AndroidDebugBridge (ADB), una herramienta para desarrolladores Android:

# Instalar ADB en Ubuntu y familia
$ sudo apt install android-tools-adb

# Instalar ADB en Fedora
$ sudo dnf install android-tools

Conocer tu ip externa desde línea de comandos en Linux con wget

Hace tiempo habíamos visto por aquí cómo conocer nuestra IP externa desde línea de comandos en Linux con cURL. Pero hay más métodos. Veamos hoy cómo hacerlo con wget, de nuevo recurriendo a la web ifconfig.me para ello (como en ejemplo de cURL):

wget -qO - ifconfig.me/ip

El API de ifconfig.me además nos permite conocer otras cosas como nuestro user agent, el puerto por el que conectamos, el idioma predefinido con el que navegamos… en la página principal podéis ver, debajo de vuestros datos, todos los comandos disponibles.

Cinco consejos a la hora de hacer scripts de Bash en Linux.

Llevamos unos días donde he hablado mucho de PowerShell y parece que nos estemos olvidando un poco del mundo Linuxero, así que hoy vamos a ver una serie de consejillos para hacer scripts con Bash en nuestro sistema Linux de forma más efectiva:

Usa comillas dobles a la hora de referenciar variables:

Trabajar con cadenas de texto con espacios puede ser problemático. A la hora de referenciar una variable para usar su valor es recomendable hacerlo poniéndola entre comillas dobles: evitará que la cadena se corte por el uso de espacios en blanco y también mejorará el rendimiento, evitando hacer rastreos de comodines innecesariamente. Si ejecutas este script lo verás:

empresas="Tecnológicas Camarasa SL"
echo "Sin comillas:"
echo
for nombre in $empresas; do
        echo "$nombre"
done
echo
echo "Con comillas:"
echo
for nombre in "$empresas"; do
        echo "$nombre"
done
exit 0

Si lo ejecutas verás como en el primer caso va a imprimir tres nombres, pues se confundirá con los espacios, mientras que en el ejemplo con comillas lo sacará en una sola línea respentado los espacios.

Forzar la salida del script en caso de error:

A veces un script puede seguir ejecutándose aunque un comando falle, y eso puede derivar en problemas más adelante. Con la siguiente línea podemos forzar la salida del script en caso de que un comando no funcione:

set -o errexit 

Forzar la salida del script en caso de usar una variable no declarada:

Como en el caso anterior, esto puede derivar en errores más graves más adelante, así que es recomendable que el script se detenga si se usa una variable que está sin declarar:

set -o nounset

Declara las constantes como readonly:

Las constantes en esencia son un variable con un valor estático. A la hora de declarar una constante en nuestro script, tanto por seguridad como por rendimiento, lo mejor es hacerlo con el atributo readonly, puesto que no va a vaciarse ni sobrescribirse el valor.

readonly fichero_host="/etc/hosts"
readonly pi=3.14159265359

Usa la sintaxis $(comando) en lugar del antiguo `comando` :

Si queremos asignar la salida de un comando a una variable antiguamente lo haríamos invocando al comando entre dos acentos. Hoy por hoy la sintaxis sería utilizando el comando entre paréntesis precedido por el carácter $, tal que así:

#Sintaxis antigua
usuario=`echo “$UID”`
#Sintaxis modernizada recomendada
usuario=$(echo “$UID”)