LinuxParty
El script tiene un enfoque muy práctico para monitorizar el servidor de forma rápida en tiempo real sin saturar la terminal con herramientas más pesadas como htop o glances.
En la administración diaria de sistemas Linux, una de las tareas más recurrentes e indispensables es la supervisión del rendimiento de la máquina. Cuando el ventilador del servidor o de nuestro ordenador personal empieza a sonar con fuerza, o cuando las peticiones a un sitio web tardan más de lo habitual en responder, la primera pregunta que nos hacemos como administradores o desarrolladores es inmediata: ¿qué procesos están consumiendo mis recursos y quién los está ejecutando?
Existen multitud de herramientas avanzadas de monitoreo en el ecosistema GNU/Linux, desde las clásicas utilidades interactivas de consola como top, htop, btop o glances, hasta complejos sistemas de métricas y alertas como Prometheus, Grafana o Zabbix. Sin embargo, en muchas ocasiones no necesitamos instalar paquetes adicionales ni configurar daemons pesados. A veces, la solución más rápida, limpia y directa consiste en aprovechar la potencia nativa de la shell POSIX y de los comandos estándar del sistema.
En este artículo analizaremos en profundidad el script en Bash llamado queprocesos.sh, una herramienta ligera, auto-ejecutable y muy eficaz para realizar un control eventual de carga en tiempo real.
Código fuente del script queprocesos.sh
A continuación se muestra el código completo del script para que puedas copiarlo y guardarlo en tu propio sistema:
Realizar operaciones matemáticas en Bash: cálculos con enteros y decimales
Bash incorpora operadores para sumar, restar, multiplicar y comparar números enteros, mientras que herramientas como bc y awk permiten trabajar con decimales y operaciones más avanzadas
Tarde o temprano, cualquier script de Bash necesita realizar algún cálculo: incrementar un contador, comprobar el espacio disponible, obtener un porcentaje, calcular el tiempo transcurrido o decidir si un valor supera determinado límite.
Bash permite realizar directamente numerosas operaciones matemáticas, pero presenta una limitación importante: su aritmética interna trabaja con números enteros. Si necesitamos utilizar decimales, raíces cuadradas, logaritmos u otras operaciones avanzadas, tendremos que recurrir a programas externos como bc o awk.
En este tutorial veremos las principales alternativas y explicaremos cuál conviene utilizar en cada situación.
La forma recomendada: $(( expresión ))
La expansión aritmética es generalmente la forma más clara y práctica de efectuar cálculos enteros en Bash.
Su sintaxis es:
resultado=$(( expresion ))
Por ejemplo:
resultado=$((5 + 3)) echo "$resultado"
El resultado será:
8
Dentro de una expresión aritmética no es obligatorio anteponer $ al nombre de las variables:
numero1=15 numero2=4 resultado=$((numero1 + numero2)) echo "$resultado"
También sería válido escribir:
resultado=$(($numero1 + $numero2))
Pero la primera forma resulta más limpia y suele ser preferible.
Operadores aritméticos disponibles
Bash admite los operadores matemáticos habituales:
+para sumar.-para restar.*para multiplicar./para dividir.%para obtener el resto de una división.**para calcular una potencia.++para incrementar un valor.--para reducir un valor.
Fichero: /root/./copia-crontab-users.sh
#!/bin/bash tar cvfz crontabusers-en-var-spool-cron.tgz /var/spool/cron/
#!/bin/bash cd /root ./copia-crontab-users.sh cd /root/media/nfs/ suffix=$(date +%Y-%m-%d) # Nombre del Servidor: NdS="NameServer" Subject="(MAIL) Copia Seguridad MAIL-Server -$NdS- Terminada" if [ -f /root/media/nfs/montado.txt ]; then echo "OK" cd /root/media/nfs/ sleep 1 else echo "El script no se está ejecutando desde el lugar apropiado." echo "Deberías estar en la ruta: /var/SITIOS/SERVER, y estás en" pwd echo "Saliendo." echo "ERROR AL CREAR COPIA DE SEGURIDAD DEL CORREO" Subject="(MAIL) ERROR AL CREAR COPIA DEL SERVIDOR -$NdS-" mailx -s "$Subject" Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. < /root/NameServer.txt exit 1 fi # Eliminando copias de seguridad anteriores... rm -fv copia-*.tgz
# ------------------------
# echo "Copiando bin ( 1 / 14 ) " # tar cfz copia-bin-$suffix.tgz /bin # echo "Copiando boot (2 / 14 ) " # tar cfz copia-boot-$suffix.tgz /boot echo "Copiando etc (3 / 14 ) " tar cfz copia-etc-$suffix.tgz /etc echo "Copiando home ( 4 / 14 ) " tar cfz copia-home-$suffix.tgz /home # echo "Copiando lib ( 5 / 14 ) " # tar cfz copia-lib-$suffix.tgz /lib # echo "Copiando lib64 ( 6 / 14 ) " # tar cfz copia-lib64-$suffix.tgz /lib64 # echo "Copiando opt ( 7 / 14 ) " # tar cfz copia-opt-$suffix.tgz /opt echo "Copiando root ( 8 / 14 ) " tar cfz copia-root-$suffix.tgz --exclude="/root/temp" --exclude="/root/tmp" --exclude="/root/mnt" --exclude="/root/media" /root # echo "Copiando sbin ( 9 / 14 ) " # tar cfz copia-sbin-$suffix.tgz /sbin # echo "Copiando selinux ( 10 / 14 ) " # tar cfz copia-selinux-$suffix.tgz /selinux # echo "Copiando srv ( 11 / 14 ) " # tar cfz copia-srv-$suffix.tgz /srv # echo "Copiando sys ( 12 / 14 ) " # tar cfz copia-sys-$suffix.tgz /sys echo "Copiando usr ( 13 / 14 ) " tar cfz copia-usr-local-$suffix.tgz /usr/local # echo "Copiando var ( 14 / 14 ) " # tar cfz copia-var-$suffix.tgz --exclude="/var/lib" --exclude="/var/crash" --exclude="/var/cache" --exclude="/var/SITIOS/SERVER" --exclude="/var/qmail" --exclude="/var/www/vhosts" /var # ------------ versión antgua ----------------- # echo "->copia-var-www-vhosts-dela-A-ala-B" # tar cfz copia-var-www-vhosts-dela-A-ala-B-$suffix.tgz --exclude="/var/www/vhosts/abcsitio.com/tusitio.es" /var/www/vhosts/[a-b]* # echo "->copia-var-www-vhosts-dela-C-ala-D" # tar cfz copia-var-www-vhosts-dela-C-ala-D-$suffix.tgz /var/www/vhosts/[c-d]* # echo "->copia-var-www-vhosts-dela-E-ala-G" # tar cfz copia-var-www-vhosts-dela-E-ala-G-$suffix.tgz /var/www/vhosts/[e-g]* # echo "->copia-var-www-vhosts-dela-H-ala-J" # tar cfz copia-var-www-vhosts-dela-H-ala-J-$suffix.tgz /var/www/vhosts/[h-j]* # echo "->copia-var-www-vhosts-dela-K-ala-N" # tar cfz copia-var-www-vhosts-dela-K-ala-N-$suffix.tgz /var/www/vhosts/[k-n]* # echo "->copia-var-www-vhosts-dela-O-ala-Q" # tar cfz copia-var-www-vhosts-dela-O-ala-Q-$suffix.tgz /var/www/vhosts/[o-q]* # echo "->copia-var-www-vhosts-dela-R-ala-T" # tar cfz copia-var-www-vhosts-dela-R-ala-T-$suffix.tgz /var/www/vhosts/[r-t]* # echo "->copia-var-www-vhosts-dela-U-ala-W" # tar cfz copia-var-www-vhosts-dela-U-ala-W-$suffix.tgz /var/www/vhosts/[u-w]* # echo "->copia-var-www-vhosts-dela-X-ala-Z" # tar cfz copia-var-www-vhosts-dela-X-ala-Z-$suffix.tgz /var/www/vhosts/[x-z]* # echo "->copia-var-www-vhosts-dela-0-ala-9" # tar cfz copia-var-www-vhosts-dela-0-ala-9-$suffix.tgz /var/www/vhosts/[0-9]* # --------- fin versión antigua --------------- # --------------------------------------------- echo "-> copia-var-www-vhosts-de-AA-hasta-AN" tar cfz copia-var-www-vhosts-de-AA-a-AN-$suffix.tgz --exclude="/var/www/vhosts/abcsitio.com/tusitio.es" /var/www/vhosts/[aA][a-nA-N]* echo "-> copia-var-www-vhosts-de-AO-hasta-AZ" tar cfz copia-var-www-vhosts-resto-Ao-Az-num-y-chars-$suffix.tgz /var/www/vhosts/[aA][o-zO-Z0-9-]* echo "-> copia-var-www-vhosts-letra-B" tar cfz copia-var-www-vhosts-letra-B-$suffix.tgz /var/www/vhosts/[bB]* echo "-> copia-var-www-vhosts-letra-C" tar cfz copia-var-www-vhosts-letra-C-$suffix.tgz /var/www/vhosts/[cC]* echo "-> copia-var-www-vhosts-letra-D" tar cfz copia-var-www-vhosts-letra-D-$suffix.tgz /var/www/vhosts/[dD]* echo "-> copia-var-www-vhosts-letra-E" tar cfz copia-var-www-vhosts-letra-E-$suffix.tgz /var/www/vhosts/[eE]* echo "-> copia-var-www-vhosts-letra-F" tar cfz copia-var-www-vhosts-letra-F-$suffix.tgz /var/www/vhosts/[fF]* echo "-> copia-var-www-vhosts-letra-G" tar cfz copia-var-www-vhosts-letra-G-$suffix.tgz /var/www/vhosts/[gG]* echo "-> copia-var-www-vhosts-letra-H" tar cfz copia-var-www-vhosts-letra-H-$suffix.tgz /var/www/vhosts/[hH]* echo "-> copia-var-www-vhosts-letra-I" tar cfz copia-var-www-vhosts-letra-I-$suffix.tgz /var/www/vhosts/[iI]* echo "-> copia-var-www-vhosts-letra-J" tar cfz copia-var-www-vhosts-letra-J-$suffix.tgz /var/www/vhosts/[jJ]* echo "-> copia-var-www-vhosts-letra-K" tar cfz copia-var-www-vhosts-letra-K-$suffix.tgz /var/www/vhosts/[kK]* echo "-> copia-var-www-vhosts-letra-L" tar cfz copia-var-www-vhosts-letra-L-$suffix.tgz /var/www/vhosts/[lL]* echo "-> copia-var-www-vhosts-letra-M" tar cfz copia-var-www-vhosts-letra-M-$suffix.tgz /var/www/vhosts/[mM]* echo "-> copia-var-www-vhosts-letra-N" tar cfz copia-var-www-vhosts-letra-N-$suffix.tgz /var/www/vhosts/[nN]* echo "-> copia-var-www-vhosts-letra-O" tar cfz copia-var-www-vhosts-letra-O-$suffix.tgz /var/www/vhosts/[oO]* echo "-> copia-var-www-vhosts-letra-P" tar cfz copia-var-www-vhosts-letra-P-$suffix.tgz /var/www/vhosts/[pP]* echo "-> copia-var-www-vhosts-letra-Q" tar cfz copia-var-www-vhosts-letra-Q-$suffix.tgz /var/www/vhosts/[qQ]* echo "-> copia-var-www-vhosts-letra-R" tar cfz copia-var-www-vhosts-letra-R-$suffix.tgz /var/www/vhosts/[rR]* echo "-> copia-var-www-vhosts-letra-S" tar cfz copia-var-www-vhosts-letra-S-$suffix.tgz /var/www/vhosts/[sS]* echo "-> copia-var-www-vhosts-letra-T" tar cfz copia-var-www-vhosts-letra-T-$suffix.tgz /var/www/vhosts/[tT]* echo "-> copia-var-www-vhosts-letra-U" tar cfz copia-var-www-vhosts-letra-U-$suffix.tgz /var/www/vhosts/[uU]* echo "-> copia-var-www-vhosts-letra-V" tar cfz copia-var-www-vhosts-letra-V-$suffix.tgz /var/www/vhosts/[vV]* echo "-> copia-var-www-vhosts-letra-W" tar cfz copia-var-www-vhosts-letra-W-$suffix.tgz /var/www/vhosts/[wW]* echo "-> copia-var-www-vhosts-letra-X" tar cfz copia-var-www-vhosts-letra-X-$suffix.tgz /var/www/vhosts/[xX]* echo "-> copia-var-www-vhosts-letra-Y" tar cfz copia-var-www-vhosts-letra-Y-$suffix.tgz /var/www/vhosts/[yY]* echo "-> copia-var-www-vhosts-letra-Z" tar cfz copia-var-www-vhosts-letra-Z-$suffix.tgz /var/www/vhosts/[zZ]* echo "-> copia-var-www-vhosts-de-0-a-9" tar cfz copia-var-www-vhosts-de-0-a-9-$suffix.tgz /var/www/vhosts/[0-9]* # ------------------------ clear ls -l --color -shF echo "Copia de DIRECTORIOS terminada." echo "-------------------------------" # sleep 2 # echo "Comienza la compresión en un único fichero" # sleep 2 # tar cvf CopiaSeg-$NdS-Server-$suffix.tar `ls -1r copia-*.tgz`
Actualizacion 10-05-2026

