Curso de Bash desde cero / Capítulo 7
Procesos y alias
Monitorización
ps muestra los procesos asociados a la terminal actual
ps aux muestra la lista de todos los procesos en ejecución del sistema.
a procesos de todos los usuarios.
u muestra el nombre de usuario y detalles.
x muestra procesos no asociados a la terminal.
top monitor de procesos interactivo en tiempo real.
htop versión mejorada de top (requiere instalación del CLI).
free -h muestra información sobre la memoria (solo disponible en Linux).
df -h uso de disco (disk free).
du -sh * tamaño de todos los archivos y directorios actuales (disk usage).
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
topohtopse pulsaq, oCtrl + 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 planoY 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 planoConsejo
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
killa secas primero, y dejakill -9como último recurso. Con-9el 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 nadaHistorial
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 consudo !!lo repites con permisos sin volver a escribirlo.Y para el día a día,
Ctrl + Res más cómodo quehistory | 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 unoFí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
rmsiempre pregunte tiene un riesgo: el día que uses otro equipo donde ese alias no existe,rmborrará sin avisar. Ten claro que la protección es tuya, no del sistema.
Ejercicios
Muestra todos los procesos del sistema.
Muestra el monitor interactivo de procesos.
Utiliza el comando free de manera correcta.
Lanza sleep 100 en la terminal, suspéndelo, mándalo al segundo plano y tráelo al primer plano.
Lanza un proceso como sleep y terminarlo usando su PID.
Consulta el espacio en disco.
Consulta el historial.
Repite el ultimo comando.
Crea y prueba un alias.
Elimina el alias que acabas de crear.