Bueno, he estado haciendo pasantías en los juegos de Netease últimamente, así que parece que no he venido a escribir algo por un tiempo. . . El objetivo principal de venir a la pasantía de NetEase es saber qué está funcionando en la compañía de juegos. Después de todo, nunca antes había tocado a la compañía de juegos. . Todavía curioso. . .
Solía pensar que las compañías de juegos son muy altas, y el trabajo que hacen es interesante. . Parece que no debería ser así ahora, después de todo, la mayor parte del tiempo todavía debería estar escribiendo el código lógico del juego. . .
Muy extraño. . . Siento que aunque soy un interno en una compañía de juegos, sigo haciendo mis propias cosas. . . Porque desea desarrollar un sistema de monitoreo de servidor en Python, y hay casos en los que desea monitorear el ancho de banda de la red ocupado por un proceso específico. . . Um . Buscar Python no tiene cosas preparadas para hacer esto. . Y hay menos cosas que puedes usar. . .
Pero encontré algo similar. . . Nethogs. . . Un programa específicamente diseñado para monitorear el ancho de banda de cada proceso en Linux. . .
Así que miré directamente a la implementación de su código. . . El código no es mucho. . . Escrito en c ++. . . Y es muy simple. . . Esta parte del código no se menciona específicamente aquí. . . Vamos a hablar sobre el principio de implementación de funciones. . . .
Bueno, un directorio más importante: /proc
Bueno, de hecho, es un pseudo directorio, porque no existe en el sistema de archivos real, sino una ejecución El directorio creado en ese momento, y la información guardada también es información de tiempo de ejecución, como información de proceso, información de conexión de red o algo así. . .
Ok, ahora supongamos que tenemos un proceso cuyo PID es 7140, luego podemos ir al siguiente directorio:
/proc /7140 /fd
En realidad, mire el nombre aquí Es posible adivinar qué datos se almacenan en este directorio: el descriptor de archivo abierto por el proceso actual. . . Como se muestra a continuación:
Bueno, esto debería ser muy familiar. . . Un poco de comprensión de la programación de Linux a continuación debe saber que en el programa, nuestro socket o archivo abierto corresponde a un descriptor de archivo, luego el directorio anterior guardará los descriptores de archivo en nuestro programa. . Entonces estos son en realidad enlaces, y finalmente conectados a un inodo. . . Aquí podemos ver que nuestros dos zócalos corresponden a los dos inodos de 23045 y 23046. . . .
Entonces, ¿cómo encontramos la información específica de estos dos sockets? . . ?
Bueno, ingrese el siguiente comando en el terminal: cat /proc /net /tcp
La salida que podemos obtener es la siguiente:
Aquí está toda la máquina local actual construida. Información de la Tcp. . . Dirección IP, puerto 啥. . . Finalmente también podemos ver un proyecto: inodo. . . Ese es el enlace al que está asociado el inodo. . .
Debería poder asignar el descriptor de archivo del proceso que vio anteriormente con su información de enlace específica. . .
Está bien. . . A través del proceso anterior. . Podemos obtener información sobre todas las conexiones que un proceso ha establecido. . .
Entonces el siguiente paso es cómo calcular el tráfico de su red. . .
Bueno, el método utilizado por nethogs aquí es usar libcap para capturar paquetes y luego analizar los paquetes de red para calcular el tráfico de red de cada conexión. . .
(Bueno, el código fuente de nethogs utiliza directamente una gran cantidad de código)
Bueno, aquí no es específico para enumerar el código de implementación. .
Uso de c ++ y libcap para escribir una biblioteca de extensiones de linux para python. . . El código pasó a github. . . La dirección es la siguiente:
https://github.com/2225377fjs/processNet
Comprenda el proceso:? PID, PPID? Estado del proceso actual? Asignación de memoria? CPU y ti
1, necesita cargar o descargar, necesita usar los comandos rz y sz. Si no tiene estas dos he
de igual a igual en Linux Una VPN tradicional (como OpenVPN, PPTP) consiste en un servidor VPN y uno
Primero, el comando superior 1. Función El comando superior se usa para mostrar el proceso
Arranque del kernel de Linux para retener el gran resumen de métodos de memoria
El archivo de configuración de la variable de entorno de Ubuntu
Cómo obtener la dirección IP de la red pública en Linux
Control de acceso basado en Linux
Desarrollo de controlador de dispositivo PCI bajo Linux
Ubuntu restablece la contraseña de root
Cómo reiniciar lo más seguro después de que Linux se bloquee
Cómo crear una solución de administración de energía para los usuarios del sistema Win8
Herramientas lanzadas por Microsoft: Win7 /8.1 se puede actualizar directamente a Win10
Habilidades de control del mouse de la interfaz Win8
Win8 CP versión de IE no puede abrir la solución de página web
Recomendaciones de mejora lenta para el inicio /cierre del sistema Win7
Diagnósticos de estado de administración de energía para Win2k "Armas secretas"
Cómo abrir la función de centro de miembro de Win10 9879
Código de implementación de la tarea mysql de copia de seguridad de Liunx