- Moverte en un terminal, por el sistema de archivos sin perderte (saber dónde estamos, y como movernos a otra ubicación)
- Crear, copiar, ver y buscar ficheros
- Permisos justos, pe.
/var/www(importante asignarlo al recurso (carpeta/s-directorio/s que queremos, cuidado con no hacerlo en otro recurso) - Entender qué hace
apt update/apt installcuando falta un comando - Estos comandos los usaremos y reapareceran con Docker, Apache, se intentará referenciar aquí. En despliegue los estudiaréis con detalle.
Guía de consulta, no un tema de Linux.
Cada ficha trae comando, origen (letras marcadas), una frase, un ejemplo y solo las opciones que vamos a usar. También se aportarán ejemplos
Es un documento de lectura fácil
command not found
Es posible que a veces Ubuntu, nos responda esto,
En este caso habrá que instalarlo para poderlo utilizar
También puede ser que no esté en el PATH y haya que incluirlo (veremos cómo hacerlo)
Rutas que vas a repetir
/raíz del sistema~tu home (/home/tu-usuario).directorio actual..directorio padre
Gestión de Paquetes o programas
Gestión de paquetes o programas
Ubuntu no descarga programas al azar. Instala paquetes que saca de repositorios: almacenes de software ya preparado para esta distribución.
Una fuente configurada en el sistema de la que apt puede instalar, actualizar o consultar software. Los repositorios oficiales de Ubuntu son los que trae de serie (lo habitual en clase).
Se pueden añadir repositorios de otros proveedores de software
La lista de repositorios no es mágica: está en ficheros de configuración.
- Clásico:
/etc/apt/sources.list - Ubuntu actual: sobre todo
/etc/apt/sources.list.d/(a veces unubuntu.sources)
No hace falta editarlos a mano ahora. Sí hace falta distinguir dos comandos que se copian juntos y no hacen lo mismo:
Actualiza la información de lo que hay en los repositorios (nombres y versiones). No instala programas.
Instala un paquete usando ese catálogo. Si el catálogo está viejo, puede que no vea la versión actual: por eso suele ir después de update.
sudo apt update
sudo apt install treeRepositorios externos
A veces el software que necesitamos no está (o no en la versión que queremos) en los repositorios configurados por defecto. Entonces se añade un repositorio externo.
En este módulo aparecerá con calma, por ejemplo al instalar ciertas versiones de PHP o al preparar Docker. De momento basta con saber que existe: apt solo instala lo que sus repositorios conocen.
Navegación
Imprime el directorio de trabajo: dónde estás.
Cambia de directorio.
cd ..sube al padrecd ~ocd→ homecd -vuelve al anteriorcd /va a la raíz
Lista el contenido del directorio.
-ldetalle (permisos, dueño, tamaño)-aincluye ocultos (.env,.git)-htamaños legibles (2.4Ken vez de bytes)
Muestra el directorio en árbol. Muy útil para ver sites-available / sites-enabled.
-L nprofundidad máxima
Crear, copiar, mover, borrar
Crea un directorio.
-pcrea también los padres si no existen (no falla si ya está)
Crea un fichero vacío. Si ya existe, solo le actualiza la fecha.
Copia ficheros. El original se queda.
-rrecursivo (obligatorio para directorios)
Mueve o renombra. No hay comando rename (mv sería su equivalente).
Borra. No hay papelera.
-rborra directorios-ipregunta antes-rffuerza y recursivo: no lo uses en/ni “por si acaso”
Crea un enlace. Con -s es simbólico (un atajo a otra ruta). Por ejemplo, a2ensite internamente hace esto entre sites-available y sites-enabled.
-ssimbólico (el que usamos)
rm -rf
Cuidado al utilizar este comando. borramos lo especificado de forma recursiva y sin preguntar.
Ver y editar
Vuelca el fichero entero en la terminal. Para ficheros cortos.
Paginador: lees un fichero largo sin abrirlo en un editor.
qsalir/textobuscar- flechas / espacio para moverte
Primeras líneas.
-ncuántas líneas (por defecto 10)
Últimas líneas. Imprescindible con logs.
-ncuántas líneas-ffollow: se queda mirando lo nuevo (Ctrl+C para salir)
Editor sencillo en terminal. Ctrl+O guardar, Ctrl+X salir. Con sudo nano editas ficheros de sistema (/etc/hosts, virtual hosts).
Búsqueda
Busca ficheros por nombre, tipo o ruta (no el contenido).
-name '*.php'patrón (las comillas evitan que la shell expanda el*)-type dsolo directorios ·-type fsolo ficheros
Ruta del ejecutable que se lanzaría. Sirve para comprobar que existen php, docker o composer.
Permisos y usuarios
En Linux todo proceso corre asociado a un usuario. En este nivel: el que lo ha lanzado. Más adelante veremos servicios que cambian de usuario o arrancan con uno concreto.
Cuando ese proceso toca un fichero o directorio, el sistema no pregunta “¿quién soy yo en la terminal?”: mira el usuario/grupo del proceso y los permisos del recurso.
proceso → usuario/grupo → recurso → permisos → operación permitida o denegada
Tres permisos:
| En un fichero | En un directorio | |
|---|---|---|
r read | leer el contenido | listar (ls) |
w write | modificarlo | crear, borrar o renombrar entradas |
x execute | ejecutarlo | entrar (cd) |
En un directorio, r y w casi siempre van con x: sin x no entras, y entonces no puedes listar ni crear nada útil.
En este módulo, Apache/PHP suele ejecutarse como www-data. Si PHP no puede leer o escribir, el que choca con los permisos es ese proceso, no tu usuario de clase. Detalle y tabla octal → PhpStorm y permisos.
Ejecuta el comando como administrador. Lo pide el sistema cuando tocas /etc, paquetes o servicios.
Qué usuario eres en esta terminal. Dentro de un contenedor a menudo es root; en tu Ubuntu, tu cuenta.
Cambia permisos (qué se puede leer, escribir o ejecutar).
-Rrecursivo+xdar ejecución (scripts)644fichero típico ·755directorio / script
Cambia propietario y grupo. Formato usuario:grupo.
-Rrecursivo- El grupo
www-dataes el de Apache
No uses chmod 777 “para que vaya”
Abre el fichero a todo el mundo. En clase se ve al momento; en un servidor es un agujero. Ajusta dueño (chown) y un 755/644.
Procesos y servicios
Lista procesos. aux es el retrato amplio (usuario, CPU, comando).
Vista en vivo de CPU y memoria. q para salir. Si un contenedor se come la RAM, empieza aquí.
Pide a un proceso (por PID, columna de ps/top) que termine.
-9forzar (SIGKILL): último recurso, no el primer intento
Controla servicios (Apache, MySQL, Docker…). Es el comando nativo en Ubuntu.
status·start·stop·restart·reloadreloadrecarga config sin tumbar del todo (Apache, después de un virtual host)- Atajo equivalente:
sudo service apache2 restart(en Debian/Ubuntu acaba llamando asystemctl)
Red
¿Hay red hasta esa máquina? También comprueba que un nombre de /etc/hosts resuelve.
-c 4solo 4 paquetes (si no, no para hasta Ctrl+C)
Habla HTTP desde la terminal: tu PHP, Laravel o el contenedor.
-Isolo cabeceras (¿responde 200, 301, 500?)-Lsigue redirecciones
Puertos a la escucha. Busca :80, :8800, :3306, :443.
-tTCP ·-uUDP ·-llistening ·-nnúmeros, sin resolver nombres
Direcciones de tus interfaces.
a(address) todas-brformato corto, el que se puede leer en clase
Disco
Espacio de las particiones (el disco visto por el sistema).
-htamaños humanos (G,M)
Peso de una carpeta (vendor, node_modules, logs…).
-ssolo el total ·-hlegibledu -sh *totales de cada entrada del directorio actual
Empaquetar: tar
Empaqueta (y casi siempre comprime) un directorio. Lo contrario: descomprimir.
-ccrear ·-xextraer ·-ffichero-zgzip (por eso ves.tar.gz)- Extraer:
tar -xzf proyecto.tar.gz
Atajos de terminal
No son comandos de paquete, pero ahorran más tiempo que media chuleta.
| Qué | Para qué |
|---|---|
Tab | Autocompleta rutas y comandos |
↑ / ↓ | Recorre el historial |
Ctrl+C | Corta el proceso en primer plano (ping, tail -f, top) |
Ctrl+L o clear | Limpia la pantalla |
Ctrl+D | Fin de entrada / salir de algunas shells |
Lista los comandos que ya has usado. !210 repite el número 210 (con cuidado).
Manual del comando. q sale. Versión rápida: ls --help.
Imprime texto o el valor de una variable. En Docker y Laravel verás mucho $VAR y ficheros .env.
| Símbolo | Qué hace | Ejemplo |
|---|---|---|
| | Tubería: la salida de uno entra en el siguiente | ps aux | grep apache |
> | Escribe / sobrescribe un fichero | echo hola > nota.txt |
>> | Añade al final | echo otra >> nota.txt |
&& | Encadena si lo anterior fue bien | mkdir app && cd app |
Con Docker
Estos comandos no vienen con Ubuntu: hace falta el motor de Docker (unidad Docker). La idea clave: docker exec … bash te deja dentro de un Linux; a partir de ahí valen ls, cd, chmod, tail…
Abre una shell en un contenedor que ya está en marcha. -it es interactivo + terminal. web es el container_name de clase.
Estado de los servicios del compose (¿está up el web?).
Logs del compose. -f es el tail -f de Docker.
Levanta el laboratorio. -d en segundo plano (detached). Para tumbarlo: docker compose down.
Apache (los de la práctica)
Van con el paquete apache2. Tras cambiar un virtual host: sudo systemctl reload apache2.
Activa un virtual host: crea el enlace en sites-enabled. El contrario es a2dissite.
configtest revisa la configuración antes del reload. Si dice Syntax OK, recarga; si no, no tumbes Apache a ciegas.
Referencias
Dónde sigue esto
- PhpStorm y permisos —
chmod,chown,www-data - Apache y práctica de virtual hosts
- Docker — imagen, contenedor, volumen, compose
Apache
En este módulo vas a vivir aquí:
/var/www/html— código que sirve Apache (en Docker, el volumen del proyecto)/etc/apache2— configuración de Apache/etc/hosts— nombres locales (www.informatica.com→127.0.0.1)/var/log/apache2— logs del servidor web