Yo tengo dos ordenadores trabajando conmigo, uno de ellos, me sirve de multimedia, por ejemplo me descargo un Webinar, que en su tiempo no me dio tiempo a ver y en ese momento lo veo, y entre las cosas que hace es poner "ruido de fondo" cuando estoy trabajando.
Ya sabes cuando eres freelance/autónomo, ese "silencio" cuando trabajas a veces es odioso... Lo mejor, y lo que más me gusta es escuchar la radio -porque no necesitas prestarle atención-, y ¿cuándo lo hace?, cuando "detecta" que no hay nada funcionando, entonces... va... y pone la radio.
Necesitas tener instalado.
falkon (como navegador ligero usado solo para la radio)
kdialog (para crear diálogos desde Linux)
El script funciona de dos formas, si lo usas en crontab, debes poner "radio.sh -s", por ejemplo esta entrada en crond, permite la ejecución de 9 am hasta las 20 h, cada 30 minutos.
*/30 9-20 * * * /home/javier/bin/radio.sh -s
Y si lo quieres es escuchar la radio y ya está, simplemente usa "radio.sh"
El script es este...
Para versiones de Linux, un poco más recientes, ver abajo, esta es para versiones Linux más antiguas.
En muchas tareas de administración de sistemas necesitamos detener la ejecución de un script y esperar la intervención del usuario. Ya sea para confirmar una acción crítica o simplemente para dar tiempo antes de continuar, disponer de una pausa controlada es fundamental.
En este artículo te mostramos un script en Bash sencillo pero muy útil que permite:
- Esperar indefinidamente hasta que el usuario pulse una tecla
- Esperar un tiempo determinado (5, 10, 15 o 30 segundos)
- Permitir interrumpir la espera pulsando una tecla
- Devolver un código de salida compatible con estructuras
if
⚙️ Script: espera.sh
#!/bin/bash #
# Previamente hemos copiado el script a: /usr/local/bin
#
# Uso:
# if espera.sh ; then # echo "SI" # else # echo "NO" # fi # Función de lectura leer_tecla() { local timeout=$1 if [ -z "$timeout" ]; then echo -n "Pulse una tecla para continuar... (o 's' o 'n' para confirmar): " read -n 1 key else echo -n "Pulse una tecla ($timeout s)... (o 's' o 'n' para confirmar): " read -t "$timeout" -n 1 key fi # Si hay timeout, la variable puede quedar vacía # (Esta parte es opcional, yo se la tengo desactivado, así comentado). # if [ -z "$key" ]; then # echo -e "\nTiempo agotado." # return 1 # fi # echo "" if [ "$key" == 's' ] || [ "$key" == 'S' ]; then return 0 else return 1 fi } # Control de parámetros case "$1" in -5) leer_tecla 5 ;; -10) leer_tecla 10 ;; -15) leer_tecla 15 ;; -30) leer_tecla 30 ;; "") leer_tecla ;; *) echo "Uso: $0 [-5 | -10 | -15 | -30]" exit 1 ;; esac exit $?

