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

Lin*_*kas 31 emacs process-management

如何杀死Emacs中的内部进程?比如我跑M-x shell.

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

phi*_*ils 26

这没有默认的键绑定; 然而,请参阅pjammer的答案 - list-processes+包括(除其他事项外)杀戮绑定C-k- 以及Joao Tavora的答案 - 它只提供了一个杀戮绑定(对于同一个键).

event_jr中,你可以使用评论指出M-: (kill-process) RET杀死当前缓冲的过程.

更一般:可以使用M-: (kill-process PROCESS) RET,其中PROCESS"可能是一个过程,一个缓冲或进程的名称或缓冲区",这些名字是因为他们出现在的输出list-processes.如果恰好发生冲突,进程名称优先于缓冲区名称; 所以最好养成提供进程名称的习惯.

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


编辑:迟到总比没有好:)以下可以M-x 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)))
Run Code Online (Sandbox Code Playgroud)

  • 如果你在缓冲区中有关联的进程,那么``(kill-process)`将在没有缓冲区规范的情况下工作. (5认同)

Joa*_*ora 17

这个线程是古老的,但这是一个非常快速的黑客,非常适合我

(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!")))))
Run Code Online (Sandbox Code Playgroud)


Pau*_*omé 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).

就是这样.