Procesos, paquetes y servicios en Linux con systemd

Aprende a administrar el software que se ejecuta en un sistema Linux desde la línea de comandos. Supervisa procesos con ps, top y free, detenlos y cambia su prioridad mediante señales y nice, e inspecciona el hardware con herramientas como lscpu, lsblk y lspci. Instala, actualiza y elimina software con apt y dnf, gestiona servicios con systemctl, lee registros con journalctl, /var/log y dmesg para diagnosticar y resolver fallos de servicios, y crea copias de seguridad de archivos con tar, gzip, xz y zip.

PrincipianteUnidad 6 de 7 del curso Curso de Introducción a Linux

Lo que aprenderás

  1. Encuentra los programas que se ejecutan en un sistema Linux, observa cuánta CPU y memoria utilizan, y detenlos, páusalos o cambia su prioridad de forma segura.
    • Lista los procesos e interpreta la información de ps
      Explica qué es un proceso, identifícalo por su identificador y utiliza ps, pgrep y /proc para encontrar procesos y consultar su estado.
    • Supervisa la CPU, la memoria y la carga con top, free y uptime
      Interpreta la vista de procesos en tiempo real de top, evalúa la memoria con free y determina a partir de la carga media si un sistema está sobrecargado.
    • Detén procesos mediante señales
      Envía señales con kill, pkill y killall, elige entre una parada ordenada y una forzada, y comprueba el resultado.
    • Ejecuta trabajos en segundo plano y establece prioridades
      Mueve comandos entre el primer y el segundo plano, mantenlos en ejecución después de cerrar sesión y cambia su prioridad de CPU con nice y renice.
  2. Averigua qué procesador, memoria, discos y dispositivos tiene un equipo Linux, y qué núcleo y controladores utiliza, sin abrir la carcasa.
    • Identifica el procesador, la memoria y el sistema
      Utiliza uname, lscpu, nproc, /proc y dmidecode para obtener información sobre la arquitectura, las CPU, la memoria y el núcleo de un equipo.
    • Lista discos, dispositivos PCI y USB y sus controladores
      Identifica correctamente los dispositivos de almacenamiento, lista los dispositivos conectados a un equipo con lsblk, lspci y lsusb, y encuentra sus controladores y los mensajes del núcleo relacionados.
  3. Utiliza los gestores de paquetes de las familias Debian y Red Hat para instalar, actualizar, eliminar e inspeccionar software de forma segura desde repositorios de confianza.
    • Comprende los paquetes, los repositorios y las dependencias
      Explica qué son un paquete, un repositorio y una dependencia, cómo se reparten el trabajo las herramientas de paquetes de alto y bajo nivel y qué herramientas utiliza cada familia de distribuciones.
    • Instala, actualiza y elimina software con apt y dnf
      Actualiza la información de los paquetes, instala y actualiza software y elimínalo de forma limpia con apt en sistemas de la familia Debian y dnf en sistemas de la familia Red Hat.
    • Busca paquetes e inspecciona el software instalado
      Encuentra el paquete que necesitas, comprueba qué está instalado y en qué versión, consulta los archivos que instaló un paquete y a qué paquete pertenece un archivo, y revisa el historial de paquetes.
  4. Comprueba, inicia, detén, habilita y personaliza servicios en segundo plano con systemctl, y comprende cómo decide systemd qué se ejecuta al arrancar.
    • Comprende systemd, las unidades y el estado de los servicios
      Explica qué son un servicio y una unidad de systemd, interpreta la salida de systemctl status y distingue entre un servicio en ejecución y uno habilitado.
    • Inicia, detén, habilita y deshabilita servicios
      Controla los servicios con systemctl en el momento y al arrancar, aplica cambios de configuración de forma segura y elige la unidad de destino predeterminada para el arranque.
    • Lee y personaliza archivos de unidad
      Encuentra y lee el archivo de unidad de un servicio, cambia sus ajustes de forma segura mediante archivos de configuración complementaria y escribe un servicio sencillo propio.
  5. Encuentra los mensajes que explican qué hicieron un sistema y sus servicios mediante el registro de systemd, los archivos de registro de /var/log y los mensajes del núcleo, y utilízalos para reparar un servicio que falla.
    • Consulta el registro de systemd con journalctl
      Lee el registro de systemd con journalctl, filtrado por servicio, arranque, prioridad y hora, y conoce dónde se almacena.
    • Lee los archivos de registro de /var/log y los mensajes del núcleo
      Encuentra y lee archivos de registro de texto en /var/log, incluidos los archivos antiguos rotados, y usa dmesg para leer los mensajes del núcleo sobre hardware y controladores.
    • Diagnostica y resuelve paso a paso los fallos de un servicio
      Combina systemctl, journalctl y las comprobaciones propias del programa en un procedimiento repetible que permita descubrir por qué falla un servicio y confirmar la reparación.
  6. Agrupa archivos y directorios en archivos contenedores con tar y zip, comprímelos y descomprímelos con gzip, bzip2 y xz, y elige el formato adecuado para copias de seguridad y para compartir.
    • Crea archivos tar, lista su contenido y extráelo
      Usa tar para crear archivos contenedores comprimidos, comprobar su contenido y extraerlo en el lugar adecuado sin sobrescribir archivos por accidente.
    • Comprime archivos con gzip, bzip2, xz y zip
      Comprime y descomprime archivos individuales, lee registros comprimidos sin descomprimirlos, usa zip para compartir y elige un formato según la velocidad, el tamaño y el propósito.

Guía de estudio de Procesos, paquetes y servicios en Linux

6 capítulos

1

Supervisa y controla los procesos en ejecución

Un comando lento, un servidor ocupado y un programa que no se cierra plantean la misma pregunta: ¿qué se está ejecutando? Las herramientas de procesos permiten relacionar el nombre de un programa con su propietario, identificador de proceso y uso de recursos. Interpretarás una instantánea, observarás los cambios a lo largo del tiempo y después elegirás cómo detener o pausar el trabajo. El control de trabajos del intérprete y las prioridades de CPU te dan más control sobre las tareas largas sin perder el indicador de comandos del terminal.

1.1 Lista los procesos e interpreta la información de ps

Un programa como /usr/bin/sleep es un archivo en el disco. Un proceso es una instancia en ejecución de ese programa, con su propia memoria y sus propios recursos. Tres comandos que ejecutan el mismo programa crean tres procesos. Cada proceso activo tiene un PID, un identificador de proceso; Linux puede reutilizar ese número después de que termine.

Encuentra el proceso y su padre

Normalmente, un proceso es iniciado por otro proceso, su padre. La columna PPID indica el PID de ese padre. Los comandos que inicias en un intérprete de comandos son sus hijos. El PID 1 corresponde al primer proceso iniciado por el núcleo; en un sistema con systemd, es systemd. pstree -p dibuja estas relaciones familiares cuando está instalado.

ps toma una instantánea. Su selección predeterminada son los procesos con tu identificador de usuario efectivo en el terminal actual. Para obtener una vista de todo el sistema, elige las columnas que necesitas:

ComandoColumnas útiles
ps -efUID, PID, PPID, STIME, TIME, CMD
ps auxUSER, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND

La forma de estilo BSD ps aux no lleva guion. El campo USER identifica la cuenta cuyos permisos usa el proceso. Un proceso de superusuario puede acceder a recursos a los que no puede acceder un proceso de usuario normal.

Interpreta una línea

Considera este ejemplo de ps aux:

www-data 2417 0.3 1.2 214560 48212 ? S 09:14 0:02 nginx: worker process

El propietario es www-data, el PID es 2417 y el uso medio de CPU ha sido del 0,3 % desde el inicio. El proceso ocupa actualmente el 1,2 % de la RAM. RSS es la memoria residente: 48 212 KiB, aproximadamente 47,1 MiB. VSZ, 214 560 KiB, también incluye espacio de direcciones virtuales que no reside en la RAM. Un VSZ grande por sí solo no demuestra que falte memoria.

El ? significa que no hay un terminal de control. El estado S significa que el proceso está en espera, normalmente de trabajo. START es 09:14; TIME son dos segundos de trabajo de CPU. TIME no es el tiempo transcurrido: un servidor puede ejecutarse durante días usando muy poca CPU.

Reconoce los estados de proceso
EstadoSignificado
REn ejecución o listo para recibir tiempo de CPU
SEn espera de un evento
DEn espera ininterrumpible, a menudo de almacenamiento
TDetenido o pausado
ZZombi: terminado, a la espera de que su padre recoja su estado
IHilo inactivo del núcleo

STAT puede añadir indicadores: + para un grupo de primer plano del terminal, s para un líder de sesión, l para varios hilos, N para una prioridad de CPU reducida y < para una prioridad elevada. Estar en espera es normal. Un proceso zombi ya ha terminado y no usa CPU; enviarle otra señal de terminación no permite recoger su estado de salida. Un número creciente de procesos zombi apunta a un programa padre que necesita atención.

Acota la búsqueda

pgrep -a nginx muestra los PID y las líneas de comandos coincidentes. Los patrones pueden coincidir con varios nombres: pgrep ssh puede encontrar tanto sshd como ssh-agent. pgrep -u alice selecciona por propietario; pidof nginx busca un nombre de programa. Una cadena que conecta ps con grep también puede mostrar el propio proceso de grep.

Para ver los cinco procesos que más memoria usan, ejecuta:

ps -eo pid,ppid,user,%mem,cmd --sort=-%mem | head -n 6

Hay seis líneas porque la primera es un encabezado. ps -p 2417 comprueba un PID. /proc/2417/status proporciona su nombre, estado, padre y detalles de memoria. /proc es una vista virtual proporcionada por el núcleo, no informes de procesos guardados en disco; el directorio del PID desaparece cuando el proceso termina.

Puntos clave

  • Un proceso es una instancia en ejecución; su PID lo identifica mientras está activo.
  • ps -ef muestra los procesos padre; ps aux añade columnas de CPU y memoria.
  • TIME mide el trabajo de CPU, mientras que START indica cuándo comenzó el proceso.
  • RSS mide la RAM residente; VSZ incluye otra memoria virtual.
  • Los procesos en espera son normales; los procesos zombi ya han terminado.
  • pgrep acota una búsqueda y /proc/PID/status proporciona información del núcleo.

1.2 Supervisa la CPU, la memoria y la carga con top, free y uptime

Una instantánea muestra lo que existe; las observaciones repetidas muestran lo que cambia. top combina una lista de procesos en tiempo real con totales de actividad de CPU, carga, memoria y espacio de intercambio. Lee el resumen y los procesos ocupados en conjunto antes de decidir qué recurso está bajo presión.

Trabaja con top

Ejecuta top. Pulsa P para ordenar por CPU, M para ordenar por memoria, 1 para mostrar cada CPU, h para obtener ayuda y q para salir. Sus comandos k y r envían señales y cambian los valores de ajuste de prioridad. htop ofrece otra vista interactiva, pero puede que necesite instalación.

Las columnas de procesos incluyen PID, USER, PR, NI, VIRT, RES, SHR, estado, %CPU, %MEM, TIME+ y COMMAND. RES es la RAM residente, como RSS en ps; VIRT incluye espacio de direcciones reservado. En el modo predeterminado de top por CPU, un proceso multihilo puede alcanzar el 400 % si mantiene ocupadas cuatro CPU. Al pulsar I, la visualización pasa a dividir el uso entre el número de CPU.

Identifica el tipo de actividad de CPU

El resumen de CPU divide el tiempo en categorías:

CampoQué indica
us, syTrabajo de programas de usuario y del núcleo
niTrabajo de usuario con prioridad ajustada mediante nice
idTiempo inactivo
waTiempo inactivo mientras hay operaciones de entrada/salida pendientes
hi, siTrabajo de interrupciones de hardware y software
stTiempo de CPU que una máquina virtual perdió en favor de su anfitrión

Un uso alto de CPU por parte de los usuarios indica que se están realizando cálculos. Un valor wa alto con poco trabajo de usuario dirige la atención hacia las esperas de almacenamiento. En una máquina virtual, un valor st alto apunta a tiempo de CPU retenido por el anfitrión. Son causas distintas de una respuesta lenta.

Compara la carga con la capacidad de CPU

uptime y top muestran las cargas medias de los últimos 1, 5 y 15 minutos. Linux cuenta las tareas ejecutables y las tareas en espera ininterrumpible, incluidas las esperas de almacenamiento. La carga no es un porcentaje de CPU. nproc indica las CPU disponibles para el proceso actual, lo que resulta útil para interpretar la capacidad.

Para tareas limitadas por la CPU y con poca espera de almacenamiento, supongamos que nproc indica 4 y la carga es 6.00, 5.20, 3.10. La carga reciente es de 1,5 tareas por CPU, por lo que ha habido trabajo en espera. El valor del periodo más corto supera al del periodo más largo, lo que indica un aumento reciente. Con 16 CPU, una carga de 6 sería mucho más ligera. En cambio, una carga alta con CPU inactivas puede deberse a tareas en estado D.

Evalúa la memoria con available

Ejecuta free -h. Su fila Mem incluye total, used, free, shared, buff/cache y available. Linux llena la RAM libre con cachés de disco útiles y puede recuperar gran parte de ella. Free cuenta la RAM completamente sin usar; available estima cuánta memoria puede utilizar el trabajo nuevo sin recurrir al espacio de intercambio.

Por ejemplo, un equipo indica un total de 7.6Gi, used de 3.1Gi, free de 0.4Gi, buff/cache de 4.6Gi y available de 4.5Gi. El valor pequeño de free no indica escasez: aproximadamente el 59 % sigue disponible. En las versiones actuales de procps, used es total menos available; free, used y la caché no son partes independientes que simplemente se suman.

Los sufijos Ki, Mi y Gi son unidades binarias. Un GiB equivale a 1 073 741 824 bytes; un GB equivale a 1 000 000 000 bytes. free -m usa MiB y free -g usa GiB enteros, lo que puede ocultar cantidades pequeñas por el redondeo.

El espacio de intercambio traslada parte del contenido de la memoria al almacenamiento en disco, que es más lento. Presta atención a una memoria available baja junto con un uso creciente del espacio de intercambio. Si la memoria se agota, el mecanismo del núcleo que termina procesos por falta de memoria puede finalizar uno. Comprueba si hay un mensaje OOM con sudo journalctl -k antes de suponer que una aplicación falló por sí sola.

Puntos clave

  • Utiliza tanto el resumen del sistema como la lista de procesos de top.
  • La carga de Linux cuenta las tareas ejecutables y las esperas ininterrumpibles; no es un porcentaje.
  • Evalúa la carga en relación con las CPU disponibles y comprueba si hay esperas de almacenamiento.
  • La columna available es más útil que free para evaluar el margen de RAM.
  • Una memoria available baja y un uso creciente del espacio de intercambio indican presión; los eventos OOM aparecen en los registros del núcleo.

1.3 Detén procesos mediante señales

Una señal es una breve notificación que se entrega a un proceso. Puede solicitar una salida, pausar el trabajo o indicar a un servicio que vuelva a leer sus ajustes. El comando kill envía señales; su nombre no significa que todas las señales terminen el proceso que las recibe.

Elige la señal
SeñalPropósito
SIGTERMSolicitar una salida ordenada; es la señal predeterminada de kill
SIGKILLForzar la terminación sin que la aplicación pueda limpiar sus recursos
SIGINTInterrumpir el programa en primer plano, normalmente con Ctrl+C
SIGTSTPSolicitar una pausa, normalmente con Ctrl+Z
SIGSTOPForzar una pausa
SIGCONTReanudar un proceso detenido
SIGHUPNotificar el cierre del terminal; algunos servicios la usan para recargar
SIGQUITSalir, posiblemente con un volcado de memoria; se envía con Ctrl+\

El programa puede gestionar o ignorar la mayoría de las señales. SIGKILL y SIGSTOP no se pueden capturar, bloquear ni ignorar. kill -l lista los nombres y números. Entre los números habituales en x86 y ARM están TERM 15, KILL 9, INT 2, HUP 1, QUIT 3, CONT 18, STOP 19 y TSTP 20. Los nombres evitan la numeración dependiente de la arquitectura.

Detén un proceso con cuidado

Primero determina qué proceso es. ps -p 5120 -o pid,user,stat,cmd permite inspeccionar el PID, el propietario, el estado y el comando. Después, solicita una salida ordenada:

kill -TERM 5120

kill 5120, kill -15 5120 y kill -s TERM 5120 envían la misma solicitud. Una salida ordenada permite que la aplicación guarde el trabajo, cierre archivos y elimine archivos de bloqueo. Dale tiempo para responder y después vuelve a ejecutar ps -p 5120. Si solo aparece el encabezado, ha terminado.

Si el mismo proceso activo sigue bloqueado después de la espera, kill -KILL 5120 es la alternativa forzada. La aplicación pierde la oportunidad de limpiar sus recursos, por lo que puede perderse el trabajo no guardado y pueden quedar archivos temporales. Vuelve a comprobar la identidad antes de recurrir a la señal forzada: los PID pueden reutilizarse después de que un proceso termine.

Comprueba los nombres antes de actuar

pkill selecciona por un patrón de nombre; killall selecciona un nombre de programa. Ambos envían normalmente SIGTERM. Comprueba un patrón amplio con pgrep -a fire antes de usar pkill fire: ese patrón puede seleccionar más procesos de los previstos. pkill -u bob selecciona todos los procesos de bob, no una sola aplicación.