¿Eres de los que abres “un momentito” Warzone2100 o Brutal Chess y cuando te das cuenta han pasado dos horas? 😅
No estás solo. Las distracciones digitales son una epidemia moderna, y aunque existen aplicaciones que prometen ayudarte, los que usamos Linux sabemos que la mejor herramienta siempre es la que controlas tú mismo.
Hoy te muestro cómo crear tu propio sistema anti-distracciones en Linux: un script que detecta y mata automáticamente ciertos programas durante tu horario laboral, con un aviso en pantalla.
Así evitarás tentaciones… incluso cuando el demonio del ocio intente invocar Steam.
Mira también, nuestra versión para Windows de éste script.
🚫 La idea
El concepto es simple:
- Definimos una lista de programas “prohibidos” (por ejemplo juegos o redes sociales).
- Establecemos una franja horaria y días en los que no queremos que se ejecuten.
- Si alguno se abre, el sistema lo detecta y lo cierra inmediatamente, mostrando un aviso con
kdialog.
Esto se hace con un pequeño script en Bash llamado KillGuard.
⚙️ El script: killguard.sh
Guarda este código en /usr/local/bin/killguard.sh y dale permisos ejecutables:
sudo nano /usr/local/bin/killguard.sh sudo chmod +x /usr/local/bin/killguard.sh
Y pega dentro lo siguiente:
Aunque tenemos multitud de scripts ya creados con este propósito en nuestra sección de Scriptings, y otros más en la sección de Seguridad, que deberían estar más allí (en Scripting) que en ningún otro lado, voy a compartir con vosotros el script de copias de seguridad que yo utilizo para guardar casi todo lo importante.
Tengo que decir, que como es un script, es bastante configurable, editando el código, claro. El cual he tratado de que sea bastante legilble a mi humilde entender.
El funciomiento es muy simple:
- Copias el código en un "/bin" que crees en tu $HOME, o lo copias en /usr/local/bin
- montas un pendrive, creas una carpeta y desde allí, desde la shell
- Llamas al script "copiacompleta2" y sigues las instrucciones y ya está.
Con eso, tendrás en tu pendrive en una carpeta una copia comprimida en tar gzip el contenido más relevante de tu sistema.
Yo utilizo KDE, por lo que si usas otro entorno menos común, tendrás que adaptarlo a él.
En entornos Linux, es común utilizar herramientas de automatización como `cron` para realizar tareas programadas. Sin embargo, cuando se trata de ejecutar aplicaciones gráficas, como el cliente de eDonkey/aMule, puede surgir un desafío adicional: asegurarse de que la aplicación se ejecute en el entorno gráfico del usuario correcto, especialmente cuando se utiliza `cron` para programar la tarea.
En este artículo, exploraremos cómo configurar una solución para este problema utilizando `sudo`, `cron` y un script de shell en Linux. Utilizaremos el cliente de eDonkey/aMule como ejemplo de aplicación gráfica.
Bash ( Bourne Again Shell ) es sin duda el shell de Linux más popular que existe, no es de extrañar que sea el shell predeterminado en muchas distribuciones de Linux. Una de sus características más encantadoras es el soporte integrado de " completado automático ".
A veces denominada finalización TAB , esta característica le permite completar fácilmente una estructura de comando. Permite escribir un comando parcial y luego presionar la tecla [Tab] para completar automáticamente el comando y sus argumentos. Enumera todas las finalizaciones múltiples, cuando es posible.
En Shell Script, las operaciones matemáticas se realizan utilizando el intérprete de comandos expr. Con expr, puedes realizar operaciones aritméticas simples como sumas, restas, multiplicaciones y divisiones.
Aquí hay algunos ejemplos de cómo realizar operaciones matemáticas en Shell Script:
# Suma
result=$(expr 2 + 2)
echo "2 + 2 = $result"
# Resta
result=$(expr 5 - 3)
echo "5 - 3 = $result"
# Multiplicación
result=$(expr 4 \* 5)
echo "4 * 5 = $result"
# División
result=$(expr 10 / 2)
echo "10 / 2 = $result"
Es importante notar que en Shell Script es necesario escapar los operadores * y / para que sean tratados como operadores matemáticos en lugar de comandos.
Además de las operaciones básicas, expr también permite realizar operaciones más complejas como cálculos de modulos y comparaciones lógicas. También es posible realizar operaciones matemáticas utilizando otras herramientas como bc o incluso utilizando directamente el intérprete de comandos con sintaxis específica para este propósito, como por ejemplo:
result=$((2 + 2))
echo "2 + 2 = $result"
Aritméticas
En un Bash podemos realiza directamente sumas, restas, divisiones, multiplicaciones y resto de números enteros.
Para ello tendemos que poner la operación dentro de $(( )).
Operadores: +, -, /, *, % (% es el resto que resulta al realizar la división entre dos números)
- "+": Para sumar valores.
- "-": Para restar valores.
- "*": Para multiplicar valores.
- "/": Para dividir valores.
- "%": Para calcular el resto de una división.
Por ejemplo:
- echo $((25+6))
echo $((24%5)) daría como resultado 4
Para operaciones con decimales tendríamos que ayudarnos de comandos externos como bc.
Ejemplo:
- echo 6.5*4.99 | bc
-
Scripting
- Monitoriza el uso de CPU y memoria en Linux con el script queprocesos.sh
- Cómo hacer operaciones matemáticas en Bash: cálculos con enteros, decimales, `bc` y `awk`
- Script para realizar copias de seguridad en un servidor en Producción con Dominios en Plesk
- Script para escuchar la Radio en Linux
- Script en Bash para pausas interactivas con timeout y confirmación
- 🧠 Cómo forzar evitar distracciones con tus propios scripts en Linux
- Script copiacompleta2, un Script para hacer copias de seguridad completa de tu usuario.
- Iniciar una aplicación o un programa automáticamente desde el Cron en Linux
- Cómo instalar y habilitar el completado automático de Bash Linux
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts




