Explorar la línea de comandos
Módulo 1: Su primer servidor · Tiempo de lectura: 11 minutos
Objetivo de aprendizaje: Después de esta lección sabrá orientarse en un servidor Linux: recorrer carpetas, leer y editar archivos, ver cuánto disco y memoria quedan libres y buscar usted mismo ayuda sobre un comando.
Conceptos clave: shell, prompt, carpeta y ruta, ruta absoluta y relativa, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, autocompletado con Tab, uname, df, free, uptime, pipe, grep
La shell y el prompt
Después de iniciar sesión, usted habla con la shell: el programa que lee y ejecuta sus comandos. En Debian y Ubuntu suele ser bash. A la izquierda del cursor aparece el prompt:
anna@web1:~$
root@web1:~#Este le indica tres cosas: quién es usted (anna o root), en qué servidor está (web1) y en qué carpeta se encuentra (~ es su propia carpeta personal). El último carácter es importante: $ indica un usuario normal, # indica root. Si ve #, cada comando se ejecuta con todos los permisos. Escriba ahí con calma.
Carpetas y rutas
En Linux todo cuelga de un único árbol que empieza en / (la carpeta raíz, que no debe confundirse con el usuario root). Algunas carpetas aparecerán una y otra vez en este curso:
| Carpeta | Qué contiene |
|---|---|
/etc | Configuración: SSH (/etc/ssh), servidor web (/etc/nginx), usuarios (/etc/passwd) |
/var/log | Archivos de registro (además del journal, lección 6.2) |
/var/lib | Datos de programas, por ejemplo bases de datos y Docker |
/home | Carpetas personales de los usuarios normales, como /home/anna |
/root | Carpeta personal de root |
/usr | Programas y bibliotecas instalados |
/tmp | Archivos temporales, se limpia automáticamente |
/srv o /var/www | Ubicación habitual de sitios web y servicios |
Una ruta absoluta empieza en /, por ejemplo /etc/ssh/sshd_config. Una ruta relativa empieza donde usted se encuentra ahora: si está en /etc, ssh/sshd_config es el mismo archivo. .. es la carpeta superior, . la carpeta actual.
anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli ssh_config ssh_config.d sshd_config sshd_config.d ssh_host_ed25519_key ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$cd sin nada detrás le devuelve a su carpeta personal.
Ver archivos
ls -l muestra algo más que los nombres:
anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root 399 Nov 2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root 91 Nov 2 14:20 ssh_host_ed25519_key.pubDe izquierda a derecha: los permisos, el número de enlaces, el propietario, el grupo, el tamaño en bytes, la fecha y el nombre. Fíjese en la diferencia: la host key secreta (-rw-------) solo puede leerla root, la pública (-rw-r--r--) cualquiera. En la lección 3.1 aprenderá a leer estos permisos con precisión. ls -la muestra también los archivos ocultos: nombres que empiezan por un punto, como .ssh.
Para leer el contenido:
cat bestand: el archivo completo de una vez, práctico para archivos cortos;less bestand: desplazarse con las flechas y la barra espaciadora, buscar con/woord, salir conq;head -n 20 bestandytail -n 20 bestand: las primeras o las últimas líneas;tail -fsigue mostrando las líneas nuevas a medida que se añaden.
Editar un archivo con nano
La configuración se modifica en un editor de texto. nano es el más sencillo:
root@web1:~# nano /etc/hostsEn la parte inferior aparecen los atajos de teclado; ^ significa Ctrl. Guardar es Ctrl+O y Enter, salir Ctrl+X, buscar Ctrl+W. Si ya trabaja con vim, puede usarlo; en una instalación mínima, vim no siempre está disponible por completo.
Tres hábitos que más adelante le ahorrarán muchos disgustos:
- Haga primero una copia:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Pruebe la configuración antes de reiniciar un servicio. Muchos programas tienen su propio comando para ello:
sshd -t,nginx -t(lecciones 2.2 y 7.2). - Cambie una sola cosa cada vez, para saber qué ha causado un error.
¿En qué estado se encuentra su servidor?
Algunos comandos que utilizará en cualquier situación:
anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
10:12:44 up 3 days, 2:10, 1 user, load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 3.1G 35G 9% /
anna@web1:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 412Mi 2.9Gi 1.0Mi 720Mi 3.4Gi
Swap: 0B 0B 0Buname -a: qué kernel se está ejecutando.uptime: cuánto tiempo lleva encendido el servidor y la load average de 1, 5 y 15 minutos. A grandes rasgos: una carga que se mantiene durante mucho tiempo por encima del número de núcleos del procesador significa que hay procesos esperando.df -h: espacio libre en disco (-hsignifica "human readable", con G y M). Un disco lleno es una de las causas más frecuentes de que un servidor se detenga "sin motivo".free -h: memoria. Fíjese en la columnaavailable, no enfree: Linux utiliza la memoria libre como caché (buff/cache) y la devuelve cuando un programa la necesita.
Y su red, de la lección 1.2: ip -brief address.
Encontrar ayuda
No necesita memorizar todas las opciones. Lo que sí debe saber es dónde encontrarlas:
man sshabre el manual (manual page) de un comando. Se navega como enlessy se busca con/.man sshd_configdescribe cada parámetro configurable de ese archivo.ls --helpmuestra en la mayoría de los comandos una lista breve de opciones.- La tecla Tab completa nombres de comandos y archivos. Pulsar Tab dos veces muestra las opciones posibles. Así evita errores de escritura en rutas largas.
- La flecha hacia arriba recupera comandos anteriores;
historylos muestra todos.
En una instalación mínima a veces faltan los manuales. En Debian y Ubuntu se instalan con apt install man-db (módulo 4).
Pipes y grep
Puede encadenar comandos con una pipe (|): la salida de uno es la entrada del siguiente. grep filtra las líneas que contienen una palabra:
anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | lessLas líneas que empiezan por # son comentarios: no hacen nada y a menudo muestran el valor predeterminado. En la lección 2.2 verá por qué esto puede resultar confuso en SSH.
Errores frecuentes
- Pegar sin leer. Los comandos de internet hacen exactamente lo que dicen, aunque sea algo distinto de lo que promete el título del artículo. Lea cada comando antes de ejecutarlo, sobre todo si es usted root.
rmno tiene papelera. Lo borrado, borrado está. Tenga especial cuidado conrm -r(una carpeta con todo su contenido) y con comodines como*.- Las mayúsculas cuentan.
/etc/SSHno existe;/etc/sshsí. - Los espacios en las rutas deben ir entre comillas:
cat "/srv/mijn site/index.html". Mejor aún: no use espacios en los nombres en un servidor.
Resumen
- El prompt indica quién es usted, en qué servidor y dónde está;
#significa root. - La configuración está en
/etc, los registros en/var/log, los datos de programas en/var/liby las carpetas personales en/home. - Lea con
cat,less,headytail; edite connano, después de hacer una copia, y pruebe la configuración antes de reiniciar. df -h,free -h,uptimeyip -brief addressmuestran en qué estado se encuentra su servidor.- La ayuda está en
many--help; Tab completa; con|ygrepfiltra la salida.
Cuestionario
Ejercicio
Ejercicio O1.4: Conocer su servidor. Ejecute los comandos de la lección en su propio servidor y anote: distribución y versión, kernel, espacio libre en disco, memoria disponible, carga, IPv4 e IPv6, y qué archivos de /etc/ssh solo puede leer root. Después responda a dos preguntas sobre lo que ha visto.
Ejercicio O1.4: Conocer su servidor
Este ejercicio lo hace usted mismo; nadie lo revisa. Marque lo que haya hecho y señale el ejercicio como realizado.
available también incluye la memoria caché que Linux libera. El archivo .pub es la parte pública que ve cada cliente; el archivo sin .pub es secreto (600, root), porque quien lo tenga puede hacerse pasar por su servidor.
Sus marcas y notas se quedan solo en este navegador; no las enviamos a ningún sitio. Si ha iniciado sesión, en Mis cursos solo guardamos que ha realizado el ejercicio.
Para saber más
- Ampliar el espacio en disco de su VPS
- Acceso SSH y el Terminal en DirectAdmin: qué paquetes lo incluyen y cómo iniciar sesión
- Referencia de Debian, capítulo 1 (manual de la línea de comandos, en inglés): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
