Emacs ha un visualizzatore di processi (gestore delle risorse) o equivalente?


14

Occasionalmente emacs colpirà il 100% di utilizzo della cpu. Ovviamente, quando ciò si verifica, c'è un problema con un processo in fuga.

Ti stai solo chiedendo se esiste un modo per visualizzare tutti i processi in esecuzione in emacs?

Un po 'come unix htop, il monitor di processo interattivo e il visualizzatore ... htop


3
list-processes?
npostavs

@npostavs grazie. i processi di lista sono buoni. Ma mi chiedo se c'è qualcosa che fornisce maggiori informazioni sulle risorse, incluso l'uso della memoria e della cpu
orion,

2
L'unica cosa che mi viene in mente è la profilazione: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
elenco delle leggi

3
la lista delle leggi ha ragione. Non credo che tu stia cercando un visualizzatore di processi (che rende list-processeso procedirrilevante). L'unico processo che ti interessa è il processo (singolo) emacs stesso, e stai cercando di scoprire perché utilizza così tanto tempo e / o memoria della CPU. Per questo è necessario utilizzare il profiler emacs.
phils,

Risposte:


11

La domanda è stata posta nel 2016. Ora nel 2019 esiste M-x proced:

Modalità per visualizzare i processi di sistema e inviare loro segnali.

Proced crea un buffer Emacs contenente un elenco dei processi di sistema correnti. È possibile utilizzare i normali comandi Emacs per spostarsi in questo buffer e speciali comandi Proced per operare sui processi elencati. Vedi proced-modeper iniziare.


Nota che potresti voler abilitare M-x proced-toggle-auto-updatesul tuo procedbuffer un topcomportamento simile con l'aggiornamento automatico del buffer (ogni 5 secondi per impostazione predefinita).
Pierre Thalamy,

9

Oltre alle altre risposte, il poster originale potrebbe voler prendere in considerazione l'utilizzo della funzione di profilazione integrata: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

Per iniziare la creazione del profilo, digitare M-x profiler-start. È possibile scegliere di profilare in base all'utilizzo del processore, all'utilizzo della memoria o ad entrambi. Dopo aver eseguito alcune operazioni, digitare M-x profiler-reportper visualizzare un buffer di riepilogo per ogni risorsa che si è scelto di profilare. I nomi dei buffer di report includono i tempi in cui i report sono stati generati, quindi è possibile generare un altro report in un secondo momento senza cancellare i risultati precedenti. Al termine della profilazione, digitare M-x profiler-stop(è presente un piccolo overhead associato alla profilazione).

Vedere il collegamento sopra al manuale per ulteriori dettagli su questa funzione.


7

Potresti voler controllare list-processes:

list-processesè una funzione Lisp compilata interattiva in ' simple.el'.

(list-processes &optional QUERY-ONLY BUFFER)

Visualizza un elenco di tutti i processi che sono sottoprocessi di Emacs. Se l'argomento facoltativo QUERY-ONLYè diverso da zero, query-on-exitvengono elencati solo i processi con il flag impostato.
Qualsiasi processo elencato come uscito o segnalato viene effettivamente eliminato dopo aver effettuato la quotazione.
L'argomento facoltativo BUFFERspecifica un buffer da utilizzare, anziché " *Process List*". Il valore restituito è sempre nil.

Questa funzione elenca solo i processi avviati da Emacs. Per vedere altri processi in esecuzione sul sistema, usa ' list-system-processes'.

Sembra che manchi molte funzionalità di cui hai bisogno, ma con un po 'di codifica potresti ottenere i risultati desiderati (se lo fai, ti preghiamo di inviare le tue patch a monte, a volte mi piacerebbe vedere questa funzione in Emacs.) Detto questo, Non sono riuscito a trovare candidati pronti per il tuo problema.


6

Dai un'occhiata a helm-top. Elenca tutte le cose che vuoi e ha azioni per inviare segnali ai processi.


5

Mi piace htop e quindi lo uso anche in emacs. Tuttavia, la parte interattiva non funziona in questo modo.

(defun htop ()
  (interactive)
  (if (get-buffer "*htop*")
      (switch-to-buffer "*htop*")
    (ansi-term "/bin/bash" "htop")   
    (comint-send-string "*htop*" "htop\n")))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.