Emacs a-t-il un visualiseur de processus (gestionnaire de ressources) ou équivalent?

14

Parfois, emacs atteindra 100% d'utilisation du processeur. Évidemment, lorsque cela se produit, il y a un problème avec un processus d'emballement.

Vous vous demandez simplement s'il existe un moyen d'afficher tous les processus en cours d'exécution dans emacs?

Un peu comme unix htop, le moniteur et le visualiseur de processus du système interactif ... htop

orion
la source
3
list-processes?
npostavs
@npostavs merci. les processus de liste sont bons. Mais je me demande s'il y a quelque chose qui fournit plus d'informations sur les ressources, y compris la mémoire et l'utilisation du processeur
orion
2
La seule chose à laquelle je peux penser est le profilage: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
lawlist
3
la liste des lois a raison. Je ne pense pas que vous recherchiez du tout un visualiseur de processus ( utile list-processesou procednon pertinent). Le seul processus qui vous intéresse est le processus (unique) emacs lui-même, et vous essayez de savoir pourquoi il utilise autant de temps CPU et / ou de mémoire. Pour cela, vous devez utiliser le profileur emacs.
phils

Réponses:

11

La question a été posée en 2016. Maintenant en 2019, il existe M-x proced:

Mode pour afficher les processus système et leur envoyer des signaux.

La procédure crée un tampon Emacs contenant une liste des processus système actuels. Vous pouvez utiliser les commandes Emacs normales pour vous déplacer dans ce tampon et les commandes de procédures spéciales pour opérer sur les processus répertoriés. Voir proced-modepour commencer.

user1404316
la source
Notez que vous souhaiterez peut-être activer M-x proced-toggle-auto-updatevotre procedtampon pour un topcomportement similaire à la mise à jour automatique du tampon (toutes les 5 secondes par défaut).
Pierre Thalamy
9

En plus des autres réponses, l'affiche originale souhaitera peut-être envisager d'utiliser la fonction de profilage intégrée: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

Pour commencer le profilage, tapez M-x profiler-start. Vous pouvez choisir de profiler en fonction de l'utilisation du processeur, de la mémoire ou des deux. Après avoir effectué certains travaux, tapez M-x profiler-reportpour afficher un tampon de résumé pour chaque ressource que vous avez choisi de profiler. Les noms des tampons de rapport incluent les heures auxquelles les rapports ont été générés, vous pouvez donc générer un autre rapport ultérieurement sans effacer les résultats précédents. Lorsque vous avez terminé le profilage, saisissez M-x profiler-stop(il y a une petite surcharge associée au profilage).

Voir le lien ci-dessus vers le manuel pour plus de détails concernant cette fonctionnalité.

liste des lois
la source
7

Vous voudrez peut-être vérifier list-processes:

list-processesest une fonction Lisp interactive compilée dans ' simple.el'.

(list-processes &optional QUERY-ONLY BUFFER)

Affiche une liste de tous les processus qui sont des sous-processus Emacs. Si l'argument facultatif QUERY-ONLYest non nul, seuls les processus avec l' query-on-exitindicateur défini sont répertoriés.
Tout processus répertorié comme étant terminé ou signalé est en fait éliminé une fois l'inscription terminée.
L'argument facultatif BUFFERspécifie un tampon à utiliser, au lieu de " *Process List*". La valeur de retour est toujours nil.

Cette fonction répertorie uniquement les processus lancés par Emacs. Pour voir d'autres processus en cours d'exécution sur le système, utilisez ' list-system-processes'.

Il semble manquer beaucoup de fonctionnalités dont vous avez besoin, mais avec un peu de codage, vous pouvez obtenir les résultats souhaités (si vous le faites, veuillez envoyer vos correctifs en amont, j'aimerais parfois voir cette fonctionnalité dans Emacs.) Cela dit, Je n'ai pas pu trouver de meilleurs candidats prêts à l'emploi pour votre problème.

GergelyPolonkai
la source
6

Découvrez le haut du casque. Il répertorie toutes les choses que vous souhaitez et propose des actions pour envoyer des signaux aux processus.

John Kitchin
la source
5

J'aime htop et donc je l'utilise aussi dans emacs. Cependant, la partie interactive ne fonctionne pas de cette façon.

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