Me gustaría controlar el número de subprocesos utilizados por un proceso específico en Linux. ¿Existe una manera fácil de obtener esta información sin afectar el rendimiento del proceso?¿Cómo puedo controlar el conteo de subprocesos de un proceso en Linux?
Respuesta
JStack es bastante económico: una opción sería canalizar la salida a través de grep para buscar hilos activos y luego pasar por wc -l.
Más gráficamente es JConsole, que muestra el número de subprocesos para un proceso determinado.
Las distribuciones JDK más nuevas se envían con JConsole y VisualVM. Ambas son herramientas fantásticas para obtener los detalles sucios de un proceso en ejecución de Java. Si tiene que hacer esto programáticamente, investigue JMX.
Si utiliza:
ps uH p <PID_OF_U_PROCESS> | wc -l
Hay que restar 1 al resultado, como una de las líneas de "WC" está contando es la encabezados del comando "ps".
Bienvenido a StackOverflow. Podría decirse que esto debería ser un comentario a la respuesta de slav0nic.Sin embargo, tal como lo entiendo, cuando te unes a SO por primera vez, (todavía) no puedes comentar las respuestas hasta que hayas ganado reputación, por lo que agregar una respuesta es todo lo que puedes hacer. Estás en lo correcto; no debe contar la línea de encabezado de 'ps' como uno de los hilos. –
Cada subproceso en un proceso crea un directorio en /proc/<pid>/task
. Cuente la cantidad de directorios y tenga la cantidad de hilos.
Para agregar al comentario anterior. Puede usar este comando para buscar la cantidad de hilos: 'find/proc/
jvmtop puede mostrar el recuento actual de hilos jvm junto a otras métricas.
Aquí es un comando que muestra el número de hilos de un proceso dado:
ps -L -o pid= -p <pid> | wc -l
A diferencia de las otras respuestas basadas ps
, aquí no hay necesidad de restar 1
de su salida ya que no hay ps
cabecera línea gracias a la opción -o pid=
.
ps -eLf
en el armazón le dará una lista de todos los hilos y procesos que se ejecutan actualmente en el sistema. O bien, puede ejecutar el comando top
y luego presionar 'H' para alternar las listas de subprocesos.
Esta es la salsa para mí. No quiero limitarlo solo a un proceso. Es fácil agregar un '-p' a esto si es necesario, o cualquier otra cosa. Este es el mínimo que necesita para ver la lista de hilos. –
ps -eLf funcionó para mí junto con grep -c
cat /proc/<PROCESS_PID>/status | grep Threads
o 'grep Threads/proc/
Si usted está interesado en los temas que son realmente activa - como en hacer algo (no bloqueado, no timed_waiting, no informar "hilo conductor", pero en realidad la espera de una corriente para dar datos) en lugar de quedarse sentado ocioso pero en vivo, entonces podría estar interesado en jstack-active.
Este script bash simple ejecuta jstack
luego filtra todos los subprocesos que por heurística parecen estar inactivos, mostrándole rastros de pila para aquellos subprocesos que en realidad consumen ciclos de CPU.
$ ps H p pid-id
H - Listas de todos los hilos individuales en un proceso
o
$cat /proc/pid-id/status
pid-id es el ID de proceso
por ejemplo .. (truncado el resultado a continuación)
[email protected]:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
Para obtener el número de hilos para un pid dado:
$ ps -o nlwp <pid>
Dónde nlwp
gradas para Número de procesos ligeros (hilos). De este modo ps
alias nlwp
a thcount
, lo que significa que
$ ps -o thcount <pid>
también funciona.
Si desea controlar el número de hilos, basta con utilizar watch
:
$ watch ps -O thcount
Para obtener la suma de todos los subprocesos que se ejecutan en el sistema:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
Si está tratando de averiguar el número de subprocesos usando la CPU para un pid dado, yo usaría:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
La manera más fácil es usar "htop". Puede instalar "htop" (una versión más elegante de la parte superior) que le mostrará todos sus núcleos, procesos y uso de la memoria.
Presione "Shift + H" para mostrar todo el proceso o presione nuevamente para ocultarlo. Presione la tecla "F4" para buscar el nombre de su proceso.
Instalación en Ubuntu o Debian:
sudo apt-get install htop
Instalación en RedHat o CentOS:
yum install htop
dnf install htop [On Fedora 22+ releases]
Si desea compilar "H TOP" de código fuente, lo encontrará here.
- 1. ¿Cómo puedo controlar el uso de memoria de php en Linux?
- 2. ¿Cómo controlar el proceso del demonio C++?
- 3. ¿Cómo detener el proceso 'ininterrumpible' en Linux?
- 4. ¿Cómo puedo controlar el tiempo de renderizado en un navegador?
- 5. Otra pregunta sobre el conteo seguro de subprocesos
- 6. ¿Cómo controlar qué núcleo se ejecuta un proceso?
- 7. Analizando el volcado de subprocesos de un proceso de Java
- 8. Proceso de fondo en Linux
- 9. Cómo iniciar un proceso detenido en Linux
- 10. ¿Cómo puedo usar nohup para ejecutar el proceso como proceso en segundo plano en Linux?
- 11. ¿Cómo se divide el intervalo de tiempo entre los subprocesos en un proceso?
- 12. ¿Cómo controlar el espacio disponible del búfer UDP de Linux?
- 13. ¿Controlar la prioridad de programación de subprocesos de python?
- 14. ¿cómo puedo encontrar el conteo de varias palabras en un archivo de texto?
- 15. ¿Cómo controlar el movimiento del mouse en Linux?
- 16. ¿Puedo proteger contra escritura cada página en el espacio de direcciones de un proceso de Linux?
- 17. ¿Cómo puedo reducir el consumo de memoria de un proceso Linux mínimo
- 18. ¿Cómo puedo controlar los datos en un puerto serie en Linux?
- 19. Cómo implementar el conteo de referencias seguro de subprocesos en C++
- 20. Obtenga el conteo de bytes esperando en un puerto serie antes de leer, linux
- 21. Enviar entrada de teclado a un proceso en ejecución linux
- 22. Cómo obtener el número de subprocesos en un proceso de Java
- 23. Cambiar el propietario de un proceso existente en Linux
- 24. Determinar el motivo de un proceso detenido en Linux
- 25. cómo controlar (iniciar/matar) un proceso en segundo plano (aplicación de servidor) en ruby
- 26. Cómo obtengo la ruta de un proceso en Unix/Linux
- 27. ¿Cómo puedo controlar el formato MembershipUser.ResetPassword()
- 28. ¿Puedo compartir un descriptor de archivo en otro proceso en Linux o son locales para el proceso?
- 29. linux: ¿obteniendo umask de un proceso ya en ejecución?
- 30. Controlar el número de subprocesos usando para llamar comandos externos en python
Creo que debe restar '1' de él porque imprime una línea como' PID USUARIO% CPU% MEM VSZ RSS TTY STAT START TIME COMMAND' para el encabezado de la tabla. –
La 'h' oculta el encabezado. – thinkmassive
-1 ¿Por qué conectar la salida a 'wc' cuando podría simplemente' ps -o thcount '? Ver [esta respuesta] (https://stackoverflow.com/a/37713259/194894). –
Flow