killall -HUP rsyslogd envía HUP a los procesos de registro coincidentes. El efecto de HUP depende de la aplicación: comprueba que admita la recarga antes de tratar la señal como un comando de recarga. Para un servicio gestionado por systemd, usa sudo systemctl stop NAME; el gestor se ocupa del grupo de procesos del servicio y no trata la parada solicitada como un fallo que deba reparar automáticamente.

Comprende los permisos y los estados

Una cuenta normal controla normalmente sus propios procesos. Un intento de enviar una señal al proceso de otra cuenta puede producir «Operation not permitted»; sudo proporciona autoridad de superusuario cuando es necesario. Verifica el destino antes de usar esa autoridad, porque detener el servicio equivocado afecta a otros usuarios.

Un proceso en estado D puede seguir visible después de SIGKILL mientras espera una respuesta del almacenamiento. Repetir la señal no repara ese almacenamiento. Un proceso zombi en estado Z ya ha terminado; su padre debe recoger su estado de salida. Por tanto, es importante inspeccionar el estado cuando el proceso no desaparece.

Los atajos de teclado actúan sobre el grupo de procesos en primer plano. Ctrl+C suele terminar el trabajo; Ctrl+Z lo pausa y conserva su memoria y sus archivos abiertos. El cierre del terminal suele provocar el envío de HUP y la terminación de los trabajos asociados, por lo que las tareas largas requieren una gestión cuidadosa.

Puntos clave

  • SIGTERM solicita una limpieza ordenada; SIGKILL fuerza la salida sin ella.
  • Comprueba las coincidencias del patrón y verifica el PID antes de enviar una señal.
  • SIGSTOP pausa y SIGCONT reanuda; kill puede hacer más que terminar procesos.
  • Un proceso zombi no puede volver a terminarse y las esperas de almacenamiento pueden retrasar la terminación.
  • Usa systemctl stop para un servicio gestionado.

1.4 Ejecuta trabajos en segundo plano y establece prioridades

Un trabajo en primer plano ocupa el terminal hasta que termina o se detiene. Un trabajo en segundo plano permite que el intérprete de comandos acepte otro comando mientras se ejecuta. El control de trabajos cambia dónde se ejecuta el trabajo; la prioridad de CPU cambia cómo compite con otras tareas.

Mueve el trabajo entre el primer y el segundo plano

Un signo de unión inicia un comando en segundo plano:

sleep 300 &

El intérprete puede mostrar [1] 6431. Aquí 1 es su número de trabajo local y 6431 es el PID válido en todo el sistema. jobs lista solo los trabajos de este intérprete. fg %1 lleva el trabajo 1 al primer plano. Si pausas ese trabajo en primer plano con Ctrl+Z, bg %1 lo reanuda en segundo plano. Sin un número, fg y bg eligen el trabajo marcado con +.

Prueba la secuencia con sleep 300: ejecútalo en primer plano, pulsa Ctrl+Z, ejecuta bg, consulta jobs, ejecuta fg y pulsa Ctrl+C. «Stopped» significa pausado, no terminado. Un trabajo detenido no usa CPU, pero sigue ocupando memoria y mantiene archivos abiertos. Bash puede mostrar la advertencia «There are stopped jobs» cuando intentas salir.

Controla la salida y el cierre de sesión

Un comando en segundo plano todavía puede escribir en el terminal. Redirige ambos flujos de salida para una tarea larga:

./report.sh > report.log 2>&1 &

La primera redirección envía la salida normal al archivo. 2>&1 envía la salida de error al mismo destino. El & final devuelve el indicador de comandos mientras se ejecuta la tarea.

Pasar un trabajo a segundo plano no lo protege por sí solo del cierre del terminal. Para iniciar una tarea que ignore SIGHUP, usa:

nohup ./long-task.sh > task.log 2>&1 &

Sin una redirección explícita, nohup suele escribir en nohup.out la salida destinada al terminal. En Bash, disown %1 elimina un trabajo existente de la tabla de trabajos del intérprete, de modo que Bash no le transmite HUP. El programa sigue necesitando destinos de entrada y salida utilizables. Un programa destinado a ejecutarse permanentemente se gestiona mejor como servicio.

Deja espacio para el trabajo interactivo

El valor de ajuste de prioridad expresa la prioridad de planificación de CPU de los procesos normales. Los valores van de -20, la prioridad más alta, a 19, la más baja; el valor inicial habitual es 0. Los valores más altos dan más oportunidades a las tareas que compiten. Un proceso con valor 19 aún puede utilizar por completo una CPU que de otro modo estaría inactiva.

nice -n 10 xz -9 big.log
renice -n 15 -p 6431

El primer comando inicia la compresión con un ajuste positivo del valor de prioridad; desde el valor habitual 0 pasa a 10. El segundo cambia a 15 el valor del proceso en ejecución. nice sin -n aplica un ajuste de 10. Un usuario normal generalmente puede aumentar el valor de sus propios procesos, reduciendo su prioridad de CPU. Aumentar la prioridad mediante la reducción del valor normalmente requiere ser superusuario, por ejemplo sudo renice -n -5 -p 6431.

En top, NI muestra el valor de ajuste de prioridad; para los procesos normales de tiempo compartido, PR suele ser 20 más NI. Por tanto, el valor 10 aparece como PR 30. En ps aux, N indica prioridad reducida y <, prioridad elevada. Este ajuste afecta a la competencia por la CPU, no a la prioridad de acceso al disco; ionice controla un recurso independiente.

Puntos clave

  • & inicia trabajo en segundo plano; jobs, fg y bg usan números de trabajo locales al intérprete.
  • Ctrl+Z pausa un trabajo; no lo termina.
  • Usa la redirección de salida y nohup de forma consciente para una tarea larga en el terminal.
  • Los valores de ajuste de prioridad más altos reducen la prioridad de CPU cuando hay competencia, no la velocidad máxima con una CPU inactiva.
2

Inspecciona el hardware desde la línea de comandos

La información de hardware te ayuda a elegir un paquete compatible, interpretar el uso de recursos y describir claramente un fallo. Linux proporciona información sobre el núcleo en ejecución, la disposición de la CPU, la memoria utilizable y los dispositivos conectados mediante herramientas de línea de comandos. Distinguirás las CPU lógicas de los núcleos físicos, las etiquetas decimales de almacenamiento de los tamaños binarios y un dispositivo detectado de uno que tiene un controlador funcional. Las mismas comprobaciones ayudan cuando el hardware es virtual.

2.1 Identifica el procesador, la memoria y el sistema

Antes de instalar software o dimensionar una carga de trabajo, averigua qué ofrece realmente el sistema. La arquitectura determina qué paquetes de código máquina se ejecutan. La disponibilidad de CPU ayuda a explicar la carga y la RAM utilizable limita el trabajo que cabe en memoria.

Distingue el núcleo de la distribución
ComandoInformación
uname -rVersión publicada del núcleo en ejecución, como 6.8.0-45-generic
uname -mArquitectura, como x86_64 o aarch64
uname -aTodos los campos de uname
cat /etc/os-releaseNombre y versión de la distribución
hostnamectlResumen del equipo, sistema operativo, núcleo y arquitectura

Ubuntu 24.04 es una versión de distribución; un valor como 6.8.0-45-generic identifica el núcleo que se ejecuta en ella. Instalar un núcleo nuevo no cambia inmediatamente el núcleo en ejecución: eso sucede al reiniciar.

Las etiquetas de arquitectura difieren entre familias de paquetes. Los paquetes Debian usan amd64 para la arquitectura que uname identifica como x86_64, y arm64 para aarch64. Los paquetes RPM suelen usar directamente x86_64 y aarch64. Comprueba que la compilación corresponda al equipo antes de instalarla.

Cuenta núcleos y CPU lógicas

lscpu indica la arquitectura, el modelo, los zócalos, los núcleos por zócalo, los hilos por núcleo y las CPU lógicas. Para una disposición uniforme de CPU:

CPU loˊgicas=zoˊcalos×nuˊcleos por zoˊcalo×hilos por nuˊcleo

Un zócalo con seis núcleos y dos hilos por núcleo proporciona 12 CPU lógicas. Sigue habiendo seis núcleos físicos. Dos hilos de hardware comparten recursos dentro de un núcleo, por lo que 12 CPU lógicas no garantizan el doble de rendimiento que seis núcleos.

nproc indica las unidades de procesamiento disponibles para el proceso actual; la afinidad de CPU o los límites de recursos pueden hacer que esta cifra sea menor que el total del equipo. /proc/cpuinfo proporciona detalles de CPU directamente. En x86, grep -c ^processor /proc/cpuinfo cuenta las entradas de procesador y los indicadores vmx o svm muestran que se admite la virtualización por hardware. ARM expone campos diferentes.

Consulta la memoria utilizable e instalada

free -h proporciona un resumen práctico de la RAM. /proc/meminfo ofrece detalles: MemTotal es la RAM utilizable y MemAvailable estima la capacidad que puede usar el trabajo nuevo. Este archivo identifica sus cifras como kB, pero son kibibytes, o 1024 bytes cada uno.

Por ejemplo, MemTotal: 16303448 kB equivale aproximadamente a 15,5 GiB tras dividir dos veces entre 1024. Un equipo con 16 GiB de módulos físicos puede mostrar menos RAM utilizable porque el firmware y el núcleo reservan una parte.

Para inspeccionar los módulos y las ranuras instalados, ejecuta sudo dmidecode -t memory. sudo dmidecode -t system informa del fabricante, el modelo y el número de serie proporcionados por el firmware. Una máquina virtual informa de su hardware virtual. sudo lshw -short, cuando está instalado, proporciona un inventario compacto del hardware.

Comprueba un requisito mediante pruebas separadas

Supongamos que un software necesita un sistema ARM de 64 bits, al menos cuatro CPU disponibles y 8 GB de RAM. Si uname -m devuelve aarch64, se cumple el requisito de arquitectura. Si nproc devuelve 4, se cumple el requisito de CPU. Un total de 3.7Gi equivale solo a unos 4,0 GB, por lo que la memoria es insuficiente. Cumplir dos comprobaciones no compensa fallar la tercera.

Puntos clave

  • Usa /etc/os-release para consultar la distribución y uname -r para el núcleo en ejecución.
  • Las etiquetas de arquitectura de los paquetes difieren: amd64 de Debian corresponde a x86_64.
  • Los zócalos, núcleos e hilos de hardware determinan el número de CPU lógicas.
  • nproc indica las CPU disponibles para el proceso actual.
  • La RAM utilizable puede ser menor que la memoria instalada; /proc/meminfo usa kilobytes binarios.

2.2 Lista discos, dispositivos PCI y USB y sus controladores

Linux asigna nombres a los dispositivos de hardware en /dev y publica su vista de los dispositivos en /sys. Varias herramientas de listado responden a preguntas diferentes: qué dispositivos de almacenamiento existen, qué buses han detectado dispositivos y qué controladores los gestionan.

Identifica discos y particiones

Los discos SATA, SAS y USB suelen aparecer como /dev/sda, /dev/sdb y letras posteriores. Sus particiones añaden un número, como /dev/sda1. NVMe usa nombres como /dev/nvme0n1, con /dev/nvme0n1p1 para una partición. Una máquina virtual puede usar /dev/vda.

lsblk muestra los dispositivos de bloques como un árbol. TYPE distingue un disco de una partición; RM indica si es extraíble y RO indica si es de solo lectura. SIZE da la capacidad y MOUNTPOINTS muestra dónde se está usando un dispositivo. Elige detalles adicionales con:

lsblk -o NAME,SIZE,MODEL
lsblk -f

El primero facilita la comparación del modelo y el tamaño. El segundo añade el tipo de sistema de archivos, la etiqueta y el UUID. Los nombres como sdb pueden cambiar según el orden de detección. Antes de escribir en un disco, confirma su identidad con algo más que la letra: escribir en el dispositivo equivocado destruye sus datos.

Una unidad vendida como de 512 GB contiene 512 000 millones de bytes. En GiB son aproximadamente 476,8, que lsblk muestra como 476.8G. El dispositivo no ha perdido capacidad: su etiqueta y la visualización usan unidades distintas.

Encuentra dispositivos y controladores asociados
HerramientaQué buscar
lspciDispositivos PCI y PCI Express, como controladores de red y almacenamiento
lspci -kEl controlador en uso y los posibles módulos del núcleo
lsusbIdentificadores y descripciones de dispositivos USB
lsusb -tConexiones USB en forma de árbol, con sus velocidades
lsmodMódulos del núcleo cargados
modinfo e1000eInformación sobre un módulo

Un identificador USB como 046d:c52b identifica al proveedor y al producto con más fiabilidad que un nombre general como «receptor inalámbrico». En la salida de PCI, distingue Kernel modules, que nombra los posibles módulos, de Kernel driver in use, que identifica un controlador asociado. La detección por sí sola no equivale a contar con soporte funcional.

La mayoría de los controladores se pueden cargar como módulos del núcleo, partes del código del núcleo que se añaden cuando se necesitan. Cargar o eliminar módulos cambia el núcleo en ejecución y requiere autoridad de superusuario. Otros controladores están integrados en el núcleo. En las placas ARM, muchos dispositivos integrados no están en PCI, por lo que una lista breve de lspci no significa necesariamente que falte hardware.

Sigue una conexión en el registro del núcleo

Cuando conectes un disco USB, ejecuta sudo dmesg | tail, o inicia sudo dmesg -w antes de conectarlo. Un mensaje como [sdb] 60437492 512-byte logical blocks identifica el nuevo disco como /dev/sdb e indica su capacidad. Multiplicar el número de bloques por su tamaño da 30 943 995 904 bytes: aproximadamente 30,9 GB o 28,8 GiB.

Después compara la nueva entrada de lsblk con ese mensaje y el modelo del dispositivo. Si un adaptador detectado no funciona, usa lspci -k para comprobar el controlador y dmesg para leer los errores de inicialización. La ausencia de un controlador asociado y un controlador que informa de un error requieren comprobaciones posteriores diferentes.

Puntos clave

  • Usa lsblk para dispositivos de bloques, lspci para PCI y lsusb para USB.
  • Los nombres de disco siguen el orden de detección; verifica el dispositivo antes de escribir.
  • Una unidad de 512 GB decimales equivale aproximadamente a 476,8 GiB.
  • Comprueba el controlador asociado y los mensajes del núcleo después de detectar un dispositivo.
3

Instala y gestiona software con gestores de paquetes

Un gestor de paquetes relaciona los archivos de software con sus versiones, dependencias y fuentes de confianza. Elegir la herramienta adecuada para la distribución te permite instalar y mantener software sin tener que seguir cada biblioteca por tu cuenta. Aprenderás las familias de comandos de Debian y Red Hat, distinguirás la actualización de la información de paquetes de la aplicación de nuevas versiones y rastrearás un comando instalado hasta el paquete y la transacción que lo proporcionaron.

3.1 Comprende los paquetes, los repositorios y las dependencias

Un paquete agrupa archivos de software con la información utilizada para instalarlos y mantenerlos. Sus metadatos indican la versión, la arquitectura y los paquetes necesarios, y puede incluir guiones de instalación. Un gestor de paquetes registra qué archivos pertenecen a cada paquete instalado.

Identifica la familia de la distribución
SistemasFormato de paqueteHerramienta de repositorioHerramienta de bajo nivel
Debian, Ubuntu, Linux Mint.debaptdpkg
Fedora, RHEL, Rocky Linux, AlmaLinux, CentOS Stream.rpmdnfrpm
openSUSE, SUSE Linux Enterprise.rpmzypperrpm

Arch Linux usa pacman; Alpine Linux usa apk. El nombre antiguo yum pertenece a la familia Red Hat. Si no tienes claro qué sistema usas, consulta cat /etc/os-release antes de elegir los comandos.

Un archivo como nginx_1.24.0-2_amd64.deb indica nginx, su versión de software, la revisión del empaquetado y la arquitectura. Estos campos ayudan al gestor de paquetes a seleccionar una compilación compatible. Que el nombre de una aplicación te resulte familiar no significa que cualquier paquete descargado sea adecuado para todas las distribuciones.

Deja que la herramienta de alto nivel resuelva las dependencias

Una dependencia es otro paquete que necesita el software, a menudo una biblioteca compartida. Por tanto, instalar una aplicación puede añadir varios paquetes. Una herramienta de alto nivel como apt o dnf encuentra un conjunto compatible, lo descarga y pide a la herramienta de nivel inferior que lo instale.

dpkg y rpm trabajan con archivos de paquetes locales y mantienen la base de datos de paquetes instalados. No obtienen las dependencias que faltan de los repositorios. Si los usas para instalar un archivo, pueden quedar requisitos pendientes que tendrás que resolver. Las herramientas de alto nivel también pueden instalar archivos locales mientras resuelven sus requisitos desde los repositorios configurados.

Las búsquedas y consultas funcionan con un usuario normal. La instalación, la eliminación y las actualizaciones modifican archivos del sistema y normalmente requieren sudo. La pantalla de confirmación proporciona información útil: revisa los paquetes adicionales y las eliminaciones propuestas antes de aceptar.

Comprende la confianza en los repositorios

Un repositorio proporciona archivos de paquetes e índices que describen las versiones y dependencias disponibles. Los repositorios propios de una distribución ofrecen un conjunto creado para su versión.

APT verifica los metadatos firmados del repositorio y usa las sumas de comprobación de esos metadatos para verificar los archivos descargados. Normalmente no comprueba una firma independiente en cada .deb. DNF verifica normalmente las firmas de los RPM de la distribución; la comprobación de firmas de los metadatos del repositorio se configura por separado. Estas comprobaciones establecen una cadena hasta un proveedor de confianza y ayudan a detectar manipulaciones.

