Operar sistemas en funcionamiento
Gestión de arranque, procesos, servicios y diagnóstico del sistema
1. Arrancar, reiniciar y apagar sistemas
El proceso inicial del sistema es PID 1, actualmente gestionado por systemd, sucesor del antiguo init, encargado de gestionar el arranque y los servicios. Los runlevels ( init 0-6) fueron sustituidos por targets que cumplen la misma función.
- 0 → poweroff.target — Apagar el sistema
- 1 → rescue.target — Modo rescate (usuario único)
- 3 → multi-user.target — Multiusuario en modo texto
- 5 → graphical.target — Entorno gráfico
- 6 → reboot.target — Reiniciar el sistema
- emergency.target — Modo emergencia mínimo
Podemos apagar o reiniciar el sistema usando :
- systemctl poweroff → Apaga el sistema
- systemctl reboot → Reinicia el sistema
- shutdown -h now → Apaga el sistema inmediatamente
- shutdown -r +5 → Reinicia el sistema en 5 minutos
2. Arrancar sistemas en diferentes objetivos manualmente
En systemd, los targets definen el estado operativo del sistema. Podemos cambiar el target de forma temporal o permanente.
Cambio temporal:
systemctl isolate TARGET→ Cambia el target en la sesión actual- Desde GRUB, editando la línea de arranque y añadiendo:
systemd.unit=TARGET
Cambio permanente:
systemctl set-default TARGET→ Define el target por defectosystemctl get-default→ Muestra el target actual
3. Interrumpir el arranque para obtener acceso
Durante el arranque, es posible interrumpir GRUB para acceder y modificar parametros Esto lo podemos hacer ya sea para encender el sistema con un target especifico, recuperar la contraseña o entrar como modo emergencia para revisar posibles errores
Uno de los puntos mas importantes del examen es resetear la contraseña de root para poder realizar el examen. Para ello lo primero que haremos será entrar en GRUB y editar la entrada presionando e.
Una vez dentro, modificamos la linea de linux, añadiendo al final rd.break (si no funciona podriamos poner como alternativa init=/bin/bash) y arrancaremos con Ctrl + X.
Una vez arrancado, tendremos que seguir los siguientes pasos :
4. Identificar y eliminar procesos
Linux ofrece varias herramientas para ver qué procesos están usando más recursos. Podemos hacerlo de forma estática con ps o de forma interactiva con top.
El comando top muestra los procesos en tiempo real y permite ver el consumo de CPU y memoria. Desde top también podemos matar procesos pulsando k
Los flags más importantes de ps serían :
- ps aux → Muestra todos los procesos del sistema
- ps -ef → Vista completa de los procesos en formato extendido
Para comprobar el uso de memoria del sistema utilizamos el comando free -h, que muestra la memoria total, usada y libre de forma legible.
Para finalizar procesos utilizamos el comando kill que tiene diferentes flags :
- kill -15 PID : Es la que se usa por defecto, para el proceso
- kill -9 PID : La más agrevisa, fuerza la finalización del proceso
- pkill nombre : para todos los procesos relacionados con ese nombre
5. Ajustar la programación de procesos (Nice/RT)
La prioridad de ejecución se controla con nice y renice. Los valores van de -20 (más prioridad) a 19 (menos prioridad). La podemos comprobar con top.
- nice -n 10 comando → Ejecuta un comando con menor prioridad
- renice -5 PID → Cambia la prioridad de un proceso en ejecución
Por otro lado tenemos los procesos real time, que son procesos que tienen prioridad ante todos y va con valores de 0 a 99, siendo 99 el mas alto. Podemos ver su información, cambiar su prioridad o lanzar un proceso con un rt especifico :
- chrt -p PID → Muestra la política y prioridad real time de un proceso
- chrt -r -p PRIORIDAD PID → Cambia la prioridad real time de un proceso existente
- chrt -r PRIORIDAD comando → Ejecuta un comando con prioridad real time
6. Administrar perfiles de sintonización (Tuned)
El servicio tuned optimiza el rendimiento según el rol del servidor.
Los perfiles más interesantes podrían ser : balanced, virtual-guest, throughput-performance, network-latency...
Podemos listar los perfiles con tuned-adm list, ver el perfil actual con el comando tuned-adm active, cambiarlo con tuned-adm profile nombre-perfil o apagar este servicio con tuned-adm off.
7. Localizar e interpretar logs y journals
Los logs tradicionales se encuentran en /var/log. Systemd utiliza journalctl para gestionar los logs y no se pueden leer en texto plano ya que son binarios. Algunos filtros que podemos hacer son :
journalctl -p err: Solo errores.journalctl -u sshd: Logs de un servicio específico.journalctl -xe: Ayuda extendida sobre fallos recientes.journalctl -f: Muestra los mensajes en tiempo realjournalctl -b: Logs del arranque del sistema
8. Preservar journals del sistema
Por defecto, los journals pueden ser volátiles. Para que el journal no se borre al reiniciar, debemos crear la estructura manualmente
mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
Configurar Storage=persistent en /etc/systemd/journald.conf y reiniciar el servicio.
Preferiblemente, siempre que hagamos un cambio a un archivo de configuración de un servicio, reiniciaremos este servicio systemctl restart systemd-journald.
No hemos mencionado la rotación de logs, para ello podemos usar
- --vacuum-time → Borra logs antiguos según el tiempo indicado.
- --vacuum-size → Borra logs hasta ocupar el tamaño indicado
- --rotate → Fuerza la rotación del journal actual
- --disk-usage → Muestra cuánto espacio ocupan los logs
- --list-boots → Muestra los arranques registrados en el sistema
9. Iniciar, detener y comprobar servicios de red
Los servicios se pueden gestionar a traves de varios comandos : systemctl, ip o nmcli.
Cuando usemos systemctl, el servicio se llama NetworkManager. Usaremos los comandos :
- systemctl start NetworkManager → Levantar
- systemctl stop NetworkManager → Parar
- systemctl restart NetworkManager → Reiniciar
- systemctl status NetworkManager → Comprobar el estado
Tambien podemos usar nmcli para gestionar los servicios de red :
- nmcli connection up "interfaz" → Levantar
- nmcli connection down "interfaz" → Parar
- nmcli connection show → Comprobar
Por ultimo, podemos usar ip ( aunque este no es recomendable ya que solo hace cambios temporales ) :
- ip link set "interfaz" up → Levantar
- ip link set "interfaz" down → Parar
- ip a → Comprobar
10. Transferir archivos de forma segura
La transferencia segura se realiza mediante SSH. Tenemos principalmente : scp y sftp.
La sintaxis de scp puede ser :
- scp local user@ip:/remoto → De local a remoto
- scp user@ip:/remoto /local → De remoto a local
Las opciones más usadas son :
- -r → Realizar copias recursivas.
- -P → Indicar puerto
- -p → Conservar permisos y otros datos
Por otro lado, tenemos sftp que tiene un menú interactivo donde podemos lanzar comandos. Para conectarnos usaremos sftp user@IP.
Si queremos lanzar comandos en local lanzariamos los comandos con una l delante, por ejemplo lcd, lpwd...
Los más a tener en cuenta serían : put( Subir un archivo) y get( Descargarlo)