20 Preguntas de Práctica de Shell, redes y virtualización con Respuestas
Todas las preguntas de práctica de Shell, redes y virtualización del Examen de práctica CompTIA Linux+, con la respuesta correcta y una breve explicación.
Comenzar examen de práctica →1. Un directorio contiene notes.txt y lists.txt. Un administrador ejecuta find . -name *.txt sin comillas en el patrón y obtiene el error 'find: paths must precede expression: lists.txt'. ¿Por qué?
- A.find rechaza cualquier patrón que contenga un punto salvo que se use -iname en vez de -name
- B.El shell expandió *.txt antes de ejecutar find, que recibió dos nombres en lugar de un patrón✓ Respuesta
- C.El shell pasó *.txt sin cambios y find rechaza los patrones cuya ruta no empieza por ./
- D.find expande comodines solo cuando se indica -print, por lo que el patrón nunca coincidió
La expansión de nombres de ruta la hace el shell antes de ejecutar el comando, así que un patrón sin comillas se sustituye por los nombres coincidentes y find los toma como rutas de más. Al escribirlo como '*.txt' llega intacto a find, que realiza su propia comparación.
Ref. QB-S8J77EFuente: find(1) manual page; POSIX Shell Command Language, pathname expansionReportar un problema con esta pregunta
2. Un script imprime una línea de resumen y el autor prueba dos formas: echo "User is $USER" y echo 'User is $USER'. ¿Qué afirmación describe la diferencia?
- A.Las comillas simples expanden $USER pero quitan los espacios; las dobles imprimen el nombre
- B.Las comillas dobles expanden $USER y dejan el texto como un solo argumento; las simples no✓ Respuesta
- C.Ambas formas expanden $USER, pero solo las comillas simples ejecutan sustitución de comandos
- D.Ninguna forma expande $USER; solo una barra invertida ante el signo de dólar pide la expansión
Dentro de comillas dobles el shell sigue haciendo expansión de parámetros, sustitución de comandos y escapes con barra invertida, a la vez que evita la división en palabras y el globbing. Las comillas simples son literales: todo carácter entre ellas, incluido el signo de dólar, pasa sin cambios.
Ref. QB-8RZPECFuente: POSIX Shell Command Language, quoting with single and double quotesReportar un problema con esta pregunta
3. Un trabajo nocturno se ejecuta como /usr/local/bin/report > /var/log/report.log. Cada ejecución borra la salida anterior y los mensajes de error siguen llegando al correo del operador en vez de al archivo. ¿Qué cambio resuelve ambos problemas?
- A.>> /var/log/report.log 2>&1: añade al final del archivo y apunta el fd 2 al fd 1 ya redirigido✓ Respuesta
- B.2>&1 >> /var/log/report.log: añade al final del archivo porque 2>&1 afecta a toda la línea
- C.> /var/log/report.log 2>/dev/null: conserva la salida anterior y guarda los errores en el archivo
- D.>> /var/log/report.log 2>&-: añade al final del archivo y fusiona el flujo de errores en él
El operador >> añade mientras que > trunca antes el archivo a cero bytes, y las redirecciones se procesan de izquierda a derecha, por lo que 2>&1 debe ir después de la redirección de la salida estándar para que el fd 2 sea copia del fd 1 ya ligado al archivo. Puesto delante copia la terminal; 2>&- cierra el fd 2 y 2>/dev/null descarta los errores.
Ref. QB-R87VZCFuente: bash(1) REDIRECTION section; POSIX Shell Command Language, redirection orderReportar un problema con esta pregunta
4. Un administrador ejecuta grep ERROR app.log | wc -l y luego echo $?, que imprime 0 aunque app.log no contiene ninguna línea que coincida con ERROR. ¿Por qué el estado es 0?
- A.El shell combina los estados con un OR lógico, por lo que un solo éxito hace que informe 0
- B.Una tubería informa del estado de su último comando, así que el éxito de wc tapa el fallo de grep✓ Respuesta
- C.grep devuelve 0 siempre que pueda abrir y leer el archivo, sin importar si el patrón coincidió
- D.El shell reinicia $? a 0 tras cada tubería, así que solo un error de sintaxis deja un valor distinto
Por definición el estado de salida de una tubería es el del último comando, y wc termina con éxito incluso contando cero líneas. Para ver el estado propio de grep hay que consultar el arreglo PIPESTATUS de bash o activar set -o pipefail, con lo que la tubería informa del fallo más a la derecha.
Ref. QB-BR3QXFFuente: POSIX Shell Command Language, pipelines and exit status; bash(1) PIPESTATUSReportar un problema con esta pregunta
5. Un usuario define APP_CONF=/opt/app/app.conf en el prompt y comprueba que echo $APP_CONF imprime la ruta. Un script lanzado desde ese mismo prompt lee $APP_CONF y lo encuentra vacío. ¿Cuál es la razón?
- A.Las variables del prompt llegan al hijo solo después de que el padre ejecute hash -r para refrescar
- B.El script corre en una subshell que borra toda variable heredada salvo que el padre use declare -g
- C.La asignación creó una variable de shell, y solo las exportadas pasan al entorno del hijo✓ Respuesta
- D.El hijo hereda la variable pero con valor vacío, porque las asignaciones se evalúan de forma diferida
Una asignación simple crea una variable de shell que vive solo en el shell actual; el entorno que recibe un proceso hijo contiene únicamente las variables exportadas. Ejecutar export APP_CONF la coloca en el entorno, donde env o printenv ya la muestran.
Ref. QB-U89VHGFuente: POSIX Shell Command Language, variable assignment and export; environ(7)Reportar un problema con esta pregunta
6. Un administrador añade un cambio de PATH a ~/.bash_profile en una estación Linux. El nuevo PATH aparece tras iniciar sesión por SSH, pero una ventana de terminal abierta en una sesión de escritorio ya iniciada sigue mostrando el antiguo. ¿Por qué?
- A.PATH no puede fijarse en ningún archivo de usuario, así que la línea corresponde a un perfil global
- B.La terminal abre un bash de inicio de sesión que lee ~/.profile y se detiene antes de ~/.bash_profile
- C.La terminal abre un bash interactivo sin inicio de sesión, que lee ~/.bashrc y no ~/.bash_profile✓ Respuesta
- D.La terminal hereda PATH del gestor de sesiones, que lee únicamente el perfil de la cuenta root
Bash lee ~/.bash_profile (o ~/.profile) solo en shells de inicio de sesión, como una sesión SSH, mientras que un shell interactivo que no es de inicio de sesión lee ~/.bashrc. Por eso es habitual que .bash_profile invoque a .bashrc, y por eso source ~/.bashrc aplica el cambio sin abrir un shell nuevo.
Ref. QB-ARQCSEFuente: bash(1) INVOCATION section, startup files for login and interactive shellsReportar un problema con esta pregunta
7. Para contar cuántas cuentas usan cada shell de inicio, un administrador ejecuta cut -d: -f7 /etc/passwd | uniq -c y ve /bin/bash varias veces con cuentas pequeñas. ¿Qué está mal?
- A.uniq junta solo líneas idénticas contiguas, así que el campo debe ordenarse antes de pasarlo a uniq✓ Respuesta
- B.uniq -c cuenta solo las repetidas, por lo que hay que añadir -d para contar las que van solas
- C.uniq compara la línea completa, así que hay que repetir el número de campo como uniq -f 7 ahí
- D.uniq necesita -u antes de contar repeticiones; sin esa opción reimprime cada línea de entrada
uniq trabaja línea a línea y compara cada una solo con la anterior, de modo que valores iguales separados por otros nunca se combinan. Ordenar primero los agrupa, y por eso la tubería idiomática es cut ... | sort | uniq -c.
Ref. QB-T8WHCFFuente: uniq(1) and sort(1) manual pagesReportar un problema con esta pregunta
8. Un informe tiene columnas rellenadas a distintos anchos, por ejemplo ' web01 running 3' con series de espacios entre campos, y cut -d' ' -f2 devuelve líneas vacías. ¿Qué enfoque lee la segunda columna?
- A.tr ' ' ':' y luego cut -d: -f2, porque tr comprime cada serie de espacios en un único carácter
- B.cut -d' ' -f2- --complement, para que cut omita los campos vacíos que genera el relleno de espacios
- C.awk '{print $2}', porque awk trata por defecto cualquier serie de espacios como un solo separador✓ Respuesta
- D.cut -c2, que selecciona la segunda columna de caracteres y por eso no le afecta el relleno
cut -d admite un delimitador de un solo carácter y trata cada espacio como separador, así que el relleno crea campos vacíos y desplaza la numeración. La división por defecto de awk toma cualquier serie de espacios como un separador, de modo que $2 es la segunda columna visible; tr sin -s traduce caracteres en lugar de comprimir series.
Ref. QB-DRSCAJFuente: awk(1) default field separator; cut(1) -d and -f optionsReportar un problema con esta pregunta
9. Un archivo de configuración contiene la línea 'server=dev; backup=dev; cache=dev'. Tras sed 's/dev/prod/' conf.txt solo cambió la primera aparición de esa línea. ¿Qué cambio hace que sed las reemplace todas?
- A.Añadir el indicador g, como en sed 's/dev/prod/g', ya que si no para en la primera coincidencia✓ Respuesta
- B.Añadir -n, que hace que sed siga trabajando en la misma línea tras la primera sustitución correcta
- C.Añadir -i, que pasa sed del modo de una coincidencia al modo de archivo completo y edita in situ
- D.Añadir el indicador p, que repite la sustitución hasta que no quede coincidencia alguna en la línea
El comando s sustituye una aparición por línea salvo que se indique el indicador g, que lo hace reemplazar todas las coincidencias no solapadas de la línea. -n suprime la impresión automática, -i reescribe el archivo in situ y p imprime la línea afectada; ninguno altera cuántas coincidencias se sustituyen.
Ref. QB-W8YHVJFuente: sed(1) manual page, the s command and its g flagReportar un problema con esta pregunta
10. Un administrador debe observar el archivo de registro de un servicio a medida que se escriben entradas nuevas, sin detener el servicio y sin reabrir el archivo una y otra vez. ¿Qué comando lo hace?
- A.cat /var/log/app.log, que sigue conectado al archivo e imprime lo nuevo hasta interrumpirlo
- B.tail -f /var/log/app.log, que mantiene el archivo abierto e imprime cada línea que se añade✓ Respuesta
- C.head -n 20 /var/log/app.log, que relee el principio del archivo cada vez que este crece
- D.wc -l /var/log/app.log, que informa del total de líneas cada vez que se añade una nueva
tail -f imprime el final del archivo y luego mantiene abierto el descriptor, emitiendo cada línea en cuanto el proceso que escribe la añade, con lo que el archivo se lee como un flujo. cat, head y wc leen hasta el fin de archivo y terminan, así que no muestran nada de lo que llegue después.
Ref. QB-HS3YZJFuente: tail(1) manual page, the -f optionReportar un problema con esta pregunta
11. Un rsync largo iniciado por SSH muere cada vez que el portátil del administrador pierde la conexión de red. ¿Qué enfoque permite que la transferencia siga y volver a verla en un inicio de sesión posterior?
- A.Redirigir su salida a un archivo, porque SIGHUP solo alcanza a procesos que aún escriben en un tty
- B.Iniciarlo con nice -n 19 para que el planificador mantenga vivo el proceso al perder la terminal
- C.Abrir una segunda sesión SSH junto a la primera para que la terminal del trabajo nunca se cierre
- D.Iniciarlo dentro de una sesión de tmux o screen y desacoplarla, dejándola activa en el servidor✓ Respuesta
Un multiplexor de terminal posee un pseudoterminal que vive en el árbol de procesos del propio servidor, así que el trabajo conserva su terminal de control cuando cae la conexión SSH y luego se reconecta con tmux attach o screen -r. La prioridad de planificación, los inicios de sesión extra y la redirección no resuelven la pérdida de la terminal.
Ref. QB-Z9WSEJFuente: tmux(1) and screen(1) manual pages, detach and attach behaviorReportar un problema con esta pregunta
12. Un host alcanza otros sistemas de su propia subred pero nada más allá. ip route show imprime solo: '10.10.0.0/24 dev ens192 proto kernel scope link src 10.10.0.25'. ¿Qué indica esta salida?
- A.La tabla solo tiene la ruta directa, así que los destinos fuera de 10.10.0.0/24 no tienen salto✓ Respuesta
- B.La palabra scope link impide el reenvío, por lo que la ruta debe cambiarse a scope global
- C.La palabra proto kernel marca una ruta temporal que se borra al caducar la entrada ARP
- D.El campo src sustituye a la máscara de red, y el host da todo destino por directamente conectado
El kernel agrega esa ruta directa de forma automática a partir de la dirección y el prefijo de la interfaz, y solo cubre la subred local. Todo lo demás necesita una ruta por defecto como 'default via 10.10.0.1 dev ens192'; sin ella la pila no tiene siguiente salto para destinos externos e informa de que la red es inalcanzable.
Ref. QB-JSEA7MFuente: ip-route(8) manual page; default route semantics in the Linux routing tableReportar un problema con esta pregunta
13. Un administrador debe confirmar qué proceso está escuchando en el puerto TCP 8080 de un servidor Linux, con las herramientas actuales de iproute2. ¿Qué comando lo muestra?
- A.ethtool -S ens192, que devuelve contadores de escucha por puerto e incluye el proceso
- B.netstat -i, que lista los sockets en escucha por interfaz junto con el PID que los abrió
- C.ip -s link show, que informa de los puertos abiertos de cada interfaz y su proceso
- D.ss -tulpn, que lista los sockets TCP y UDP en escucha con su puerto y el proceso propietario✓ Respuesta
ss consulta directamente las estadísticas de sockets del kernel: -t y -u seleccionan TCP y UDP, -l limita la salida a los sockets en escucha, -p nombra el proceso propietario y -n deja los puertos en cifras. netstat -i muestra contadores de interfaz, ip -s link estadísticas de interfaz y ethtool -S contadores del controlador de la tarjeta.
Ref. QB-2A95MKFuente: ss(8) manual page, options -t, -u, -l, -p and -nReportar un problema con esta pregunta
14. En un host Linux, /etc/hosts asigna app01 a 10.0.0.5 mientras la zona DNS devuelve 10.0.0.9, y el host se conecta siempre a 10.0.0.5. ¿Qué archivo determina qué fuente se consulta primero?
- A./etc/hostname, que fija la asignación local que el resolvedor revisa antes de todo servidor DNS
- B./etc/resolv.conf, cuya línea search decide que las entradas estáticas superen a los nameserver
- C./etc/hosts en sí, porque el resolvedor siempre lo lee antes que cualquier otra fuente configurada
- D./etc/nsswitch.conf, cuya línea hosts pone files antes de dns y así fija el orden de consulta✓ Respuesta
El conmutador de servicios de nombres decide qué bases de datos responden una consulta y en qué orden; con 'hosts: files dns' gana el archivo estático y solo se pregunta al DNS por los nombres que no figuran en él. Invertir la línea a 'hosts: dns files' hace que responda primero la zona, por lo que el orden vive en nsswitch.conf y no en los archivos de datos.
Ref. QB-KSSMCNFuente: nsswitch.conf(5) manual page, the hosts databaseReportar un problema con esta pregunta
15. En un servidor de la familia RHEL cuyas interfaces gestiona NetworkManager, una línea nameserver añadida a mano en /etc/resolv.conf desaparece tras reiniciar. ¿Cuál es la forma admitida de fijar el resolvedor?
- A.Poner la dirección del nameserver en /etc/hosts, un archivo que ningún servicio regenera
- B.Marcar el archivo como inmutable con chattr +i para que NetworkManager no lo reescriba
- C.Fijar ipv4.dns en el perfil de conexión con nmcli y volver a activar esa conexión✓ Respuesta
- D.Indicar el nameserver en /etc/nsswitch.conf, que NetworkManager lee antes que sus perfiles
NetworkManager genera /etc/resolv.conf a partir de los ajustes DNS de los perfiles de conexión activos, de modo que una edición manual se sobrescribe en la siguiente activación. Guardar los servidores en el perfil (nmcli connection modify ... ipv4.dns) y reactivarlo con nmcli connection up hace que el cambio sobreviva al reinicio.
Ref. QB-3AMFSMFuente: NetworkManager.conf(5) DNS handling; nmcli(1) connection modify; resolv.conf(5)Reportar un problema con esta pregunta
16. En un servidor de la familia Ubuntu configurado con Netplan, un administrador restauró el servicio durante una incidencia con ip addr add 10.20.0.30/24 dev ens3, y la dirección desapareció tras el siguiente reinicio. ¿Qué debe hacerse para que persista?
- A.Repetir el comando ip addr add con sudo, porque los cambios sin privilegios duran hasta el reinicio
- B.Ejecutar nmcli general reload tras el comando ip para que la dirección activa se escriba en un perfil
- C.Escribir la dirección en /etc/sysconfig/network-scripts/ifcfg-ens3, el archivo que este sistema lee
- D.Añadir la dirección en /etc/netplan y ejecutar netplan apply, pues ip solo cambia el estado del kernel✓ Respuesta
El comando ip programa el kernel en ejecución y no escribe nada en disco, así que sus cambios se pierden al reiniciar o al reconfigurar. En un sistema con Netplan la descripción persistente es el YAML de /etc/netplan, que netplan traduce para su renderizador de respaldo y aplica con netplan apply, o con netplan try si se quiere reversión automática.
Ref. QB-MS5YHPFuente: netplan configuration and netplan apply documentation; ip-address(8) manual pageReportar un problema con esta pregunta
17. Un equipo compara ejecutar invitados con KVM en un servidor Linux sin sistema previo frente a ejecutarlos con un producto de virtualización de escritorio en un portátil. ¿Qué afirmación separa correctamente un hipervisor de tipo 1 de uno de tipo 2?
- A.El tipo 1 se ejecuta directamente sobre el hardware y el tipo 2 corre como programa sobre un anfitrión✓ Respuesta
- B.El tipo 1 admite solo invitados paravirtualizados y el tipo 2 emula por completo todos los dispositivos
- C.El tipo 1 ejecuta un invitado a la vez y el tipo 2 es el que permite varios invitados simultáneos
- D.El tipo 1 exige virtualización anidada y el tipo 2 funciona sin extensiones de virtualización del procesador
Un hipervisor de tipo 1, o de metal desnudo, es él mismo la capa que planifica los invitados sobre el hardware, mientras que uno de tipo 2, alojado, es una aplicación que pide tiempo de CPU, memoria y acceso a dispositivos al sistema operativo que tiene debajo. KVM es un módulo del kernel que convierte a Linux en esa capa de plataforma, por lo que se describe como de metal desnudo, y un hipervisor instalado sobre un escritorio en marcha es alojado.
Ref. QB-4AYSXNFuente: CompTIA Linux+ virtualization content, hypervisor types; KVM and libvirt documentationReportar un problema con esta pregunta
18. Antes de crear invitados en un host KVM, un administrador elige entre una imagen raw dimensionada a su capacidad completa en la creación y una imagen qcow2 que empieza pequeña. ¿Qué afirmación describe la diferencia de propiedades?
- A.Ambas imágenes crecen a demanda y la qcow2 se diferencia solo por guardar también la RAM del invitado
- B.La imagen raw crece a demanda y la qcow2 reserva todo su tamaño y no admite cambios posteriores
- C.Ambas imágenes se preasignan, pero solo la qcow2 puede leerla un invitado sin controlador paravirtual
- D.La imagen raw se preasigna a su tamaño completo y la qcow2 crece a demanda según llegan escrituras✓ Respuesta
Una imagen raw es un contenedor plano byte a byte cuyo espacio suele reclamarse al crearla, sin metadatos pero con una disposición predecible, mientras que qcow2 es un formato de copia en escritura que asigna clústeres a medida que el invitado escribe y puede empezar muy por debajo de su tamaño virtual. qemu-img info informa del tamaño virtual y del espacio realmente usado.
Ref. QB-DSNMBEFuente: qemu-img(1) manual page; QEMU documentation on the raw and qcow2 image formatsReportar un problema con esta pregunta
19. Un invitado clonado de una imagen base debe recibir su nombre de host, la clave pública SSH de un administrador y una lista de paquetes la primera vez que arranca, sin instalador interactivo. ¿Qué mecanismo lo hace?
- A.virt-manager, que envía el nombre de host y las claves al invitado en marcha por la consola
- B.cloud-init, que lee los datos de usuario de un origen de datos durante el primer arranque✓ Respuesta
- C.qemu-img convert, que escribe esos metadatos en la imagen mientras cambia el formato del disco
- D.virsh snapshot-revert, que vuelve a aplicar los metadatos de la imagen base en cada arranque
cloud-init se ejecuta al principio del primer arranque de una instancia, localiza un origen de datos como un volumen semilla, una unidad de configuración o un servicio de metadatos, y aplica los datos de usuario que encuentra: nombre de host, usuarios y claves SSH, paquetes y comandos arbitrarios. Las plantillas se limpian antes de clonar para que cada clon cuente como instancia nueva.
Ref. QB-V9GFRDFuente: cloud-init documentation, datasources and user data applied on first bootReportar un problema con esta pregunta
20. Un invitado de pruebas en un host KVM debe ser alcanzable por nombre y dirección desde otras máquinas de la LAN de la oficina, y debe tomar su dirección del servidor DHCP de esa LAN. ¿Qué conexión de red virtual lo consigue?
- A.Una conexión solo con el host, que lleva el tráfico host-invitado y además lo reenvía a la LAN
- B.Una conexión NAT, que oculta al invitado tras la dirección del host y mantiene el acceso entrante
- C.Una conexión puenteada, que coloca la interfaz del invitado en el mismo segmento de nivel 2 que la NIC✓ Respuesta
- D.Una conexión enrutada, que no precisa rutas en la puerta de enlace porque traduce el tráfico
El puenteado une la interfaz virtual del invitado al mismo segmento de nivel 2 que la tarjeta física, así que el invitado obtiene una dirección del propio DHCP de la LAN y es alcanzable desde fuera como cualquier máquina. NAT solo da acceso de salida salvo que se reenvíen puertos, las redes solo-host o aisladas no tienen salida externa, y una red enrutada reenvía otra subred sin traducir y necesita rutas aguas arriba.
Ref. QB-8K3GF8Fuente: libvirt networking documentation: bridged, NAT, isolated and routed network modesReportar un problema con esta pregunta
Otros temas de este examen
Preguntas de práctica redactadas según los objetivos publicados del examen CompTIA Linux+ y la práctica estándar de administración de Linux. CompTIA y Linux+ son marcas de CompTIA, y Linux es una marca registrada de Linus Torvalds; este sitio no está afiliado ni respaldado por CompTIA. El examen real combina preguntas de opción múltiple con preguntas basadas en desempeño que piden ejecutar una tarea en un entorno simulado: eso no puede reproducirse en un formato de cuatro opciones, así que este banco cubre la mitad teórica y conviene practicar en un sistema real en paralelo. CompTIA revisa y numera las versiones de los objetivos periódicamente: confirma los objetivos, el código de examen y los requisitos vigentes con CompTIA antes de examinarte. Sobre la certificación CompTIA Linux+ →