Czy emacs ma przeglądarkę procesów (menedżer zasobów) lub równoważną?

14

Czasami emacs osiągnie 100% użycie procesora. Oczywiście, kiedy to nastąpi, pojawia się problem z niekontrolowanym procesem.

Zastanawiasz się tylko, czy istnieje sposób, aby wyświetlić wszystkie uruchomione procesy w emacs?

Coś jak unix htop, monitor proces interaktywny system i widz ... htop

orion
źródło
3
list-processes?
npostavs
@npostavs dzięki. lista procesów jest dobra. Ale zastanawiam się, czy jest coś, co zapewnia więcej informacji na temat zasobów, w tym wykorzystania pamięci i procesora
orion
2
Jedyne, co mogę wymyślić, to profilowanie: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
lista praw
3
lista prawników ma rację. Nie sądzę, że w ogóle szukasz przeglądarki procesu (tworzenia list-processeslub procednieistotności). Jedynym procesem, na którym Ci zależy, jest sam proces emacsa (pojedynczy) i próbujesz dowiedzieć się, dlaczego zużywa on tak dużo czasu procesora i / lub pamięci. W tym celu musisz użyć profilera emacs.
phils

Odpowiedzi:

11

Pytanie zadano w 2016 r. Teraz w 2019 r. Istnieją M-x proced:

Tryb wyświetlania procesów systemowych i wysyłania do nich sygnałów.

Proced tworzy bufor Emacsa zawierający listę bieżących procesów systemowych. Możesz używać normalnych poleceń Emacsa, aby poruszać się w tym buforze, oraz specjalnych poleceń Procedury, aby operować na wymienionych procesach. Zobacz, proced-modejak zacząć.

użytkownik1404316
źródło
Zauważ, że możesz chcieć włączyć M-x proced-toggle-auto-updatew procedbuforze toppodobne zachowanie z automatyczną aktualizacją bufora (domyślnie co 5 sekund).
Pierre Thalamy,
10

Oprócz innych odpowiedzi oryginalny plakat może rozważyć użycie wbudowanej funkcji profilowania : https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

Aby rozpocząć profilowanie, wpisz M-x profiler-start. Możesz wybrać profilowanie według użycia procesora, pamięci lub obu. Po wykonaniu pracy wpisz, M-x profiler-reportaby wyświetlić bufor podsumowania dla każdego zasobu, który wybrałeś do profilowania. Nazwy buforów raportów obejmują godziny, w których raporty zostały wygenerowane, dzięki czemu można później wygenerować kolejny raport bez usuwania poprzednich wyników. Po zakończeniu profilowania wpisz M-x profiler-stop(z profilowaniem wiąże się niewielki narzut).

Zobacz powyższy link do instrukcji, aby uzyskać dodatkowe informacje dotyczące tej funkcji.

lista prawnicza
źródło
7

Możesz sprawdzić list-processes:

list-processesto interaktywna skompilowana funkcja Lisp w ' simple.el'.

(list-processes &optional QUERY-ONLY BUFFER)

Wyświetl listę wszystkich procesów, które są podprocesami Emacsa. Jeśli opcjonalny argument QUERY-ONLYjest inny niż zero, wyświetlane są tylko procesy z query-on-exitustawioną flagą.
Wszelkie procesy wymienione jako zakończone lub zasygnalizowane są w rzeczywistości eliminowane po sporządzeniu listy.
Opcjonalny argument BUFFERokreśla bufor do użycia zamiast „ *Process List*”. Zwracana jest zawsze wartość nil.

Ta funkcja wyświetla tylko procesy uruchomione przez Emacsa. Aby zobaczyć inne procesy uruchomione w systemie, użyj „ list-system-processes”.

Wygląda na to, że brakuje wielu potrzebnych funkcji, ale przy odrobinie kodowania możesz uzyskać pożądane wyniki (jeśli to zrobisz, prześlij swoje łatki wcześniej, czasami chciałbym zobaczyć tę funkcję w Emacsie). Nie mogłem znaleźć lepszych, gotowych kandydatów na twój problem.

GergelyPolonkai
źródło
6

Sprawdź górę hełmu. Zawiera listę wszystkich potrzebnych rzeczy i ma działania służące do wysyłania sygnałów do procesów.

John Kitchin
źródło
5

Lubię htop, więc używam go również w emacsie. Jednak część interaktywna nie działa w ten sposób.

(defun htop ()
  (interactive)
  (if (get-buffer "*htop*")
      (switch-to-buffer "*htop*")
    (ansi-term "/bin/bash" "htop")   
    (comint-send-string "*htop*" "htop\n")))
Bertfred
źródło