Añadir un repositorio de terceros también implica confiar en el software y los guiones de instalación de ese proveedor. Obtén su clave de firma mediante las instrucciones auténticas del proveedor. No omitas las comprobaciones de firma para superar un error como «NO_PUBKEY». Un archivo de una página de descarga desconocida también necesita un origen fiable; la extensión del paquete por sí sola no proporciona esa confianza.

Busca el nombre correcto

Los nombres del software y del paquete pueden diferir. Apache se empaqueta como apache2 en sistemas de la familia Debian y como httpd en sistemas de la familia Red Hat. El comando dig procede de bind9-dnsutils o bind-utils. Busca antes de suponer que el nombre de un comando también es el de su paquete.

Otros sistemas de instalación mantienen registros separados. Snap, Flatpak y AppImage agrupan aplicaciones con muchas dependencias; pip y npm gestionan bibliotecas de programación. Instalar una biblioteca de Python con pip no la convierte en un paquete gestionado por apt.

Puntos clave

  • Usa la familia de paquetes y la herramienta de repositorio que correspondan a /etc/os-release.
  • Las herramientas de alto nivel obtienen dependencias; dpkg y rpm operan con paquetes y registros locales.
  • Los repositorios proporcionan índices de paquetes y una cadena de confianza hasta un proveedor.
  • Los nombres de los paquetes pueden diferir de los nombres de los programas y entre distribuciones.
  • Los gestores de paquetes del sistema y los gestores de aplicaciones o lenguajes mantienen registros separados.

3.2 Instala, actualiza y elimina software con apt y dnf

El mantenimiento de paquetes tiene tres tareas separadas: conocer lo que está disponible, aplicar los cambios seleccionados y eliminar el software que ya no se necesita. Lee la transacción prevista antes de confirmarla, especialmente cuando elimina paquetes.

Actualiza las listas e instala nuevas versiones
TareaFamilia DebianFamilia Red Hat
Actualizar las listas de paquetessudo apt updateDNF actualiza automáticamente los metadatos obsoletos
Instalar nuevas versionessudo apt upgradesudo dnf upgrade
Instalar nginxsudo apt install nginxsudo dnf install nginx
Eliminar nginxsudo apt remove nginxsudo dnf remove nginx
Eliminar dependencias innecesariassudo apt autoremovesudo dnf autoremove

apt update no actualiza el software. Descarga las listas de paquetes actuales. Después, ejecuta sudo apt upgrade para instalar versiones más recientes. El comando de actualización de DNF gestiona los metadatos obsoletos del repositorio como parte de su trabajo. DNF4 usa dnf check-update para listar los cambios disponibles; DNF5 usa dnf check-upgrade.

apt upgrade no elimina un paquete instalado para completar una actualización. Un paquete que necesite ese cambio puede quedar retenido. sudo apt full-upgrade permite eliminaciones, así que revisa su plan con cuidado. -y acepta una transacción automáticamente y elimina la oportunidad de revisarla de forma interactiva.

Instala desde un repositorio o un archivo local

En Ubuntu, ejecuta sudo apt update y después sudo apt install htop. APT lista los paquetes nuevos y las dependencias antes de descargarlos. htop --version comprueba el programa instalado. En Fedora, usa sudo dnf install htop.

Ejecutar apt install para un paquete existente puede actualizarlo a la candidata actual; no cambia nada si esa versión ya está instalada. Para instalar un archivo local de confianza, indica su ruta:

sudo apt install ./app_2.1.0_amd64.deb
sudo dnf install ./app-2.1.0-1.x86_64.rpm

./ indica una ruta de archivo. En cambio, sudo dpkg -i file.deb y sudo rpm -i file.rpm no obtienen las dependencias que faltan. Si dpkg deja dependencias sin satisfacer, sudo apt --fix-broken install puede resolverlas; revisa la reparación propuesta.

Elimina software y ajustes de forma deliberada

La operación remove de APT conserva la configuración del sistema gestionada por el paquete; purge también la elimina. Ninguna elimina archivos de los directorios personales de los usuarios. Autoremove se ocupa de las dependencias instaladas automáticamente que ya no necesitan los paquetes instalados. Es una decisión distinta de eliminar una aplicación por su nombre.

Las entradas de origen de APT se encuentran en /etc/apt/sources.list y /etc/apt/sources.list.d/; Ubuntu 24.04 suele usar ubuntu.sources en ese directorio. Actualiza las listas después de cambiar los orígenes. DNF lee los archivos .repo de /etc/yum.repos.d/; dnf repolist muestra los repositorios habilitados.

Termina el mantenimiento de forma ordenada

apt está diseñado para el uso interactivo. Los guiones suelen usar las interfaces más estables de apt-get y apt-cache. Sus comandos cubren las mismas tareas generales, aunque los valores predeterminados pueden diferir.

Un núcleo recién instalado pasa a ser el núcleo en ejecución después de reiniciar. Los programas que usan bibliotecas sustituidas necesitan reiniciarse para cargar el código nuevo. Ubuntu puede indicar que es necesario reiniciar mediante /var/run/reboot-required.

Un bloqueo de paquetes suele significar que hay una actualización automática u otra operación de paquetes activa. Espera a que termine; eliminar el archivo de bloqueo puede dañar los registros de paquetes. Un error de permisos, en cambio, indica falta de autoridad, así que confirma si la operación necesita sudo.

Puntos clave

  • apt update actualiza las listas; apt upgrade modifica el software instalado.
  • DNF actualiza los metadatos obsoletos durante la actualización; DNF4 y DNF5 usan nombres distintos para comprobar las actualizaciones.
  • Remove de APT conserva la configuración del sistema gestionada; purge la elimina.
  • Usa una ruta con apt o dnf para instalar un archivo local y resolver las dependencias.
  • Revisa las eliminaciones de una actualización completa y las dependencias propuestas para eliminación automática.
  • Espera a que termine la operación que mantiene el bloqueo de paquetes y reinicia el programa o el equipo cuando el código actualizado lo requiera.

3.3 Busca paquetes e inspecciona el software instalado

Cuando falta un comando o cambia una versión, las consultas de paquetes permiten investigar a partir del síntoma. Empieza por decidir si necesitas información del repositorio, información de los paquetes instalados o el paquete al que pertenece un archivo concreto.

Busca antes de instalar

apt search json y dnf search json buscan en los nombres y las descripciones de los paquetes. Inspecciona un resultado prometedor con apt show NAME o dnf info NAME. Estos comandos muestran detalles como la versión, el tamaño, la descripción y el repositorio. La salida de show de APT también lista las dependencias; los requisitos de DNF se pueden consultar con dnf repoquery --requires NAME.

La información del repositorio indica lo que podrías instalar. Por sí sola no establece lo que ya está instalado. apt policy NAME distingue la versión instalada de la candidata, la versión que APT seleccionaría actualmente. apt list --upgradeable o dnf list --upgrades muestra los paquetes instalados con actualizaciones disponibles.

Consulta los registros de instalación
PreguntaFamilia DebianFamilia Red Hat
¿Qué está instalado?apt list --installed o dpkg -ldnf list --installed o rpm -qa
¿Qué versión de un paquete está instalada?dpkg -l nginxrpm -q nginx
¿Qué archivos proceden de htop?dpkg -L htoprpm -ql htop
¿A qué paquete pertenece este archivo instalado?dpkg -S /usr/bin/htoprpm -qf /usr/bin/htop

En dpkg -l, el estado ii identifica un paquete instalado. La dirección de la consulta importa: -L parte de un paquete y lista sus archivos; -S parte de un archivo y encuentra el paquete al que pertenece. En sistemas RPM, la distinción equivalente es entre -ql y -qf.

Rastrea un comando hasta su paquete

Supongamos que which openssl muestra /usr/bin/openssl. En Debian, dpkg -S /usr/bin/openssl identifica openssl como el paquete al que pertenece. Después, apt policy openssl muestra la versión instalada, la candidata y los repositorios. Esto evita suponer que el nombre del comando siempre debe coincidir con el de su paquete.

Para un comando ausente, puede que no haya ningún paquete instalado que consultar. dnf provides /usr/bin/rsync busca en las listas de archivos de los repositorios. Los sistemas de la familia Debian ofrecen la herramienta independiente apt-file: después de actualizar su índice con sudo apt-file update, apt-file search bin/rsync encuentra los paquetes que lo proporcionan. Ubuntu también puede sugerir un paquete cuando no se encuentra un comando.

Relaciona un fallo con una transacción

APT registra las transacciones en /var/log/apt/history.log; dpkg registra las acciones de nivel inferior en /var/log/dpkg.log. En DNF4, dnf history lista las transacciones; DNF5 usa dnf history list. dnf history info 12 muestra los paquetes modificados en la transacción 12.

sudo dnf history undo 12 solicita revertir esa transacción. Revisa su plan: la reversión depende de que las versiones necesarias de los paquetes sigan disponibles y no restaura datos arbitrarios de las aplicaciones. Para el diagnóstico, lee el historial antes de realizar otro cambio. Una actualización reciente de una biblioteca puede explicar por qué cambió el comportamiento de un programa aunque nadie reinstalara la aplicación principal.

Puntos clave

  • Distingue las versiones del repositorio de la versión realmente instalada.
  • Usa dpkg -L o rpm -ql para consultar los archivos de un paquete.
  • Usa dpkg -S o rpm -qf para consultar el paquete al que pertenece un archivo instalado.
  • Un archivo ausente requiere buscar qué paquete lo proporciona en el repositorio, no consultar paquetes instalados.
  • El historial de transacciones ayuda a relacionar un problema nuevo con un cambio reciente de paquetes.
4

Gestiona servicios con systemd

Los servicios siguen realizando tareas útiles después de que un usuario abandona el terminal. systemd gestiona su inicio, estado actual y respuesta a los fallos, mediante archivos de unidad que describen qué debe ejecutarse. Aprenderás a interpretar el estado sin confundirlo con la configuración de arranque, a controlar los servicios ahora y en futuros arranques, y a hacer pequeños cambios de configuración que se conservan tras las actualizaciones de paquetes. Un archivo de servicio sencillo muestra cómo encajan estos ajustes.

4.1 Comprende systemd, las unidades y el estado de los servicios

Un servicio, a menudo llamado demonio, proporciona una función en segundo plano, como servir páginas web o aceptar conexiones SSH. Normalmente no tiene terminal. Muchos nombres de demonios terminan en d, como sshd y chronyd.

Encuentra el gestor de servicios

En la mayoría de las distribuciones principales, systemd se ejecuta con el PID 1 e inicia los servicios en el orden necesario. Compruébalo con ps -p 1 -o comm=. systemd puede supervisar procesos, reiniciar servicios fallidos y organizar la recopilación de sus registros. Algunas distribuciones usan otro gestor, como OpenRC de Alpine Linux.

systemd gestiona unidades. Sus sufijos identifican sus funciones:

SufijoFunción
.serviceEjecutar y gestionar un programa o tarea
.socketEscuchar en un socket y activar un servicio cuando sea necesario
.timerProgramar una activación
.mountRepresentar un sistema de archivos montado
.targetAgrupar unidades en un estado del sistema con nombre

En los comandos de servicio, nginx es la forma abreviada de nginx.service. Los nombres varían: SSH suele usar ssh en Debian y Ubuntu, y sshd en Fedora y RHEL. Apache es apache2 o httpd. systemctl list-unit-files | grep ssh ayuda a encontrar el nombre local.

Lee las dos líneas importantes del estado

Ejecuta systemctl status nginx. Un ejemplo puede incluir:

Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-10-21 09:14:03 UTC
Main PID: 2410 (nginx)

Loaded indica el archivo de unidad y su estado de habilitación. Active informa del estado actual y de cuándo comenzó. Main PID identifica el proceso principal; después aparecen las líneas de registro recientes. Un usuario normal puede inspeccionar el estado, pero ver los registros del sistema puede requerir privilegios adicionales.

Activo y habilitado son independientes. Activo describe el presente. Habilitado significa que se han creado enlaces de habilitación, normalmente para que una unidad de destino inicie el servicio al arrancar. Un servicio deshabilitado puede iniciarse manualmente o activarse mediante otra unidad. Un servicio habilitado puede estar detenido o fallido.

Interpreta el estado con precisión
Estado ActiveInterpretación
active (running)El programa del servicio está en ejecución
active (exited)Una tarea completada aún se considera activa
inactive (dead)No está activo
failedFalló el inicio o la ejecución; examina el resultado y los registros
activatingEl inicio está en curso

El color del punto de estado ayuda a examinar la información rápidamente, pero el texto del estado es la prueba útil. systemctl is-active nginx informa del estado actual; systemctl is-enabled nginx informa de la habilitación. static significa que la unidad no tiene instrucciones de habilitación y puede activarse por otra vía. masked significa que su inicio está bloqueado.

Elige la vista general adecuada

systemctl list-units --type=service muestra las unidades de servicio cargadas actualmente, con su filtro de estado predeterminado. Añade --all para incluir las unidades cargadas inactivas, o --state=running para centrarte en los servicios en ejecución. systemctl --failed muestra únicamente las unidades fallidas. systemctl list-unit-files --type=service lista los archivos de servicio instalados y sus estados de habilitación, incluidos los servicios que no se ejecutan en ese momento.

Puntos clave

  • systemd gestiona unidades; una unidad .service describe un programa o tarea.
  • Lee Loaded para conocer el archivo de unidad y la habilitación, y Active para el estado actual.
  • Un servicio habilitado puede estar detenido; un servicio deshabilitado puede estar en ejecución.
  • active (exited) puede describir una tarea completada correctamente.
  • Usa list-unit-files para las definiciones instaladas y list-units para las unidades cargadas.

4.2 Inicia, detén, habilita y deshabilita servicios

El control de servicios tiene dos horizontes temporales: qué debe ejecutarse ahora y qué debe iniciarse automáticamente más adelante. Mantén separadas esas decisiones al instalar software o reparar un servicio.

Controla el estado actual
ComandoEfecto
sudo systemctl start nginxIniciar ahora
sudo systemctl stop nginxDetener ahora
sudo systemctl restart nginxDetener e iniciar, interrumpiendo el trabajo actual
sudo systemctl reload nginxPedir a un servicio que admita la recarga que vuelva a leer la configuración
sudo systemctl reload-or-restart nginxRecargar si se admite; en caso contrario, reiniciar

Usa systemctl status nginx después de un cambio. Para una comprobación silenciosa, systemctl is-active --quiet nginx devuelve éxito cuando está activo. No muestra texto de estado, lo que lo hace útil en condiciones del intérprete de comandos.

La posibilidad de recargar depende del servicio. Para nginx, prueba una configuración modificada con sudo nginx -t antes de sudo systemctl reload nginx. Una recarga correcta puede aplicar nuevos ajustes sin detener el servicio. Si la configuración es incorrecta, nginx conserva la configuración anterior en ejecución al recargar; en cambio, reiniciar con el archivo incorrecto puede dejarlo fuera de servicio.

Configura el inicio automático

sudo systemctl enable nginx crea enlaces de habilitación; no inicia nginx ahora. sudo systemctl disable nginx elimina esos enlaces; no detiene el proceso actual. Para realizar ambos cambios a la vez:

sudo systemctl enable --now nginx
sudo systemctl disable --now nginx

El primero habilita e inicia; el segundo deshabilita y detiene. En Fedora, la instalación de nginx suele dejarlo detenido y deshabilitado, mientras que la instalación del paquete en la familia Debian suele iniciarlo y habilitarlo. Comprueba el estado real después de la instalación.

Después de iniciar un servicio web, curl -I http://localhost puede comprobar su respuesta local. Obtener una respuesta local y acceder desde otro equipo son pruebas distintas; un cortafuegos aún puede bloquear el acceso remoto.

Bloquea la activación cuando sea necesario

Deshabilitar un servicio no impide que una dependencia o un socket lo active. El enmascaramiento bloquea el inicio al enlazar el nombre de la unidad a /dev/null:

sudo systemctl mask bluetooth
sudo systemctl unmask bluetooth

El enmascaramiento por sí solo no detiene una unidad que ya está en ejecución. Detenla también cuando deba dejar de ejecutarse. Desenmascarar elimina el bloqueo; por sí solo no inicia ni habilita el servicio. Al intentar iniciar una unidad enmascarada, se informa de que está enmascarada.

Elige el estado predeterminado del sistema

Una unidad de destino agrupa unidades. multi-user.target proporciona el entorno multiusuario normal sin interfaz gráfica, utilizado habitualmente en servidores. graphical.target añade el escritorio. systemctl get-default informa de la unidad de destino predeterminada y sudo systemctl set-default multi-user.target cambia la unidad seleccionada para futuros arranques; no cierra inmediatamente el escritorio actual.

sudo systemctl reboot reinicia el equipo y sudo systemctl poweroff lo apaga. Para un solo servicio, usa en su lugar sus propios comandos de control. Terminar el PID de un servicio gestionado puede provocar un reinicio automático; un systemctl stop intencionado indica a systemd que lo mantenga detenido.

Puntos clave

  • Start y stop afectan al presente; enable y disable cambian los enlaces de habilitación.
  • enable --now y disable --now combinan ambos horizontes temporales.
  • Deshabilitar permite otras vías de activación; enmascarar bloquea el inicio.
  • El enmascaramiento por sí solo deja en ejecución un servicio que ya estaba activo.
  • Prueba la configuración de la aplicación antes de recargar o reiniciar.
  • Cambiar la unidad de destino predeterminada selecciona el comportamiento de futuros arranques.

