Comendos Esenciales de Linux para Administración del Sistema
Este artículo está orientado a Ubuntu 22.04 LTS.
Verificar la versión del sistema Linux
En sistemas Linux, existen varios métodos para verificar la versión del sistema. Aquí presentamos dos enfoques comunes:
Utilizando el comando lsb_release
lsb_release -a
Este comando mostrará información detallada sobre la distribución del sistema en múltiples líneas.
Inspeccionando archivos de versión
cat /etc/os-release
Para algunas versiones más antiguas de Linux:
cat /etc/lsb-release
Listar contenido del directorio actual
ls
Para listar con detalles incluyendo permisos:
ls -al
Gestión de permisos en arcihvos y directorios
sudo chmod -R 777 directorio_datos
Creación de directorios
mkdir nombre_directorio
Copia recursiva de directorios
cp -r origen destino
Transferencia de archivos mediante SSH
scp -r
En entornos Linux, el comando scp es la herramienta estándar para transferir archivos a través de SSH.
1. Descargar archivos del servidor remoto
scp usuario@servidor:/ruta/archivo /directorio_local
Ejemplo: scp admin@192.168.1.100:/var/www/documento.txt descarga el archivo /var/www/documento.txt del servidor 192.168.1.100 al directorio local /directorio_local
2. Subir archivos locales al servidor remoto
scp /ruta/archivo_local usuario@servidor:/ruta_remota
Ejemplo: scp /var/www/script.php admin@192.168.1.100:/var/www/ envía el archivo script.php desde el directorio local /var/www/ al servidor 192.168.1.100 en el directorio /var/www/
3. Descargar un directorio completo
scp -r usuario@servidor:/directorio_remoto /directorio_local
Ejemplo: scp -r admin@192.168.1.100:/var/www/proyecto /var/www/ copia el directorio completo 'proyecto' del servidor al directorio local /var/www/
4. Subir un directorio al servidor remoto
scp -r directorio_local usuario@servidor:directorio_remoto
Ejemplo: scp -r proyecto admin@192.168.1.100:/var/www/ envía el directorio 'proyecto' al servidor remoto en /var/www/
Sincronización remota con rsync
El comando rsync es más potente que scp, especialmente para sincronizar directorios sin sobreescribir archivos existentes:
rsync -avz --progress /origen/ usuario@servidor:/destino/
Este comando sincroniza el directorio local /origen/ con el directorio remoto /destino/, mostrando el progreso de la operación.
Para evitar sobreescribir archivos en el destino:
rsync -avzu --progress /origen/ usuario@servidor:/destino/
La opción 'u' garantiza que solo se copien archivos más recientes o inexistentes en el destino.
Ejecución de scripts Shell
Tomando como ejemplo el script 'configurar.sh':
Otorgar permisos de ejecución
Si el script no tiene permisos de ejecución:
chmod +x configurar.sh
Ejecutar el script
./configurar.sh
Gestión del firewall UFW
Abrir el puerto 22
sudo ufw allow 22
Recargar el firewall
sudo ufw reload
Verificar el estado del firewall
sudo ufw status
Abrir el puerto TCP 80
ufw allow 80/tcp
Supervisión de procesos con ps
Listar todos los procesos
ps -aux
Buscar un proceso específico
ps -aux | grep 'nombre_proceso'
El comando ps -ef muestra relaciones entre procesos padre-hijo, mientras que top muestra los procesos más activos dinámicamente. El comando pgrep 'nombre' busca procesos por nombre. Los estados de proceso incluyen: Ejecutando (R), Listo (S), Pausado (T) y Zombie (Z). Para ejecutar un proceso en segundo plano: vi documento.c &. Con Ctrl+Z se pausa el proceso, y con [bg ID_trabajo] se lleva al fondo. El comando jobs muestra tareas en segundo plano, y fg 1 trae la tarea con ID 1 al primer plano.
Para terminar procesos:
kill -9 ID_proceso
Esto envía la señal 9 al proceso especificado, terminándolo forzosamente.
pkill nombre_proceso
Termina todos los procesos con el nombre especificado.
Configuración de interfaces de red con ifconfig
Listar interfaces de red y su información
ifconfig
Para activar/desactivar interfaces:
ifconfig eth0 down
ifconfig eth0 up
Estos comandos son equivalentes a ipconfig /renew en Windows.
Monitorización del espacio en disco con df
Verificar el uso del espacio en disco
df -h
Para cambiar al directorio raíz y ver el tamaño de cada subdirectorio:
cd /
du -sh *
Identificar archivos abiertos en el sistema
lsof | grep delete
Si el comando lsof no está disponible:
apt install lsof
Para buscar archivos grandes:
find ./ -name "*.log" -size +10M
Para ver el tamaño total de un directorio específico:
du -sh nombre_directorio
Compresión y descompresión de archivos
1. Comprimir un directorio
zip -r respaldo.zip directorio
2. Descomprimir en un directorio específico
unzip respaldo.zip -d destino
3. Comprimir múltiples archivos y directorios
zip -r paquete.zip carpeta1 archivo1.txt
4. Descomprimir directamente en el directorio actual
unzip paquete.zip
5. Descomprimir varios archivos a la vez
unzip paquete*.zip
6. Ver contenido de un archivo comprimido
unzip -v paquete.zip
7. Verificar integridad de un archivo comprimido
unzip -t paquete.zip
8. Extraer archivos al directorio actual (sin mantener estructura)
unzip -j paquete.zip
Gestión de usuarios
Crear un nuevo usuario
useradd nuevo_usuario
Establecer contraseña para el usuario
sudo passwd nuevo_usuario
Agregar usuario a un grupo
Para agregar el usuario al grupo sudo:
sudo usermod -aG sudo nuevo_usuario
Solución para comando systemctl no encontrado
apt install systemd
Visualización detallada del uso de memoria
free -h
Ejemplo de salida:
| total | used | free | shared | buff/cache | available | |
|---|---|---|---|---|---|---|
| Mem: | 64G | 50G | 1.4G | 2G | 12G | 10G |
| Swap: | 8G | 0G | 8G |
La columna 'available' indica la memoria realmente disponible (10G en este caso), mientras que 'free' muestra memoria no utilizada (1.4G).
Herramienta para identificar directorios grandes
ncdu
Esta herramienta proporciona una interfaz interactiva para explorar el uso del espacio en disco, mostrando los directorios más grandes primero.
Truncar archivos de texto
truncate -s 0 archivo.log
Este comando vacía el contenido del archivo sin eliminarlo.