Есть ли в emacs средство просмотра процессов (менеджер ресурсов) или его эквивалент?

14

Иногда emacs будет использовать 100% ресурсов процессора. Очевидно, что когда это происходит, возникает проблема с безудержным процессом.

Просто интересно, есть ли способ просмотреть все запущенные процессы в Emacs?

Вроде как unix htop, интерактивный системный монитор процессов и просмотрщик ... htop

Орион
источник
3
list-processes?
npostavs
@npostavs спасибо. список процессов хорош. Но мне интересно, есть ли что-то, что предоставляет больше информации о ресурсах, включая использование памяти и процессора
orion
2
Единственное , что я могу вспомнить, профилирование: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
lawlist
3
законник прав. Я не верю , что вы ищете процесса просмотра на всех ( что делает list-processesили procedне имеет значения). Единственный процесс, который вас волнует, - это (единственный) процесс emacs, и вы пытаетесь выяснить, почему он использует так много процессорного времени и / или памяти. Для этого вам нужно использовать профилировщик emacs.
Филс

Ответы:

11

Вопрос был задан в 2016 году. Сейчас в 2019 году существует M-x proced:

Режим отображения системных процессов и отправки им сигналов.

Процедура создает буфер Emacs, содержащий список текущих системных процессов. Вы можете использовать обычные команды Emacs для перемещения по этому буферу и специальные команды процедур для работы с перечисленными процессами. Смотрите proced-modeдля начала.

user1404316
источник
Обратите внимание, что вы можете включить M-x proced-toggle-auto-updateв своем procedбуфере topаналогичное поведение с автоматическим обновлением буфера (по умолчанию каждые 5 секунд).
Пьер
9

В дополнение к другим ответам, оригинальный постер может рассмотреть возможность использования встроенной функции профилирования : https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html.

Чтобы начать профилирование, введите M-x profiler-start. Вы можете выбрать профиль по использованию процессора, использованию памяти или обоим. Сделав некоторую работу, введите, M-x profiler-reportчтобы отобразить сводный буфер для каждого ресурса, который вы выбрали для профилирования. Имена буферов отчета включают в себя время, когда отчеты были сгенерированы, так что вы можете создать другой отчет позже, не стирая предыдущие результаты. Когда вы закончите профилирование, напечатайте M-x profiler-stop(есть небольшие накладные расходы, связанные с профилированием).

См. Ссылку выше на руководство для получения дополнительной информации об этой функции.

lawlist
источник
7

Вы можете проверить list-processes:

list-processesинтерактивная скомпилированная функция Lisp в ' simple.el'

(list-processes &optional QUERY-ONLY BUFFER)

Показать список всех процессов, которые являются подпроцессами Emacs. Если необязательный аргумент не QUERY-ONLYравен nil, в query-on-exitсписке отображаются только процессы с установленным флагом.
Любой процесс, указанный как завершенный или сигнализированный, фактически исключается после внесения в список.
Необязательный аргумент BUFFERуказывает используемый буфер вместо " *Process List*". Возвращаемое значение всегда nil.

Эта функция перечисляет только процессы, которые были запущены Emacs. Чтобы увидеть другие процессы, запущенные в системе, используйте ' list-system-processes'.

Кажется, что он пропускает множество функций, которые вам нужны, но с небольшим количеством кода вы можете получить желаемые результаты (если вы это сделаете, пожалуйста, присылайте ваши патчи в апстрим, я иногда хотел бы увидеть эту функцию в Emacs.) Это говорит: Я не мог найти лучших готовых кандидатов на вашу проблему.

GergelyPolonkai
источник
6

Проверьте шлем руля. Он перечисляет все, что вы хотите, и имеет действия для отправки сигналов процессам.

Джон Китчин
источник
5

Мне нравится htop, поэтому я также использую его в emacs. Однако интерактивная часть не работает таким образом.

(defun htop ()
  (interactive)
  (if (get-buffer "*htop*")
      (switch-to-buffer "*htop*")
    (ansi-term "/bin/bash" "htop")   
    (comint-send-string "*htop*" "htop\n")))
bertfred
источник