Colección de citas famosas - Colección de firmas - Cómo comprobar la actividad IO de un proceso en Linux 00 Hola, LinuxHola, estaré encantado de responder a tu pregunta. La utilización de la CPU del servidor no es alta y la carga es relativamente alta. Verifique el IO. La IO del disco duro se puede obtener mediante el comando vmstat o iostat (o instalando dstat con yum), y la IO de red se puede obtener mediante el comando iftop. Pero no sé qué proceso usa un alto IO en el disco duro, por lo que no puedo encontrar los comandos relevantes mediante la búsqueda, por lo que tengo que escribir un script para el procesamiento estadístico. Este script pasó la prueba de python2.6 en CentOS6 (kernel 2.6 o superior). Ejecute el script directamente, recopile datos durante 3 segundos de forma predeterminada y muestre los tres procesos principales con mayor lectura y escritura. Si usa parámetros, puede usar el comando "python hip .py 453". El primer número es el número de segundos entre la lectura y la escritura de la recopilación de datos, el segundo número es el número de N procesos que leyeron y escribieron más y el tercer número es el número de veces que se ejecutó el script. Debido a que la sección de parámetros es relativamente simple, se deben escribir los tres parámetros. . #!/bin/python #-*-coding: utf-8-*-# nombre de archivo: ind _ high _ io _ proceso # revisión: 1.0 # fecha: 2013-3-8 # Autor: Simon Zhang # web: # # #endinitinfoimportosimportreimportsysimporttimefromstringimportstrip####sys_proc_path='/proc/'re_find_process_number='^\ d $ ' # # #via /proc/$PID/io # # # def recopilar _ info(): _ tmp = { } re _ buscar _ proceso _ dir = re . pila (re _ buscar _ proceso _ número) para inos listdir obtiene información de lectura y escritura read(). split(" "[1]# Leer información de io rw _ io = open(" s s/io " (sys _ proc _ path, I), " rb "). readlines() for _ info inrw _ io: cut _ info = strip(_ info). split(':') if strip(cut _ info[0]) = "read_bytes": read_io = int(strip(cut _ info[1])) if strip(cut _ info[0] ] ])= "write_bytes": write_io = int(strip(cut_info[1]))_tmp[I]= { "name": nombre_proceso, "read_bytes": read_io, "write_bytes": write_io } return _tmpdefmain(_sleep_time, _ ) dormir(_sleep_time).

Cómo comprobar la actividad IO de un proceso en Linux 00 Hola, LinuxHola, estaré encantado de responder a tu pregunta. La utilización de la CPU del servidor no es alta y la carga es relativamente alta. Verifique el IO. La IO del disco duro se puede obtener mediante el comando vmstat o iostat (o instalando dstat con yum), y la IO de red se puede obtener mediante el comando iftop. Pero no sé qué proceso usa un alto IO en el disco duro, por lo que no puedo encontrar los comandos relevantes mediante la búsqueda, por lo que tengo que escribir un script para el procesamiento estadístico. Este script pasó la prueba de python2.6 en CentOS6 (kernel 2.6 o superior). Ejecute el script directamente, recopile datos durante 3 segundos de forma predeterminada y muestre los tres procesos principales con mayor lectura y escritura. Si usa parámetros, puede usar el comando "python hip .py 453". El primer número es el número de segundos entre la lectura y la escritura de la recopilación de datos, el segundo número es el número de N procesos que leyeron y escribieron más y el tercer número es el número de veces que se ejecutó el script. Debido a que la sección de parámetros es relativamente simple, se deben escribir los tres parámetros. . #!/bin/python #-*-coding: utf-8-*-# nombre de archivo: ind _ high _ io _ proceso # revisión: 1.0 # fecha: 2013-3-8 # Autor: Simon Zhang # web: # # #endinitinfoimportosimportreimportsysimporttimefromstringimportstrip####sys_proc_path='/proc/'re_find_process_number='^\ d $ ' # # #via /proc/$PID/io # # # def recopilar _ info(): _ tmp = { } re _ buscar _ proceso _ dir = re . pila (re _ buscar _ proceso _ número) para inos listdir obtiene información de lectura y escritura read(). split(" "[1]# Leer información de io rw _ io = open(" s s/io " (sys _ proc _ path, I), " rb "). readlines() for _ info inrw _ io: cut _ info = strip(_ info). split(':') if strip(cut _ info[0]) = "read_bytes": read_io = int(strip(cut _ info[1])) if strip(cut _ info[0] ] ])= "write_bytes": write_io = int(strip(cut_info[1]))_tmp[I]= { "name": nombre_proceso, "read_bytes": read_io, "write_bytes": write_io } return _tmpdefmain(_sleep_time, _ ) dormir(_sleep_time).

Process_info_list_ Second = Collect_info()# Agrupa datos de lectura y escritura de datos, escribe en dos diccionarios para buclear Process_info_list_Second. Keys(): second_read_v = Process_info_list _ second[loop]["read_bytes"]. second_write_v = Process_info_list_segundo[loop]["write_bytes"]prueba: frist_read_v = Process_info_list_frist[loop]["read_bytes"]Excepto: frist_read_v = Process_info_list_frist[loop]["write_bytes"]Excepto: frist_write_v = 0 #Calcular la diferencia de los datos obtenidos por segunda vez en el campo de datos_sort_read _ dict[= second _ read _ read = second _ write _ v-frist _ write # Sort _ read _ dict = sorted(_ Sort _ read _ dict . items (), key = lambda _ Ordenar _ leer _ dict: _ Sort_read_dict[1], Reverse = True)Sort_write_dict = sorted(_Sort_write_dict. items), key = lambda_Sort_write_dict: _Sort_write_dict[1], Reverse=True)#Imprimir resultados estadísticos print "pidprocessread(byte) Si Si tienes alguna pregunta, haz clic para preguntar. Espero que mi respuesta te resulte útil. ¡Espero que la adoptes ~O(∩_∩)O~