detomas.net Curso de Bash desde cero
Descargar PDF

Curso de Bash desde cero / Capítulo 7

Procesos y alias

Monitorización

Importante

La opción -h suele estar asociada a mostrar la información en
formato "human-readable", para facilitar su lectura.

Consejo

El PID es el número que identifica de forma única a cada proceso. Es lo que necesitas para poder pararlo después.

Para salir de top o htop se pulsa q, o Ctrl + C.

Primer y segundo plano

Cuando lanzas un comando, la terminal se queda ocupada hasta que termina. Eso es el primer plano (foreground). Si el comando tarda mucho, puedes mandarlo al segundo plano (background) y seguir trabajando.

sleep 300 &        # el & al final lo lanza directamente en segundo plano

Y si ya lo has lanzado y se te ha quedado ocupada la terminal:

Acción Cómo
Suspender lo que está corriendo Ctrl + Z
Ver los trabajos de esta terminal jobs
Reanudarlo en segundo plano bg %1
Traerlo al primer plano fg %1

El %1 es el número que te da jobs, no el PID.

sleep 300          # se queda ocupada la terminal
# pulsas Ctrl + Z  -> [1]+  Detenido    sleep 300
jobs               # [1]+  Detenido    sleep 300
bg %1              # sigue corriendo, pero ya te devuelve el prompt
fg %1              # lo trae de vuelta al primer plano

Consejo

sleep 300 («no hagas nada durante 300 segundos») es perfecto para practicar todo esto sin riesgo de romper nada.

Aviso

Un proceso en segundo plano muere cuando cierras la terminal. Si necesitas que sobreviva, se lanza con nohup:

nohup ./mi_script.sh &

La salida se guarda en un archivo llamado nohup.out.

Terminar procesos

kill no significa exactamente «matar»: lo que hace es mandar una señal a un proceso. Las dos que importan:

Comando Señal Qué hace
kill PID TERM (15) Pide al proceso que termine. Este puede guardar lo que tenga, cerrar archivos y salir ordenadamente
kill -9 PID KILL (9) Lo fulmina de inmediato. No puede negarse, pero tampoco puede limpiar nada

Precaución

Usa siempre kill a secas primero, y deja kill -9 como último recurso. Con -9 el proceso no puede guardar su trabajo ni cerrar bien lo que tenía abierto, así que puede dejar archivos a medias o bloqueos sueltos.

Si no sabes el PID, hay atajos que buscan por nombre:

pkill firefox       # termina los procesos que se llamen así
killall firefox     # equivalente en la mayoría de sistemas
pgrep -l firefox    # solo mira: lista PID y nombre, sin tocar nada

Historial

Bash guarda todo lo que escribes, así que rara vez hace falta volver a teclear un comando largo.

Comando Qué hace
history Lista el historial numerado
!! Repite el último comando
!10 Ejecuta el comando número 10 del historial
!ls Repite el último que empezaba por ls
Ctrl + R Busca en el historial escribiendo un trozo

Consejo

sudo !! es un clásico: ejecutas algo, te dice «permission denied», y con sudo !! lo repites con permisos sin volver a escribirlo.

Y para el día a día, Ctrl + R es más cómodo que history | grep.

Aviso

Cuidado al escribir ! en una cadena de texto, ya que puede intentar realizar una referencia al historial y producir un error. Para evitarlo, puedes escapar el signo utilizando la barra invertida
antes de !. También puedes usar comillas simples ’ en vez de dobles ” para crear la cadena de texto.

Alias

Un alias es un apodo que le pones a un comando, normalmente para no repetir opciones que usas siempre.

alias ll='ls -l'          # ahora "ll" hace "ls -l"
alias la='ls -la'
alias ..='cd ..'

alias                     # ver todos los alias definidos
unalias ll                # eliminar uno

Fíjate en que no hay espacios alrededor del =, y en que el comando va entre comillas simples si lleva espacios u opciones.

Precaución

Un alias creado así solo vive en esa terminal. Para tenerlo siempre, añádelo a tu ~/.bashrc:

echo "alias ll='ls -l'" >> ~/.bashrc
source ~/.bashrc

Un uso muy recomendable es ponerle red de seguridad a los comandos peligrosos:

alias rm='rm -i'      # pedirá confirmación antes de borrar
alias cp='cp -i'
alias mv='mv -i'

Aviso

Acostumbrarse a que rm siempre pregunte tiene un riesgo: el día que uses otro equipo donde ese alias no existe, rm borrará sin avisar. Ten claro que la protección es tuya, no del sistema.

Ejercicios

  1. Muestra todos los procesos del sistema.

  2. Muestra el monitor interactivo de procesos.

  3. Utiliza el comando free de manera correcta.

  4. Lanza sleep 100 en la terminal, suspéndelo, mándalo al segundo plano y tráelo al primer plano.

  5. Lanza un proceso como sleep y terminarlo usando su PID.

  6. Consulta el espacio en disco.

  7. Consulta el historial.

  8. Repite el ultimo comando.

  9. Crea y prueba un alias.

  10. Elimina el alias que acabas de crear.