4.3 Lee y personaliza archivos de unidad

Un archivo de unidad indica a systemd cómo ejecutar un servicio. Lee la configuración efectiva con systemctl cat NAME: muestra el archivo base y las modificaciones junto con sus rutas.

Conoce dónde van los ajustes

Las unidades proporcionadas por paquetes se encuentran en /usr/lib/systemd/system/, al que también se accede como /lib/systemd/system/ en sistemas de la familia Debian. Los archivos locales del administrador y las modificaciones van en /etc/systemd/system/, que tiene prioridad. Una actualización de paquete puede sustituir su propio archivo, así que guarda los cambios locales en una configuración complementaria.

Un archivo de unidad tiene secciones y ajustes Key=value:

SecciónAjustes importantes
[Unit]Description=, orden mediante After=, dependencias mediante Wants= o Requires=
[Service]ExecStart=, User=, WorkingDirectory=, Environment=, Restart=
[Install]WantedBy=, usado al habilitar la unidad

After=network.target establece el orden; por sí solo no inicia esa unidad de destino ni garantiza la conexión a Internet. WantedBy=multi-user.target indica a enable que cree un enlace en multi-user.target.wants/. Una unidad estática no tiene instrucciones de habilitación, pero otra unidad aún puede activarla.

Crea un servicio sencillo

Para un pequeño servidor de prueba, prepara primero /srv/hello con archivos legibles y una cuenta del sistema:

sudo useradd --system --no-create-home hello

Con Python 3 instalado en /usr/bin/python3, escribe /etc/systemd/system/hello-web.service:

[Unit]
Description=Hello web server
After=network.target

[Service]
ExecStart=/usr/bin/python3 -m http.server 8080 --directory /srv/hello
User=hello
Restart=on-failure

[Install]
WantedBy=multi-user.target

Ejecuta sudo systemctl daemon-reload y después sudo systemctl enable --now hello-web. Inspecciona systemctl status hello-web y solicita http://localhost:8080 con curl. La cuenta del servicio necesita permiso para leer el directorio y atravesar sus directorios padre.

Con el valor predeterminado Type=simple, el programa permanece en primer plano para que systemd pueda supervisarlo. ExecStart= acepta una ruta absoluta al ejecutable o un nombre de archivo simple de la ruta de búsqueda de systemd. Una ruta relativa con una barra, como ./server, no es válida. Un programa que crea un proceso hijo en segundo plano necesita un tipo de servicio adecuado, como Type=forking.

Modifica un ajuste proporcionado por un paquete

sudo systemctl edit nginx abre un archivo de configuración complementaria. Por ejemplo:

[Service]
Restart=on-failure
RestartSec=5s

Guardar mediante systemctl edit recarga la configuración de unidades de systemd. Reinicia el servicio para aplicar los ajustes de ejecución modificados. Cuando edites archivos directamente, ejecuta tú mismo sudo systemctl daemon-reload antes de reiniciar. Esto recarga las definiciones de unidades, no la configuración propia de la aplicación.

Para sustituir un ajuste de lista como ExecStart se necesita una línea ExecStart= vacía antes de la nueva. sudo systemctl revert nginx elimina las modificaciones locales y restaura la configuración del proveedor.

Restart=no deja detenido un proceso que ha terminado. on-failure lo reinicia tras los fallos que cumplen las condiciones; always también incluye las salidas ordenadas. Un systemctl stop intencionado impide el reinicio automático. Los fallos rápidos pueden alcanzar un límite configurado de frecuencia de arranque. Los valores predeterminados del gestor permiten cinco inicios en 10 segundos; la configuración local puede cambiarlos. Corrige la causa antes de borrar el estado fallido y volver a intentarlo.

Puntos clave

  • Guarda los ajustes locales en /etc/systemd/system/ e inspecciónalos con systemctl cat.
  • Las secciones de una unidad separan la descripción y las dependencias, la ejecución y la habilitación.
  • Ejecuta un servicio sencillo en primer plano con una cuenta adecuada.
  • Recarga las definiciones de unidades después de editarlas directamente y reinicia para aplicar los cambios de ejecución.
  • Un archivo de configuración complementaria se conserva tras las actualizaciones de paquetes; los ajustes de lista pueden necesitar una línea vacía de restablecimiento.
  • La política de reinicio gestiona las salidas de procesos, mientras que los límites de frecuencia evitan intentos rápidos interminables.
5

Lee los registros del sistema para diagnosticar y resolver problemas

El estado de un servicio indica que algo ha fallado; los registros ayudan a explicar por qué. Linux registra mensajes en el registro de systemd, en archivos de registro de aplicaciones y en el búfer de mensajes del núcleo. Limitarás esos registros por servicio, arranque, hora y gravedad, y relacionarás el primer error útil con una comprobación concreta. Una reparación ordenada modifica una causa cada vez y verifica tanto el servicio en ejecución como su comportamiento de inicio previsto.

5.1 Consulta el registro de systemd con journalctl

El registro de systemd recopila mensajes del núcleo, del arranque y de los servicios, incluida la salida que los programas gestionados envían al registro. systemd-journald almacena registros binarios indexados. Léelos con journalctl; un lector de archivos de texto como less no puede interpretar los propios archivos del registro.

Lee suficiente información del registro

El acceso al registro del sistema depende de los permisos y de la política local. El superusuario y los grupos autorizados como systemd-journal o adm pueden leer las entradas del sistema. Si una cuenta normal solo ve un conjunto limitado, usa sudo journalctl para investigar el sistema.

La vista predeterminada comienza con mensajes antiguos en un paginador. Usa las teclas de dirección para desplazarte, / para buscar y q para salir. Elige una vista más concreta:

OpciónEfecto
-rLas más recientes primero
-eSaltar al final
-n 50Últimos 50 registros
-fSeguir los registros que llegan hasta pulsar Ctrl+C
--no-pagerMostrar directamente, útil para tuberías

-n sin un número selecciona diez entradas. La salida de estado suele mostrar solo unas pocas líneas recientes, así que lee el registro cuando esas líneas no expliquen el fallo.

Combina filtros de unidad, arranque y tiempo

sudo journalctl -u nginx -b selecciona los registros de nginx de este arranque. -b -1 selecciona el arranque anterior; --list-boots lista los registros de arranques conservados. -k selecciona los mensajes del núcleo y normalmente implica el arranque actual. Para consultar registros anteriores del núcleo, indica el arranque explícitamente.

Los filtros de tiempo admiten tiempos relativos y fechas completas:

sudo journalctl -u nginx --since "2026-10-22 08:00" --until "2026-10-22 09:30"

--since today significa desde la medianoche de hoy, mientras que --since "1 hour ago" establece una ventana de tiempo móvil. Las cadenas de fecha y hora entre comillas permanecen juntas como un solo argumento. Una fecha sin hora comienza a medianoche.

Comprende el límite de prioridad

Las prioridades van de 0, emergencia, a 7, depuración. Entre ellas están alerta, crítico, error, advertencia, aviso e información. Los números menores indican mayor gravedad. -p err incluye los niveles del 0 al 3, no solo error. Usa un rango explícito como -p err..warning para seleccionar esa franja.

Un filtro de gravedad demasiado limitado puede ocultar la información que necesitas. Por ejemplo, SSH puede registrar los mensajes de contraseñas fallidas con el nivel de información. En Ubuntu, sudo journalctl -u ssh --since today --grep "Failed password" encuentra los mensajes coincidentes sin descartarlos mediante un límite de advertencia.

Una línea como «Failed password for invalid user admin from 203.0.113.45» identifica la cuenta utilizada en el intento y la dirección de origen. La marca de tiempo y el PID del programa la sitúan en la actividad circundante. -o short-iso facilita la comparación de fechas completas; -o verbose muestra los campos, -o json-pretty muestra registros estructurados y -x añade el texto explicativo disponible.

Conoce qué se conserva tras un reinicio

Los registros persistentes se encuentran en /var/log/journal/; los volátiles, en /run/log/journal/, desaparecen al apagar. El comportamiento de almacenamiento se controla mediante Storage= en la configuración de journald. Que solo haya un arranque registrado puede significar que los registros anteriores nunca se guardaron de forma persistente o que ya se eliminaron.

journalctl --disk-usage incluye los archivos de registro activos y archivados. sudo journalctl --vacuum-size=500M elimina archivos archivados antiguos hasta alcanzar un límite de 500 MiB para ellos. Esa operación no elimina los archivos activos, por lo que el total de uso de disco indicado puede seguir siendo mayor.

Puntos clave

  • Filtra por unidad, arranque y tiempo antes de limitar por prioridad.
  • Un límite de prioridad incluye los niveles más graves, no solo el nivel indicado.
  • Los registros de nivel informativo pueden contener la causa de un problema.
  • Los registros persistentes se conservan tras reiniciar; los volátiles no.
  • La depuración elimina archivos archivados, mientras que el uso de disco también cuenta los archivos activos.

5.2 Lee los archivos de registro de /var/log y los mensajes del núcleo

El registro de systemd no es la única fuente de registros. Algunos sistemas también ejecutan rsyslog y las aplicaciones pueden escribir sus propios registros de texto. El núcleo mantiene un búfer de mensajes independiente en memoria. Elige la fuente que registró el evento que investigas.

Encuentra el registro de texto adecuado
FuenteUbicación habitual
Mensajes generales de Debian/Ubuntu, con syslog configurado/var/log/syslog
Autenticación de Debian/Ubuntu/var/log/auth.log
Registro de texto del núcleo de Debian/Ubuntu/var/log/kern.log
Mensajes generales y autenticación de la familia RHEL/var/log/messages, /var/log/secure
Acciones de APT y dpkg/var/log/apt/history.log, /var/log/dpkg.log
Acciones de DNF/var/log/dnf.log
Solicitudes y problemas de nginx/var/log/nginx/access.log, /var/log/nginx/error.log

La presencia de un archivo depende de los servicios de registro instalados y de su configuración. Debian 12 y posteriores suelen depender del registro de systemd salvo que se instale rsyslog. Las aplicaciones aún pueden mantener sus propios registros en un equipo así.

Lee un archivo de texto con sudo less /var/log/auth.log, inspecciona su final con sudo tail -n 20 /var/log/syslog o sigue las entradas nuevas con sudo tail -f /var/log/nginx/error.log. Para seleccionar una palabra sin distinguir entre mayúsculas y minúsculas, usa sudo grep -i "error" /var/log/syslog.

Lee los campos y los archivos antiguos

Un ejemplo clásico es:

Oct 22 08:01:17 web1 sshd[3141]: Accepted publickey for alice from 198.51.100.7 port 50522 ssh2

Indica la hora, el equipo, el programa con su PID y el mensaje del evento. Algunos sistemas usan en su lugar marcas de tiempo ISO completas con desplazamientos de zona horaria. El mensaje describe un inicio de sesión correcto mediante clave, no un intento fallido con contraseña; leer solo el nombre del programa hace que se pierda esa distinción.

La rotación de registros limita su crecimiento al cambiar el nombre de los archivos antiguos, crear otros nuevos y finalmente eliminar los caducados. La configuración de logrotate se encuentra en /etc/logrotate.conf y /etc/logrotate.d/. Una secuencia como syslog, syslog.1 y syslog.2.gz abarca registros actuales y anteriores. Usa zless o zgrep para el texto comprimido con gzip sin extraerlo primero. Una búsqueda solo en el archivo actual puede pasar por alto el fallo de ayer.

Lee los eventos del núcleo

El búfer circular del núcleo contiene mensajes recientes y sobrescribe las entradas más antiguas a medida que se llena. Registra la detección de dispositivos, fallos de controladores, errores de almacenamiento y terminaciones de procesos por falta de memoria. dmesg lo muestra; usa sudo cuando el acceso esté restringido. dmesg -T proporciona horas legibles, dmesg -l err,warn selecciona errores y advertencias, y dmesg -w sigue los mensajes nuevos.

sudo journalctl -k lee las entradas del núcleo conservadas en el registro de systemd. sudo journalctl -k -b -1 puede acceder a un arranque anterior que el búfer circular activo ya no contiene.

Si un proceso Java desaparece, una línea del núcleo como «Out of memory: Killed process 4810 (java)» relaciona su salida con la presión sobre la memoria. Comprueba free -h y top, y después reduce la demanda de memoria o añade capacidad. Para problemas de inicio de servicios, comienza por el registro de la unidad; para detalles específicos de la aplicación, lee su propio registro de errores.

Usa la rotación o los controles de conservación del registro de systemd para gestionar el espacio ocupado. Eliminar manualmente un registro de texto borra pruebas y puede dejar su espacio de disco asignado hasta que el programa que escribe cierre el archivo.

Puntos clave

  • Las ubicaciones de los registros de texto dependen de la configuración; las aplicaciones pueden mantener sus propios archivos.
  • Usa less, tail y grep para registros de texto, y zless o zgrep para registros antiguos comprimidos.
  • La rotación distribuye el historial de eventos entre varios archivos.
  • dmesg muestra el búfer actual del núcleo; el registro de systemd puede conservar arranques anteriores.
  • Los mensajes OOM del núcleo pueden explicar la desaparición de una aplicación sin un error propio.

5.3 Diagnostica y resuelve paso a paso los fallos de un servicio

Los reinicios repetidos rara vez explican un fallo. Comienza por el síntoma visible, recopila el mensaje que indica su causa y cambia una cosa. Después, prueba el servicio reparado tanto mediante su gestor como mediante la función que proporciona.

Sigue una investigación repetible
  1. Confirma el síntoma: por ejemplo, falla una solicitud web local.
  2. Ejecuta systemctl status NAME y lee Active, Result y el código de salida.
  3. Lee sudo journalctl -u NAME -b, o las últimas 50 entradas con -n 50 --no-pager.
  4. Usa el registro de errores y la prueba de configuración de la propia aplicación.
  5. Corrige una causa identificada y repite la comprobación pertinente.
  6. Inicia o reinicia, inspecciona el estado y prueba la función real.
  7. Comprueba systemctl is-enabled NAME frente al comportamiento de arranque previsto.

Lee el primer error significativo del intento fallido. Una línea posterior «Failed to start» resume el resultado; puede que no indique la causa. Mantener coordinados los filtros de tiempo y unidad ayuda a distinguir el último intento de los fallos anteriores.

Resuelve un conflicto de puerto

Falla un reinicio de nginx. Su registro contiene «bind() to 0.0.0.0:80 failed (98: Address already in use).». Algo ya está en escucha en ese puerto. Ejecuta:

sudo ss -tlnp | grep ':80 '

Supongamos que identifica apache2. Si este equipo está destinado a usar nginx y Apache ya no es necesario, sudo systemctl disable --now apache2 detiene Apache y elimina sus enlaces de habilitación. Después, sudo systemctl start nginx puede ocupar el puerto. Comprueba systemctl status nginx y una solicitud web local.

La condición importa: no elimines un servicio necesario solo para que se inicie otro. Si ambos deben ejecutarse, su configuración de escucha necesita un cambio deliberado. El registro identifica el conflicto de recursos, mientras que la función prevista del sistema determina la reparación.

Resuelve un error de configuración

Supongamos que el registro informa de una llave de cierre inesperada en /etc/nginx/sites-enabled/default:24. Ejecuta sudo nginx -t; identifica el mismo archivo y línea. Corrige la llave mal colocada, vuelve a ejecutar la prueba y reinicia solo después de que la prueba sea correcta. Esto aísla el cambio y evita sustituir una configuración que se sabe que funciona por otra incorrecta.

Usa el código de resultado para acotar la búsqueda
Estado o resultadoSiguiente comprobación
203/EXECRuta del ejecutable, permiso de ejecución y capacidad para iniciarlo
217/USERCuenta de User= y capacidad para establecer sus credenciales
1/FAILUREMensajes de error de la propia aplicación
oom-killRegistros OOM del núcleo y uso de memoria

La ausencia de un ejecutable y un programa que se inicia pero rechaza sus ajustes son fallos diferentes. Para «Permission denied», compara la salida de ls -l y el acceso a los directorios con el usuario configurado para el servicio. Si el disco está lleno, comprueba df -h; si hay poca RAM, comprueba free -h; si hay presión sobre la CPU, inspecciona top.

Si systemd informa «start request repeated too quickly», repara primero la causa. Después, sudo systemctl reset-failed NAME borra el estado fallido y los contadores del límite de arranque para que puedas iniciarlo de nuevo. Restablecer el contador por sí solo no repara el programa.

Puntos clave

  • Confirma el síntoma, inspecciona el estado y lee el primer error que explique la causa.
  • Usa las comprobaciones de la aplicación y cambia una causa cada vez.
  • Si un puerto está ocupado, identifica qué está en escucha antes de reparar el problema.
  • Los códigos de salida distinguen fallos de ejecución, credenciales de usuario, aplicación y memoria.
  • Borra el límite de arranque después de corregir la causa y verifica el estado, la función y el comportamiento de arranque previsto.
6

Agrupa archivos en contenedores y comprímelos

Un archivo contenedor reúne archivos en un solo objeto; la compresión cambia el espacio que ocupa ese objeto. Mantener separadas estas tareas facilita la lectura de los comandos de copia de seguridad y la restauración. Crearás e inspeccionarás archivos tar, extraerás su contenido en un directorio elegido y compararás gzip, bzip2, xz y zip. La elección del formato depende de la velocidad, el tamaño, las necesidades de intercambio y los metadatos de los archivos, mientras que una restauración comprobada ofrece una prueba más sólida que un nombre de archivo conocido.

