Parte 3.1: Prepararse para la solución de problemas

Se aplica a:   .NET Core 2.1, .NET Core 3.1, .NET 5

Este artículo le ayuda a considerar el proceso de solución de problemas en su conjunto.

Requisitos previos

Al igual que en las partes anteriores,esta parte está estructurada para poner más énfasis en la teoría y las entidades de seguridad a seguir cuando empiece a solucionar problemas. No tiene requisitos previos. Sin embargo, debes tener los siguientes elementos ya configurados si has seguido todos los pasos de este aprendizaje hasta ahora:

  • Nginx tiene dos sitios web:
    • El primer sitio web escucha las solicitudes mediante el encabezado de host myfirstwebsite ( ) y enruta las solicitudes ASP.NET Core la aplicación de demostración que escucha en el puerto http://myfirstwebsite 5000.
    • El segundo sitio web escucha las solicitudes mediante el encabezado host buggyamb ( ) y enruta las solicitudes ASP.NET Core la segunda aplicación de ejemplo de errores que escucha en el puerto http://buggyamb 5001.
  • Ambas ASP.NET Core se ejecutan como servicios que se reinician automáticamente cuando se reinicia el servidor o las aplicaciones deja de responder o se produce un error.
  • Un firewall local de Linux está habilitado y configurado para permitir el tráfico SSH y HTTP.

Objetivo de esta parte

A medida que se prepara para solucionar problemas que podría experimentar si tiene la configuración que se describió anteriormente, esta parte proporciona instrucciones para obtener información sobre cómo ejecutar procesos en Linux.

¿Todo en Linux es un archivo?

Puede que haya escuchado la frase "todo en Linux es archivo". ¿Esta frase es realmente el caso? Aunque esta serie de artículos no se centra en la experiencia de Linux, el sistema operativo Linux está muy orientado a exponer todo a través del sistema de archivos. Esta parte tratará de profundizar en por qué es esto.

Según Wikipedia,Linux se basa en un sistema de archivos especial denominado procfs.

El sistema de archivos proc (procfs) es un sistema de archivos especial en sistemas operativos tipo Unix que presenta información sobre procesos y otra información del sistema en una estructura jerárquica de archivos. Esto proporciona un método más cómodo y estandarizado que los métodos de seguimiento tradicionales o el acceso directo a la memoria del kernel para acceder dinámicamente a los datos de proceso que se mantienen en el kernel. Normalmente, los datos se asignan a un punto de montaje denominado /proc en el momento del arranque. El sistema de archivos proc actúa como una interfaz para estructuras de datos internas en el kernel. Puede usar el archivo para obtener información sobre el sistema y cambiar ciertos parámetros del kernel en tiempo de ejecución (sysctl).

Por lo tanto, si es un superusuario en un equipo basado en Linux, puede obtener acceso a información sobre cada uno de los procesos en ejecución a través de un archivo del sistema de archivos. Si todo en Linux es un archivo,también lo es un proceso.

Puede recordar que hablamos brevemente de esto en partes anteriores de esta serie: un proceso se ve como un archivo en el directorio /proc/. Este directorio se define como un directorio especial aquí:

"Este directorio especial contiene todos los detalles sobre el sistema Linux, incluidos sus parámetros de kernel, procesos y configuración".

Si examina este directorio mediante el comando, verá varios ll /proc/ "archivos" y "carpetas". Por ejemplo, verá un "archivo" denominado /proc/meminfo . que, si ejecuta el comando, dará la siguiente información detallada acerca de las estadísticas de uso de cat /proc/meminfo memoria del servidor:

Captura de pantalla del comando cat meminfo.

Del mismo modo, si ejecuta el cat /proc/cpuinfo comando, verá la siguiente información del procesador del servidor:

Captura de pantalla del comando cat cpuinfo.

Si desea obtener información sobre la versión del sistema operativo Linux, puede usar cat /proc/version comandos:

Captura de pantalla del comando cat version.

Y así sucesivamente.

¿Es realmente un archivo un proceso?

En cuanto a los procesos, cada proceso en ejecución en el sistema Linux se mostrará como subdirectorio debajo de la carpeta y cada carpeta se denomina /proc/ como identificador de proceso:

Captura de pantalla del comando ll proc.

Si examina uno de los directorios de id. de proceso, verá otros archivos y carpetas. Para obtener parte de la siguiente información, debe usar el prefijo del comando mediante "sudo":

Captura de pantalla del comando sudo.

Examine uno cmdline de los procesos. Ejecute el comando sudo cat /proc/19933/cmdline. (El PID del proceso que elijas será diferente). El resultado será el siguiente. (Esta es la aplicación BuggyAmb que se instaló y configuró en la parte 2).

Captura de pantalla del comando sudo cat.

Por último, echemos un vistazo a las variables de entorno para el proceso de BuggyAmb ejecutando el sudo cat /proc/19933/environ comando. En una parte anterior, se le indicó que usara la ASPNETCORE_URLS variable de entorno. Esto se creó para indicar a la aplicación web que escuchara en el puerto 5001:

Captura de pantalla del comando sudo cat environ.

Con esta técnica del sistema de archivos, puede obtener mucha información sobre un proceso.

El comando ps

En este artículo no se detallarán detalles sobre este comando. Sin embargo, el comando merece ser mencionado aquí en la discusión de procesos porque es una de las formas más sencillas de generar una instantánea de los procesos actuales. Te recomendamos que abras la página "man" mediante el man ps comando y pruébala tú mismo.

Siguientes pasos

Parte 3.2: Administradores de tareas de Linux, top y htop

La siguiente parte examinará algunas herramientas y comandos importantes que puede usar para solucionar problemas.