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]/cmdline
Es un archivo de solo lectura que contiene la información completa de la línea de comandos del proceso. Si el proceso es un zombie
proceso, entonces este archivo no tiene contenido.
comm
/proc/[pid]/comm
Es un archivo de solo lectura que contiene el nombre de comando del proceso.
cwd
/proc/[pid]/cwd
Es un enlace simbólico al directorio de trabajo actual del proceso.
alrededor de
/proc/[pid]/environ
Visualice las variables de entorno del proceso.
exe
/proc/[pid]/exe
Enlace simbólico para el programa en ejecución real.
fd
/proc/[pid]/fd
Es 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]/latency
Muestre 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]/limits
Muestra 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 Limit
Representa kernel
el valor establecido para el recurso, Hard Limit
representa Soft Limit
el límite superior y Units
es la unidad de medida
mapas
/proc/[pid]/maps
Muestra 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]/root
Es un enlace simbólico al directorio raíz del proceso.
apilar
/proc/[pid]/stack
Muestra la información de la pila de llamadas del kernel del proceso CONFIG_STACKTRACE
actual.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]/statm
Muestra las estadísticas del tamaño de la memoria ocupada por el proceso, incluidos siete valores, la unidad de medida es page
(el page
tamaño se puede getconf PAGESIZE
obtener 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.6
versión, este valor es 0
);
f) la pila del proceso;
g) dirty pages
(a partir de la 2.6
versión, este valor es 0
).
syscall
/proc/[pid]/syscall
Muestra 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 ( 7
representativo poll
), seguido 6
del 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 -1
sigue el valor del puntero de la pila y el contador de instrucciones. Si el proceso no está bloqueado, este archivo solo tiene una running
cadena de " ".
CONFIG_HAVE_ARCH_TRACEHOOK
Este archivo se generará cuando la opción de compilación esté activada cuando se compile el kernel .
wchan
/proc/[pid]/wchan
Cuando se muestra el proceso sleep
, la kernel
función que se está ejecutando actualmente.