6.1 Crea archivos tar, lista su contenido y extráelo

Un archivo contenedor agrupa archivos y directorios con sus nombres y metadatos. La compresión reduce los bytes necesarios para almacenar datos. Un archivo tar sin comprimir agrupa archivos sin comprimirlos; añadir un compresor produce archivos como .tar.gz, .tar.bz2 o .tar.xz.

Lee las opciones como una frase breve
OpciónFunción
-c, -t, -xCrear, listar o extraer; elige una operación
-f FILEIndicar el nombre del archivo contenedor
-vMostrar los nombres o detalles de los elementos
-z, -j, -JUsar gzip, bzip2 o xz
-C DIRCambiar de directorio para los siguientes elementos o para la extracción

GNU tar también acepta opciones combinadas y la forma antigua sin guion. En un grupo combinado, coloca f al final y su nombre de archivo a continuación. La J mayúscula selecciona xz; la j minúscula selecciona bzip2.

Crea un archivo contenedor con nombres de elementos útiles
tar -czvf site-backup.tar.gz -C /var/www site

Esto crea site-backup.tar.gz en el directorio actual del intérprete de comandos. Tar cambia su ubicación de entrada a /var/www y después añade site, por lo que los nombres guardados comienzan por site/. Conserva la estructura de directorios, los modos, los metadatos de propiedad y las marcas de tiempo.

Indicar directamente /var/www/site también funciona. GNU tar normalmente elimina la barra inicial y guarda var/www/site/...; después, la extracción reconstruye esa ruta dentro del destino. Elegir el directorio de entrada con -C proporciona una estructura de restauración más corta y cómoda.

Lista antes de restaurar

Ejecuta tar -tzvf site-backup.tar.gz. Lista los nombres y metadatos sin extraer. Comprueba si todos los elementos están dentro de un solo directorio. Si no es así, la extracción puede dispersar archivos por el destino. GNU tar detecta los formatos de compresión habituales al leer, por lo que tar -tvf site-backup.tar.gz también funciona.

Para restaurar en un directorio vacío existente:

tar -xzvf site-backup.tar.gz -C /tmp/restore

El destino ya debe existir. La extracción puede sobrescribir archivos con nombres coincidentes, así que usa un directorio de restauración vacío cuando compruebes un archivo contenedor desconocido. Para extraer un elemento, indica su nombre exactamente como aparece en la lista: tar -xzvf site-backup.tar.gz site/index.html.

Protege el nombre y los metadatos del archivo contenedor

La palabra que sigue a -f es el nombre del archivo contenedor. En tar -cfz backup.tar.gz docs, tar trata z como ese nombre y las palabras posteriores como entradas. De forma similar, tar -cf *.txt permite que la expansión del intérprete elija el primer archivo de texto como archivo contenedor de salida y puede sobrescribirlo. Indica siempre explícitamente el nombre del archivo contenedor.

Un usuario normal restaura los archivos como propietario; el superusuario puede restaurar los propietarios registrados. Crear una copia de seguridad requiere acceso de lectura al origen. Para archivos del sistema protegidos, usa un comando autorizado como sudo tar -czf /root/etc-2026-10-22.tar.gz /etc y comprueba sus errores para detectar archivos omitidos.

--exclude='*.log' omite las rutas coincidentes. La opción -a de GNU tar selecciona un compresor según el sufijo, como en tar -caf backup.tar.xz docs. Antes de eliminar los originales, lee el archivo contenedor con tar -tzf backup.tar.gz > /dev/null y confirma que la lista contiene los archivos esperados. Una lectura correcta comprueba que se puede leer; inspeccionar una restauración también comprueba que el contenido elegido es útil.

Puntos clave

  • La agrupación reúne archivos y metadatos; la compresión reduce el tamaño.
  • Elige una operación de tar e indica a -f un nombre explícito de archivo contenedor.
  • -C controla la estructura de entrada o el destino de extracción.
  • Lista antes de extraer y restaura en un directorio vacío para evitar sobrescrituras.
  • Las copias de seguridad necesitan permiso de lectura y el superusuario puede restaurar la propiedad registrada.
  • Comprueba que el contenido se puede leer y prueba una restauración antes de confiar en el archivo contenedor.

6.2 Comprime archivos con gzip, bzip2, xz y zip

Las herramientas de compresión difieren en velocidad, tamaño y forma de tratar los originales. Elige un formato según la tarea: reducir rápidamente un registro, crear una copia de seguridad de Linux o preparar una descarga para usuarios de varios sistemas operativos.

Comprime un archivo y conserva el original cuando sea necesario
CompresorSufijo comprimidoComando de descompresión
gzip.gzgunzip o gzip -d
bzip2.bz2bunzip2 o bzip2 -d
xz.xzunxz o xz -d

Estas herramientas normalmente sustituyen un archivo de entrada por su versión comprimida. gzip access.log deja access.log.gz y elimina el original si la operación tiene éxito. Añade -k para conservarlo. Sus formas con -d invierten la operación.

No crean un archivo contenedor de directorio con varios archivos. gzip project rechaza un directorio; gzip recursivo comprime sus archivos por separado. Para conservar un árbol de directorios como un solo objeto comprimido, crea un archivo tar con el compresor elegido.

Equilibra tiempo, memoria y tamaño

Gzip suele ser rápido, xz suele crear archivos más pequeños a un mayor coste de tiempo y memoria, y bzip2 suele situarse entre ambos. Los resultados dependen de la entrada y los ajustes. Los niveles de -1 a -9 favorecen la velocidad en el extremo bajo y la compresión en el alto. Los valores predeterminados son 6 para gzip y xz y 9 para bzip2.

Los registros de texto suelen reducirse mucho. Las imágenes JPEG, los vídeos MP4 y los archivos contenedores comprimidos suelen beneficiarse poco de otra pasada. Volver a comprimirlos puede consumir tiempo de CPU sin un ahorro útil de espacio.

En una muestra de 240 MiB de registros, gzip produjo 31 MiB y xz, 22 MiB. Esas salidas conservan aproximadamente el 12,9 % y el 9,2 % del tamaño original. En esa muestra, el archivo más pequeño requiere más tiempo de compresión; las cifras no predicen el resultado con otros datos.

Lee y comprueba contenido comprimido

zcat, zless y zgrep leen texto comprimido con gzip; bzcat y xzcat manejan sus respectivos formatos. Por ejemplo, zgrep "error" /var/log/syslog.2.gz busca en un registro rotado sin dejar una copia descomprimida en el disco.

Usa gzip -t file.gz o xz -t file.xz para comprobar la integridad. Un sufijo es solo una convención de nombres: file backup.bin puede identificar contenido gzip incluso sin .gz. sha256sum backup.tar.gz produce una suma de comprobación para compararla después de la transferencia. Las sumas coincidentes muestran que las copias coinciden, no que se hayan incluido todos los archivos de origen deseados.

Comparte un directorio con zip

ZIP agrupa y comprime mientras conserva los archivos de origen:

zip -r project.zip project
unzip -l project.zip
unzip project.zip -d /tmp/project

-r incluye recursivamente el contenido del directorio. unzip -l lo lista; -d elige el destino de extracción. Puede que sea necesario instalar primero los comandos. ZIP resulta práctico para usuarios de Windows y macOS. Las herramientas ZIP de Linux pueden guardar metadatos de Unix, pero restaurar la propiedad y los modos en otros sistemas es menos portable que usar tar para una copia de seguridad de Linux.

Elige .tar.gz para una copia de seguridad habitual de Linux, .tar.xz cuando reducir una descarga importe más que el tiempo de compresión, .zip para compartir ampliamente entre equipos de escritorio y gzip para un archivo de texto grande. Conserva los archivos de origen hasta que las comprobaciones y una restauración de prueba establezcan que el archivo contenedor incluye lo que necesitas.

Puntos clave

  • Gzip, bzip2 y xz comprimen archivos individuales y normalmente sustituyen sus entradas.
  • Usa -k para conservar un original y tar para agrupar un directorio.
  • La reducción por compresión y el coste en recursos dependen de la entrada y los ajustes.
  • Usa lectores de texto comprimido y pruebas de integridad sin extraerlo todo.
  • ZIP es práctico para compartir; tar es la opción habitual para copias de seguridad de Linux que conservan metadatos.

Ejemplos de Procesos, paquetes y servicios en Linux

6 Lecciones Interactivas

1

Encuentra y controla una tarea ocupada

17 pasos
Interpreta la información de los procesos, identifica el recurso limitante y elige una acción de control adecuada.
  1. 1
    IntroducciónComienza por el trabajo en ejecución

    Un terminal se ha vuelto lento mientras se ejecuta una tarea larga de compresión. Antes de detener nada, relaciona el síntoma visible con un proceso y un recurso.

    Pasarás de una instantánea de procesos a información de CPU y memoria en tiempo real y después decidirás cómo pausar, detener o reducir la prioridad del trabajo. El PID identifica el proceso; el número de trabajo del intérprete tiene otro propósito al moverlo entre el primer y el segundo plano.

  2. 2
    ExplicaciónEncuentra el propietario y la identidad

    Ejecuta ps -ef para obtener una instantánea de todo el sistema con PID y PPID. Un comando iniciado desde tu terminal suele ser hijo de ese intérprete.

    Para obtener columnas de CPU y memoria, usa ps aux. Un programa puede tener varias instancias en ejecución, cada una con su propio PID. Comprueba tanto el comando como el propietario al elegir un destino: un nombre conocido puede identificar varios procesos y un PID puede reutilizarse después de que termine el proceso anterior.

  3. 3
    EjemploInterpreta correctamente el tiempo de CPU

    Una fila de ps muestra START 09:00, TIME 0:08 y estado S. El programa comenzó a las 09:00 y ha acumulado ocho segundos de trabajo de CPU. Está en espera de un evento.

    El tiempo transcurrido desde el inicio no es el campo TIME. Un servicio puede esperar solicitudes durante horas y usar muy poca CPU. Usa pgrep -a NAME para encontrar las líneas de comandos pertinentes y /proc/PID/status cuando necesites la vista detallada del núcleo.

  4. 4
    DesafíoInterpreta un servidor en espera

    Un servidor se inició ayer. Su fila de ps tiene TIME 0:12, TTY ? y estado S. ¿Demuestra esto que no se ejecutó durante la mayor parte del día? Explica los tres campos.

    ---reveal---

    No. Ha utilizado 12 segundos de trabajo de CPU, no tiene terminal de control y actualmente está en espera. Esperar solicitudes es un comportamiento normal de un servicio. Estos campos no indican cuántas horas ha estado disponible el servidor ni si una solicitud concreta tuvo éxito.

  5. 5
    ExplicaciónObserva el recurso que cambia

    Abre top. Pulsa P para ordenar por CPU, M para ordenar por memoria y 1 para ver las CPU individuales. Pulsa q para salir.

    Lee el resumen junto con la lista de procesos. Un trabajo alto de CPU de usuario indica cálculos; un valor wa alto dirige la atención hacia operaciones de entrada/salida pendientes y un valor st alto en una máquina virtual indica tiempo de CPU que el anfitrión no ha proporcionado al invitado. RES mide la RAM residente; una asignación VIRT grande por sí sola no es una buena medida del uso de memoria física.

  6. 6
    EjemploCompara la carga con la capacidad de CPU

    Supongamos que nproc indica 4 y una carga de trabajo limitada principalmente por la CPU muestra la carga 6.00, 5.20, 3.10. Con poca espera de entrada/salida, la carga reciente significa que hay más tareas ejecutables de las que cuatro CPU pueden ejecutar a la vez.

    El valor de un minuto supera las medias de los periodos más largos, lo que indica un aumento reciente. La carga de Linux también cuenta las esperas ininterrumpibles, así que repite esta comparación teniendo a la vista el resumen de CPU y los estados de los procesos; el número no es un porcentaje de CPU.

  7. 7
    Idea claveConsulta la RAM available antes que free

    free -h puede mostrar poca RAM completamente libre mientras siguen disponibles varios GiB. Linux usa la RAM sobrante para caché y puede recuperar gran parte de ella para trabajo nuevo.

    Available estima la capacidad sin recurrir al espacio de intercambio. Observa si hay poca memoria available junto con un uso creciente del intercambio para obtener una señal más clara de presión. Si el núcleo termina tareas porque se agota la memoria, un registro OOM en sudo journalctl -k puede explicar la salida repentina.

  8. 8
    DesafíoElige el recurso que debes investigar

    Un servidor tiene muchas tareas en estado D, un valor wa alto, un uso bajo de CPU de usuario y mucha RAM disponible. ¿Qué recurso deberías investigar primero y por qué puede seguir siendo alta la carga?

    ---reveal---

    Investiga primero el almacenamiento u otras esperas de entrada/salida. Linux incluye las tareas ininterrumpibles en la carga, por lo que una carga alta puede coexistir con CPU inactivas. Las cifras de memoria no indican una falta inmediata de RAM y una carga alta por sí sola no permite identificar los cálculos de CPU como causa.

  9. 9
    ExplicaciónSolicita primero una salida ordenada

    Una señal pide a un proceso que actúe. kill PID envía SIGTERM, que da al programa la oportunidad de guardar su estado y cerrar sus recursos. SIGKILL fuerza la salida sin ejecutar su código de limpieza.

    Verifica el destino, envía TERM, dale tiempo y vuelve a comprobar antes de recurrir a una señal forzada. Un PID que ahora pertenece a un comando nuevo corresponde a otro proceso. Para un servicio supervisado por systemd, solicita sudo systemctl stop NAME mediante su gestor.

  10. 10
    EjemploPausa y reanuda de forma deliberada

    kill -STOP 5120 pausa el proceso 5120; kill -CONT 5120 lo reanuda. El proceso conserva su memoria y sus archivos abiertos durante la pausa.

    Ctrl+Z envía una solicitud de pausa al trabajo en primer plano del terminal, mientras que Ctrl+C envía una interrupción que normalmente lo termina. Un proceso zombi ya ha terminado y no puede volver a terminarse. Una tarea en una espera ininterrumpible de almacenamiento puede seguir visible hasta que termine esa espera, incluso después de una señal de terminación forzada.

  11. 11
    DesafíoMantén detenido un servicio gestionado

    Un proceso de trabajo gestionado se reinicia después de que terminas su PID. Quieres detenerlo ahora para realizar tareas de mantenimiento. ¿Qué acción es adecuada y por qué terminar el nuevo PID es una mala práctica habitual?

    ---reveal---

    Usa sudo systemctl stop NAME. El gestor de servicios entiende que esta parada es intencionada y se ocupa de los procesos gestionados. Terminar otro PID puede repetir el mismo ciclo de recuperación ante fallos porque systemd puede interpretar la salida del proceso como un motivo para reiniciarlo.

  12. 12
    EjemploMueve un trabajo sin perderlo

    Inicia sleep 300 en primer plano y después pulsa Ctrl+Z. Bash informa de que el trabajo está detenido, Stopped. bg %1 reanuda el trabajo 1 y devuelve el indicador de comandos, y fg %1 lo lleva de nuevo al primer plano.

    %1 es una selección de trabajo local al intérprete, no el PID 1. Un trabajo detenido no ha terminado: conserva recursos. Si la salida del trabajo en segundo plano interfiere con el terminal, envíala a un archivo antes de dejar la tarea en ejecución.

  13. 13
    ConsejoPrepara una tarea para cerrar sesión

    Para una nueva tarea larga, usa nohup ./long-task.sh > task.log 2>&1 &. Nohup hace que ignore HUP, la redirección coloca ambos flujos de salida en un archivo y el signo de unión la lleva a segundo plano.

    Cada parte tiene una función distinta. Un signo de unión por sí solo no protege frente al cierre del terminal. disown %1 de Bash puede eliminar un trabajo existente de la tabla de trabajos del intérprete, pero su entrada y salida siguen necesitando destinos adecuados.

  14. 14
    ExplicaciónReduce la prioridad sin limitar la velocidad

    Inicia un trabajo exigente con nice -n 10 COMMAND desde el valor de ajuste habitual 0, o modifica una tarea en ejecución con renice -n 15 -p PID. Los valores de ajuste más altos reducen la prioridad normal de planificación de CPU.

    El intervalo va de -20 a 19. Un usuario normal generalmente puede hacer que su propio trabajo sea menos competitivo; aumentar su prioridad suele requerir ser superusuario. Una tarea con valor 19 sigue usando por completo una CPU inactiva y este ajuste no establece la prioridad de acceso al disco.

  15. 15
    DesafíoAjusta un trabajo en segundo plano en ejecución

    Tu propia tarea de compresión en segundo plano tiene el PID 9328 y un valor de ajuste de prioridad 0. Quieres que permita al trabajo interactivo que compite con ella disponer de más CPU sin pausarla. ¿Qué comando y efecto son adecuados?

    ---reveal---

    renice -n 15 -p 9328 reduce su prioridad de CPU al aumentar su valor de ajuste. La tarea sigue ejecutándose y recibe menos oportunidades cuando hay competencia por la CPU. Enviar STOP la pausaría por completo, mientras que elegir un valor negativo aumentaría su prioridad.

  16. 16
    DesafíoRelaciona la información con una respuesta

    Una copia de seguridad está activa con un valor de ajuste de prioridad 0. Top muestra que usa varias CPU, hay poca espera de entrada/salida y suficiente RAM disponible; el trabajo interactivo va lento. ¿Debes terminar la copia de seguridad para ayudar a la tarea interactiva?

    ---reveal---

    No. La información indica competencia por la CPU, por lo que aumentar el valor de ajuste de la copia de seguridad puede dar más oportunidades al trabajo interactivo mientras aquella continúa. Si más adelante es necesario detenerla, vuelve a identificar el proceso y solicita una salida ordenada antes de considerar la fuerza.

  17. 17
    RepasoAdapta la acción a la información

    Usa ps y pgrep para establecer la identidad y después top, free y la carga para comprender la presión sobre los recursos. Lee el estado antes de interpretar un proceso que parece bloqueado.

    Una salida ordenada, una pausa, el paso a segundo plano y un cambio de prioridad resuelven problemas distintos. Deja el control de servicios a systemd, distingue los trabajos locales de los PID y verifica el resultado después de cambiar el trabajo en ejecución.

