Ctrl + C 无法终止进程怎么办?

Ctrl + C 无法终止进程怎么办?

Ctrl+C并不总是能终止当前进程(例如,如果该进程正忙于某些网络操作)。在这种情况下,您只能在光标旁看到“^C”,而无法执行其他操作。

在不丢失终端的情况下强制该进程终止的最简单的方法是什么?

答案1

Ctrl要理解为什么+C不起作用的问题,了解按下它时发生的情况非常有帮助:

内核 tty 驱动导致Ctrl+ C“发送一个信号情报信号到附加的进程。您可以通过以下方式了解不同的信号人信号

 SIGINT        2       Term    Interrupt from keyboard

程序可以忽略该信号,就像它们可以忽略信号传输协议以及:

 SIGTSTP   18,20,24    Stop    Stop typed at tty

Ctrl(当您按下+时大多数 shell 都会执行此操作Z,这就是为什么不能保证它能正常工作。)

有一些信号是进程不能忽略的:终止信号停止信号以及其他一些。您可以通过命令。因此,要终止挂起/僵尸进程,只需找到进程 ID(PID)。例如,使用pgrepps然后kill它:

 % kill -9 PID

答案2

如果Ctrl+ C(SIGINT) 不起作用,请尝试Ctrl+ \(SIGQUIT)。然后尝试Ctrl+ Z(SIGTSTP)。如果返回到 shell 提示符,请kill在进程 ID 上执行。(默认为 SIGTERM 信号,您可以使用 指定kill -TERM。在某些 shell 中,您可能能够使用%1它来引用 PID。)如果不起作用,请转到另一个终端或 SSH 会话并在进程 ID 上 执行kill或。kill -TERM只能作为最后的手段您是否应该这样做kill -KILLkill -9因为它没有给该过程任何机会干净地中止、同步其打开的文件、删除其临时文件、关闭网络连接等。

答案3

看到这个关联也一样。

Ctrl+ Z:暂停一个进程。

Ctrl+ C:礼貌地要求该进程立即关闭。

Ctrl+ \:毫不留情地杀死当前在前台的进程

答案4

通常情况下,您仍然可以停止该过程 ( Ctrl+ Z),然后使用kill -9。对于kill -9,您需要进程 PID首先。对于后台作业,kill -9 %1这是最简单的方法 - 如果您不确定要终止的后台作业数量,请运行jobs

或者,你可以使用以下命令查找进程 ID

ps

然后你可以运行

kill -9 <Appropriate PID from ps output>

相关内容