Directorio de procesos en el directorio proc

Proc es un sistema de archivos virtual, que se monta en el directorio / proc en los sistemas Linux. Proc tiene múltiples funciones, incluyendo que los usuarios puedan acceder a la información del kernel o utilizarla para solucionar problemas Una de las funciones más útiles y la función más especial de Linux es acceder a la información del proceso en forma de flujos de texto. Muchos comandos de Linux (como ps, toPpstree, etc.) necesitan utilizar esta información del sistema de archivos. En el sistema de archivos / proc, cada proceso tiene una carpeta correspondiente: / proc / pid, en la que se mostrará información sobre el proceso.

 

cmdline

/proc/[pid]/cmdlineEs un archivo de solo lectura que contiene la información completa de la línea de comandos del proceso. Si el proceso es un zombieproceso, entonces este archivo no tiene contenido.

comm

/proc/[pid]/commEs un archivo de solo lectura que contiene el nombre de comando del proceso.

cwd

/proc/[pid]/cwdEs un enlace simbólico al directorio de trabajo actual del proceso.

alrededor de

/proc/[pid]/environVisualice las variables de entorno del proceso.

exe

/proc/[pid]/exeEnlace simbólico para el programa en ejecución real.

fd

/proc/[pid]/fdEs un directorio que contiene el estado de los archivos abiertos por el proceso.

Cada elemento del directorio es un enlace simbólico que apunta a un archivo abierto y el número representa un descriptor de archivo.

latencia

/proc/[pid]/latencyMuestre qué códigos causan el mayor retraso (para usar esto feature, debe ejecutar " echo 1 > /proc/sys/kernel/latencytop"). Los ejemplos son los siguientes:

 

# cat /proc/2948/latency  
Latency Top version : v0.1  
30667 10650491 4891 poll_schedule_timeout do_sys_poll SyS_poll system_call_fastpath 0x7f636573dc1d  
8 105 44 futex_wait_queue_me futex_wait do_futex SyS_futex system_call_fastpath 0x7f6365a167bc  

Los primeros tres números de cada línea son el número de ejecuciones del siguiente código, el tiempo de retardo de ejecución total (en microsegundos) y el tiempo de retardo de ejecución más largo (en microsegundos), seguidos de la pila de llamadas completa del código.

limites

/proc/[pid]/limitsMuestra el límite de recursos del proceso actual. Los ejemplos son los siguientes:

# cat /proc/2948/limits  
Limit                     Soft Limit           Hard Limit           Units  
Max cpu time              unlimited            unlimited            seconds  
Max file size             unlimited            unlimited            bytes  
Max data size             unlimited            unlimited            bytes  
Max stack size            8388608              unlimited            bytes  
Max core file size        0                    unlimited            bytes  
Max resident set          unlimited            unlimited            bytes  
Max processes             6409                 6409                 processes  
Max open files            1024                 4096                 files  
Max locked memory         65536                65536                bytes  
Max address space         unlimited            unlimited            bytes  
Max file locks            unlimited            unlimited            locks  
Max pending signals       6409                 6409                 signals  
Max msgqueue size         819200               819200               bytes  
Max nice priority         0                    0  
Max realtime priority     0                    0  
Max realtime timeout      unlimited            unlimited            us  

Soft LimitRepresenta kernelel valor establecido para el recurso, Hard Limitrepresenta Soft Limitel límite superior y Unitses la unidad de medida

mapas

/proc/[pid]/mapsMuestra la información de mapeo del área de memoria del proceso. Los ejemplos son los siguientes:

# cat /proc/2948/maps  
......  
address                   perms offset  dev   inode                      pathname  
7f4a2e2ad000-7f4a2e2ae000 rw-p 00006000 08:14 6505977                    /usr/lib64/sasl2/libsasldb.so.3.0.0  
7f4a2e2ae000-7f4a2e2af000 ---p 00000000 00:00 0  
7f4a2e2af000-7f4a2eaaf000 rw-p 00000000 00:00 0                          [stack:94671]  
7f4a2eaaf000-7f4a2eab0000 ---p 00000000 00:00 0  
7f4a2eab0000-7f4a2f2b0000 rw-p 00000000 00:00 0                          [stack:94670]  
......  
7f4a434d0000-7f4a434d5000 rw-p 0006e000 08:14 4292988                    /usr/sbin/libvirtd  
7f4a4520a000-7f4a452f7000 rw-p 00000000 00:00 0                          [heap]  
7ffd1a7e4000-7ffd1a805000 rw-p 00000000 00:00 0                          [stack]  
7ffd1a820000-7ffd1a821000 r-xp 00000000 00:00 0                          [vdso]  
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]  

Una cosa a tener en cuenta es [stack:<tid>]la información de la pila del hilo, que corresponde a la /proc/[pid]/task/[tid]/ruta.

raíz

/proc/[pid]/rootEs un enlace simbólico al directorio raíz del proceso.

apilar

/proc/[pid]/stackMuestra la información de la pila de llamadas del kernel del proceso CONFIG_STACKTRACEactual.Este archivo solo se generará cuando la opción de compilación esté activada cuando se compile el kernel . Los ejemplos son los siguientes:

# cat /proc/2948/stack  
[<ffffffff80168375>] poll_schedule_timeout+0x45/0x60  
[<ffffffff8016994d>] do_sys_poll+0x49d/0x550  
[<ffffffff80169abd>] SyS_poll+0x5d/0xf0  
[<ffffffff804c16e7>] system_call_fastpath+0x16/0x1b  
[<00007f4a41ff2c1d>] 0x7f4a41ff2c1d  
[<ffffffffffffffff>] 0xffffffffffffffff  

statm

/proc/[pid]/statmMuestra las estadísticas del tamaño de la memoria ocupada por el proceso, incluidos siete valores, la unidad de medida es page(el pagetamaño se puede getconf PAGESIZEobtener mediante ). Los ejemplos son los siguientes:

# cat /proc/2948/statm    
72362 12945 4876 569 0 24665 0  

El significado de cada valor:
a) la memoria total ocupada por el proceso;
b) la memoria física ocupada por el proceso en el momento actual;
c) la memoria compartida con otros procesos;
d) el segmento de código del proceso;
e) la biblioteca compartida (a partir de la 2.6versión, este valor es 0);
f) la pila del proceso;
g) dirty pages(a partir de la 2.6versión, este valor es 0).

syscall

/proc/[pid]/syscallMuestra las llamadas al sistema que está ejecutando el proceso actual. Los ejemplos son los siguientes:

# cat /proc/2948/syscall  
7 0x7f4a452cbe70 0xb 0x1388 0xffffffffffdff000 0x7f4a4274a750 0x0 0x7ffd1a8033f0 0x7f4a41ff2c1d  

El primer valor es el número de llamada al sistema ( 7representativo poll), seguido 6del valor del parámetro de la llamada al sistema (ubicado en el registro), y los dos últimos valores son los valores del puntero de la pila y el contador de instrucciones a su vez. . Si el proceso actual está bloqueado, pero la función de bloqueo no es una llamada al sistema, al valor del número de llamada al sistema le -1sigue el valor del puntero de la pila y el contador de instrucciones. Si el proceso no está bloqueado, este archivo solo tiene una runningcadena de " ".

CONFIG_HAVE_ARCH_TRACEHOOKEste archivo se generará cuando la opción de compilación esté activada cuando se compile el kernel .

wchan

/proc/[pid]/wchanCuando se muestra el proceso sleep, la kernelfunción que se está ejecutando actualmente.

Supongo que te gusta

Origin blog.csdn.net/sunxiaopengsun/article/details/114916819
Recomendado
Clasificación