2

Crea un informe de hardware útil

10 pasos
Identifica la arquitectura y la capacidad, y relaciona los dispositivos detectados con los controladores y los mensajes del núcleo.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónRecopila datos que respondan al requisito
  2. 2
    ExplicaciónIdentifica las capas del sistema
  3. 3
    EjemploCuenta la disposición de la CPU
  4. 4
    ExplicaciónCompara la memoria instalada y la utilizable
  5. 5
    DesafíoComprueba un requisito mínimo
  6. 6
    EjemploInterpreta un árbol de almacenamiento
  7. 7
    ExplicaciónRelaciona un dispositivo con su controlador
  8. 8
    DesafíoIdentifica un disco recién conectado
  9. 9
    DesafíoDistingue la capacidad del soporte del controlador
  10. 10
    RepasoHaz que el informe sea preciso
3

Instala software y rastrea qué cambió

14 pasos
Usa repositorios, selecciona operaciones de mantenimiento y rastrea los archivos instalados hasta sus paquetes.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónMantén relacionados los archivos y los registros de paquetes
  2. 2
    ExplicaciónElige la herramienta de repositorio
  3. 3
    Idea claveIncluye las dependencias en el plan
  4. 4
    DesafíoExplica los paquetes adicionales
  5. 5
    EjemploActualiza las listas antes de instalar
  6. 6
    ExplicaciónComprende qué permite una actualización
  7. 7
    ConsejoDecide qué debe conservar la eliminación
  8. 8
    DesafíoDistingue actualizar la información de aplicar cambios
  9. 9
    EjemploRastrea un comando hasta su paquete
  10. 10
    ExplicaciónBusca más allá de los archivos instalados
  11. 11
    DesafíoElige la dirección de la consulta
  12. 12
    ConexiónRelaciona un fallo con el mantenimiento reciente
  13. 13
    DesafíoRepara a partir de la información
  14. 14
    RepasoComprueba el estado que realmente necesitas
4

Ejecuta un servicio ahora y después de reiniciar

14 pasos
Interpreta el estado de un servicio, elige comandos de control y aplica una configuración complementaria local a una unidad.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPlantea dos preguntas sobre el estado
  2. 2
    EjemploLee Loaded y Active
  3. 3
    Idea claveUna unidad activa no tiene por qué tener un proceso en ejecución
  4. 4
    DesafíoInterpreta un servicio deshabilitado pero en ejecución
  5. 5
    ExplicaciónElige ahora, más adelante o ambos
  6. 6
    EjemploAplica una configuración de aplicación
  7. 7
    DesafíoBloquea un servicio sin olvidar su proceso
  8. 8
    ExplicaciónLee la definición efectiva de la unidad
  9. 9
    EjemploDescribe un servidor sencillo en primer plano
  10. 10
    EjemploHaz que una configuración complementaria se conserve tras las actualizaciones
  11. 11
    DesafíoAplica un comando editado directamente
  12. 12
    Idea claveLas reglas de reinicio respetan una parada solicitada
  13. 13
    DesafíoVerifica un servicio después de cambiar una unidad
  14. 14
    RepasoDistingue cada capa
5

Encuentra la causa del fallo de un servicio

13 pasos
Filtra registros, interpreta un error que explique la causa y verifica una reparación cada vez.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónComienza con un síntoma observable
  2. 2
    ExplicaciónSelecciona el servicio y el intento
  3. 3
    EjemploConserva los mensajes útiles de baja prioridad
  4. 4
    DesafíoBusca en el arranque correcto
  5. 5
    ExplicaciónEncuentra registros de aplicaciones y registros rotados
  6. 6
    EjemploComprueba una salida silenciosa de una aplicación
  7. 7
    DesafíoElige una fuente de texto más antigua
  8. 8
    EjemploComienza por el primer error que explique la causa
  9. 9
    EjemploAverigua quién ocupa un puerto
  10. 10
    Idea claveUsa los códigos de resultado para elegir la siguiente comprobación
  11. 11
    DesafíoRecupérate de un fallo con límite de frecuencia
  12. 12
    DesafíoVerifica sin perder pruebas
  13. 13
    RepasoDeja que cada hallazgo acote el siguiente paso
6

Crea un archivo contenedor que puedas restaurar

11 pasos
Elige las rutas guardadas, verifica el contenido del archivo contenedor y compara formatos de compresión e intercambio.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPlanifica la restauración antes de crear el archivo contenedor
  2. 2
    ExplicaciónDistingue la agrupación de la reducción de tamaño
  3. 3
    EjemploCrea rutas relativas útiles
  4. 4
    EjemploInspecciona y extrae en pasos separados
  5. 5
    DesafíoPredice la estructura de extracción
  6. 6
    ConsejoMantén f junto a su nombre de archivo
  7. 7
    ExplicaciónConoce qué originales permanecen
  8. 8
    EjemploElige un formato para la tarea
  9. 9
    DesafíoConserva un registro mientras lo comprimes
  10. 10
    DesafíoComprueba tanto la copia como el contenido
  11. 11
    RepasoUsa el formato y las comprobaciones adecuados

Ejercicios de Procesos, paquetes y servicios en Linux

50 Preguntas de Práctica en 5 sets

Set 1: Aplica comandos cotidianos de mantenimiento de Linux10 Preguntas de Práctica

Pregunta 1 de 10

Bash muestra [3] 9026 después de iniciar un trabajo. ¿Cómo llevas ese trabajo al primer plano?
  1. fg %9026
  2. bg %3
  3. fg %3
  4. kill -CONT 3
Mostrar respuestaOcultar respuesta
Respuesta: C
El número entre corchetes es el número de trabajo del intérprete, por lo que fg %3 selecciona ese trabajo y le da el control del terminal. El número mayor es su PID, no su número de trabajo. Bg lo continuaría en segundo plano, mientras que reanudar un proceso con una señal no le transfiere el control del terminal.

Pregunta 2 de 10

Un servidor de ocho CPU tiene trabajo limitado principalmente por la CPU, poca espera de entrada/salida y cargas medias 12.0, 8.0, 4.0. ¿Cuál es la mejor interpretación?
  1. La demanda reciente de CPU supera la capacidad y ha aumentado.
  2. La demanda reciente de CPU es baja y ha disminuido.
  3. Se está usando el doce por ciento de la capacidad de CPU.
  4. Todas las tareas están bloqueadas esperando al almacenamiento.
Mostrar respuestaOcultar respuesta
Respuesta: A
Con poca espera de entrada/salida, una carga de 12 representa más trabajo ejecutable del que ocho CPU pueden atender a la vez. La media de un minuto también supera las medias de los periodos más largos, lo que indica un aumento reciente. Interpretar 12 como un 12 % pierde de vista la unidad de la carga: cuenta tareas, no una proporción de la capacidad de CPU.

Pregunta 3 de 10

Un adaptador de red PCI aparece en lspci, pero no tiene una línea Kernel driver in use. ¿Qué deberías investigar a continuación?
  1. El número de trabajo en primer plano del intérprete
  2. Solo el nombre comercial anunciado del dispositivo
  3. Solo el historial de paquetes del usuario actual
  4. La asociación del controlador y los errores del núcleo
Mostrar respuestaOcultar respuesta
Respuesta: D
El listado del bus muestra que se detectó el adaptador, mientras que la ausencia de la línea de controlador asociado apunta a su configuración. Los mensajes del núcleo pueden explicar por qué un controlador no se inicializó o no se asoció. Un nombre comercial por sí solo aporta menos información que el identificador del dispositivo y no demuestra que Linux lo esté controlando.

Pregunta 4 de 10

En un sistema Debian, ¿cómo encuentras el paquete instalado al que pertenece /usr/bin/less?
  1. dpkg -L /usr/bin/less
  2. dpkg -S /usr/bin/less
  3. apt search /usr/bin/less
  4. apt policy /usr/bin/less
Mostrar respuestaOcultar respuesta
Respuesta: B
Dpkg -S busca a qué paquete instalado pertenece un archivo, partiendo de una ruta. Dpkg -L va en la dirección opuesta: espera un nombre de paquete y lista sus archivos. Las búsquedas de texto en repositorios y las consultas de versiones candidatas no sustituyen la base de datos de propiedad de archivos instalados para esta pregunta.

Pregunta 5 de 10

Quieres eliminar un paquete Debian, pero conservar su configuración del sistema gestionada para una reinstalación posterior. ¿Qué operación es adecuada?
  1. sudo apt remove NAME
  2. sudo apt purge NAME
  3. sudo apt autoremove
  4. sudo apt update
Mostrar respuestaOcultar respuesta
Respuesta: A
Remove de APT elimina los archivos del programa incluidos en el paquete y conserva su configuración del sistema gestionada. Purge también elimina esa configuración conservada, por lo que no cumple el objetivo de reinstalarlo con ella. Autoremove selecciona dependencias automáticas innecesarias y no es una solicitud para eliminar esta aplicación concreta por nombre.

Pregunta 6 de 10

Editas directamente en disco la línea ExecStart de una unidad. ¿Qué secuencia aplica el nuevo comando a un servicio en ejecución?
  1. Recargar la aplicación y después habilitarla
  2. Recargar las definiciones y después reiniciar el servicio
  3. Habilitar el servicio y después consultar sus archivos
  4. Consultar su estado y después solo usar reset-failed
Mostrar respuestaOcultar respuesta
Respuesta: B
Daemon-reload hace que systemd vuelva a leer las definiciones de unidades y un reinicio inicia el programa con la definición modificada. Una recarga de la aplicación gestiona su propia configuración, no la línea ExecStart de systemd. Los enlaces de habilitación y los contadores de fallos no aplican un nuevo ejecutable a un proceso en ejecución.

Pregunta 7 de 10

Un evento de hace dos días no aparece en el registro de texto actual. El directorio también contiene app.log.2.gz. ¿Cómo puedes buscar directamente en ese archivo más antiguo?
  1. journalctl -u app.log.2.gz
  2. tail -f app.log
  3. gzip app.log.2.gz
  4. zgrep "timeout" app.log.2.gz
Mostrar respuestaOcultar respuesta
Respuesta: D
Zgrep lee texto comprimido con gzip y busca en él sin dejar una copia descomprimida. Seguir el registro actual solo observa las líneas nuevas y no permite recuperar un evento trasladado a un archivo rotado. Journalctl lee registros de systemd, no una ruta arbitraria de un registro de texto comprimido indicada como nombre de unidad.

Pregunta 8 de 10

Un servicio personalizado indica 203/EXEC. Su registro no contiene ningún mensaje de inicio de la aplicación. El archivo de unidad indica /opt/worker/run, pero esa ruta no existe. ¿Qué secuencia de reparación corresponde a la información disponible?
  1. Crear el usuario del servicio, borrar el registro y reiniciar
  2. Aumentar RestartSec y esperar el siguiente intento automático
  3. Corregir ExecStart, recargar las definiciones, iniciar y verificar
  4. Habilitar el servicio y reiniciar sin cambiar su comando
Mostrar respuestaOcultar respuesta
Respuesta: C
La ausencia del ejecutable corresponde a un fallo en la etapa de ejecución, así que corrige la ruta antes de volver a leer la definición de la unidad y probar el inicio. Una cuenta inexistente dirigiría la atención a otro estado, como 217/USER. Retrasar los reintentos o habilitar la unidad deja sin cambios el ejecutable inexistente.

Pregunta 9 de 10

Necesitas comprimir report.log con gzip y conservar el archivo sin comprimir. ¿Qué comando es adecuado?
  1. gzip -k report.log
  2. gzip report.log
  3. gunzip report.log
  4. tar -cf report.log.gz report.log
Mostrar respuestaOcultar respuesta
Respuesta: A
La opción -k indica a gzip que conserve la entrada después de comprimirla correctamente. Gzip sin esa opción normalmente sustituye report.log por report.log.gz, por lo que eliminaría la copia sin comprimir. Dar el sufijo .gz a un archivo tar sin comprimir no lo comprime con gzip; la extensión por sí sola no selecciona esa operación.

Pregunta 10 de 10

En Debian, dpkg instaló de forma incompleta un paquete local de confianza porque faltaban dos dependencias. Otra actualización automática mantiene ahora el bloqueo de paquetes. ¿Cuál es la mejor secuencia a continuación?
  1. Eliminar el archivo de bloqueo y repetir la instalación de bajo nivel
  2. Purgar el paquete principal y desactivar las comprobaciones de firma
  3. Esperar a que termine la operación y revisar una reparación con apt
  4. Actualizar las listas y suponer que las bibliotecas ya están instaladas
Mostrar respuestaOcultar respuesta
Respuesta: C
Espera a que termine la operación de paquetes activa para que dos procesos de escritura no interfieran en los registros de instalación. Después, sudo apt --fix-broken install puede proponer una reparación de dependencias para revisarla. Repetir dpkg por sí solo no puede obtener los paquetes que faltan, y eliminar un bloqueo activo debilita la protección que necesita la base de datos de paquetes.
Set 2: Interpreta procesos, paquetes y estados de servicios10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un proceso tiene START 06:20 y TIME 0:04. ¿Qué indica TIME?
  1. Cuatro segundos desde el inicio
  2. Cuatro segundos de trabajo de CPU
  3. Cuatro minutos desde el inicio
  4. Cuatro minutos de espera de entrada
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un servidor muestra 0,2 GiB de RAM libre, 6,1 GiB de RAM disponible y un uso del espacio de intercambio que no crece. ¿Qué indica esto sobre la presión sobre la memoria?
  1. La RAM está agotada porque free es bajo.
  2. Hay que añadir intercambio antes de iniciar tareas.
  3. La caché no está disponible de forma permanente.
  4. Hay un margen considerable de RAM disponible.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Has verificado que el PID 6842 corresponde a tu editor, que no responde. ¿Qué señal deberías enviar normalmente primero para solicitar su salida?
  1. SIGTERM
  2. SIGKILL
  3. SIGSTOP
  4. SIGCONT
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Necesitas la versión publicada del núcleo que se ejecuta actualmente en un servidor. ¿Qué comando la proporciona?
  1. cat /etc/os-release
  2. uname -m
  3. uname -r
  4. nproc
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

La instalación de una aplicación también requerirá dos paquetes de bibliotecas de los repositorios configurados. ¿Por qué es apt más práctico que dpkg para esta tarea?
  1. Permite usar paquetes de cualquier arquitectura.
  2. Elimina la necesidad de confiar en proveedores.
  3. Resuelve y descarga las dependencias.
  4. Instala sin modificar archivos del sistema.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un administrador ejecuta únicamente sudo apt update. ¿Qué ha cambiado cuando el comando termina correctamente?
  1. Todas las versiones de las aplicaciones instaladas
  2. Las listas locales de paquetes de los repositorios
  3. El núcleo que está actualmente en memoria
  4. La configuración del sistema de cada paquete
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un servicio muestra enabled e inactive (dead). ¿Cómo debes interpretar esa combinación?
  1. Configurado para activación automática, detenido ahora
  2. En ejecución ahora, excluido de la activación automática
  3. Fallido ahora, bloqueado para cualquier inicio futuro
  4. En ejecución ahora, a la espera de sus enlaces de inicio
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un servicio detenido debe iniciarse ahora y quedar habilitado para futuros arranques. ¿Qué comando combina ambas acciones?
  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx
  3. sudo systemctl unmask nginx
  4. sudo systemctl enable --now nginx
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Quieres consultar los registros de nginx del arranque actual, incluidos los mensajes de nivel informativo. ¿Qué comando selecciona ese alcance?
  1. sudo journalctl -u nginx -b -1
  2. sudo journalctl -u nginx -b
  3. sudo journalctl -u nginx -b -p err
  4. sudo journalctl -k -b
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Agrupas /srv/notes/day.txt, propiedad de root, con tar -czf notes.tar.gz -C /srv notes. Después, como usuario normal, ejecutas tar -xzf notes.tar.gz -C /tmp/inspect en ese directorio vacío existente. ¿Qué ruta y propietario tiene normalmente el archivo restaurado?
  1. /tmp/inspect/srv/notes/day.txt, propiedad del usuario que extrae
  2. /tmp/inspect/notes/day.txt, propiedad de root
  3. /srv/notes/day.txt, propiedad del usuario que extrae
  4. /tmp/inspect/notes/day.txt, propiedad del usuario que extrae
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Relaciona la información con la acción adecuada10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un proceso está marcado como Z y su padre sigue ejecutándose. ¿Por qué enviar SIGKILL a ese PID no elimina la entrada?
  1. El proceso está pausado y necesita SIGCONT antes de salir.
  2. El proceso realiza cálculos con un valor nice negativo.
  3. El proceso espera a que termine una operación de almacenamiento.
  4. El proceso ha terminado y espera a que su padre recoja su estado.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Una nota antigua identifica el trabajo data-export con el PID 7440, pero ahora ps muestra que ese PID ejecuta un editor. pgrep encuentra dos procesos data-export: el PID 8550 es tu data-export --daily; el PID 8551 es el data-export --weekly de otro usuario. Solo quieres que tu trabajo diario termine de forma ordenada. ¿Qué acción es adecuada?
  1. Enviar SIGTERM al PID guardado 7440
  2. Verificar el PID 8550 y luego enviarle SIGKILL
  3. Verificar el PID 8550 y después enviarle SIGTERM
  4. Usar pkill data-export como superusuario
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una disposición uniforme de CPU tiene 2 zócalos, 3 núcleos por zócalo y 2 hilos por núcleo. ¿Cuántos núcleos físicos y CPU lógicas proporciona?
  1. 6 núcleos y 12 CPU lógicas
  2. 12 núcleos y 12 CPU lógicas
  3. 3 núcleos y 6 CPU lógicas
  4. 6 núcleos y 6 CPU lógicas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

