Emacs,内部进程查杀,任何命令?

时间:2012-05-16 21:53:30

标签: emacs process-management

如何杀死Emacs中的内部进程?例如,我运行M-x shell

我可以使用M-x list-processes检查正在运行的进程,但是如何从此列表中删除进程?

4 个答案:

答案 0 :(得分:25)

此处没有默认的键绑定;然而,请参阅pjammer的回答 - list-processes+包括(除此之外)对 Ck 的杀戮绑定 - 以及Joao Tavora的回答 - 它只提供了一个杀戮绑定(对于同一个键)

event_jr在注释中指出您可以使用 M - : (kill-process) RET 来终止当前缓冲区的进程。

更一般地说:您可以使用 M - : (kill-process PROCESS) RET ,其中PROCESS“可能是进程,缓冲区或者“进程或缓冲区的名称”,其名称与list-processes的输出中显示的名称相同。如果恰好发生冲突,进程名称优先于缓冲区名称;所以最好养成提供进程名称的习惯。

或者,Emacs 23+有一个通用的系统进程管理器(M-x proced),它更类似于运行top,并且具有发送(任意)信号的默认绑定( ķ)。当然,在列出您感兴趣的过程中可能远不那么明显。


编辑:迟到总比没有好:)以下使用 Mx kill-process RET (在Emacs 26.1中测试) ):

;; Enable M-x kill-process (to kill the current buffer's process).
(put 'kill-process 'interactive-form
     '(interactive
       (let ((proc (get-buffer-process (current-buffer))))
         (if (process-live-p proc)
             (unless (yes-or-no-p (format "Kill %S? " proc))
               (error "Process not killed"))
           (error (format "Buffer %s has no process" (buffer-name))))
         nil)))

答案 1 :(得分:16)

这个帖子很古老,但这是一个非常快速的黑客,对我来说非常适合

(define-key process-menu-mode-map (kbd "C-k") 'joaot/delete-process-at-point)

(defun joaot/delete-process-at-point ()
  (interactive)
  (let ((process (get-text-property (point) 'tabulated-list-id)))
    (cond ((and process
                (processp process))
           (delete-process process)
           (revert-buffer))
          (t
           (error "no process at point!")))))

答案 2 :(得分:9)

另一种方式:

您可以使用 M-x eval-expression RET

然后输入:(delete-process "<name-of-the-process>") RET

(其中"name-of-the-process"以前是从 M-x list-processes RET 获得的。

通过重复 M-x list-processes RET 确认该过程已被杀死。

就是这样。

答案 3 :(得分:2)

看起来有新模式或添加,您可以使用名为list process +