¿Tiene emacs un visor de procesos (administrador de recursos) o equivalente?

14

Ocasionalmente, emacs alcanzará el 100% de uso de la CPU. Obviamente, cuando esto ocurre, hay un problema con un proceso descontrolado.

¿Me pregunto si hay una manera de ver todos los procesos en ejecución en emacs?

Como unix htop, el monitor y visor de procesos del sistema interactivo ... htop

Orión
fuente
3
list-processes?
npostavs
@npostavs gracias. La lista de procesos es buena. Pero me pregunto si hay algo que proporciona más información sobre los recursos, incluyendo la memoria y el uso de la CPU
orion
2
Lo único que se me ocurre es la creación de perfiles: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
leyes
3
La lista de leyes es correcta. No creo que esté buscando un visor de procesos (creación list-processeso procedirrelevante). El único proceso que le interesa es el proceso (emacs) en sí mismo, y está tratando de descubrir por qué está utilizando tanto tiempo de CPU y / o memoria. Para eso necesitas usar el emacs profiler.
phils

Respuestas:

11

La pregunta se hizo en 2016. Ahora en 2019, existe M-x proced:

Modo para mostrar los procesos del sistema y enviarles señales.

Proced crea un búfer de Emacs que contiene una lista de los procesos actuales del sistema. Puede usar los comandos normales de Emacs para moverse en este búfer y comandos especiales de Procedimiento para operar en los procesos enumerados. Ver proced-modepara comenzar.

usuario1404316
fuente
Tenga en cuenta que es posible que desee habilitar M-x proced-toggle-auto-updateen su procedbúfer un topcomportamiento similar con la actualización automática del búfer (cada 5 segundos de forma predeterminada).
Pierre Thalamy
9

Además de las otras respuestas, el póster original puede considerar usar la función de creación de perfiles incorporada: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

Para comenzar a perfilar, escriba M-x profiler-start. Puede elegir perfilar por uso de procesador, uso de memoria o ambos. Después de hacer un trabajo, escriba M-x profiler-reportpara mostrar un búfer de resumen para cada recurso que elija para el perfil. Los nombres de las memorias intermedias de informes incluyen las horas en que se generaron los informes, por lo que puede generar otro informe más adelante sin borrar los resultados anteriores. Cuando haya terminado de crear un perfil, escriba M-x profiler-stop(hay una pequeña sobrecarga asociada con la creación de perfiles).

Consulte el enlace anterior al manual para obtener detalles adicionales sobre esta función.

lista de leyes
fuente
7

Es posible que desee verificar list-processes:

list-processeses una función Lisp compilada interactiva en ' simple.el'.

(list-processes &optional QUERY-ONLY BUFFER)

Muestra una lista de todos los procesos que son subprocesos de Emacs. Si el argumento opcional QUERY-ONLYno es nulo, solo query-on-exitse enumeran los procesos con el conjunto de indicadores.
Cualquier proceso enumerado como salido o señalado se elimina realmente después de que se realiza el listado.
El argumento opcional BUFFERespecifica un búfer para usar, en lugar de " *Process List*". El valor de retorno es siempre nil.

Esta función enumera solo los procesos iniciados por Emacs. Para ver otros procesos que se ejecutan en el sistema, use ' list-system-processes'.

Parece que le faltan muchas funciones que necesita, pero con un poco de codificación puede obtener los resultados deseados (si lo hace, envíe sus parches en sentido ascendente, ocasionalmente me gustaría ver esta función en Emacs). Dicho esto, No pude encontrar mejores candidatos listos para su problema.

GergelyPolonkai
fuente
6

Echa un vistazo a helm-top. Enumera todas las cosas que desea y tiene acciones para enviar señales a los procesos.

John Kitchin
fuente
5

Me gusta htop y también lo uso en emacs. Sin embargo, la parte interactiva no funciona de esta manera.

(defun htop ()
  (interactive)
  (if (get-buffer "*htop*")
      (switch-to-buffer "*htop*")
    (ansi-term "/bin/bash" "htop")   
    (comint-send-string "*htop*" "htop\n")))
bertfred
fuente