APT rechaza los metadatos de un repositorio recién añadido porque falta la clave de firma esperada. ¿Qué respuesta conserva la comprobación de confianza prevista?
  1. Aceptar una vez los metadatos sin firma porque el paquete es conocido
  2. Verificar el proveedor e instalar correctamente su clave auténtica
  3. Descargar el mismo paquete desde una copia espejo no verificada
  4. Usar dpkg para que la clave ausente no bloquee la instalación
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

La versión instalada de un paquete es 3,2 y su candidata en APT es 3,4. ¿Qué significa?
  1. La versión 3,2 está instalada; la 3,4 está seleccionada para actualizar.
  2. La versión 3,4 está instalada; la 3,2 se usaba antes de reiniciar.
  3. Ambas versiones están instaladas porque policy lista dos valores.
  4. La versión 3,2 solo está disponible en un repositorio deshabilitado.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un servicio muestra active (exited) después de completar correctamente una tarea de configuración puntual. ¿Qué significa este estado?
  1. Su programa principal debe seguir usando CPU.
  2. Se sabe que la tarea de configuración ha fallado.
  3. Su unidad está bloqueada para todos los inicios futuros.
  4. La tarea completada todavía se considera activa.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una actualización de paquete borró tu modificación del archivo del proveedor. Necesitas sustituir de forma permanente su único comando ExecStart y aplicar el nuevo comando ahora. ¿Qué secuencia es adecuada?
  1. Editar el nuevo archivo del proveedor, añadir otro ExecStart y habilitar
  2. Crear una configuración complementaria local, restablecer ExecStart, sustituirlo y reiniciar
  3. Crear una configuración complementaria local, añadir otro ExecStart y habilitar
  4. Crear una configuración complementaria local, restablecer ExecStart y recargar solo la aplicación
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

¿Qué niveles de prioridad incluye journalctl -p err?
  1. Solo error, únicamente el nivel 3
  2. De error a depuración, niveles 3–7
  3. De emergencia a error, niveles 0–3
  4. Advertencia e información, niveles 4–6
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El registro de un servicio informa primero de un error de sintaxis en la configuración, después de fallos repetidos y de un límite de frecuencia de arranque. Corriges el archivo y su prueba de sintaxis es correcta. ¿Qué debería hacerse después?
  1. Aumentar la prioridad de CPU, reiniciar y borrar los registros antiguos
  2. Restablecer el estado fallido y suponer que el servicio está reparado
  3. Habilitar la unidad y esperar sin solicitar un nuevo inicio
  4. Restablecer el estado fallido, iniciar y comprobar el estado y la función
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Un equipo necesita un único archivo contenedor comprimido de un directorio que los usuarios de Windows y macOS puedan abrir fácilmente. ¿Qué comando es una opción adecuada?
  1. gzip -r handoff
  2. zip -r handoff.zip handoff
  3. zip handoff.zip handoff
  4. xz handoff
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Diagnostica problemas de mantenimiento con distintas herramientas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una tarea de compresión puede reiniciarse de forma segura desde el principio. Se inició desde un terminal con valor nice 0, compite con el trabajo interactivo y debe seguir ejecutándose después de cerrar sesión. ¿Qué nuevo plan de inicio responde a estas necesidades?
  1. Pasarla a segundo plano con & y cerrar el terminal sin otros cambios
  2. Reiniciarla con nohup, redirección de salida y un ajuste nice positivo
  3. Usar nohup con nice -10 para dar más CPU a la tarea interactiva
  4. Redirigir la salida y detener el proceso con SIGSTOP hasta mañana
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un servidor de 12 CPU tiene una carga de 18, un uso bajo de CPU de usuario y muchas tareas en estado D. La RAM disponible es alta y el uso del espacio de intercambio es estable. ¿Qué información debería orientar la siguiente investigación?
  1. Las esperas de almacenamiento pueden explicar la carga pese a las CPU inactivas.
  2. La demanda de CPU por sí sola demuestra que hacen falta más núcleos.
  3. El uso bajo de CPU de usuario demuestra que la visualización de carga falla.
  4. El agotamiento de memoria explica todas las tareas en estado D del equipo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Ayer un disco USB era /dev/sdb. Hoy se conectó primero otro dispositivo y escribir en el disco equivocado borraría archivos necesarios. ¿Qué debe determinar ahora el destino?
  1. La letra de ayer, porque los nombres USB son permanentes
  2. La primera entrada extraíble, sin importar su capacidad actual
  3. El tamaño, modelo y UUID actuales del disco deseado
  4. El dispositivo con la primera letra después de reiniciar
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

APT retiene la actualización de una aplicación porque necesita eliminar un paquete instalado. Ya está instalado un paquete de núcleo nuevo, pero uname sigue indicando el núcleo anterior. Necesitas que ambos cambios estén en ejecución. ¿Qué plan es adecuado?
  1. Actualizar las listas de APT, omitir la instalación, reiniciar y verificar solo uname
  2. Ejecutar apt upgrade con -y, reiniciar la aplicación y omitir el reinicio del equipo
  3. Eliminar el bloqueo, instalar de nuevo con dpkg y verificar solo los archivos
  4. Revisar full-upgrade, aplicarlo, reiniciar y verificar ambas versiones
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

En un sistema RPM falta /usr/bin/scan. Quieres averiguar qué paquete del repositorio proporciona esa ruta exacta. ¿Qué consulta es adecuada?
  1. rpm -qf /usr/bin/scan
  2. rpm -ql /usr/bin/scan
  3. dnf provides /usr/bin/scan
  4. dnf history info /usr/bin/scan
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un servicio en ejecución está deshabilitado, pero su socket lo activa repetidamente después de que lo detienes. La política exige bloquear futuros inicios del servicio y detenerlo ahora. ¿Qué acción es adecuada?
  1. Enmascarar el servicio y detenerlo
  2. Habilitar el servicio sin --now
  3. Deshabilitar el servicio por segunda vez
  4. Desenmascarar el servicio y recargarlo
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

En un archivo de unidad, ¿qué establece por sí solo After=network.target?
  1. Un requisito para iniciar esa unidad de destino
  2. Una relación de orden con esa unidad de destino
  3. Una garantía de conexión a Internet
  4. Un enlace de habilitación para futuros arranques
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un programa desapareció durante el arranque anterior. Su propio registro termina sin un error y el registro persistente de systemd conserva ese arranque. ¿Dónde deberías buscar una terminación por falta de memoria realizada por el núcleo?
  1. sudo journalctl -k -b -1
  2. sudo dmesg -w
  3. sudo journalctl -k -b
  4. sudo tail -f /var/log/apt/history.log
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Nginx no puede asociarse al puerto 8080. Una consulta de los programas en escucha identifica un segundo servicio que el sistema debe conservar. Ambos servicios deben ejecutarse. ¿Qué línea de reparación corresponde?
  1. Deshabilitar permanentemente el segundo servicio y verificar solo nginx
  2. Terminar el PID del segundo servicio cada vez que systemd lo reinicie
  3. Cambiar una configuración de escucha, probarla y verificar ambos servicios
  4. Borrar el registro y volver a probar nginx con la misma configuración
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Un archivo tar lista bundle/a.txt y bundle/b.txt. Quieres restaurar solo b.txt. ¿Qué nombre de elemento debes solicitar?
  1. b.txt
  2. /bundle/b.txt
  3. archive.tar.gz/b.txt
  4. bundle/b.txt
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Planifica y verifica reparaciones completas de Linux10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una investigación de memoria necesita los cinco procesos que más memoria usan junto con sus padres. ¿Qué comando proporciona un encabezado y cinco filas de datos?
  1. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 6
  2. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 6
  3. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 5
  4. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Encuentras una tarea de copia no gestionada en estado D que espera a un almacenamiento no disponible, un proceso hijo zombi de tu aplicación y un proceso de trabajo de systemd que se reinicia después de terminarlo. ¿Qué plan aborda las tres situaciones?
  1. Repetir KILL en la espera; enviar KILL al zombi; seguir terminando el PID del proceso
  2. Reanudar la espera con CONT; recoger al zombi con KILL; solo deshabilitar el proceso
  3. Investigar el almacenamiento; inspeccionar el padre del zombi; detener el proceso mediante systemd
  4. Aumentar todas las prioridades; reiniciar al zombi; enmascarar el proceso sin detenerlo
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Dos de tus tareas limitadas por la CPU compiten entre sí. Una tiene valor nice 0 y la otra nice 15. ¿Cuál tiene menor prioridad de planificación de CPU?
  1. La tarea con nice 0
  2. Ambas tienen la misma prioridad
  3. La que tiene el PID menor
  4. La tarea con nice 15
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un software necesita ARM de 64 bits, 6 CPU disponibles y 8 GB de RAM utilizable. Un equipo indica aarch64, un zócalo con cuatro núcleos y dos hilos por núcleo, nproc 4 y 7,6 GiB de RAM utilizable. ¿Qué requisitos se cumplen?
  1. Se cumplen arquitectura y CPU; falla la RAM utilizable.
  2. Se cumplen arquitectura y RAM; falla el número de CPU disponibles.
  3. Se cumplen todos porque ocho hilos de hardware superan seis.
  4. Solo se cumple la RAM porque aarch64 no es arm64.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

La etiqueta de una unidad indica 1 TB y un listado en unidades binarias muestra unos 931 GiB. ¿Qué explica la diferencia?
  1. Toda la capacidad que falta debe estar asignada al intercambio.
  2. La etiqueta usa bytes decimales y el listado usa unidades binarias.
  3. El listado ha contado hilos de hardware en lugar de bloques de disco.
  4. La unidad puede recuperar la diferencia cargando un controlador nuevo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un compañero afirma que instalar una biblioteca de Python con pip significa que apt la listará como paquete Debian instalado. ¿Por qué es incorrecto ese razonamiento?
  1. Pip solo modifica módulos del núcleo, no bibliotecas de Python.
  2. APT registra bibliotecas solo después de cada reinicio del sistema.
  3. APT lista cada archivo descargado como un paquete instalado.
  4. Pip y apt mantienen registros de instalación separados.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un servicio deshabilitado está activo y su socket está habilitado. ¿Cómo puede darse ese estado?
  1. El servicio debe estar habilitado en secreto porque está activo.
  2. Deshabilitado significa que su estado ya no es fiable.
  3. El socket puede activarlo sin enlaces de habilitación del servicio.
  4. Un servicio deshabilitado solo puede ejecutarse tras actualizar el núcleo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Nginx sigue atendiendo solicitudes. Has editado directamente el ExecStart de su unidad para indicar una nueva ruta válida de programa y también has modificado los ajustes de nginx; ahora nginx -t detecta un error de sintaxis. ¿Qué secuencia aplica ambos cambios previstos con una configuración probada?
  1. Corregir nginx, superar su prueba, recargar definiciones, reiniciar y verificar
  2. Recargar definiciones, recargar nginx de inmediato y mantener el proceso anterior
  3. Reiniciar de inmediato y usar enable para restaurar la configuración anterior
  4. Corregir nginx, superar su prueba y recargar solo la aplicación
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

En Ubuntu, hubo fallos de inicio de sesión SSH entre las 10:00 y las 10:30 del 2026-10-20 durante el arranque anterior al actual. El registro de systemd conserva ese arranque. ¿Qué comando selecciona esos registros del servicio sin excluir los mensajes informativos de inicio de sesión?
  1. sudo journalctl -u ssh -b --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  2. sudo journalctl -u ssh -b -1 -p err --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  3. sudo journalctl -k -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  4. sudo journalctl -u ssh -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Debes transferir un directorio entre equipos Linux, conservar los metadatos de propiedad para una restauración como superusuario y confirmar que la transferencia conservó los bytes. ¿Qué plan es adecuado?
  1. Comprimir cada archivo con gzip, comparar solo los nombres y eliminar el árbol de origen
  2. Crear un archivo tar.gz, comparar los valores SHA-256 y probar una restauración
  3. Renombrar el directorio con el sufijo .zip y comparar el número total de archivos
  4. Crear un archivo tar.gz, comprobar su sufijo y suponer que llegaron todos los archivos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

78 Términos Clave, cada uno con su definición

A

Actualización de la lista de paquetes
Una actualización de la lista de paquetes descarga la información actual del repositorio para que el gestor conozca las versiones disponibles sin instalarlas.
Después de un apt update, una aplicación más reciente puede aparecer como disponible mientras la anterior sigue instalada.
Actualización de versión
Una actualización de versión sustituye el software instalado por una versión de paquete más reciente seleccionada, sujeta a las reglas de dependencias del gestor de paquetes.
Instalar una actualización del núcleo deja el núcleo anterior en ejecución hasta que el equipo arranca con el nuevo.
Archivo contenedor
Un archivo contenedor agrupa varios archivos y directorios en un solo objeto, conservando los nombres guardados de sus elementos y determinados metadatos de archivo.
Un archivo tar puede conservar un árbol de directorios de Linux mientras un compresor reduce su tamaño por separado.
Archivo de configuración complementaria
Un archivo de configuración complementaria añade ajustes locales a una definición de unidad y permite mantener los cambios del administrador separados de los archivos proporcionados por paquetes.
Un ajuste Restart guardado en un archivo complementario local puede conservarse cuando se sustituye la unidad del proveedor durante una actualización.
Archivo de dispositivo
Un archivo de dispositivo es un archivo especial, normalmente situado en /dev, mediante el cual el software accede a un dispositivo representado por el núcleo.
El nombre de partición NVMe /dev/nvme0n1p2 identifica una partición, no un directorio de archivos.
Archivo de unidad
Un archivo de unidad es una definición de texto de una unidad de systemd, organizada en secciones y ajustes de ejecución, dependencias e instalación.
Systemctl cat muestra el archivo de unidad base del servicio y los archivos de modificación local con sus rutas.
Arquitectura
La arquitectura de un procesador identifica la familia de código máquina que ejecuta un sistema, como x86_64 o aarch64, y afecta a la compatibilidad de los paquetes.
Un paquete ARM no se vuelve compatible con un servidor x86 solo porque ambos usen Linux.

B

Bloqueo de la base de datos de paquetes
Un bloqueo de la base de datos de paquetes coordina el acceso a los registros de paquetes para que los procesos simultáneos de instalación o mantenimiento no escriban cambios conflictivos.
Un proceso de actualización automática puede mantener el bloqueo mientras esperas para comenzar una instalación interactiva.
Búfer circular
Un búfer circular es un almacenamiento de tamaño fijo que sustituye sus entradas más antiguas por otras nuevas a medida que se llena, como el utilizado para los mensajes del núcleo.
El búfer activo del núcleo puede perder mensajes antiguos de detección aunque el registro persistente conserve copias.

C

Carga media
La carga media es el número medio de tareas ejecutables y tareas en espera ininterrumpible, indicado para 1, 5 y 15 minutos.
Una carga alta con poca actividad de CPU puede orientar la investigación hacia tareas bloqueadas por el almacenamiento.
Compresión
La compresión codifica datos en menos bytes cuando su contenido lo permite, a cambio de trabajo de procesamiento y, a veces, memoria para reducir el almacenamiento.
Los registros de texto suelen reducirse mucho más que las imágenes JPEG porque estas ya están comprimidas.
Comprobación de la configuración
Una comprobación de la configuración revisa los ajustes propuestos de una aplicación antes de aplicarlos y a menudo identifica errores de sintaxis por archivo y línea.
Un nginx -t correcto después de una corrección da motivos para continuar con la recarga o el reinicio previstos.
Conflicto de puerto
Un conflicto de puerto ocurre cuando un servicio no puede ocupar la dirección y el puerto de escucha solicitados porque ya los mantiene ocupados otro programa en escucha incompatible.
Identifica qué está en escucha antes de decidir si detenerlo o cambiar la configuración de un servicio.
Consulta del paquete al que pertenece un archivo
Una consulta del paquete al que pertenece un archivo encuentra el paquete instalado que proporcionó una ruta indicada, mediante la base de datos de paquetes en lugar de una suposición basada en el nombre del comando.
Usa rpm -qf para un ejecutable instalado cuyo nombre de paquete desconoces en un sistema RPM.
Controlador
Un controlador es software que permite al núcleo comunicarse con un dispositivo; detectarlo en un bus por sí solo no demuestra que tenga un controlador funcional.
Un adaptador PCI sin línea de controlador en uso necesita más investigación antes de poder gestionar tráfico.
CPU lógica
Una CPU lógica es una unidad de procesamiento disponible para la planificación; varias CPU lógicas pueden compartir un núcleo físico mediante hilos de hardware.
Seis núcleos con dos hilos cada uno exponen 12 CPU lógicas, aunque sigue habiendo seis núcleos.

D

Dependencia
Una dependencia es otro paquete que el software necesita para funcionar, como una biblioteca compartida utilizada por su ejecutable.
Instalar una aplicación pequeña también puede instalar varias bibliotecas que satisfacen sus dependencias.
Depuración de registros archivados
La depuración de registros archivados elimina archivos antiguos del registro de systemd para aplicar los límites de conservación seleccionados, sin modificar los archivos activos.
El uso total de disco puede seguir por encima del límite de tamaño de depuración porque los archivos activos cuentan en el informe de uso.
Dispositivo de bloques
Un dispositivo de bloques es un dispositivo al que se accede mediante bloques de almacenamiento direccionables, como un disco o una partición representados en /dev.
El árbol de lsblk coloca una partición debajo del disco cuyo almacenamiento divide en regiones separadas.

E

Elemento del archivo contenedor
Un elemento del archivo contenedor es una entrada de archivo o directorio guardada e identificada por su ruta dentro del contenedor, que puede diferir de su ruta original.
La extracción de un solo archivo necesita el nombre del elemento mostrado en el listado, incluido cualquier prefijo de directorio.
Eliminación automática de dependencias innecesarias
La eliminación automática de dependencias innecesarias elimina, tras revisar la transacción, los paquetes de dependencias instalados automáticamente que el conjunto de paquetes instalados ya no necesita.
Una biblioteca añadida para una aplicación puede quedar disponible para eliminación automática cuando se elimina esa aplicación.
Enmascaramiento
Un enmascaramiento de systemd bloquea nuevos inicios de una unidad, normalmente mediante un enlace a /dev/null, incluidos los inicios manuales y por dependencias.
Un servicio enmascarado que ya estaba en ejecución necesita una solicitud de parada independiente si debe dejar de trabajar.
Espacio de intercambio
El espacio de intercambio es almacenamiento utilizado para páginas de memoria trasladadas fuera de la RAM; ofrece capacidad adicional con un acceso más lento que el de la memoria física.
Un uso creciente del espacio de intercambio junto con poca RAM disponible indica que la carga de trabajo necesita atención.
Espera de entrada/salida
La espera de entrada/salida es tiempo de CPU inactivo contabilizado mientras hay operaciones de entrada/salida pendientes; se muestra como wa en top y ayuda a investigar retrasos de almacenamiento.
Un valor wa alto y poco trabajo de CPU de usuario hacen que comprobar el almacenamiento sea más útil que cambiar los valores nice.
Estado de actividad
El estado de actividad de un servicio describe su condición actual, como en ejecución, inactivo, fallido o una tarea completada que se considera activa.
Un servicio habilitado puede tener un estado de actividad fallido después de que su aplicación rechace una configuración.
Estado de salida
Un estado de salida es un código que describe cómo terminó un programa o una etapa de inicio y ayuda a distinguir un error de la aplicación de un fallo al iniciarla.
Un resultado 203/EXEC dirige la atención a los requisitos de inicio antes de buscar mensajes de arranque de la propia aplicación.
ExecStart
ExecStart es el ajuste de servicio que especifica un programa que se ejecutará, mediante una ruta absoluta al ejecutable o un nombre de ejecutable simple.
Un comando que comienza por ./worker tiene una ruta relativa con una barra y no es una forma válida de indicar el ejecutable.
Extracción
La extracción restaura los elementos de un archivo contenedor en el sistema de archivos, resolviendo sus rutas guardadas dentro del directorio de destino seleccionado.
Restaura en un directorio vacío cuando compruebes un archivo contenedor desconocido para no sobrescribir archivos existentes.

G

gzip
gzip es un formato y una herramienta de compresión de archivos individuales, utilizados habitualmente para registros y archivos tar, que combinan amplio soporte con buena velocidad.
Gzip -k conserva un registro sin comprimir mientras crea una copia .gz para almacenarla o transferirla.

H

Habilitación
La habilitación es una configuración mediante enlaces que organiza la activación automática de una unidad, habitualmente como parte de una unidad de destino de arranque.
Un servicio deshabilitado puede seguir ejecutándose porque se inició manualmente o lo activó un socket.

I

Identificador de proceso (PID)
Un PID es el identificador numérico que identifica un proceso activo; el núcleo puede reutilizar ese número después de que el proceso termine.
Antes de enviar una señal al PID 6051, comprueba que siga identificando el comando deseado.
Identificador del proceso padre (PPID)
Un PPID es el identificador del proceso padre: identifica el proceso que inició otro proceso y lo vincula con su familia de procesos.
El PPID de un comando de terminal suele coincidir con el PID del intérprete que lo inició.
Identificador único universal (UUID)
Un UUID es un identificador único asignado a recursos como sistemas de archivos, que ayuda a distinguirlos más allá de los nombres de dispositivo cambiantes.
Compara el modelo, la capacidad y el UUID del sistema de archivos de un disco cuando su letra sd haya cambiado desde ayer.

L

Límite de frecuencia de arranque
Un límite de frecuencia de arranque restringe los intentos repetidos de iniciar un servicio durante un periodo configurado, lo que evita que los ciclos de fallos rápidos se repitan indefinidamente.
Repara el error inicial antes de borrar los contadores del límite con reset-failed y probar un nuevo inicio.

M

Mecanismo de terminación de procesos por falta de memoria
El mecanismo de terminación de procesos por falta de memoria es un mecanismo del núcleo que termina un proceso seleccionado cuando es necesario liberar capacidad por agotamiento de memoria.
Un registro OOM puede explicar por qué una aplicación desapareció sin escribir un error propio.
Memoria disponible
La memoria disponible es una estimación de la RAM que puede usar el trabajo nuevo sin recurrir al intercambio, incluida la capacidad recuperada de las cachés.
Cuando la RAM libre sea baja, consulta la columna available antes de decidir que el servidor necesita más memoria.
MemTotal
MemTotal es la RAM física utilizable que indica el núcleo en /proc/meminfo, excluida la memoria reservada antes del uso normal.
Los módulos instalados pueden sumar 16 GiB aunque MemTotal indique una cantidad utilizable algo menor.
Metadatos del archivo
Los metadatos del archivo describen propiedades como la propiedad, los modos de permisos y las marcas de tiempo, que tar registra junto con el contenido del archivo.
Una restauración como superusuario puede aplicar los propietarios registrados, mientras que una restauración como usuario normal suele crear archivos propiedad de ese usuario.
Metadatos del paquete
Los metadatos del paquete describen su identidad y sus requisitos, lo que ayuda a las herramientas a seleccionar, instalar y consultar software compatible.
Los campos de arquitectura y dependencias ayudan a un gestor de repositorios a planificar la transacción de instalación.
Módulo del núcleo
Un módulo del núcleo es una parte del código del núcleo que puede cargarse en un núcleo en ejecución, a menudo para proporcionar soporte de hardware.
La lista de módulos muestra el código cargado; un listado de dispositivos ayuda a establecer qué controlador está realmente asociado.

N

Núcleo físico
Un núcleo físico es un núcleo de ejecución de hardware de un procesador que puede exponer más de una CPU lógica mediante multihilo simultáneo.
Cuenta los zócalos y los núcleos por zócalo antes de indicar el número de núcleos físicos de un servidor.
Número de trabajo
Un número de trabajo es un identificador local al intérprete de comandos que se usa para seleccionar un trabajo y es distinto del identificador de proceso válido en todo el sistema que aparece junto a él.
En [2] 7164, fg %2 selecciona el trabajo; 7164 identifica su proceso en el sistema operativo.

P

Paquete
Un paquete agrupa archivos de software con metadatos de instalación, incluidos la versión, la arquitectura, los requisitos de dependencias y los registros de propiedad de archivos.
Un paquete puede colocar un ejecutable, documentación y archivos de configuración en directorios diferentes.
Política de reinicio
La política de reinicio de un servicio determina qué salidas de procesos provocan intentos de recuperación automática, sujetos a límites y a solicitudes explícitas de parada.
On-failure puede reiniciar un programa que falla, mientras que un systemctl stop intencionado mantiene detenido el servicio.
Prioridad
Una prioridad del registro identifica la gravedad de un mensaje, numerada desde 0 para emergencia hasta 7 para depuración; los números menores indican mayor gravedad.
Un límite err conserva los errores y las entradas más graves, pero oculta mensajes informativos que aún podrían ayudar.
Proceso
Un proceso es una instancia en ejecución de un programa, con su propia identidad, memoria y recursos gestionados por el sistema operativo.
Dos comandos sleep independientes crean dos procesos aunque ejecuten el mismo programa.
Proceso zombi
Un proceso zombi es un proceso que ha terminado y cuyo padre no ha recogido su estado de salida, por lo que queda una pequeña entrada marcada con Z en la tabla de procesos.
Las entradas repetidas de procesos zombi con el mismo padre indican que este no está recogiendo los estados de salida de sus hijos.
Purga
Una purga es una operación de eliminación de APT que también borra la configuración del sistema gestionada de un paquete, sin modificar los datos de los directorios personales.
Elige la purga cuando también deban eliminarse los ajustes del sistema conservados, después de decidir qué configuración guardar.

R

Recarga
Una recarga de servicio pide a una aplicación que la admita que vuelva a leer su propia configuración sin un ciclo completo de parada e inicio.
Prueba la configuración editada de nginx antes de solicitar una recarga para detectar errores antes de aplicarla.
Recarga de las definiciones de unidades
Una recarga de las definiciones de unidades hace que systemd vuelva a leerlas, sin recargar por sí misma las aplicaciones ni reiniciar todos los servicios.
Después de cambiar directamente el comando de una unidad, recarga las definiciones y reinicia ese servicio para usar el nuevo comando.
Registro de systemd
El registro de systemd almacena registros indexados recopilados del núcleo, el arranque y los programas, con campos como hora, unidad y prioridad.
Usa journalctl para leer los archivos del registro en lugar de abrir su contenido binario con un lector de archivos de texto.
Registro del núcleo
El registro del núcleo recoge eventos del núcleo del sistema operativo, incluidos la detección de hardware, los errores de controladores y las acciones por falta de memoria.
Si un proceso desaparece sin avisar, comprueba si hay mensajes del núcleo sobre una terminación OOM antes de suponer que se trata de un error de la aplicación.
Registro persistente
Un registro persistente conserva entradas en disco bajo /var/log/journal, lo que permite consultar arranques anteriores hasta que la política de conservación las elimina.
Una investigación del núcleo de un arranque anterior necesita registros conservados, no solo el búfer activo del núcleo actual.
Registro volátil
Un registro volátil conserva entradas en /run/log/journal, por lo que se pierden al apagar en lugar de mantenerse para el siguiente arranque.
Después de reiniciar, un registro volátil no puede proporcionar el historial de errores de servicios del arranque anterior.
Reinicio
Un reinicio de servicio detiene y después inicia el trabajo gestionado, lo que permite que surtan efecto nuevos ajustes o código de programa sustituido.
Reiniciar un servicio funcional con una configuración no válida puede dejarlo detenido después de que falle el nuevo inicio.
Repositorio
Un repositorio ofrece archivos de paquetes e índices que describen el software, las versiones y los requisitos disponibles para un gestor de paquetes.
Actualizar la información del repositorio permite a apt comparar las versiones instaladas con candidatas más recientes disponibles.
Rotación de registros
La rotación de registros limita el crecimiento de los registros de texto al crear archivos nuevos, renombrar y a menudo comprimir los antiguos, y eliminar los registros caducados.
Un inicio de sesión fallido de la semana pasada puede estar en un archivo rotado comprimido en lugar de en el registro de autenticación de hoy.

S

Señal
Una señal es una notificación entregada a un proceso que solicita una acción, como salir, pausar, continuar o realizar una gestión específica de la aplicación.
Enviar una señal no siempre solicita terminar un proceso: SIGCONT reanuda el trabajo que estaba detenido.
Servicio
Un servicio es trabajo gestionado en segundo plano que proporciona una función, como un servidor web o un demonio SSH, normalmente sin terminal.
Un servicio puede seguir atendiendo solicitudes después de que el administrador cierre el terminal utilizado para iniciarlo.
SIGKILL
SIGKILL es una señal de terminación que no se puede capturar y que fuerza el fin de un proceso sin ejecutar la limpieza normal de la aplicación.
Usa una salida forzada solo después de confirmar que el proceso activo deseado no respondió a TERM.
SIGSTOP
SIGSTOP es una señal que no se puede capturar y que detiene la ejecución de un proceso mientras conserva su identidad, memoria y otros recursos.
Un proceso de prueba detenido sigue visible en ps y puede continuar cuando recibe SIGCONT.
SIGTERM
SIGTERM es la señal de terminación predeterminada que usa kill; solicita una salida que un programa puede gestionar mediante código de limpieza.
Un editor puede responder a SIGTERM cerrando los archivos antes de salir, si su código admite esa gestión.
Suma de comprobación
Una suma de comprobación es un valor calculado a partir de los bytes de un archivo que puede compararse entre copias para detectar si sus contenidos coinciden.
Compara los valores SHA-256 después de transferir un archivo contenedor y verifica por separado que contenga los archivos deseados.
syslog
syslog es una interfaz y un formato de mensajes para el registro del sistema, gestionado a menudo por un servicio como rsyslog que escribe los registros de texto configurados.
Una instalación basada en el registro de systemd puede carecer de archivos de texto de syslog aunque sus servicios sigan registrando eventos.
systemd
systemd es un sistema de inicio y gestor de servicios que suele ejecutarse con el PID 1 y activa y supervisa unidades en todo el sistema.
Systemd puede reiniciar un servicio fallido según la política de su unidad y registrar su salida en el registro de systemd.

T

Tabla de firmware
Una tabla de firmware registra información de hardware proporcionada por el firmware del equipo que pueden leer herramientas como dmidecode.
Un informe de ranuras de memoria de dmidecode puede identificar el tamaño y el tipo registrados para cada módulo.
Tamaño del conjunto residente (RSS)
El RSS es la cantidad de memoria de un proceso que está actualmente en la RAM física, que ps suele mostrar en kibibytes.
Una asignación virtual grande con un RSS pequeño no significa necesariamente que el proceso ocupe tanta RAM.
Trabajo en primer plano
Un trabajo en primer plano es una tarea gestionada por el intérprete de comandos que controla actualmente el terminal, mientras el intérprete espera a que termine o se detenga.
Después de fg %2, los atajos de teclado como Ctrl+C actúan sobre el trabajo que está ahora en primer plano.
Trabajo en segundo plano
Un trabajo en segundo plano es una tarea gestionada por el intérprete de comandos que se ejecuta sin ocupar el primer plano, lo que permite al intérprete aceptar más comandos.
Un informe en segundo plano puede seguir escribiendo sobre el indicador de comandos si no se ha redirigido su salida.
Transacción
Una transacción de paquetes es una operación registrada de instalación, eliminación o actualización que afecta a uno o varios paquetes y sus cambios.
Inspecciona los detalles de una transacción de DNF para ver qué biblioteca cambió poco antes de que un servicio comenzara a fallar.

U

Unidad
Una unidad es un objeto gestionado por systemd, descrito mediante una definición de servicio, socket, unidad de destino, montaje u otro recurso.
El sufijo de nginx.service identifica la unidad como servicio, no como socket o unidad de destino.
Unidad de destino
Una unidad de destino de systemd agrupa unidades en un estado del sistema con nombre, como un escritorio gráfico o un entorno multiusuario sin interfaz gráfica.
Establecer multi-user.target como predeterminado cambia la selección para futuros arranques sin cerrar el escritorio actual.

V

Valor de ajuste de prioridad
Un valor de ajuste de prioridad modifica la prioridad normal de planificación de CPU; los valores más altos dan más oportunidades de ejecución a las tareas que compiten.
Una copia de seguridad con nice 15 puede ceder tiempo de CPU al trabajo interactivo y aun así ocupar una CPU inactiva.
Verificación de firma
La verificación de firma comprueba datos autenticados mediante una clave de firma de confianza y contribuye a la cadena de confianza en el proveedor de un sistema de paquetes.
Si falta la clave auténtica de un repositorio, debe añadirse sin desactivar la comprobación de autenticación.
Versión candidata
Una versión candidata es la versión de paquete que APT seleccionaría actualmente para instalar o actualizar según su política configurada.
Una candidata puede cambiar después de actualizar las listas de repositorios aunque los archivos instalados sigan siendo los mismos.
Versión instalada
Una versión instalada es la versión de un paquete registrada como instalada localmente, distinta de una versión que solo está disponible en un repositorio.
Una consulta de política puede mostrar la versión instalada 2.4 y la candidata 2.6 antes de aplicar cualquier actualización.

X

xz
xz es un formato y una herramienta de compresión que suele producir archivos más pequeños que gzip, aunque requiere más tiempo y memoria para comprimir.
Un archivo contenedor de texto destinado a una descarga donde importa el tamaño puede justificar el coste adicional de procesamiento de xz.

Z

ZIP
ZIP es un formato de archivo contenedor que combina la agrupación de archivos con la compresión y tiene amplio soporte para compartir entre sistemas operativos de escritorio.
Usa zip -r para empaquetar un directorio y su contenido para compañeros que usan Windows o macOS.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar