Emacsで内部プロセスを強制終了する方法は?たとえば、私はを実行しM-x shell
ます。
で実行中のプロセスを確認できM-x list-processes
ますが、このリストからプロセスを強制終了するにはどうすればよいですか?
Emacsで内部プロセスを強制終了する方法は?たとえば、私はを実行しM-x shell
ます。
で実行中のプロセスを確認できM-x list-processes
ますが、このリストからプロセスを強制終了するにはどうすればよいですか?
このためのデフォルトのキーバインディングはありません。ただし、pjammerの回答list-processes+
(特に)にキルバインディングが含まれていることC-kと、(同じキーに対して)キルバインディングのみを提供するJoaoTavoraの回答を参照してください。
M-: (kill-process)
RETevent_jrは、現在のバッファのプロセスを強制終了するために使用できるコメントで指摘しています。
より一般的には、を使用できます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)))
このスレッドは古くからありますが、これが私にとって完璧に機能する非常に簡単なハックです
(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!")))))
別の方法:
使用できます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)。
以上です。
リストプロセスと呼ばれる代わりに使用できる新しいモードまたはアドオンがあるようです+
を使用する場合は、counsel
を実行できますM-x counsel-list-processes
。次に、入力M-o
してアクションを表示できます。アクションの1つはですkill
。