96 preguntas de entrevista sobre comandos de Linux (y respuestas)
En el panorama tecnológico actual, las habilidades en Linux son muy solicitadas, lo que convierte el dominio de la línea de comandos en un diferenciador clave para los candidatos. Evaluar estas habilidades a través de preguntas de entrevista específicas ayuda a asegurar que estás contratando a alguien listo para afrontar desafíos del mundo real, como con las habilidades esenciales para un ingeniero de sistemas.
Esta publicación de blog proporciona una lista seleccionada de preguntas de entrevista sobre comandos de Linux, categorizadas por nivel de experiencia, desde recién graduados hasta profesionales experimentados, junto con preguntas de opción múltiple. Este recurso te equipa con las preguntas adecuadas para evaluar la comprensión y las habilidades prácticas de los candidatos en entornos Linux.
Al usar estas preguntas, optimizarás tu proceso de entrevista y evaluarás con precisión las capacidades de Linux de los candidatos, asegurando un equipo más fuerte y capaz; antes de las entrevistas, usa nuestra prueba en línea de Linux para filtrar solo a los candidatos más capacitados.
Tabla de contenido
Preguntas de entrevista sobre comandos de Linux para recién graduados
Preguntas de entrevista sobre comandos de Linux para junior
Preguntas de entrevista intermedias sobre comandos de Linux
Preguntas de entrevista sobre comandos de Linux para experimentados
MCQ de comandos de Linux
¿Qué habilidades de comandos de Linux debes evaluar durante la fase de entrevista?
Contrata al mejor talento en Linux con pruebas de habilidades y preguntas de entrevista específicas
Descarga la plantilla de preguntas de entrevista sobre comandos de Linux en múltiples formatos
Preguntas de entrevista sobre comandos de Linux para recién graduados
1. ¿Qué es el kernel de Linux y qué papel juega en el sistema operativo?
El kernel de Linux es el núcleo del sistema operativo Linux. Es la capa de software que se encuentra entre el hardware y las aplicaciones a nivel de usuario. Esencialmente, gestiona los recursos del sistema, lo que permite que el software interactúe con el hardware.
El papel principal del kernel incluye:
- Gestión de procesos: Creación, programación y terminación de procesos.
- Gestión de memoria: Asignación y liberación de memoria para programas.
- Controladores de dispositivos: Habilitación de la comunicación con dispositivos de hardware (por ejemplo, discos, tarjetas de red).
- Llamadas al sistema: Proporcionar una interfaz para que las aplicaciones a nivel de usuario soliciten servicios del kernel (por ejemplo, E/S de archivos, comunicación de red).
- Seguridad: Aplicar el control de acceso y las políticas de seguridad.
2. Explique la diferencia entre rutas absolutas y relativas en el sistema de archivos Linux.
En el sistema de archivos Linux, una ruta absoluta comienza desde el directorio raíz (/
) y especifica la ubicación completa de un archivo o directorio. Por ejemplo, /home/usuario/documentos/informe.txt
es una ruta absoluta. Siempre apunta a la misma ubicación, independientemente del directorio de trabajo actual. Una ruta relativa, por otro lado, se define en relación con el directorio de trabajo actual. Por ejemplo, si su directorio de trabajo actual es /home/usuario
, entonces documentos/informe.txt
es una ruta relativa que apunta al mismo archivo que la ruta absoluta anterior. Las rutas relativas pueden usar .
(directorio actual) y ..
(directorio padre) para navegar por el sistema de archivos.
Para ilustrar:
- Ruta absoluta:
/usr/bin/python3
- Ruta relativa (desde /home/usuario):
../../usr/bin/python3
3. ¿Puede describir qué es una distribución de Linux? Dé algunos ejemplos.
Una distribución de Linux es esencialmente un sistema operativo construido alrededor del núcleo de Linux. Agrupa el núcleo con otro software, como utilidades del sistema, entornos de escritorio (como GNOME o KDE), aplicaciones y herramientas de instalación, para que sea un sistema operativo completo y utilizable para diversos fines.
Algunos ejemplos populares incluyen:
- Ubuntu
- Fedora
- Debian
- CentOS (ahora CentOS Stream)
- Arch Linux
- Pop!_OS
4. ¿Qué hace el comando `pwd`?
El comando pwd
significa "print working directory" (imprimir directorio de trabajo). Muestra la ruta absoluta del directorio actual en el que se encuentra. Esta ruta comienza desde el directorio raíz (/
) y muestra la jerarquía completa de directorios para llegar a su ubicación actual.
Por ejemplo, si se encuentra en el directorio /home/usuario/documentos
, al ejecutar pwd
se mostrará: /home/usuario/documentos
5. ¿Cómo puede enumerar los archivos y directorios en su directorio de trabajo actual?
Para listar los archivos y directorios en el directorio de trabajo actual, puede usar el comando ls
en sistemas tipo Unix o el comando dir
en Windows.
- Unix/Linux/macOS: Abra una terminal y escriba
ls
. Para obtener información más detallada, use opciones comols -l
(formato de listado largo),ls -a
(enumera todos los archivos, incluidos los archivos ocultos) ols -t
(ordena por tiempo de modificación). - Windows: Abra el símbolo del sistema o PowerShell y escriba
dir
. Para ver los archivos ocultos, usedir /a
.
6. ¿Cuál es el comando para crear un nuevo directorio?
El comando para crear un nuevo directorio es mkdir
. Por ejemplo, para crear un directorio llamado 'midirectorio', usaría el comando mkdir midirectorio
. Este comando funciona en la mayoría de las interfaces de línea de comandos, incluidas las de Linux, macOS y Windows (PowerShell, WSL).
7. ¿Cómo eliminaría un directorio vacío?
Para eliminar un directorio vacío, puedes usar el comando rmdir
en sistemas tipo Unix o el cmdlet Remove-Item
en PowerShell. Por ejemplo, en una terminal, escribirías rmdir nombre_del_directorio
para eliminar el directorio. De manera similar, en PowerShell, usarías Remove-Item nombre_del_directorio
. Estos comandos devolverán un error si el directorio no está vacío.
Alternativamente, si estás usando un lenguaje de programación como Python, puedes usar la función os.rmdir()
del módulo os
. Por ejemplo, import os; os.rmdir("nombre_del_directorio")
logra el mismo resultado, eliminando el directorio solo si está vacío. Se recomienda manejar posibles errores con bloques try...except
en código de producción.
8. ¿Qué comando se usa para copiar archivos?
El comando principal utilizado para copiar archivos es cp
. Su sintaxis básica es cp origen destino
, donde origen
es el archivo o directorio a copiar y destino
es la ubicación donde debe colocarse la copia.
Por ejemplo, cp archivo.txt /ruta/a/la/nueva/ubicacion/
copiará archivo.txt
al directorio especificado. Opciones como -r
se utilizan para copiar directorios de forma recursiva, y -p
preserva los atributos del archivo.
9. ¿Cómo se mueve o renombra un archivo en Linux?
En Linux, puede mover o renombrar un archivo usando el comando mv
. La sintaxis básica es mv [fuente] [destino]
. Para renombrar un archivo, el destino debe ser el nuevo nombre para el archivo en el mismo directorio. Por ejemplo, mv oldfile.txt newfile.txt
renombrará oldfile.txt
a newfile.txt
.
Para mover un archivo, el destino debe ser la ruta al nuevo directorio. Por ejemplo, mv file.txt /ruta/al/nuevo/directorio/
moverá file.txt
al directorio especificado. También puede renombrar y mover un archivo simultáneamente proporcionando un nuevo nombre junto con el directorio de destino, así: mv file.txt /ruta/al/nuevo/directorio/nuevonombre.txt
. Esto moverá file.txt
a /ruta/al/nuevo/directorio/
y lo renombrará a nuevonombre.txt
en el proceso.
10. ¿Qué comando usa para mostrar el contenido de un archivo?
Para mostrar el contenido de un archivo, usaría el comando cat
. Por ejemplo, cat nombrearchivo.txt
mostraría todo el contenido de nombrearchivo.txt
en la terminal. Otros comandos útiles incluyen less
para ver archivos grandes página por página y head
o tail
para ver el principio o el final de un archivo, respectivamente.
11. ¿Cómo puede ver el principio de un archivo?
Para ver el principio de un archivo, puede usar el comando head
en sistemas tipo Unix. De forma predeterminada, head
muestra las primeras 10 líneas de un archivo. Por ejemplo:
head nombrearchivo.txt
Puede especificar un número diferente de líneas para ver usando la opción -n
. Por ejemplo, para ver las primeras 20 líneas:
head -n 20 nombrearchivo.txt
Otra herramienta común es un editor de texto como nano
, vim
o emacs
, que le permite abrir el archivo e inmediatamente ver el principio. Sin embargo, para una visualización rápida sin editar, head
es generalmente preferido.
12. ¿Cómo ve el final de un archivo?
El final de un archivo se puede ver de varias maneras dependiendo del contexto (por ejemplo, editor de texto, línea de comandos, programación). En un editor de texto, simplemente se desplaza hasta la última línea. En la línea de comandos, herramientas como tail
se pueden usar para ver las últimas líneas o bytes, o herramientas como wc -l
se pueden usar para contar el número de líneas. En un contexto de programación, se pueden usar funciones específicas del lenguaje para leer el archivo desde el final o determinar el tamaño del archivo y leer el último fragmento de datos. Por ejemplo, en Python, se puede usar seek()
para posicionar el puntero del archivo al final usando file.seek(0, os.SEEK_END)
.
El sistema operativo (SO) también usa un carácter EOF (Fin-de-Archivo) para indicar el final de un flujo de datos, pero esto no se 've' típicamente como tal; más bien es detectado por programas que interactúan con el flujo del archivo.
13. ¿Qué hace el comando man
y cómo se usa?
El comando man
se usa para mostrar las páginas del manual de usuario para un comando o tema dado en un sistema operativo tipo Unix. Es una herramienta esencial para entender cómo usar comandos, utilidades y llamadas al sistema.
Para usarlo, simplemente se escribe man
seguido del nombre del comando sobre el que se quiere aprender. Por ejemplo, man ls
mostrará la página del manual para el comando ls
. Se puede navegar por la página del manual usando las teclas de flecha, j
y k
, o Re Pág
y Av Pág
. Para buscar dentro de la página, use /
seguido de su término de búsqueda. Para salir, presione q
.
14. ¿Cómo se puede encontrar un archivo específico en una estructura de directorio, conociendo solo parte del nombre del archivo?
Se puede usar el comando find
en sistemas tipo Unix o Get-ChildItem
en PowerShell. Para find
, use comodines con la opción -name
. Por ejemplo, find . -name "*parte_del_nombre_del_archivo*"
busca en el directorio actual y sus subdirectorios archivos que contengan "parte_del_nombre_del_archivo". En PowerShell, use Get-ChildItem -Path . -Recurse -Filter "*parte_del_nombre_del_archivo*"
. El parámetro -Recurse
asegura que el comando busque en todos los subdirectorios.
Alternativamente, muchos editores de código y IDEs tienen funcionalidades integradas de búsqueda en archivos que permiten buscar basándose en nombres de archivo parciales a través de una estructura de directorios. Estas son a menudo más fáciles de usar que las herramientas de línea de comandos, especialmente para estructuras de directorios grandes.
15. ¿Cuál es el comando para cambiar los permisos de un archivo?
El comando para cambiar los permisos de un archivo en sistemas tipo Unix es chmod
. Modifica los derechos de acceso para el propietario, el grupo y otros.
Por ejemplo, chmod 755 nombre_de_archivo
establece permisos de lectura, escritura y ejecución para el propietario, y permisos de lectura y ejecución para el grupo y otros. Alternativamente, puede usar el modo simbólico, como chmod u+x nombre_de_archivo
para agregar permiso de ejecución para el propietario.
16. Explique el significado de chmod 777
.
chmod 777
es un comando en sistemas operativos tipo Unix (como Linux y macOS) que cambia los permisos de un archivo o directorio. La parte '777' representa los permisos que se otorgan. Cada dígito corresponde a un nivel de permiso para el propietario, el grupo y otros (respectivamente). En este caso, 7
otorga permisos de lectura (4), escritura (2) y ejecución (1) a todos: el propietario del archivo, el grupo al que pertenece el archivo y todos los demás usuarios del sistema.
Esencialmente, chmod 777
hace que un archivo o directorio esté completamente abierto, permitiendo que cualquiera lo lea, modifique o ejecute. Esto generalmente se desaconseja debido a riesgos de seguridad, ya que puede dejar los archivos vulnerables a la manipulación o el acceso no autorizado. Se recomienda asignar permisos de manera más restrictiva según la necesidad.
17. ¿Cómo se cambia el propietario de un archivo?
Para cambiar el propietario de un archivo en sistemas tipo Linux/Unix, normalmente se utiliza el comando chown
. La sintaxis básica es chown nuevo_propietario nombre_archivo
. Es posible que necesite privilegios de superusuario (root) o ser el propietario del archivo para realizar esta acción.
Por ejemplo, para cambiar el propietario de mifile.txt
a john
, utilizaría el comando: sudo chown john mifile.txt
. Si también necesita cambiar la propiedad del grupo, puede especificar ambos, separados por dos puntos: sudo chown john:desarrolladores mifile.txt
.
18. ¿Qué comando se utiliza para mostrar una lista de los procesos que se están ejecutando actualmente?
El comando para mostrar una lista de los procesos que se están ejecutando actualmente depende del sistema operativo. Los comandos comunes incluyen:
- Linux/Unix/macOS:
ps aux
,top
,htop
- Windows:
tasklist
, accedido a través del símbolo del sistema o PowerShell. La herramienta GUI es el Administrador de tareas.
19. ¿Cómo se puede finalizar un proceso?
Un proceso se puede finalizar utilizando varios métodos, que varían según el sistema operativo. Generalmente, se puede usar un comando kill
(Unix/Linux) o el Administrador de tareas (Windows) para enviar una señal al proceso, solicitando su finalización. La señal más común es SIGTERM
, que solicita amablemente al proceso que finalice, permitiéndole limpiar los recursos.
Alternativamente, puede finalizar un proceso a la fuerza utilizando SIGKILL
(Unix/Linux) o "Finalizar tarea" (Windows). Esto detiene inmediatamente el proceso sin darle la oportunidad de limpiar. Programáticamente, se pueden usar funciones como os.Kill
en Go o TerminateProcess
en la API de Windows. Aquí hay un ejemplo usando el comando kill en linux/unix:
kill <pid> kill -9 <pid> # terminación forzosa (SIGKILL)
20. ¿Cuál es el comando para verificar el uso del espacio en disco?
El comando principal para verificar el uso del espacio en disco es df
. Específicamente, df -h
proporciona una salida legible para humanos (por ejemplo, usando sufijos 'K', 'M', 'G'), lo que facilita la comprensión de los resultados. Otro comando útil es du
, que estima el uso del espacio de los archivos. du -sh *
en un directorio dará el tamaño total de cada archivo y subdirectorio.
df
informa sobre el uso del sistema de archivos, mientras que du
informa sobre el espacio ocupado por los archivos. Puede haber discrepancias entre los dos debido a factores como el espacio reservado o los archivos eliminados que aún están abiertos.
21. ¿Cómo se averigua qué usuario está conectado actualmente?
El método para determinar el usuario conectado actualmente depende en gran medida del sistema operativo específico, el lenguaje de programación y el framework en uso. Sin embargo, aquí hay algunos enfoques generales:
- Nivel del sistema operativo: La mayoría de los sistemas operativos almacenan la información del usuario conectado actualmente en variables de entorno o llamadas al sistema. Por ejemplo, en Linux/macOS, podría usar el comando
whoami
en la terminal, o acceder a la variable de entorno$USER
. Windows tiene variables de entorno y llamadas a la API similares para la identificación del usuario. Por ejemplo, un usuario podría usarGetUserName()
en la API de Windows para obtener el usuario conectado. - Nivel de la aplicación: Las aplicaciones web a menudo usan la gestión de sesiones para rastrear a los usuarios conectados. El servidor almacena una ID de sesión (a menudo en una cookie), que está asociada con los datos de un usuario específico. Así que puede verificar esa sesión para encontrar los detalles del usuario. De manera similar, las aplicaciones de escritorio podrían usar una clase que guarda al usuario una vez que inicia sesión y otras partes de la aplicación pueden acceder a esa clase para identificar al usuario.
22. ¿Qué comando se utiliza para apagar o reiniciar el sistema?
El comando shutdown
se utiliza para apagar o reiniciar un sistema Linux. Se puede utilizar para detener, apagar o reiniciar la máquina. Por ejemplo, sudo shutdown -r now
reiniciará el sistema inmediatamente. La opción -r
especifica reiniciar y now
especifica la hora.
23. ¿Cuál es el propósito del comando `sudo`?
El comando sudo
permite a un usuario ejecutar comandos con los privilegios de seguridad de otro usuario, por defecto el superusuario (root). Significa "superuser do".
Su propósito principal es otorgar privilegios administrativos a usuarios regulares de forma temporal y controlada, sin requerir que inicien sesión como root directamente. Esto mejora la seguridad del sistema al minimizar el riesgo de daños accidentales o maliciosos al sistema causados por ejecutar todo como root.
24. ¿Cómo se puede crear una nueva cuenta de usuario?
El proceso de creación de una nueva cuenta de usuario depende del sistema en cuestión. Por lo general, implica privilegios administrativos. Por ejemplo:
- Sistemas operativos (Windows, Linux, macOS): Estos suelen tener una sección de 'Cuentas de usuario' o 'Usuarios y grupos' en la configuración del sistema o el panel de control. Un administrador puede agregar un nuevo usuario aquí.
- Aplicaciones web: Estas a menudo tienen un formulario de registro donde un nuevo usuario puede ingresar sus datos (correo electrónico, contraseña, etc.). Un administrador también podría crear usuarios a través de un panel de administración. El código del backend normalmente almacenaría los datos del nuevo usuario en una base de datos.
- Bases de datos: Las bases de datos a menudo tienen un comando
CREATE USER
, que requiere privilegios administrativos. Ejemplo (PostgreSQL):CREATE USER new_user WITH PASSWORD 'some_password';
25. ¿Cómo puedes comprimir un archivo en Linux y cuál es la extensión común para los archivos comprimidos?
En Linux, puedes comprimir un archivo usando el comando gzip
. Por ejemplo, gzip nombre_de_archivo
comprimirá 'nombre_de_archivo'. El archivo comprimido tendrá la extensión .gz
. Otras herramientas de compresión comunes incluyen bzip2
(extensión .bz2
) y xz
(extensión .xz
), que a menudo proporcionan mejores tasas de compresión a costa de un mayor tiempo de compresión.
Para descomprimir un archivo gzip, usarías el comando gunzip nombre_de_archivo.gz
. De manera similar, bunzip2 nombre_de_archivo.bz2
y unxz nombre_de_archivo.xz
se utilizan para descomprimir archivos comprimidos con bzip2 y xz, respectivamente.
Preguntas de entrevista sobre comandos de Linux para principiantes
1. ¿Qué te muestra 'pwd' y por qué es útil?
pwd
(directorio de trabajo actual) te muestra la ruta absoluta del directorio en el que te encuentras actualmente. Es útil porque aclara tu ubicación dentro del sistema de archivos, lo que evita confusiones al navegar o ejecutar comandos.
Por ejemplo, si estás en /home/usuario/documentos
, entonces pwd
mostrará /home/usuario/documentos
. Esto se vuelve crítico cuando se trata de rutas relativas. Conocer el directorio de trabajo actual te permite referenciar correctamente archivos y directorios utilizando rutas relativas a tu ubicación actual, asegurando que los comandos operen en los archivos deseados.
2. Si te pierdes en la terminal, ¿cómo vuelves a tu directorio personal?
Para volver a tu directorio personal en la terminal, puedes usar el comando cd
sin ningún argumento. Simplemente escribiendo cd
y presionando Enter te llevará de vuelta. Alternativamente, puedes usar cd ~
, donde ~
es un acceso directo que representa el directorio personal. Ambos comandos logran el mismo resultado.
3. Explica qué es una extensión de archivo (como .txt o .pdf) y ¿realmente le importa a Linux?
Una extensión de archivo es el sufijo al final de un nombre de archivo, generalmente separado por un punto (.). Es una convención utilizada por los sistemas operativos y las aplicaciones para identificar el tipo de archivo. Por ejemplo, .txt
normalmente indica un archivo de texto plano, y .pdf
indica un archivo de Formato de Documento Portátil. La extensión ayuda al sistema operativo y a las aplicaciones a determinar qué programa usar para abrir el archivo y cómo manejar su contenido. Aunque a menudo tienen tres letras de largo, las extensiones pueden tener diferentes longitudes.
Linux, a diferencia de otros sistemas operativos, utiliza principalmente el contenido del archivo, y particularmente el "número mágico" al principio del archivo (una secuencia de bytes que identifica el tipo de archivo), para determinar el tipo de archivo, en lugar de depender únicamente de la extensión del archivo. Por lo tanto, Linux no depende estrictamente de la extensión del archivo para identificar el tipo de archivo. Puedes renombrar un archivo .txt
a .pdf
en Linux, y si el contenido del archivo sigue siendo texto plano, un editor de texto aún lo abrirá. Sin embargo, la GUI puede intentar abrir el archivo con un visor de PDF dependiendo de la configuración. Por lo tanto, aunque el sistema operativo no depende de él, algunos entornos de escritorio pueden depender de ellos hasta cierto punto.
4. ¿Cuál es la diferencia entre 'rm file' y 'rm -r directory'?
rm file
elimina un solo archivo. No puede eliminar directorios y generará un error si intenta usarlo en un directorio.
rm -r directory
elimina recursivamente un directorio y todo su contenido (archivos y subdirectorios). La opción -r
significa recursivo, y es esencial cuando desea eliminar un directorio que no está vacío. Úselo con precaución, ya que los archivos eliminados generalmente no son recuperables.
5. ¿Cómo puede ver el contenido de un archivo de texto directamente en la terminal?
Puede usar varios comandos en la terminal para ver el contenido de un archivo de texto. Los más comunes son:
cat filename.txt
: Este comando concatena e imprime todo el archivo a la salida estándar.less filename.txt
: Este comando le permite ver el archivo página por página, lo que lo hace adecuado para archivos más grandes. Puede navegar usando las teclas de flecha o las teclas de avance/retroceso de página. Presioneq
para salir.head filename.txt
: Este comando muestra las primeras líneas del archivo (el valor predeterminado es 10 líneas).tail filename.txt
: Este comando muestra las últimas líneas del archivo (el valor predeterminado es 10 líneas).
6. Si escribe un comando incorrectamente, ¿cómo lo corrige sin volver a escribir todo?
Varios métodos pueden ayudar a evitar volver a escribir un comando completo.
- Historial de Bash: Usa la flecha hacia arriba para recorrer los comandos introducidos previamente. Una vez que encuentres el comando incorrecto, edítalo usando las flechas izquierda/derecha y las teclas
Supr
oRetroceso
. También puedes usarCtrl+a
para moverte al principio de la línea yCtrl+e
para moverte al final.Ctrl+k
borrará desde el cursor hasta el final de la línea, yCtrl+u
borrará desde el cursor hasta el principio de la línea. - Edición de la Línea de Comandos: Bash (y otros shells) tienen capacidades de edición avanzadas.
Ctrl+f
yCtrl+b
mueven el cursor hacia adelante y hacia atrás un carácter, respectivamente.Alt+f
yAlt+b
mueven hacia adelante y hacia atrás una palabra.!!
ejecutará el último comando.!abc
ejecutará el último comando que comience con abc.^antiguo^nuevo^
reemplazaráantiguo
connuevo
en el último comando y lo ejecutará. - Completado con Tabulador: Usa la tecla
Tab
para autocompletar comandos, nombres de archivos y rutas, reduciendo los errores de escritura en primer lugar.
7. Imagina que tienes un archivo llamado 'MyNotes.txt'. ¿Cómo lo renombrarías a 'ImportantNotes.txt' usando la línea de comandos?
Para renombrar 'MyNotes.txt' a 'ImportantNotes.txt' desde la línea de comandos, usarías el comando mv
(abreviatura de mover) en Linux/macOS o el comando ren
en Windows.
- Linux/macOS:
mv MyNotes.txt ImportantNotes.txt
- Windows:
ren MyNotes.txt ImportantNotes.txt
8. ¿Qué es un 'directorio' en Linux, y en qué se diferencia de un 'archivo'?
En Linux, un directorio es un tipo especial de archivo que contiene una lista de archivos y subdirectorios. Piénsalo como un contenedor o carpeta utilizado para organizar el sistema de archivos.
La diferencia clave entre un directorio y un archivo regular es su propósito. Un archivo regular almacena datos (texto, imágenes, ejecutables, etc.), mientras que un directorio almacena metadatos sobre otros archivos y directorios, incluyendo sus nombres, ubicaciones y permisos. Un directorio no almacena el contenido real de los archivos que contiene; simplemente apunta a ellos.
9. ¿Cómo se crea una nueva carpeta llamada 'ArchivosDelProyecto' en su ubicación actual?
Para crear una nueva carpeta llamada 'ArchivosDelProyecto' en su ubicación actual, puede usar el siguiente comando en su terminal:
mkdir ArchivosDelProyecto
Este comando, mkdir
, es la abreviatura de "make directory" (crear directorio). Ejecutar esto crea la nueva carpeta.
10. Explique qué hace 'ls -l' y qué tipo de información proporciona.
ls -l
es un comando en sistemas operativos tipo Unix que lista el contenido del directorio en un formato de lista larga. Este formato proporciona información detallada sobre cada archivo y directorio.
La información proporcionada incluye:
11. ¿Cuál es el propósito del comando 'clear'?
El comando clear
se utiliza para limpiar la pantalla de la terminal. Elimina todos los comandos ejecutados previamente y su salida, proporcionando una pizarra limpia para el usuario. Esto es útil para mejorar la legibilidad, reducir el desorden y centrarse en la tarea actual.
12. ¿Cómo puedes encontrar un archivo específico si solo conoces parte de su nombre?
Puedes usar el comando find
en sistemas tipo Unix (Linux, macOS) para localizar archivos basándose en nombres parciales. La sintaxis básica es find <directorio> -name "*parte_del_nombre*"
. El <directorio>
especifica dónde comenzar la búsqueda (por ejemplo, .
para el directorio actual, o /
para todo el sistema). La opción -name
busca nombres de archivos que coincidan con el patrón dado, y los comodines (*
) te permiten especificar que 'parte_del_nombre' puede aparecer en cualquier lugar del nombre de archivo completo. Usa comillas para evitar que el shell interprete los asteriscos.
Por ejemplo, para encontrar todos los archivos que contienen 'report' en su nombre dentro del directorio actual, usarías find . -name "*report*"
. También puedes usar el comando locate
en muchos sistemas para una búsqueda rápida. Para encontrar archivos que contienen 'report', usa locate report
. locate
se basa en una base de datos que se actualiza periódicamente, por lo que es posible que los archivos recientes no se encuentren inmediatamente. Usa el comando updatedb
para actualizar la base de datos de locate.
13. ¿Qué hacen las teclas de flecha 'arriba' y 'abajo' en la terminal?
En la mayoría de los emuladores de terminal (como Bash, Zsh o PowerShell), las teclas de flecha 'arriba' y 'abajo' se utilizan para navegar por el historial de comandos. Al presionar la tecla de flecha 'arriba' se recupera el comando ejecutado anteriormente, lo que te permite volver a ejecutarlo o modificarlo rápidamente. Presionar repetidamente 'arriba' retrocede más en el historial.
La tecla de flecha 'abajo' funciona en la dirección opuesta, avanzando por el historial de comandos, típicamente desde una selección anterior con 'arriba'. Si has retrocedido en tu historial usando la flecha 'arriba', 'abajo' te llevará a comandos usados más recientemente, eventualmente regresando al comando más recientemente escrito (pero no ejecutado), que a menudo es una línea de comandos en blanco.
14. ¿Por qué es súper importante ser cuidadoso al usar el comando 'rm'?
El comando rm
en sistemas operativos tipo Unix borra permanentemente archivos y directorios. No hay función de deshacer ni papelera de reciclaje. Una vez que un archivo se elimina usando rm
, se ha ido. Esto puede llevar a una pérdida de datos significativa si se usa descuidadamente, como borrar accidentalmente documentos importantes, archivos del sistema o directorios completos.
El uso incorrecto, especialmente con caracteres comodín (por ejemplo, rm -rf *
), puede escalar rápidamente a un desastre. Por lo tanto, es crucial verificar dos veces el objetivo y las opciones antes de ejecutar rm
para evitar consecuencias irreversibles. La opción -i
se puede usar para la confirmación interactiva antes de borrar cada archivo, proporcionando una capa adicional de seguridad.
15. ¿Cuál es el comando para mostrar la página de manual de otro comando?
Para mostrar la página de manual de otro comando, use el comando man
seguido del nombre del comando sobre el que desea obtener información. Por ejemplo, para ver la página de manual del comando ls
, escribiría man ls
en su terminal. Esto mostrará información detallada sobre el comando, incluida su sintaxis, opciones y ejemplos de uso.
Alternativamente, algunos comandos también proporcionan ayuda integrada usando la bandera --help
. Sin embargo, las páginas man
suelen ser más completas.
16. ¿Cómo se puede detener un comando que se está ejecutando para siempre en la terminal?
Para detener un comando que se ejecuta indefinidamente en la terminal, el enfoque más común y directo es usar el atajo de teclado Ctrl + C
. Esto envía una señal de interrupción (SIGINT) al proceso, lo que generalmente hace que termine de forma limpia.
Alternativamente, si Ctrl + C
no funciona (por ejemplo, el programa está ignorando la señal), puedes probar con Ctrl + Z
. Esto suspende el proceso, colocándolo en segundo plano. Luego, puedes usar el comando kill
con el ID del proceso (PID) para terminarlo a la fuerza. Para encontrar el PID, usa el comando jobs
(si lo suspendiste) o ps aux | grep <nombre_del_comando>
y luego kill <PID>
. Si un kill normal no funciona, kill -9 <PID>
es un último recurso.
17. ¿Cuál es la diferencia entre una ruta relativa y una absoluta?
Una ruta absoluta especifica la ubicación de un archivo o directorio desde el directorio raíz del sistema de archivos. Siempre comienza con el directorio raíz (por ejemplo, /
en sistemas tipo Unix o C:\
en Windows). Una ruta relativa, por otro lado, especifica la ubicación de un archivo o directorio en relación con el directorio de trabajo actual.
Por ejemplo, si tu directorio de trabajo actual es /home/usuario/documentos
, una ruta absoluta a un archivo llamado informe.txt
podría ser /home/usuario/documentos/informe.txt
, mientras que una ruta relativa podría ser simplemente informe.txt
(si el archivo está en el directorio actual) o ./informe.txt
que se refiere explícitamente al directorio actual. Si estuviera un directorio arriba, sería ../informe.txt
.
18. Explica para qué se utiliza el comando 'chmod'. Una breve explicación es suficiente.
El comando chmod
en sistemas operativos tipo Unix (Linux, macOS, etc.) se utiliza para cambiar los permisos de acceso de archivos y directorios. Te permite controlar quién puede leer, escribir y ejecutar un archivo.
Por ejemplo, chmod 755 mi_script.sh
hace que el script sea ejecutable por su propietario y legible y ejecutable por otros.
19. ¿Qué hace el comando 'sudo' y por qué debes tener cuidado al usarlo?
El comando sudo
permite a un usuario autorizado ejecutar un comando como superusuario (root) u otro usuario, según se especifique en el archivo sudoers. Esencialmente otorga privilegios elevados temporalmente.
Debes tener mucho cuidado al usar sudo
porque el acceso root omite las restricciones de seguridad normales. Un error con sudo
puede dañar potencialmente tu sistema, eliminar archivos importantes o comprometer la seguridad. Siempre verifica dos veces el comando que estás a punto de ejecutar con sudo
y asegúrate de comprender sus implicaciones.
20. ¿Cómo se verifica cuánto espacio en disco está disponible en tu computadora usando la terminal?
Para verificar el espacio en disco en la terminal, puedes usar el comando df
. df -h
se usa comúnmente porque la opción -h
hace que la salida sea legible para humanos, mostrando los tamaños en unidades como KB, MB, GB y TB.
Alternativamente, puede usar el comando du
para verificar el uso del disco de archivos o directorios específicos. Por ejemplo, du -sh *
mostrará el tamaño total de cada archivo o directorio en el directorio actual. La opción -s
proporciona un resumen, y la opción -h
nuevamente hace que la salida sea legible para humanos.
21. Explique qué hace una tubería (|) en los comandos de Linux con un ejemplo simple.
En Linux, una tubería (|
) es una forma de redirección que se utiliza para enviar la salida de un comando como entrada a otro comando. Le permite encadenar comandos para realizar operaciones complejas.
Por ejemplo, ls -l | grep 'myfile.txt'
primero mostrará todos los archivos y directorios en el directorio actual (usando ls -l
) y luego pasará esa salida al comando grep
, que filtrará los resultados para mostrar solo las líneas que contienen 'myfile.txt'. Esto encuentra efectivamente 'myfile.txt' en la lista larga del directorio.
Preguntas de entrevista intermedias sobre comandos de Linux
1. ¿Cómo puede encontrar todos los archivos modificados en las últimas 24 horas y luego comprimirlos en un solo archivo?
Para encontrar todos los archivos modificados en las últimas 24 horas y comprimirlos en un solo archivo, puede usar el comando find
en combinación con tar
. Aquí está cómo:
Primero, use el comando find
para ubicar los archivos modificados en las últimas 24 horas:
find . -type f -mtime -1
Este comando busca en el directorio actual (.
) archivos (-type f
) modificados en el último día (-mtime -1
). Para comprimir estos archivos en un archivo tar.gz
, canalice la salida de find
a tar
:
find . -type f -mtime -1 -print0 | tar -czvf archive.tar.gz --null -T -
Explicación de las opciones de tar
:
-c
: Crear archivo-z
: Comprimir archivo usando gzip-v
: Salida detallada-f archive.tar.gz
: Especificar el nombre del archivo de archivo--null
: Manejar nombres de archivos que contienen espacios o caracteres especiales-T -
: Leer la lista de archivos para archivar desde la entrada estándar, que se canaliza desde el comandofind
usando la opción-print0
, que separa los archivos por un carácter nulo, lo cual es seguro para caracteres especiales en los nombres de archivo. Sin esto, el comandotar
falla si algún archivo tiene espacios o caracteres especiales.
2. Explique cómo usar 'awk' para imprimir la tercera palabra de cada línea en un archivo.
Para imprimir la tercera palabra de cada línea en un archivo usando awk
, puede usar el siguiente comando:
awk '{print $3}' nombre_de_archivo
Aquí, $3
se refiere al tercer campo de cada línea, donde los campos están separados por espacios en blanco (por defecto). awk
procesa cada línea del archivo, y la acción print $3
imprime el contenido del tercer campo. Reemplace nombre_de_archivo
con el nombre real de su archivo.
3. Describa un escenario donde usaría 'sed' para reemplazar todas las apariciones de una cadena en múltiples archivos.
Un escenario común es actualizar un aviso de derechos de autor en muchos archivos de código fuente. Digamos que necesito reemplazar Copyright 2023 Company A
con Copyright 2024 Company A
en todos los archivos .txt
en un directorio. Usaría sed
con las opciones -i
(in-place) y -s
(archivos separados) junto con find
y xargs
.
Aquí está el comando:
find . -name "*.txt" -print0 | xargs -0 sed -i 's/Copyright 2023 Company A/Copyright 2024 Company A/g'
Este comando encuentra todos los archivos .txt
, los pasa a sed
, que luego realiza un reemplazo global (indicado por la bandera g
en el comando de sustitución s///g
) de la cadena de derechos de autor dentro de cada archivo. Las opciones -print0
y -0
en find
y xargs
respectivamente, manejan los nombres de archivos con espacios de forma segura. La opción -i
le dice a sed que edite archivos en su lugar y -s
trata cada archivo por separado, lo cual es útil para la notificación de errores.
4. ¿Cómo se monitorea el uso de la CPU en tiempo real de un proceso específico usando herramientas de línea de comandos?
Para monitorear el uso de la CPU en tiempo real de un proceso específico usando herramientas de línea de comandos, puedes usar top
o ps
. top
proporciona una vista dinámica en tiempo real.
Para usar top
, primero identifica el ID del proceso (PID) del proceso que deseas monitorear. Luego, ejecuta top -p <PID>
. Esto filtrará la salida de top
para mostrar solo información del proceso especificado, incluyendo su uso de CPU (%CPU).
Alternativamente, puedes usar ps
en combinación con watch
. Ejecuta watch -n 1 ps -p <PID> -o %cpu
. El -n 1
le indica a watch
que actualice cada segundo. La opción -o %cpu
le indica a ps
que solo muestre el uso de la CPU.
5. Explica cómo crear un usuario con un ID de usuario (UID) y un ID de grupo (GID) específicos.
Para crear un usuario con un UID y GID específicos en un sistema Linux, puedes usar el comando useradd
con las opciones -u
y -g
, respectivamente. Necesitas privilegios de root para ejecutar este comando. Por ejemplo, sudo useradd -u 1001 -g 1001 newuser
creará un usuario llamado 'newuser' con UID 1001 y lo asignará al grupo con GID 1001. El grupo debe existir de antemano. Si también necesitas especificar un directorio personal, usa las opciones -m
(crear directorio personal) y -d
(especificar la ruta del directorio personal) en conjunto. También querrás establecer una contraseña para el usuario con el comando passwd
.
Alternativamente, puede usar el comando adduser
, que es un envoltorio más fácil de usar en torno a useradd
. Sin embargo, adduser
típicamente no permite la especificación directa de UID/GID sin una configuración adicional o el uso de opciones de línea de comandos. Generalmente, se recomienda ceñirse a useradd
para un control preciso sobre las asignaciones de UID/GID en entornos de script o al crear múltiples usuarios con requisitos específicos. Siempre verifique los cambios con id <nombre_de_usuario>
después de la creación.
6. Describa cómo configurar la autenticación basada en clave SSH para un usuario en un servidor remoto.
Para configurar la autenticación basada en clave SSH, primero genere un par de claves SSH en su máquina local usando ssh-keygen
. Esto crea una clave privada (por ejemplo, id_rsa
) y una clave pública (por ejemplo, id_rsa.pub
). Copie de forma segura la clave pública al servidor remoto, típicamente al archivo ~/.ssh/authorized_keys
para el usuario deseado. Puede usar ssh-copy-id usuario@host_remoto
si está disponible, o copiar manualmente el contenido del archivo .pub
.
Asegúrese de que el directorio .ssh
y el archivo authorized_keys
en el servidor remoto tengan los permisos correctos: .ssh
debe ser 700
(drwx------) y authorized_keys
debe ser 600
(-rw-------). Después de esta configuración, debería poder conectarse por SSH al servidor remoto sin que se le solicite una contraseña, usando ssh usuario@host_remoto
.
7. ¿Cómo puede usar 'rsync' para sincronizar solo los archivos modificados entre dos directorios, preservando los permisos y las marcas de tiempo?
Para sincronizar solo los archivos modificados entre dos directorios usando rsync
, preservando los permisos y las marcas de tiempo, puede usar el siguiente comando:
rsync -avz --delete directorio_fuente/ directorio_destino
-a
(modo archivo): Esta opción es una combinación de varias otras opciones que conservan atributos como permisos, propiedad, marcas de tiempo, enlaces simbólicos, etc. Es equivalente a -rlptgoD
. Específicamente, -t
conserva las marcas de tiempo.
-v
(verboso): Aumenta la verbosidad.
-z
(comprimir): Comprime los datos de los archivos durante la transferencia. Bueno para transferir archivos a través de una red.
--delete
: Esta opción elimina archivos del directorio de destino que ya no existen en el directorio de origen. Crucialmente, sin --delete
, rsync solo agrega/actualiza archivos; no elimina nada del destino. Asegura que el destino sea un espejo del origen.
Recuerde incluir la barra inclinada /
al final del directorio de origen. Omitirla cambia el comportamiento de rsync, causando que el directorio de origen en sí mismo se copie como un subdirectorio del destino.
8. Explique cómo encontrar los archivos más grandes en un árbol de directorios, ordenados por tamaño.
Para encontrar los archivos más grandes en un árbol de directorios ordenados por tamaño, puede usar una combinación de herramientas de línea de comandos. Un enfoque común implica usar find
para localizar todos los archivos, du
para determinar su tamaño y sort
para ordenarlos.
Aquí hay un ejemplo básico:
find . -type f -print0 | xargs -0 du -h | sort -hr | head -n 10
Este comando hace lo siguiente:
find . -type f -print0
: Encuentra todos los archivos (-type f
) a partir del directorio actual (.
) e imprime sus nombres separados por caracteres nulos (-print0
).xargs -0 du -h
: Toma los nombres de archivos separados por nulos y los pasa adu -h
, que calcula el uso de disco de cada archivo en formato legible por humanos.sort -hr
: Ordena la salida dedu -h
en orden inverso (-r
) usando la ordenación humano-numérica (-h
).head -n 10
: Muestra los 10 archivos más grandes.
Puede ajustar head -n 10
para mostrar un número diferente de archivos según sea necesario.
9. Describe cómo redirigir la salida estándar y el error estándar de un comando a diferentes archivos.
Para redirigir la salida estándar (stdout) y el error estándar (stderr) a diferentes archivos en un entorno tipo Unix, se utilizan los operadores de redirección >
y 2>
respectivamente.
Por ejemplo, para redirigir stdout a salida.txt
y stderr a errores.txt
para un comando llamado mi_comando
, se usaría:
mi_comando > salida.txt 2> errores.txt
Este comando ejecutará mi_comando
, y cualquier salida estándar se escribirá en salida.txt
, mientras que cualquier error estándar se escribirá en errores.txt
. Si los archivos no existen, se crearán. Si existen, se sobrescribirán. Para agregar a los archivos existentes, use >>
y 2>>
.
10. ¿Cómo puede usar 'xargs' para ejecutar un comando en múltiples archivos encontrados por 'find'?
Puede usar xargs
junto con find
para ejecutar un comando en múltiples archivos. El comando find
localiza los archivos, y xargs
toma la salida de find
(la lista de archivos) como entrada y ejecuta el comando especificado con esos archivos como argumentos.
Por ejemplo, para encontrar todos los archivos .txt
en el directorio actual y sus subdirectorios y luego comprimirlos usando gzip
, puede usar el siguiente comando:
find . -name "*.txt" -print0 | xargs -0 gzip
Aquí, -print0
y -0
se utilizan para manejar nombres de archivos con espacios o caracteres especiales de forma segura. find . -name "*.txt"
encuentra todos los archivos que terminan con .txt
, -print0
genera los nombres de los archivos separados por caracteres nulos. xargs -0 gzip
luego toma esta lista separada por nulos y ejecuta gzip
en cada archivo.
11. Explique cómo listar todos los archivos abiertos para un proceso específico.
Para listar todos los archivos abiertos para un proceso específico, puede usar el sistema de archivos lsof
o proc
. Con lsof
, puede usar el comando lsof -p <pid>
, reemplazando <pid>
con el ID del proceso. Por ejemplo, lsof -p 1234
listará los archivos abiertos para el ID de proceso 1234.
Alternativamente, usando el sistema de archivos proc
(generalmente disponible en sistemas Linux), puede navegar a /proc/<pid>/fd/
. Este directorio contiene enlaces simbólicos que representan los descriptores de archivos. ls -l /proc/<pid>/fd/
mostrará los archivos asociados con cada descriptor de archivo. Por ejemplo, ls -l /proc/1234/fd/
. Tenga en cuenta que el acceso a estos métodos puede requerir los permisos apropiados (por ejemplo, sudo
).
12. Describa cómo usar 'netstat' o 'ss' para averiguar qué proceso está escuchando en un puerto específico.
Para encontrar el proceso que escucha en un puerto específico usando netstat
, puedes usar el siguiente comando: netstat -tulnp | grep :<número_de_puerto>
. La opción -t
muestra las conexiones TCP, -u
muestra las conexiones UDP, -l
muestra los sockets a la escucha, -n
muestra las direcciones numéricas y los números de puerto, y -p
muestra el ID y el nombre del proceso. Canalizar la salida a grep :<número_de_puerto>
filtra los resultados para mostrar solo las líneas que contienen el número de puerto especificado.
Usando ss
(estadísticas de sockets), el comando es: ss -tulnp | grep :<número_de_puerto>
. Similar a netstat
, -t
es para TCP, -u
para UDP, -l
para sockets a la escucha, -n
para puertos numéricos, y -p
muestra el proceso que usa el socket. grep
filtra por el puerto específico. Por ejemplo, para encontrar el proceso que escucha en el puerto 8080, usarías ss -tulnp | grep :8080
o netstat -tulnp | grep :8080
.
13. ¿Cómo programas un trabajo para que se ejecute todos los domingos a las 3:00 AM?
El método depende del sistema operativo. En los sistemas basados en Linux, normalmente usarías cron
. Agregarías una línea al archivo crontab usando el comando crontab -e
. La línea se vería algo así:
0 3 * * 0 comando_a_ejecutar
Esta línea significa: en el minuto 0 de la hora 3, en cada día del mes, cada mes, y solo los domingos (0 representa el domingo), ejecuta el comando especificado. Reemplaza comando_a_ejecutar
con el comando o script real que deseas ejecutar. Windows usa el Programador de tareas, donde puedes configurar una tarea para que se ejecute según una programación, incluida semanalmente los domingos a las 3:00 AM.
14. Explique cómo cambiar la propiedad y el grupo de un archivo recursivamente para todo un árbol de directorios.
Para cambiar recursivamente la propiedad y el grupo de un archivo para todo un árbol de directorios, puede usar los comandos chown
y chgrp
con la opción -R
. La opción -R
significa recursivo, lo que significa que el comando se aplicará a todos los archivos y subdirectorios dentro del directorio especificado.
Por ejemplo, para cambiar la propiedad al usuario newuser
y el grupo a newgroup
para el directorio /path/to/directory
y todos sus contenidos, usaría los siguientes comandos:
sudo chown -R newuser /path/to/directory sudo chgrp -R newgroup /path/to/directory
sudo
podría ser necesario según los permisos de su usuario y la propiedad existente de los archivos. El comando chown cambia la propiedad del usuario y el comando chgrp cambia la propiedad del grupo. La ejecución de ambos logra la tarea de cambiar el usuario y el grupo de forma recursiva.
15. Describa cómo usar 'iptables' o 'firewalld' para bloquear el tráfico desde una dirección IP específica.
Para bloquear el tráfico desde una dirección IP específica usando iptables
, usaría el siguiente comando:
sudo iptables -A INPUT -s <IP_ADDRESS> -j DROP
Reemplace <IP_ADDRESS>
con la dirección IP real que desea bloquear. Este comando agrega una regla a la cadena INPUT
que descarta todos los paquetes provenientes de la dirección IP especificada. Para que la regla persista entre reinicios, deberá guardar las reglas de iptables
(por ejemplo, usando iptables-save
).
Con firewalld
, puede usar el siguiente comando:
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="<IP_ADDRESS>" reject' sudo firewall-cmd --reload
Nuevamente, reemplace <IP_ADDRESS>
con la IP que desea bloquear. La opción --add-rich-rule
le permite crear reglas más complejas. --reload
aplica los cambios. Para que la regla sea permanente (entre reinicios), agregue --permanent
al comando firewall-cmd
y luego recargue el firewall.
16. ¿Cómo puede encontrar todos los archivos que son propiedad de un usuario específico?
Puede usar el comando find
en sistemas operativos tipo Unix para encontrar archivos propiedad de un usuario específico. La sintaxis básica es:
find /ruta/a/buscar -user nombredeusuario
Donde /ruta/a/buscar
es el directorio en el que desea buscar (por ejemplo, /
, /home
), y nombredeusuario
es el nombre de usuario del usuario que está buscando. Este comando buscará recursivamente en el directorio especificado e imprimirá las rutas de todos los archivos propiedad de ese usuario. Puede usar otras opciones con find
para filtrar aún más los resultados, como -type f
para encontrar solo archivos (no directorios).
17. Explique cómo usar 'watch' para monitorear la salida de un comando cada pocos segundos.
El comando watch
en Linux (y otros sistemas tipo Unix) se utiliza para ejecutar un comando periódicamente y mostrar su salida en modo de pantalla completa. Esto es útil para monitorear cómo la salida de un comando cambia con el tiempo.
Para usar watch
, simplemente escriba watch
seguido del comando que desea monitorear. Por ejemplo, watch ls -l
ejecutará ls -l
cada dos segundos (por defecto) y actualizará la pantalla con la nueva salida. Puede cambiar el intervalo usando la opción -n
seguida del número de segundos; por ejemplo, watch -n 1 date
mostrará la salida del comando date
cada segundo. Para salir de watch
, presione Ctrl+C
.
18. Describa cómo crear un enlace simbólico y un enlace duro, y explique la diferencia entre ellos.
Para crear un enlace simbólico (symlink) use ln -s objetivo nombre_enlace
. Para crear un enlace duro, use ln objetivo nombre_enlace
. La diferencia clave es que un enlace simbólico es un puntero a un archivo, que almacena la ruta al archivo de destino. Si el objetivo se mueve o se elimina, el enlace simbólico se rompe. Un enlace duro, sin embargo, crea una nueva entrada de directorio que apunta al mismo inode subyacente (bloque de datos) que el archivo original. Eliminar el archivo original no afecta al enlace duro, y viceversa, ya que ambos apuntan a los mismos datos.
19. ¿Cómo se comprueba el uso del espacio en disco de un directorio específico?
Para verificar el uso del espacio en disco de un directorio específico, puede usar el comando du
en Linux o macOS. La sintaxis básica es du -sh <ruta_directorio>
. La opción -s
proporciona un resumen, y la opción -h
muestra la salida en un formato legible por humanos (por ejemplo, KB, MB, GB).
Por ejemplo, para verificar el espacio en disco utilizado por el directorio /var/log
, usarías el comando du -sh /var/log
. La salida mostrará el tamaño total del directorio y su contenido.
20. Explica cómo usar 'grep' para encontrar líneas que coincidan con un patrón, pero excluyendo las líneas que contienen otro patrón.
Para encontrar líneas que coincidan con un patrón mientras se excluyen las líneas que contienen otro, puedes combinar grep
con su opción -v
(para invertir-coincidencia) y canalizar los resultados. Primero, grep
para el patrón deseado. Luego, canaliza esa salida a otro comando grep -v
que excluye el patrón no deseado.
Por ejemplo, para encontrar líneas que contengan "apple" pero no "orange", usarías: grep "apple" | grep -v "orange"
. Esto primero encuentra todas las líneas con "apple", y luego filtra esos resultados para excluir cualquier línea que también contenga "orange".
21. Describe cómo usar 'tar' para crear una copia de seguridad incremental de un directorio.
Para crear una copia de seguridad incremental usando tar
, usas principalmente la opción --listed-incremental
junto con un archivo de instantánea. El archivo de instantánea realiza un seguimiento de qué archivos se han respaldado en copias de seguridad anteriores. Primero creas una copia de seguridad completa, luego las copias de seguridad subsiguientes solo guardan los cambios desde la última copia de seguridad registrada en el archivo de instantánea. Por ejemplo:
tar -cvzf /backup/full.tar.gz /data
(Copia de seguridad completa inicial)tar --create --gzip --file=/backup/incremental1.tar.gz --listed-incremental=/backup/snapshot /data
(Primera copia de seguridad incremental)tar --create --gzip --file=/backup/incremental2.tar.gz --listed-incremental=/backup/snapshot /data
(Segunda copia de seguridad incremental y actualiza la instantánea)
Cada copia de seguridad incremental solo contendrá archivos que hayan cambiado desde que el archivo de instantánea se actualizó por última vez. El archivo de instantánea se actualiza automáticamente después de cada copia de seguridad incremental. Para restaurar, primero restauraría la copia de seguridad completa y luego aplicaría cada copia de seguridad incremental en el orden en que se crearon.
22. ¿Cómo puede usar 'lsof' para identificar el proceso que mantiene un archivo abierto?
Puede usar lsof
para identificar el proceso que mantiene un archivo abierto especificando la ruta del archivo como argumento. Por ejemplo, para encontrar el proceso que mantiene /path/to/your/file.txt
abierto, ejecutaría lsof /path/to/your/file.txt
. La salida mostrará el ID del proceso (PID), el usuario y otra información relevante sobre el proceso que usa el archivo.
La salida de lsof
incluye columnas que le indican qué tipo de acceso tiene el proceso al archivo (lectura, escritura, etc.). El comando devuelve mucha información para cada proceso que mantiene el archivo, por lo que se puede filtrar fácilmente usando awk
o grep
. Por ejemplo, lsof /path/to/your/file.txt | awk '{print $2}'
devolverá solo el PID.
23. Explique cómo usar el comando 'locate' para encontrar archivos rápidamente por nombre y cómo actualizar la base de datos de locate.
El comando locate
encuentra rápidamente archivos por nombre buscando en una base de datos preconstruida. Para usarlo, simplemente escriba locate <nombre_de_archivo>
(por ejemplo, locate myfile.txt
). Esto es mucho más rápido que find
porque busca en la base de datos en lugar de en todo el sistema de archivos en tiempo real.
La base de datos no se actualiza automáticamente. Para actualizar la base de datos locate
, necesita ejecutar el comando updatedb
como usuario privilegiado (generalmente con sudo updatedb
). Este comando rastrea el sistema de archivos y reconstruye la base de datos. Típicamente está programado para ejecutarse regularmente (por ejemplo, diariamente) a través de cron o temporizadores systemd. La frecuencia de las actualizaciones depende de la frecuencia con la que cambie su sistema de archivos.
24. Describa cómo configurar una interfaz de red utilizando herramientas de línea de comandos.
Para configurar una interfaz de red a través de la línea de comandos, generalmente utilizará herramientas como ifconfig
o ip
. Primero, identifique el nombre de la interfaz (por ejemplo, eth0
, wlan0
) utilizando ifconfig -a
o ip link
. Luego, utilice comandos para establecer la dirección IP, la máscara de red y la puerta de enlace.
Por ejemplo, utilizando ifconfig
: sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
y sudo route add default gw 192.168.1.1
. Con ip
: sudo ip addr add 192.168.1.10/24 dev eth0
, sudo ip link set eth0 up
y sudo ip route add default via 192.168.1.1
. También es posible que deba configurar la configuración de DNS editando /etc/resolv.conf
o los archivos de configuración de red en /etc/network/interfaces
(Debian/Ubuntu) o /etc/sysconfig/network-scripts/
(RedHat/CentOS).
25. ¿Cómo se cambia el valor de umask predeterminado para archivos y directorios nuevos?
El valor de umask predeterminado se puede cambiar de varias maneras. Para un usuario específico, el umask se puede establecer en el archivo de configuración del shell del usuario, como .bashrc
o .zshrc
. Agregue una línea como umask 022
para establecer el umask deseado. Este cambio solo afectará a los nuevos shells iniciados por ese usuario.
Para un cambio en todo el sistema que afecta a todos los usuarios, el umask se puede establecer en un archivo de configuración del sistema. El archivo específico depende del sistema, pero las ubicaciones comunes incluyen /etc/profile
, /etc/bash.bashrc
o /etc/login.defs
. La modificación de estos archivos requiere privilegios de root. Tenga cuidado al modificar las configuraciones de todo el sistema, ya que la configuración incorrecta puede causar problemas de seguridad. Por ejemplo, para establecer umask en 027 para todos los usuarios, agregue o modifique la línea umask
dentro del archivo de configuración apropiado a umask 027
.
26. Explique cómo usar 'screen' o 'tmux' para administrar múltiples sesiones de terminal.
screen
y tmux
son multiplexores de terminal que le permiten administrar múltiples sesiones de terminal dentro de una sola ventana. Son particularmente útiles para ejecutar procesos de larga duración, separar y volver a adjuntar a las sesiones y trabajar en múltiples tareas simultáneamente.
Para usar screen
, normalmente inicia una nueva sesión con screen
. Luego puede crear nuevas ventanas dentro de la sesión usando Ctrl+a c
. Cambie entre ventanas usando Ctrl+a n
(siguiente) o Ctrl+a p
(anterior). Para separarse de la sesión (dejándola en ejecución en segundo plano), use Ctrl+a d
. Puede volver a adjuntarse a la sesión más tarde con screen -r
. tmux
funciona de manera similar, pero usa un prefijo de comando diferente (generalmente Ctrl+b
). Inicie una sesión tmux
con tmux new -s <nombre_sesión>
. Cree nuevas ventanas con Ctrl+b c
, cambie con Ctrl+b n
o Ctrl+b p
, separe con Ctrl+b d
y vuelva a adjuntar con tmux attach -t <nombre_sesión>
.
27. Describe cómo encontrar y matar un proceso por nombre.
Para encontrar y matar un proceso por nombre, puedes usar herramientas de línea de comandos. Primero, usa ps
(o tasklist
en Windows) para listar los procesos y grep
(o findstr
en Windows) para filtrar por nombre. Por ejemplo, en Linux/macOS, usa ps aux | grep nombre_del_proceso
para encontrar el PID. Una vez que tienes el PID, puedes usar el comando kill
(o taskkill
en Windows) para terminar el proceso, por ejemplo kill PID
(o taskkill /PID PID /F
en Windows).
Alternativamente, los lenguajes de programación a menudo ofrecen formas de interactuar con el sistema operativo para lograr lo mismo. Por ejemplo, en Python, podrías usar la biblioteca psutil
para encontrar procesos por nombre y terminarlos. Una ilustración básica:
import psutil for proc in psutil.process_iter(['pid', 'name']): if 'nombre_del_proceso' in proc.info['name']: pid = proc.info['pid'] proc = psutil.Process(pid) proc.terminate() print(f"Proceso con PID {pid} terminado.")
28. ¿Cómo puedes comparar dos archivos de texto e identificar las diferencias entre ellos?
Puedes comparar dos archivos de texto e identificar las diferencias utilizando diversos métodos, incluyendo herramientas de línea de comandos, software dedicado o lenguajes de programación. Un enfoque común es usar el comando diff
en sistemas tipo Unix o Compare-Object
en PowerShell. Estas herramientas resaltan adiciones, eliminaciones y modificaciones entre los archivos.
Para la comparación programática, muchos lenguajes ofrecen bibliotecas para leer archivos línea por línea y compararlos. Por ejemplo, en Python, puedes leer ambos archivos en listas de cadenas y luego iterar a través de las listas, comparando elementos y notando cualquier discrepancia. Aquí hay un ejemplo simple:
file1_lines = open("file1.txt", 'r').readlines() file2_lines = open("file2.txt", 'r').readlines() for i in range(min(len(file1_lines), len(file2_lines))): if file1_lines[i] != file2_lines[i]: print(f"Diferencia en la línea {i+1}:") print(f"Archivo1: {file1_lines[i].strip()}") print(f"Archivo2: {file2_lines[i].strip()}")
Preguntas de la entrevista sobre comandos de Linux para experimentados
1. ¿Cómo puedes identificar los archivos que han sido modificados en las últimas 24 horas, pero excluyendo archivos en directorios específicos como /tmp?
Para identificar los archivos modificados en las últimas 24 horas, excluyendo directorios específicos como /tmp
, puedes usar el comando find
en sistemas tipo Unix. El comando sería similar a:
find . -not -path "/tmp" -type f -mtime -1
Este comando busca en el directorio actual (.
) pero excluye cualquier ruta que contenga /tmp
. -type f
asegura que solo se listen archivos. -mtime -1
filtra los archivos modificados en las últimas 24 horas (1 día). Puede ajustar la ruta si está buscando archivos en otros directorios.
2. Explique cómo diagnosticaría el alto uso de CPU en un servidor Linux, centrándose en la identificación de los procesos específicos que causan el problema.
Para diagnosticar el alto uso de CPU en un servidor Linux, comenzaría por usar top
o htop
. Estos comandos proporcionan una vista en tiempo real de los procesos del sistema, ordenados por uso de CPU de forma predeterminada. La salida mostrará los procesos que consumen la mayor cantidad de CPU. Anotaría el PID (ID de proceso) de los principales consumidores de CPU. Una vez que tenga el(los) PID, puedo usar comandos como ps -aux | grep <PID>
o ps -p <PID> -o %cpu,%mem,cmd
para obtener información más detallada sobre el proceso, incluido el usuario que lo ejecuta, su comando, el uso de CPU y memoria. Además, strace -p <PID>
puede ser útil para ver las llamadas al sistema que el proceso está haciendo, lo que puede revelar la causa, como E/S de archivos o actividad de red excesivas. Otro enfoque es usar pidstat -p <PID> 1
, que proporciona estadísticas de uso de CPU por proceso cada 1 segundo.
Si el proceso es una aplicación Java, herramientas como jstack <PID>
o un perfilador como JProfiler o VisualVM son útiles para analizar la actividad de los hilos e identificar los métodos que consumen mucha CPU. Para otros lenguajes, podrían estar disponibles herramientas de perfilado similares (por ejemplo, para Python, puede usar cProfile
). Si el alto uso de la CPU es intermitente, herramientas como perf
pueden usarse para muestrear eventos en todo el sistema e identificar puntos críticos en el código.
3. Describa su proceso para recuperar datos de un sistema de archivos ext4 corrupto.
La recuperación de datos de un sistema de archivos ext4 corrupto implica varios pasos. Primero, intentaría montar el sistema de archivos en modo de solo lectura para evitar daños mayores. Si eso falla, fsck.ext4
es mi herramienta principal, ejecutándola con opciones como -y
(para corregir errores automáticamente) y -v
(para obtener una salida detallada). Es crucial trabajar en una imagen de respaldo de la partición para evitar empeorar la situación. Antes de ejecutar fsck
, crearía una copia de la partición usando dd
.
Si fsck
no recupera completamente los datos, entonces exploraría herramientas como testdisk
y photorec
para identificar y recuperar archivos perdidos basándome en los encabezados de los archivos, incluso si la estructura de directorios está dañada. debugfs
también es útil para la inspección y reparación manual de los metadatos del sistema de archivos en situaciones avanzadas.
4. ¿Cómo configurarías un trabajo cron para ejecutar un script cada 15 minutos, solo los días laborables, y registrar la salida en un archivo específico?
Para programar un trabajo cron que ejecute un script cada 15 minutos, solo los días laborables, y registre la salida en un archivo específico, editarías el crontab usando el comando crontab -e
. Luego agrega una línea similar a esta:
*/15 * * * 1-5 /ruta/a/tu/script.sh >> /ruta/a/tu/archivo_de_registro.log 2>&1
Esta línea hace lo siguiente:
*/15 * * * 1-5
: Especifica la programación.*/15
significa cada 15 minutos.1-5
representa de lunes a viernes (días laborables)./ruta/a/tu/script.sh
: Es la ruta completa al script que deseas ejecutar.>> /ruta/a/tu/archivo_de_registro.log 2>&1
: Redirige tanto la salida estándar (stdout) como el error estándar (stderr) al archivo de registro especificado.>>
agrega al archivo. Si deseas sobrescribir el archivo de registro cada vez que se ejecuta el script, usa>
en lugar de>>
.
5. ¿Puedes detallar los pasos involucrados en la creación y configuración de una matriz RAID en un sistema Linux?
Crear y configurar una matriz RAID en Linux normalmente implica estos pasos: Primero, instale la utilidad mdadm
, que se utiliza para administrar matrices RAID. Esto generalmente se hace a través de sudo apt-get install mdadm
(Debian/Ubuntu) o sudo yum install mdadm
(CentOS/RHEL). A continuación, identifique los discos que utilizará para la matriz usando comandos como lsblk
. Luego, cree la matriz RAID usando mdadm --create /dev/md0 --level=<nivel_raid> --raid-devices=<número_de_dispositivos> <dispositivo1> <dispositivo2> ...
. Reemplace <nivel_raid>
con el nivel RAID deseado (por ejemplo, 1, 5, 10), <número_de_dispositivos>
con el número de discos, y <dispositivo1>
, <dispositivo2>
, etc., con los nombres reales de los dispositivos (por ejemplo, /dev/sdb, /dev/sdc). Después de crear la matriz, formatee con un sistema de archivos como ext4 usando mkfs.ext4 /dev/md0
. Cree un punto de montaje (por ejemplo, /mnt/raid
) y monte la matriz usando mount /dev/md0 /mnt/raid
.
Finalmente, para que la matriz sea persistente entre reinicios, guarde la configuración RAID usando mdadm --detail --scan >> /etc/mdadm/mdadm.conf
y actualice el initramfs con update-initramfs -u
. Además, agregue una entrada a /etc/fstab
para montar automáticamente la matriz RAID al inicio. La entrada sería similar a: /dev/md0 /mnt/raid ext4 defaults 0 0
. Recuerde reemplazar /dev/md0
y /mnt/raid
con su dispositivo y punto de montaje reales, y ext4
con su sistema de archivos seleccionado.
6. Explique cómo usaría systemd para administrar un servicio personalizado, incluyendo reinicios automáticos y gestión de dependencias.
Para administrar un servicio personalizado con systemd, crearía un archivo de unidad de servicio (por ejemplo, mi-servicio.service
) en /etc/systemd/system/
. Este archivo definiría el comportamiento del servicio, incluyendo el comando a ejecutar (ExecStart
), el contexto de usuario/grupo (User
, Group
), y la política de reinicio (Restart=on-failure
para reinicios automáticos en caso de fallo). La gestión de dependencias se gestiona mediante las directivas Requires=
y After=
. Por ejemplo, Requires=network.target
y After=network.target
asegurarían que el servicio se inicia solo después de que la red esté disponible. Para habilitar e iniciar el servicio, usaría systemctl enable mi-servicio.service
y systemctl start mi-servicio.service
. Finalmente, systemctl status mi-servicio.service
se usa para confirmar que el servicio se está ejecutando como se esperaba.
7. ¿Cómo puedes usar el comando 'lsof' para solucionar problemas de conectividad de red para una aplicación específica?
El comando lsof
puede ayudar a solucionar problemas de conectividad de red identificando qué archivos y sockets de red tiene abiertos una aplicación específica. Puedes usar lsof -i
para mostrar las conexiones de red y luego filtrar por el ID de proceso (PID) o el nombre del comando de la aplicación. Por ejemplo, lsof -i -p <PID>
o lsof -i | grep <nombre_de_la_aplicación>
. Esto te permite ver las conexiones TCP y UDP abiertas de la aplicación, los puertos a la escucha y las direcciones remotas con las que se está comunicando.
Al examinar la salida, puede determinar si la aplicación está escuchando en el puerto correcto, si está estableciendo conexiones exitosas con los servidores remotos esperados y si alguna conexión se encuentra en un estado problemático (por ejemplo, TIME_WAIT, CLOSE_WAIT). Esto ayuda a diagnosticar problemas como una configuración de puerto incorrecta, bloqueos de firewall o problemas con la lógica de comunicación de red de la aplicación. El uso de lsof +c 15
puede aumentar la información mostrada. Agregar -n
omite la resolución de nombres, lo que acelera la consulta.
8. Describa su enfoque para auditar la actividad del usuario en un sistema Linux con fines de seguridad.
Mi enfoque para auditar la actividad del usuario en un sistema Linux con fines de seguridad implica varias áreas clave. Principalmente, me concentro en aprovechar las capacidades de auditoría integradas del sistema utilizando auditd
. Esto implica configurar reglas de auditd
para monitorear las llamadas al sistema críticas relacionadas con el acceso a archivos, la ejecución de procesos y las conexiones de red. Estas reglas generan registros detallados que capturan información sobre las acciones del usuario. El análisis de estos registros, a menudo utilizando herramientas como ausearch
y aureport
, ayuda a identificar patrones sospechosos o actividades no autorizadas.
Además, examinaría los registros del sistema estándar como /var/log/auth.log
(o /var/log/secure
en algunos sistemas) para los intentos de autenticación (exitosos y fallidos), y /var/log/syslog
para eventos generales del sistema que podrían indicar problemas de seguridad. La implementación de la rotación de registros y la gestión centralizada de registros (por ejemplo, utilizando rsyslog
o syslog-ng
y enviando registros a un SIEM) también son cruciales para el análisis y la correlación a largo plazo. La revisión regular de las cuentas de usuario, los permisos y el acceso sudo también forma parte del proceso. Para un análisis más profundo, se pueden utilizar herramientas como osquery
para consultar el estado del sistema como si fuera una base de datos, lo que permite correlaciones más complejas.
9. ¿Cómo utiliza 'iptables' o 'firewalld' para configurar un firewall con reglas específicas para permitir y denegar el tráfico?
Tanto iptables
como firewalld
configuran los cortafuegos de Linux, pero tienen diferentes mecanismos. iptables
manipula directamente las tablas del kernel utilizando comandos como iptables -A INPUT -p tcp --dport 80 -j ACCEPT
(acepta el tráfico HTTP). firewalld
es un gestor de cortafuegos dinámico que proporciona una abstracción de nivel superior. Con firewalld
, usaría firewall-cmd --permanent --add-port=80/tcp --zone=public
(permite HTTP en la zona pública). Para denegar el tráfico, puede reemplazar ACCEPT
por DROP
o REJECT
en iptables
o utilizar la opción --add-rich-rule
con firewall-cmd
para definir condiciones complejas, como firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" drop'
(rechaza el tráfico de 192.168.1.10). Recuerde recargar firewalld
después de los cambios permanentes: firewall-cmd --reload
.
Las reglas básicas incluyen la especificación de la tabla (filter, nat, mangle), la cadena (INPUT, OUTPUT, FORWARD), el protocolo (tcp, udp, icmp), las direcciones IP de origen/destino y los puertos, y la acción de destino (ACCEPT, DROP, REJECT). Las reglas de iptables
se aplican en orden. firewalld
utiliza zonas (por ejemplo, public, private, trusted) para gestionar conjuntos de reglas basados en las conexiones de red. Comience siempre con una política de denegación predeterminada y permita selectivamente el tráfico necesario.
10. Explique cómo solucionaría los problemas de un servidor de base de datos de bajo rendimiento en Linux, centrándose en los cuellos de botella de E/S de disco.
Para solucionar problemas de un servidor de base de datos de bajo rendimiento en Linux, centrándome en los cuellos de botella de E/S de disco, comenzaría por identificar el problema y luego acotarlo. Usaría herramientas como iostat
, vmstat
e iotop
para monitorizar la E/S de disco. Específicamente, iostat -xz 1
mostrará estadísticas extendidas, incluyendo la utilización (%util
) y el tiempo de servicio (await
), ayudando a determinar si los discos están saturados. Los valores altos de %util
y await
indican un posible cuello de botella de E/S.
A continuación, investigaría los procesos específicos que consumen la mayor parte de la E/S utilizando iotop
. Si el proceso de la base de datos es el culpable, examinaría las consultas y operaciones de la base de datos que se están realizando. Analizar los registros de consultas lentas o usar herramientas de monitorización de rendimiento específicas de la base de datos puede ayudar a identificar consultas u operaciones ineficientes que están generando una E/S de disco excesiva. Las soluciones podrían implicar la optimización de consultas, la indexación o incluso la actualización del sistema de almacenamiento a unidades más rápidas o una configuración RAID.
11. Describe cómo configurarías y usarías las claves SSH para la autenticación sin contraseña, y qué medidas de seguridad implementarías para proteger las claves.
Para configurar las claves SSH para la autenticación sin contraseña, primero generaría un par de claves usando ssh-keygen
en mi máquina local. Luego copiaría la clave pública (por ejemplo, ~/.ssh/id_rsa.pub
) al archivo ~/.ssh/authorized_keys
del servidor remoto para el usuario con el que quiero iniciar sesión. Esto permite la autenticación sin contraseña. Para proteger las claves SSH, implementaría varias medidas de seguridad:
- Restringir los permisos de las claves: Asegúrese de que el directorio
.ssh
tenga permisos700
y el archivoauthorized_keys
tenga permisos600
. - Usar una frase de contraseña segura: Al generar el par de claves, use una frase de contraseña segura y única.
- Deshabilitar la autenticación por contraseña: En el servidor, deshabilite la autentación por contraseña en el archivo
/etc/ssh/sshd_config
estableciendoPasswordAuthentication no
yChallengeResponseAuthentication no
y reiniciando el servicio sshd. - Rotación de claves: Rote regularmente las claves SSH para limitar el impacto de una clave comprometida.
- Almacenar la clave privada de forma segura: Almacene la clave privada con los permisos adecuados del sistema de archivos y considere usar un contenedor cifrado si la clave se almacenará a largo plazo sin protección de frase de contraseña.
- Usar el reenvío del agente SSH con precaución: Al usar el reenvío del agente SSH, tenga en cuenta los posibles riesgos de seguridad si el servidor remoto se ve comprometido. El reenvío del agente puede permitir que el servidor comprometido acceda a más recursos con la autenticación del usuario de origen.
- Implementar MFA: Integre la autenticación multifactor (MFA) usando una llave de hardware o una aplicación de autenticación como una capa adicional de protección.
12. ¿Cómo usarías el comando 'strace' para depurar un programa que se está bloqueando inesperadamente?
Para depurar un programa que se bloquea con strace
, comenzaría ejecutando strace <nombre_del_programa>
para observar las llamadas al sistema que se realizan antes del bloqueo. Redirigiría la salida a un archivo (por ejemplo, strace -o traza.txt <nombre_del_programa>
) para facilitar el análisis, especialmente si el programa produce mucha salida. Después del bloqueo, examinaría el final del archivo traza.txt
para identificar las últimas llamadas al sistema realizadas. Estas a menudo pueden indicar la causa del bloqueo, como:
- Fallos de segmentación: busque llamadas relacionadas con el acceso a la memoria (por ejemplo,
read
,write
,mmap
) que podrían estar accediendo a direcciones de memoria no válidas. - Problemas con archivos: examine llamadas como
open
,read
,write
,close
en busca de errores relacionados con archivos. - Manejo de señales: busque llamadas relacionadas con el manejo de señales (por ejemplo,
sigaction
,kill
) que podrían estar causando la terminación del programa.
Al analizar las últimas llamadas al sistema, puedo obtener información valiosa sobre el comportamiento del programa que conduce al bloqueo e identificar posibles áreas de preocupación en el código. Agregar -f
puede ser útil para rastrear procesos secundarios y -T
puede proporcionar el tiempo invertido en cada llamada al sistema para comprender problemas de rendimiento o temporización. Por ejemplo, si una llamada write
falla con EPIPE
, puede indicar una tubería rota que condujo al bloqueo.
13. Explica cómo usar los espacios de nombres (namespaces) para crear entornos aislados para ejecutar aplicaciones, y cuáles son los beneficios?
Los espacios de nombres (namespaces) ofrecen una forma de aislar recursos para los procesos, creando entornos separados como si los procesos se ejecutaran en sistemas distintos. Este aislamiento incluye IDs de proceso (PID), interfaces de red, puntos de montaje, comunicación entre procesos (IPC), nombre de host e IDs de usuario. El uso de espacios de nombres implica llamadas al sistema como clone()
con banderas específicas (por ejemplo, CLONE_NEWPID
, CLONE_NEWNET
) o utilidades como unshare
.
Los beneficios incluyen una mayor seguridad al limitar el impacto de las aplicaciones comprometidas, una mejor gestión de recursos al evitar la interferencia entre aplicaciones y una implementación y prueba simplificadas utilizando tecnologías de contenedorización como Docker (que depende en gran medida de los espacios de nombres). Los contenedores, en efecto, son procesos que se ejecutan dentro de un conjunto de espacios de nombres.
14. ¿Cómo se realizaría una copia de seguridad y restauración de un sistema Linux completo, incluyendo el gestor de arranque y todas las particiones?
Para hacer una copia de seguridad de un sistema Linux completo, incluyendo el gestor de arranque y todas las particiones, usaría dd
o partclone
. dd
puede crear una imagen completa de todo el disco: dd if=/dev/sda of=/ruta/a/respaldo.img bs=4M status=progress
. Alternativamente, partclone
puede hacer una copia de seguridad de particiones específicas, ahorrando espacio al solo hacer copia de seguridad de los bloques utilizados: partclone.ext4 -c -s /dev/sda1 -o /ruta/a/sda1.img
. Para el gestor de arranque, hacer una copia de seguridad de la partición MBR/EFI es crucial. Para EFI dd if=/dev/sda1 of=/ruta/a/efi.img bs=4M count=1
, para MBR dd if=/dev/sda of=/ruta/a/mbr.img bs=512 count=1
.
Para restaurar, arrancaría desde un entorno vivo. Para dd
, invertiría el comando: dd if=/ruta/a/respaldo.img of=/dev/sda bs=4M status=progress
. Para partclone
, usaría partclone.ext4 -r -s /ruta/a/sda1.img -o /dev/sda1
. Restaurar el gestor de arranque depende de si es EFI o MBR. Para MBR, dd if=/ruta/a/mbr.img of=/dev/sda bs=512 count=1
. Para EFI, copiaría los archivos de respaldo a la partición EFI después de montarla. Tenga en cuenta que restaurar con dd
sobrescribirá todo el disco, incluyendo las particiones, por lo que asegurarse de que está apuntando al disco correcto es vital. También use fdisk
o gdisk
para recrear la tabla de particiones si es necesario antes de restaurar los datos de la partición.
15. Describa cómo monitorearía el estado y el rendimiento de un servidor Linux utilizando herramientas como 'sar' o 'vmstat'.
Para monitorear la salud y el rendimiento de un servidor Linux usando sar
y vmstat
, me enfocaría en métricas clave. vmstat
proporciona una visión general rápida del uso de la CPU (usuario, sistema, inactivo), el uso de la memoria (libre, búfer, caché), la actividad de intercambio y la E/S. Prestaría mucha atención al alto uso de la CPU (especialmente el tiempo del sistema), la poca memoria libre, el intercambio excesivo y los altos tiempos de espera de E/S como indicadores de posibles problemas. sar
, por otro lado, ofrece datos históricos y una vista más granular. Usando sar
, buscaría tendencias a lo largo del tiempo, usando opciones como -u
para la utilización de la CPU, -r
para las estadísticas de memoria, -b
para la E/S y -n TCP, ETCP
para las estadísticas de red. Configurarí sar
para recopilar datos regularmente, lo que me permite analizar patrones de rendimiento e identificar cuellos de botella que podrían no ser evidentes de inmediato con la instantánea en tiempo real de vmstat
. La combinación de comprobaciones rápidas de vmstat y datos de sar con tendencias es útil para la monitorización integral del servidor.
16. Explique cómo usaría el comando 'tcpdump' para capturar y analizar el tráfico de red con fines de resolución de problemas.
Para capturar tráfico de red con tcpdump
, comenzaría con un comando básico como tcpdump -i <interfaz>
. Esto captura todo el tráfico en la interfaz especificada. Por ejemplo, tcpdump -i eth0
captura el tráfico en la interfaz eth0. Para filtrar, usaría expresiones como tcpdump port 80
para capturar el tráfico HTTP, o tcpdump src host 192.168.1.100
para capturar el tráfico desde una dirección IP específica. También puedo guardar el tráfico capturado en un archivo usando tcpdump -w <nombre_archivo.pcap> -i <interfaz>
.
Para el análisis, usaría herramientas como Wireshark para abrir el archivo .pcap
o usaría tcpdump
con la opción de lectura para analizar la salida en vivo en la terminal usando opciones como -r <nombre_de_archivo.pcap>
o analizaré el tráfico capturado directamente usando las opciones de filtrado de tcpdump
. Buscaría patrones, errores o tráfico inesperado. Por ejemplo, puedo filtrar por retransmisiones o restablecimientos TCP para diagnosticar problemas de conexión. Además, analizar los tamaños y tiempos de los paquetes puede ayudar a identificar cuellos de botella de ancho de banda o problemas de latencia. Específicamente, uso -nn
para evitar búsquedas de DNS, lo que acelera el análisis, y -v
o -vv
para obtener una salida más detallada.
17. ¿Cómo configuraría un proxy inverso usando Nginx o Apache para mejorar el rendimiento y la seguridad de una aplicación web?
Para configurar un proxy inverso con Nginx o Apache, lo configuraría para que se encuentre delante de su servidor de aplicaciones web. Para el rendimiento, esto permite que el proxy inverso almacene en caché contenido estático como imágenes, CSS y JavaScript, reduciendo la carga en el servidor de aplicaciones y acelerando los tiempos de respuesta para los usuarios. El proxy también puede manejar el cifrado SSL/TLS, descargando este procesamiento del servidor de aplicaciones.
Por seguridad, el proxy inverso actúa como un escudo, ocultando la dirección IP y la estructura interna del servidor de aplicaciones del mundo exterior. Esto dificulta que los atacantes apunten directamente al servidor de aplicaciones. También puede configurar el proxy inverso para implementar medidas de seguridad como la limitación de velocidad, las reglas del firewall de aplicaciones web (WAF) y la protección contra ataques DDoS. Aquí hay un ejemplo de configuración simple de Nginx:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server_ip:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
18. Describa su experiencia con los contenedores de Linux y explique la diferencia entre Docker y otras tecnologías de contenedorización.
Tengo experiencia en el uso de contenedores de Linux, principalmente con Docker. He usado Docker para contener aplicaciones, gestionar dependencias y crear entornos portátiles para el desarrollo, las pruebas y el despliegue. Estoy familiarizado con la escritura de Dockerfiles, la construcción de imágenes, la gestión de contenedores y su orquestación utilizando herramientas como Docker Compose.
La principal diferencia entre Docker y otras tecnologías de contenedorización radica en el ecosistema integral de Docker. Si bien otras tecnologías como LXC (Linux Containers) proporcionan las capacidades de contenedorización subyacentes, Docker ofrece una interfaz fácil de usar, un rico conjunto de herramientas para la gestión de imágenes, redes y almacenamiento, y una gran comunidad y registro público (Docker Hub). Docker simplifica todo el ciclo de vida del contenedor, desde la construcción y el intercambio de imágenes hasta el despliegue y la gestión de contenedores, haciéndolo más accesible y eficiente para los desarrolladores y los equipos de operaciones. Otras tecnologías de contenedores como rkt (ahora en desuso) y containerd se centran principalmente en el tiempo de ejecución del contenedor, dejando otros aspectos del ciclo de vida del contenedor para que sean manejados por otras herramientas. El enfoque integrado de Docker ha contribuido a su amplia adopción.
19. ¿Cómo se puede usar el comando 'awk' para procesar archivos de registro y extraer información específica basada en patrones?
Awk es una herramienta poderosa para procesar archivos de registro buscando patrones y extrayendo datos relevantes. Puedes usarla para filtrar líneas basadas en criterios específicos, extraer campos y formatear la salida. Por ejemplo, para extraer todas las líneas que contienen la palabra 'error' de un archivo de registro, podrías usar: awk '/error/' logfile.txt
. Para imprimir el primer campo (separado por espacios) de cada línea, usa awk '{print $1}' logfile.txt
.
Awk también puede manejar patrones y acciones más complejas. Para extraer información específica basada en patrones más complejos e imprimirlos en un formato personalizado, puedes combinar expresiones regulares y sentencias print. Por ejemplo, awk '/error/ {print "Timestamp: " $1 ", Message: " $NF}' logfile.txt
encontrará líneas que contienen "error", e imprimirá el primer campo como una marca de tiempo y el último campo como el mensaje. También puedes redirigir la salida a otro archivo, realizar cálculos y definir funciones dentro de los scripts awk para un análisis de registro más sofisticado.
20. Explique cómo gestionar y solucionar problemas de resolución de DNS en un servidor Linux.
Para gestionar y solucionar problemas de resolución de DNS en un servidor Linux, comience por verificar /etc/resolv.conf
para asegurarse de que las direcciones correctas del servidor DNS estén enumeradas. Use los comandos nslookup
, dig
o host
para consultar los servidores DNS y verificar la resolución de nombres para dominios específicos. Por ejemplo, nslookup google.com
o dig google.com
. Estas herramientas ayudan a identificar si el servidor puede contactar los servidores DNS y si los servidores DNS están devolviendo las direcciones IP correctas.
Los pasos comunes de solución de problemas incluyen vaciar la caché DNS local (systemd-resolve --flush-caches
o /etc/init.d/nscd restart
), verificar la conectividad de red a los servidores DNS usando ping
y verificar las reglas del cortafuegos que podrían estar bloqueando el tráfico DNS (puerto 53). Si el problema persiste, investigue la configuración del servidor DNS en sí para detectar errores o interrupciones. Examinar los registros del sistema (/var/log/syslog
o /var/log/messages
) también puede proporcionar pistas valiosas sobre fallos de resolución de DNS.
21. ¿Cómo configuraría un sistema Linux para montar automáticamente un recurso compartido de red al inicio?
Para montar automáticamente un recurso compartido de red al inicio en Linux, normalmente modificaría el archivo /etc/fstab
. Agregue una línea que especifique la ubicación del recurso compartido, el punto de montaje, el tipo de sistema de archivos y las opciones de montaje. Por ejemplo, para montar un recurso compartido de Samba, podría agregar una línea como:
//server/share /mnt/share cifs credentials=/path/to/credentials.txt,uid=1000,gid=1000 0 0
Reemplace //server/share
con la dirección del recurso compartido de red, /mnt/share
con el punto de montaje deseado y /path/to/credentials.txt
con un archivo que contenga el nombre de usuario y la contraseña. Puede usar uid
y gid
para establecer la propiedad de usuario y grupo del recurso compartido montado. El 0 0
al final controla si el sistema de archivos se volcará y se verificará al iniciar, establecerlos en 0 deshabilita estas funciones para este punto de montaje. Considere usar un archivo de credenciales por seguridad y asegúrese de que el directorio del punto de montaje exista.
22. Describa el proceso de configuración y gestión de SELinux o AppArmor para mejorar la seguridad del sistema.
SELinux y AppArmor son módulos de seguridad del kernel de Linux que mejoran la seguridad del sistema a través del control de acceso obligatorio (MAC). La configuración de SELinux generalmente implica instalar el paquete policycoreutils
y configurar el archivo /etc/selinux/config
para establecer el modo (enforcing, permissive o disabled). En el modo enforcing, SELinux deniega acciones que violan sus políticas. En el modo permissive, registra las violaciones pero permite las acciones. La gestión implica el uso de herramientas como semanage
para gestionar las políticas, chcon
para modificar los contextos de los archivos y audit2allow
para crear políticas personalizadas basadas en los registros de auditoría. La configuración de AppArmor generalmente implica instalar el paquete apparmor
y habilitar el servicio. Se crean perfiles (o vienen preinstalados) para las aplicaciones, definiendo sus capacidades permitidas y el acceso a los recursos. Herramientas como aa-genprof
ayudan a crear perfiles monitoreando el comportamiento de las aplicaciones. Las políticas de AppArmor se gestionan a través de archivos en /etc/apparmor.d/
, y herramientas como apparmor_status
y aa-enforce
se utilizan para ver y aplicar los perfiles. La gestión de AppArmor también implica el uso de aa-logprof
para analizar los registros y actualizar los perfiles en función del comportamiento observado, lo que es una forma de crear perfiles más seguros para cada aplicación. La desactivación de AppArmor o SELinux generalmente no se recomienda, pero se puede hacer cambiando los archivos de configuración para establecer el modo apropiado en disabled.
Comandos Linux MCQ
Pregunta 1.
¿Qué opción del comando find
se utiliza para localizar archivos que han sido modificados en las últimas 24 horas?
Opciones:
Opciones:
-mmin
-mtime
-atime
-ctime
Pregunta 2.
¿Qué comando awk
imprimirá las líneas del archivo data.txt
donde el valor de la tercera columna es mayor que 100?
Opciones:
awk '$3 > 100 { print $0 }' data.txt
awk '$3 -gt 100 { print $0 }' data.txt
awk 'column3 > 100 { print }' data.txt
awk '{ if ($3 > 100) print $3 }' data.txt
Pregunta 3.
¿Qué comando enumera todos los archivos en el directorio actual, excluyendo los directorios?
Opciones:
ls -l | grep ^-
ls -l | grep ^d
ls -l
ls -F
Pregunta 4.
¿Qué comando se utiliza para mostrar el uso del espacio en disco de un directorio, incluyendo el tamaño de todos sus subdirectorios?
Opciones:
du -s /path/to/directory
df /path/to/directory
du -sh /path/to/directory
du -h /path/to/directory
Pregunta 5.
¿Qué comando se puede usar para encontrar el ID de proceso (PID) de un proceso en ejecución dado su nombre?
Opciones:
ps -ef | grep <process_name>
kill <process_name>
locate <process_name>
find / -name <process_name>
Pregunta 6.
¿Qué comando chmod
establece recursivamente los permisos de un directorio y todos sus subdirectorios y archivos a leer, escribir y ejecutar para el propietario; leer y ejecutar para el grupo; y leer y ejecutar para otros?
Opciones:
chmod 755 directorio
chmod -R 755 directorio
chmod +x directorio
chmod a+rwx directorio
Pregunta 7.
¿Qué comando encontrará y eliminará todos los directorios vacíos dentro del directorio actual y sus subdirectorios?
Opciones:
find . -type d -empty -exec rmdir {} \;
rm -rf *
find . -name '*'
ls -l | grep '^d'
Pregunta 8.
¿Qué comando mostrará todos los archivos en el directorio actual, ordenados por tiempo de modificación (el más reciente primero)?
Opciones:
Opciones:
ls -t
ls -lht
ls -lt | sort
ls -lr
Pregunta 9.
¿Qué opción de comando find
se utiliza para localizar archivos con permisos específicos, como archivos con exactamente permisos 755
?
Opciones:
Opciones:
-perm 755
-type d -perm 755
-perm +755
-exec chmod 755 {}
Pregunta 10.
¿Qué comando usaría para crear un archivo comprimido de un directorio llamado my_directory
en un archivo llamado my_archive.tar.gz
?
Opciones:
tar -czvf my_archive.tar.gz my_directory
tar -xzvf my_archive.tar.gz my_directory
gzip my_archive.tar.gz my_directory
tar -cvf my_archive.tar.gz my_directory
Pregunta 11.
¿Qué opción del comando grep
usaría para mostrar líneas que no coinciden con un patrón especificado en un archivo?
Opciones:
`-v`
`-i`
`-c`
`-n`
Pregunta 12.
¿Qué comando se puede usar para mostrar las primeras 10 líneas de múltiples archivos llamados file1.txt
, file2.txt
y file3.txt
?
Opciones:
head file1.txt file2.txt file3.txt | tail -n 10
head -n 10 file1.txt file2.txt file3.txt
cat file1.txt file2.txt file3.txt | head -n 10
tail -n 10 file1.txt file2.txt file3.txt
Pregunta 13.
¿Qué comando proporciona una vista dinámica en tiempo real de un sistema en ejecución, mostrando información sobre procesos, uso de CPU, uso de memoria y más?
Opciones:
ps
top
df
grep
Pregunta 14.
¿Qué comando se utiliza para mostrar la última línea de un archivo?
Opciones:
head -n 1 file.txt
tail -n 1 file.txt
cat file.txt | head -n 1
cat file.txt | tail -n 1
Pregunta 15.
¿Qué comando se utiliza para copiar archivos de forma segura entre un host local y remoto, o entre dos hosts remotos?
Opciones:
scp
ftp
telnet
rcp
Pregunta 16.
¿Qué comando se utiliza para mostrar las diferencias entre dos archivos?
Opciones:
cmp
diff
comm
grep
¿Qué comando se puede usar para contar el número de líneas, palabras y caracteres en un archivo?
Opciones:
stat
wc
du
head
Pregunta 18.
¿Qué comando se utiliza para mostrar todas las variables de entorno actualmente definidas en un sistema Linux?
Opciones:
printenv
set
export
env
Pregunta 19.
¿Qué comando usaría para extraer el segundo campo de un archivo de valores separados por comas (CSV) llamado data.csv
e imprimirlo en la consola?
Opciones:
awk -F',' '{print $2}' data.csv
cut -d ',' -f 2 data.csv
sed 's/,/ /g' data.csv | awk '{print $2}'
grep '^([^,]*,){1}\([^,]*\).*$' data.csv
Pregunta 20.
¿Qué comando se utiliza para mostrar la ruta absoluta del directorio de trabajo actual?
Opciones:
pwd
ls -l
cd
echo $PATH
Pregunta 21.
¿Qué comando se utiliza para mostrar el árbol de procesos, mostrando las relaciones padre-hijo entre procesos?
Opciones:
ps -ef
top
pstree
kill -l
¿Qué comando se puede usar para encontrar todos los archivos en el directorio actual y sus subdirectorios que son mayores de 10 MB?
Opciones:
find . -size +10M
ls -l | grep '10M'
du -sh | grep '10M'
locate -s 10M
Pregunta 23.
¿Qué opción del comando ls
muestra el propietario y el grupo de un archivo?
Opciones:
`-l`
`-a`
`-t`
`-R`
Pregunta 24.
¿Qué comando usa sed
para reemplazar todas las apariciones de la palabra 'old' con 'new' en un archivo llamado 'data.txt' y guarda los cambios en el mismo lugar?
Opciones:
sed 's/old/new/g' data.txt > data.txt
sed -i 's/old/new/g' data.txt
sed 's/old/new/' data.txt
sed 's/old/new/g' data.txt
Pregunta 25.
¿Qué comando encontrará todos los archivos en el directorio actual y sus subdirectorios que se modificaron por última vez hace más de 7 días?
Opciones:
find . -mtime +7
find . -mtime 7
find . -atime +7
find . -mmin +7
¿Qué habilidades de comandos de Linux debería evaluar durante la fase de entrevista?
Evaluar las habilidades de comandos de Linux de un candidato en una sola entrevista puede ser un desafío. Es imposible cubrir todos los aspectos, pero centrarse en las competencias básicas proporciona información valiosa. Aquí están las habilidades clave que debe evaluar para asegurarse de que pueden navegar y administrar entornos Linux de manera efectiva.
Navegación básica y gestión de archivos
Evaluar estas habilidades a través de preguntas de opción múltiple (MCQ) puede filtrar rápidamente a los candidatos que carecen de conocimientos básicos. Una prueba de Linux en línea con MCQ relevantes ayuda a evaluar su comprensión práctica de la navegación y la gestión de archivos.
Para evaluar esto prácticamente, puede hacer preguntas de entrevista específicas.
¿Cómo navegaría al directorio /var/log
y enumeraría todos los archivos, incluidos los archivos ocultos, en un formato de listado largo?
Busque que el candidato use cd /var/log
seguido de ls -la
. Esto demuestra que entienden la navegación básica y la visualización de atributos de archivos.
Manipulación y procesamiento de texto
Las preguntas de opción múltiple (MCQ) centradas en grep
, sed
y awk
pueden evaluar la comprensión del candidato sobre los conceptos de manipulación de texto. La plataforma de Adaface ofrece una prueba de Linux con MCQ relevantes para evaluar estas habilidades de procesamiento de texto.
Haga preguntas que requieran el uso de estos comandos para resolver problemas del mundo real.
¿Cómo extraería todas las líneas que contienen la palabra 'error' de un archivo de registro llamado application.log
y contaría el número de ocurrencias?
El candidato debería usar grep error application.log | wc -l
. Esto indica su capacidad para buscar patrones y contar resultados.
Gestión de usuarios y permisos
Las preguntas de opción múltiple (MCQ) que cubren comandos de gestión de usuarios y permisos ayudan a evaluar esta habilidad crítica. Puede evaluar esta habilidad con una prueba de Linux utilizando preguntas que evalúan el conocimiento de chmod
, chown
y la gestión de usuarios.
Intente hacer preguntas que simulen escenarios de permisos del mundo real.
¿Cómo otorgaría permisos de lectura, escritura y ejecución al propietario, permisos de lectura y ejecución al grupo y sin permisos a otros para un archivo llamado script.sh
?
Busque el uso de chmod 750 script.sh
. Esto demuestra comprensión de la configuración de permisos.
Contrate al mejor talento de Linux con pruebas de habilidades y preguntas de entrevista dirigidas
Al contratar para roles que requieren experiencia en Linux, evaluar con precisión las habilidades de los candidatos es primordial. Asegúrese de que su próxima contratación posea las habilidades necesarias de la línea de comandos, el conocimiento de administración del sistema y las capacidades de scripting para el puesto.
Las pruebas de habilidades ofrecen un método simplificado y confiable para evaluar las capacidades de Linux de los candidatos. Considere utilizar nuestra Prueba en línea de Linux o Prueba de Bash de Linux para identificar a las personas calificadas.
Aprovechar las pruebas de habilidades le permite preseleccionar a los candidatos más prometedores para entrevistas en profundidad. Concéntrese en el tiempo de su entrevista en explorar su enfoque de resolución de problemas y experiencia basada en su rendimiento en la prueba.
¿Listo para encontrar a su próximo experto en Linux? Regístrese para una prueba gratuita en nuestra plataforma de evaluación y comience a evaluar a los candidatos hoy mismo. También puede explorar nuestros planes de precios para encontrar el que mejor se adapte a sus necesidades.
Prueba en línea de Linux
30 minutos | 12 MCQs
La prueba en línea de Linux utiliza MCQs basadas en escenarios para evaluar a los candidatos en su conocimiento del sistema operativo Linux, incluida su competencia en el uso de comandos de Linux, sistema de archivos, redes, scripting de shell y administración de Linux. La prueba tiene como objetivo evaluar la capacidad de un candidato para trabajar con el sistema operativo Linux de manera eficiente y efectiva y para diseñar y mantener sistemas basados en Linux.
[
Pruebe la prueba en línea de Linux
](https://www.adaface.com/assessment-test/linux-online-test)
Descargue la plantilla de preguntas de la entrevista de comandos de Linux en múltiples formatos
Preguntas frecuentes sobre las preguntas de la entrevista de comandos de Linux
Algunos comandos fundamentales de Linux incluyen ls
(listar archivos), cd
(cambiar directorio), mkdir
(crear directorio), rm
(eliminar archivo o directorio), cp
(copiar archivo), mv
(mover archivo), pwd
(imprimir directorio de trabajo), man
(páginas del manual).
Puedes usar el comando df -h
para verificar el uso del espacio en disco en un formato legible por humanos. Alternativamente, du -sh
muestra el uso del disco del directorio actual.
El comando find
se utiliza para localizar archivos y directorios. Por ejemplo, find /path/to/search -name filename
buscará un archivo llamado 'filename' a partir de la ruta especificada.
Normalmente hay tres tipos de usuarios: root (el administrador), usuarios regulares y usuarios del sistema (utilizados por el sistema para ejecutar servicios). Cada uno tiene diferentes niveles de permisos.
Los permisos de usuario se pueden gestionar utilizando el comando chmod
(cambiar modo) para modificar los permisos de archivo y el comando chown
(cambiar propietario) para cambiar la propiedad del archivo.
Puedes usar el comando kill
seguido del ID del proceso (PID) para finalizar un proceso. Puedes encontrar el PID usando comandos como ps
, top
o pgrep
.
Next posts
- Plantillas de correo electrónico
- ¿Cómo contratar a un ingeniero de la nube de Azure: habilidades, consejos y una guía paso a paso?
- Cómo contratar a ingenieros de operaciones de aprendizaje automático (MLOps): Una guía completa
- Cómo contratar a un desarrollador de infraestructura de TI: consejos, conocimientos y una guía paso a paso
- Cómo Contratar a un Gerente de Cuentas de Ventas: Una Guía Paso a Paso para Reclutadores