Emacs 如何在不终止shell的情况下终止远程进程(C-C-C也终止shell…)

Emacs 如何在不终止shell的情况下终止远程进程(C-C-C也终止shell…),emacs,Emacs,假设您从本地emacs shell(从M-x shell开始)在远程服务器上工作。如果您执行的进程太长(例如,在包含大量文件的目录中执行ls),您希望停止该进程(在终端中,您将使用control-c)。我试过C-C-C,但那会杀死整个外壳。。。我怎样才能只杀死远程服务器上正在运行的进程而不是整个shell 更新 逐步: 1) M-x shell (execute on local machine) 2) ssh mylogin@myremotemachine.foo.bar (execute o

假设您从本地emacs shell(从
M-x shell开始)在远程服务器上工作。如果您执行的进程太长(例如,在包含大量文件的目录中执行
ls
),您希望停止该进程(在终端中,您将使用
control-c
)。我试过
C-C-C
,但那会杀死整个外壳。。。我怎样才能只杀死远程服务器上正在运行的进程而不是整个shell

更新

逐步:

1) M-x shell (execute on local machine)
2) ssh mylogin@myremotemachine.foo.bar (execute on local machine)
3) sleep 60 (execute on remote machine)
4) C-c C-c (execute in the current shell)

=>整个远程连接将关闭,您将重新进入本地计算机,而不是继续在远程主机上,并且仅停止sleep命令。

当我按照您列出的步骤操作时,我发现自己回到了远程shell提示符处。我使用的是Emacs23.1.1


我发现键入C-qc-cret也会中断远程进程,再次将我留在远程shell提示符处。您可以尝试将其作为一种替代方法。

我不清楚您是否希望从emacs中终止该命令,但您可以交替打开另一个连接或窗口(如果您使用的是screen或tmux)并执行标准操作

ps aux | grep hungprocess
然后

kill hungprocess_pid

出于某种原因,我一直认为这样的方法行不通,我最终也会把emacs去掉。在emacs中打开gpg加密文件时,如果没有设置gpg pinentry代理,我已经多次使用这种方法。Emacs/gpg将尝试生成一个GUI,因此挂起Emacs,在远程ssh时等待GUI中的输入。

我无法重现您描述的问题。一步一步地描述一下你的经历怎么样?谢谢,肖恩。我更新了问题,包括一步一步的描述。我有完全相同的问题,使用zsh和emacs 21.4.1,所以这是一个相当老的问题…FWIW,我不能在emacs 24.3中重现这一点,所以你现在可以回到使用
C-C-C
了。堆栈溢出是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另见。嗨,肖恩,谢谢你的帮助。事实上,
C-qc-cret
。我仍然想知道为什么
C-C-C
不起作用。我在bob.porkrind.org[Mac OS X 10.7.2]上使用的是:2012-01-15的GNU Emacs 24.0.92.1(x86_64-apple-darwin,NS apple-appkit-1038.36)。谢谢@Sean,你应该在你的答案中加入它,因为它解释了
C-q
将在缓冲区中插入下一个键入的字符。@MikeH-R该链接不再存在。那么从