- 👤 Andrés Cruz
Ver Listado »La Guía Definitiva del Ecosistema de Desarrollo: De la Terminal Linux a la Arquitectura de Software Moderna
Convertirse en un desarrollador de software competente en el mundo actual va mucho más allá de dominar un solo lenguaje de programación. Requiere una comprensión holística del ecosistema que da vida a nuestras aplicaciones: el sistema operativo subyacente, a menudo Linux; las herramientas que orquestan el código, como Git; los servidores que lo entregan al mundo, como Apache; y las bases de datos que almacenan su información. Además, implica una reflexión constante sobre nuestro oficio, el impacto de nuevas tecnologías como la IA, y las mejores prácticas que separan el código funcional del código mantenible.
En DesarrolloLibre, hemos documentado cada faceta de este viaje.
Esta guía pilar es un compendio de esa experiencia. No es un manual sobre un único tema, sino un mapa del territorio que todo desarrollador moderno debe navegar.
Comenzaremos en las trincheras de la línea de comandos de Linux, dominando los comandos esenciales para la gestión de procesos, archivos y tareas automatizadas. Luego, construiremos un entorno de desarrollo profesional, configurando servidores web, bases de datos y herramientas de testing.
Sección 1: Dominando la Terminal de Linux
Para muchos desarrolladores, la línea de comandos de Linux es el verdadero entorno de desarrollo. Es donde se gestionan servidores, se automatizan tareas y se resuelven problemas. Dominar la terminal no es una opción, es una necesidad para cualquiera que se tome en serio el desarrollo de software, especialmente en el backend.
Gestión de Archivos y Procesos
Ver el Tamaño de Directorios con du
Una tarea común es verificar el espacio en disco. El comando du (disk usage) es tu mejor aliado. En su forma básica, du -s * te mostrará el tamaño de cada archivo y directorio en la ubicación actual, pero en bloques de disco, lo cual no es muy legible.
Para hacerlo útil, combinamos opciones:
- -h (human-readable): Muestra los tamaños en un formato legible (KB, MB, GB).
- -s (summarize): Muestra solo el total para cada argumento, en lugar de descender en los subdirectorios.
- -c (total): Añade una línea final con el total general.
# Muestra el tamaño de cada directorio en formato legible
du -sh *
# Muestra el tamaño total del directorio actual
du -sh .Puedes combinarlo con otros comandos como sort para encontrar los directorios más pesados:
# Lista los directorios y archivos, ordenados por tamaño de mayor a menor
du -sh * | sort -rhDomina el uso del espacio en disco con nuestra guía: ¿Cómo ver el tamaño de los directorios y archivos en Linux?.
Finalizar Procesos con kill y killall
A veces, un programa deja de responder y necesitas forzar su cierre. Para esto existen los comandos kill y killall.
- kill: Termina un proceso basándose en su ID de Proceso (PID). Primero, necesitas encontrar el PID con ps aux | grep [nombre_programa].
- killall: Es más directo. Termina todos los procesos que coincidan con un nombre de programa.
# Encontrar el PID de Firefox
ps aux | grep firefox
# Matar el proceso de Firefox usando su PID (ej. 1234)
kill 1234
# Una forma más agresiva si la primera no funciona
kill -9 1234
# O, más simple, usando killall
killall firefox
La señal -9 (SIGKILL) es la forma más contundente de terminar un proceso y debe usarse como último recurso, ya que no permite que el programa guarde su estado.
Aprende a gestionar procesos rebeldes en: Los comandos Kill y Killall en Linux.
Automatización de Tareas
Programando Tareas con cron
cron es un demonio (servicio) que se ejecuta en segundo plano y permite programar la ejecución de scripts o comandos en momentos específicos. Las tareas se definen en un archivo llamado crontab.
La sintaxis de una entrada en crontab es:
* * * * * comando_a_ejecutar
| | | | |
| | | | +----- Día de la semana (0 - 7) (Domingo es 0 o 7)
| | | +------- Mes (1 - 12)
| | +--------- Día del mes (1 - 31)
| +----------- Hora (0 - 23)
+------------- Minuto (0 - 59)Para editar tu crontab, usas el comando crontab -e.
# Ejecutar un script de backup todos los días a las 3:00 AM
0 3 * * * /home/usuario/scripts/backup.sh
# Ejecutar un comando PHP cada 15 minutos
*/15 * * * * /usr/bin/php /var/www/proyecto/artisan schedule:runcron es la piedra angular de la automatización en servidores Linux, ideal para backups, limpieza de logs, y cualquier tarea repetitiva.
Automatiza tus scripts con: Ejecutar script automáticamente con Cron en Linux.
Ejecutando Comandos al Iniciar el Sistema con rc.local
Si necesitas que un comando se ejecute una sola vez cada vez que el sistema arranca, el archivo /etc/rc.local es el lugar tradicional para ello. Aunque algunas distribuciones modernas lo han depreciado en favor de systemd, en muchas todavía funciona.
El archivo es un simple script de shell. Cualquier comando que añadas antes del exit 0 final se ejecutará durante el proceso de arranque.
#!/bin/sh -e
# /etc/rc.local
# Ejecuta un script personalizado al inicio
/home/usuario/mis_scripts/iniciar_servidor_juego.sh
exit 0Asegúrate de que el archivo tenga permisos de ejecución (chmod +x /etc/rc.local).
Aprende a configurar scripts de inicio en: ¿Cómo ejecutar comando del terminal al iniciar nuestro Linux?.
Solución de Problemas Comunes
command not found en la Terminal
Este es quizás el error más común para los recién llegados. Ocurre cuando intentas ejecutar un programa y la shell (como bash o zsh) no sabe dónde encontrar el ejecutable. La solución casi siempre es añadir el directorio del programa a la variable de entorno PATH.
El PATH es una lista de directorios donde la shell busca los comandos. Puedes ver tu PATH actual con echo $PATH.
Para añadir una nueva ruta de forma temporal, usas export:
$ export PATH=$PATH:/ruta/a/mis/binariosPara hacerlo permanente, debes añadir esa línea al archivo de configuración de tu shell (.bashrc, .zshrc, .profile, etc.) en tu directorio home.
# Añadir la ruta al SDK de Flutter
echo 'export PATH=$PATH:/Users/andrescruz/development/flutter/bin' >> ~/.zshrc
# Recargar la configuración
source ~/.zshrc