Introducción al bash scripting

¿Qué es un script?

Un script un fichero plano que alberga un conjunto de instrucciones (comandos) que se ejecutan secuencialmente.

¿Para qué sirve un script?

Los scripts sirven principalmente para automatizar tareas, por ejemplo, un script puede realizar la copia de seguridad y a continuación enviar un email con el porcentaje de uso del disco duro.

¿Como crear un script?

Como ya he dicho antes, un script es tan solo un fichero de texto plano con la particuliaridad de que debe tener una extensión .sh. Puedes crear uno desde consola, la interfaz gráfica o desde un editor como Gedit.

touch helloworld.sh

El primer script – Hola mundo

El primer script va a ser el clásico “Hola mundo”. En el fichero helloworld.sh he añadido las siguientes líneas:

#!/bin/bash
echo “Hola mundo”;

La primera línea indica el shell que va a usar el script (/bin/bash), la segunda línea imprime el texto que está entre comillas.

¿Como le doy permisos?

Para poder ejecutar un script es necesario concederle permisos de ejecución. Hay dos modos de hacerlo:

– Desde el gestor de ficheros, entrando en las propiedades del fichero
permisos ejecución caja

– Usando la consola de comandos

chmod u+x

¿Cómo ejecuto un script?

Aunque es posible ejecutar un script haciendo doble sobre el, no es recomendable porque el script se ejecuta y a continuación se cierra, lo que impide saber si se ha ejecutado correctamente o no.

Desde el terminal es posible ejecutar el script con cualquier de estos comandos:

./helloworld.sh
sh helloworld.sh

 

Y así termina la introducción al script en GNU/Linux, próximamente la segunda parte: parámetros y condicionales.

Trust me, i'm an engineer

Compartir carpeta en VirtualBox

Introducción

La siguiente guía explica como compartir una carpeta entre un Linux (anfitrión) y un Windows 7 (máquina virtual), de modo que ambos puedan leer y escribir en el mismo directorio. Para poder compartir una carpeta es necesario instalar las Guest Additions.

 

¿Qué son las guest additions?

Guest Additions es una aplicación que se instala en la máquina virtual y que permite, entre otras cosas, mejorar la integración del cursor, compartir el portapapeles, compartir carpetas y mejorar el soporte de vídeo.

 

¿Cómo instalo las guest additions?

Instalar las Guest Additions es sencillo, con la máquina virtual encendida vas a Dispositivos → Insertar imagen de CD de las «Guest Additions»
Insertar imagen guest additions

Cuando la descarga ha terminado VirtualBox pregunta si quieres insertar el disco, tras lo cual Windows ya puede acceder a las Guest Additions.
Se instala desde “Equipo” como si fuera un CD normal y corriente (siguiente, siguiente, siguiente), a mitad de instalación va a preguntar si “confias” en el software de Oracle, le dices que se calle de una puñetera vez y listo.

Trust me, i'm an engineer

Crear y compartir una carpeta

Lo primero es crear el directorio en Linux, dentro de la carpeta personal es un buen lugar.

La interfaz gráfica es para débiles

~ la interfaz gráfica es para débiles ~

Una vez hecho este complicadísimo paso (no os puedo asegurar que lo logréis :p) ya puedes configurar en VirtualBox la carpeta que vas compartir.

Solo es necesario indicar la ruta de la carpeta en GNU/Linux y el nombre de la unidad.

preferencias de carpetas compartidas

carpetas compartidas virtualboxAgregar carpeta compartida virtualbox

*Importante marcar el automontar y hacer permanente.

 

En Windows 7 al reiniciar aparecen automaticamente las unidades que he configurado en VirtualBox, si tienes una versión anterior o no aparecen las carpeta en “Equipo” puedes usar el siguiente comando para agregar una unidad de red:

net use z: \vboxsrvcompartido
*compartido es el nombre que le has dado a la unidad cuando la creas en VirtualBox
*Si ya tienes en uso z: utiliza otra unidad

e voilà

Límite phpMyAdmin 2MB

Cómo aumentar el límite de 2MB al importar en phpMyAdmin

phpMyAdmin bajo Ubuntu tiene un límite a la hora de importar un fichero SQL de 2MB, esto no se debe tanto a la configuración de phpMyAdmin, sino a la configuración por defecto de php, que tiene un límite de 2MB por fichero y hasta 8MB por petición POST.
Límite phpMyAdmin 2MB

 

Configuración implicada

Las líneas de configuración causantes son:
post_max_size que limita el máximo de MB que puedes enviar en una petición POST.
upload_max_filesize que limita el máximo de MB que puede pesar cada fichero que envíes por POST.
*Ambas en el fichero de configuración /etc/php/7.0/apache2/php.ini

Por ejemplo, si post_max_size = 40 y upload_max_filesize = 10 puedes enviar un máximo de 40MB por POST y cada fichero no puede pesar mas de 10MB.

 

Modificar configuración

Para editar el fichero sirve cualquier editor, mientras seas root
sudo gedit /etc/php/7.0/apache2/php.ini
sudo pluma /etc/php/7.0/apache2/php.ini
sudo kate /etc/php/7.0/apache2/php.ini
sudo geany /etc/php/7.0/apache2/php.ini
sudo nano /etc/php/7.0/apache2/php.ini

Editando las siguientes dos líneas se soluciona el problema, yo suelo poner  un número alto (200MB normalmente), que puede no ser recomendable en producción, pero para desarrollar en local sirve.
post_max_size = 200M
upload_max_filesize = 200M

 

Reiniciar apache2

Para aplicar los cambios es necesario reiniciar apache.

apache2-restart

sudo service apache2 restart

o bien:

apache2ctl restart

sudo apache2ctl restart

¡Y listo!

htop kill process

Como matar procesos en Linux

¿Qué es un proceso?

Un proceso es, a grosso modo, un programa que está en ejecución, como por ejemplo Firefox, VLC, Libre Office, etc

Los procesos se identifican mediante un PID (Process ID). El PID es un número entero positivo que identifica al proceso.

 

¿Qué tipos de procesos existen?

Además de los procesos “normales”, existen varios tipos de procesos, los mas importantes son:
– Proceso hijo: Proceso creado por otro proceso
– Proceso zombie: Proceso hijo que ha terminado de ejecutarse, pero permanece a la espera de instrucciones por parte del proceso padre.
– Huérfano: Cuando un proceso hijo sigue en funcionamiento pero el proceso padre ha sido matado. Los procesos huérfanos no se conviertes en zombies, sino que son adoptados por el init
– Daemon: Procesos que se ejecutan en 2º plano, generalmente relacionados con el SO.

 

¿Cómo puedo ver los procesos?

La opción mas sencilla es usar el “Monitor de sistema”, que ya viene instalado en la mayoría de distros con GNOME o Mate.

Monitor del sistema

Desde el terminal de comandos puedes ver los procesos usando una de las siguientes herramientas:

  • top
  • ps
  • htop


Yo recomiendo instalar y utilizar htop
, que permite ordenar procesos por % de uso de CPU, uso de memoria, buscar procesos, matar procesos y mucho más.

htop

¿Cómo matar un proceso?

Existen infinidad de maneras de matar un proceso, tanto desde la terminal de comandos como desde la interfaz gráfica.

Si conoces el PID del proceso puedes matarlo usando el comando kill con el modificador -9 para forzar el cierre. Como verás más adelante, se puede obtener el PID con el comando pidof o con ps (lista procesos) + grep -i (filtra ignorando mayúsculas)

kill -9

 

En el caso de que conozcas el nombre del proceso puedes emplear el comando killall seguido del nombre completo del proceso.

killall

*Ojo que distingue entre mayúsculas y minúsculas

 

Si no conoces el nombre del proceso (o tiene un nombre muy largo) puedes usar el comando pkill, que mata el proceso con escribir parte del nombre.

pkill

 

Un manera de matar aplicaciones que se han quedado colgadas sin utilizar comandos es usar xkill y hacer click sobre la aplicación que no responde. Alt F2 -> xkill -> Click sobre la ventana

xkill
xkill seleccionar

La aplicación htop que he mostrado anteriormente también permite matar procesos seleccionado un proceso y presionando F9 y a continuación enter.

htop kill process

 

Y para concluir… El monitor del sistema también permite matar procesos haciendo click con el botón secundario. Sobran las imágenes.

Bonus

El siguiente comando obtiene el PID de telegram y a continuación mata el proceso con kill. Es tan solo un ejemplo, ahí queda 😉

pidof + kill