Olivier Lalonde Asked: 2010-11-21 03:47:23 +0800 CST2010-11-21 03:47:23 +0800 CST 2010-11-21 03:47:23 +0800 CST 当 Ctrl-C 不会杀死正在运行的作业时该怎么办? 772 Ctrl有时,进程会忽略-C在 Bash 中发送的 SIGINT 信号。例如,man和vi。假设您不想谷歌或阅读有关如何退出正在运行的进程的手册,是否有任何键序列将始终有效(不离开终端)? command-line bash job-control 8 个回答 Voted Best Answer Stefano Palazzo 2010-11-21T04:07:00+08:002010-11-21T04:07:00+08:00 使用+发送SIGQUIT信号。Ctrl\ .. $ sleep 10 ^\Quit → 这相当于kill -3 pid。在用户空间中运行的程序不会忽略 sigquit。 还有一组Magic SysRq键盘快捷键。其中一个更有趣的是:Alt++ 。它会杀死当前虚拟控制台上的每个进程。如果你的一个 tty 完全彻底坏了,这可以用来回去。在运行 X.org 的 tty 上,可以用来杀掉 X 毫不留情。SysRqk 在大多数键盘上,SysRq 键与 Print 键相同。在我的笔记本上,可以使用 Fn 键调用它;即按Alt→Fn→Print→k的顺序。 以下是一些基本的进程管理快捷方式: Ctrl+ Z:暂停进程(加号bg在后台恢复,fg提升到前台) Ctrl+ C: 礼貌地要求进程立即关闭 Ctrl+ \:无情地杀死当前在前台的进程 Alt+ SysRq+ s:将数据写入磁盘(在杀死任何重要的东西之前总是这样做) Alt+ SysRq+ s, k: 无情地杀死给定虚拟控制台上的所有当前进程 Alt+ SysRq+ s, b: 无情地重启而不卸载, Alt+ SysRq+ r, e, i, s, u, b:即使系统完全崩溃,也可以安全地重新启动, 注意:Ctrl+Z与Ctrl+C和Ctrl+不同\,也适用于man、vi、less等。 如有疑问,以下程序几乎总是有效: ~$ sleep 10 ^Z [5]+ Stopped sleep 10 ~$ ps PID TTY TIME CMD 4804 pts/0 00:00:00 bash 6207 pts/0 00:00:00 sleep 6208 pts/0 00:00:00 ps ~$ kill -9 6207 [5]+ Killed sleep 10 ~$ ^Z 当然表示Ctrl+Z已被按下。 要更深入地了解 Shells 和 Terminals,另请参阅我的答案: 什么是贝壳? 为什么虚拟终端是“虚拟的”,“真实”终端是什么/为什么/在哪里? Benjamin 2010-11-21T04:06:19+08:002010-11-21T04:06:19+08:00 你可以试试Ctrl+\ tylerl 2010-11-21T12:18:41+08:002010-11-21T12:18:41+08:00 有时会CTRL+C被发送到错误的程序或输入通道。这在编辑器中尤其常见,例如vi带有管道输出的命令、涉及循环的复杂 bash 命令等。 一个简单、快速的解决方案是暂停作业CTRL+Z,然后按作业号终止它:kill %1或kill -9 %1等。 kenorb 2012-10-02T03:47:34+08:002012-10-02T03:47:34+08:00 尝试其中之一: Ctrl+4 Ctrl+\ 或者: Ctrl+Z然后运行: kill %1 按-%1时返回的作业数量在哪里。添加强制杀。ControlZ-9 当您在文本控制台中时,您也可以尝试:Ctrl- SysRq。内核应该终止该进程。 或者SysRq- k,杀死当前虚拟控制台上的所有进程(也可以杀死 X 和 svgalib 程序)。 注意:当使用 SysRq 魔法键杀死冻结的图形程序时,该程序没有机会恢复文本模式。这会使一切变得不可读。 请参阅:Magic SysRq 键及其命令组合。 Minter 2016-11-21T11:36:36+08:002016-11-21T11:36:36+08:00 您可能从以下位置更改了复制的快捷方式: CTRL+ SHIFT+C 至 CTRL+C 这样,当您尝试终止进程时,CTRL+C不起作用。 尝试将复制快捷方式替换为CTRL++ 。SHIFTC antivirtel 2010-11-21T14:46:30+08:002010-11-21T14:46:30+08:00 退出man,使用q 离开vi使用:q Manas kumar 2020-07-26T19:22:27+08:002020-07-26T19:22:27+08:00 打开终端 → 首选项 → 快捷方式并搜索是否错误地用Ctrl+替换了任何键C。 karthick87 2010-11-21T03:56:38+08:002010-11-21T03:56:38+08:00 试试Ctrl+ Alt+Backspace 如果您使用的是 ubuntu 10.04,您希望启用此密钥。 启用Control- Alt-Backspace 转到系统->首选项->键盘 选择布局选项卡并单击布局选项。 选择键序列以终止 X 服务器并启用Control++AltBackspace。 笔记: 按Ctrl- Alt-Backspace将重新启动您的 X 服务器。
使用+发送SIGQUIT信号。Ctrl\
→ 这相当于
kill -3 pid
。在用户空间中运行的程序不会忽略 sigquit。还有一组Magic SysRq键盘快捷键。其中一个更有趣的是:Alt++ 。它会杀死当前虚拟控制台上的每个进程。如果你的一个 tty 完全彻底坏了,这可以用来回去。在运行 X.org 的 tty 上,可以用来杀掉 X 毫不留情。SysRqk
在大多数键盘上,SysRq 键与 Print 键相同。在我的笔记本上,可以使用 Fn 键调用它;即按Alt→Fn→Print→k的顺序。
以下是一些基本的进程管理快捷方式:
bg
在后台恢复,fg
提升到前台)注意:Ctrl+Z与Ctrl+C和Ctrl+不同\,也适用于
man
、vi
、less
等。如有疑问,以下程序几乎总是有效:
^Z 当然表示Ctrl+Z已被按下。
要更深入地了解 Shells 和 Terminals,另请参阅我的答案:
你可以试试Ctrl+\
有时会CTRL+C被发送到错误的程序或输入通道。这在编辑器中尤其常见,例如
vi
带有管道输出的命令、涉及循环的复杂 bash 命令等。一个简单、快速的解决方案是暂停作业CTRL+Z,然后按作业号终止它:
kill %1
或kill -9 %1
等。尝试其中之一:
Ctrl+4
Ctrl+\
或者:
Ctrl+Z然后运行:
kill %1
按-
%1
时返回的作业数量在哪里。添加强制杀。ControlZ-9
当您在文本控制台中时,您也可以尝试:Ctrl- SysRq。内核应该终止该进程。
或者SysRq- k,杀死当前虚拟控制台上的所有进程(也可以杀死 X 和 svgalib 程序)。
请参阅:Magic SysRq 键及其命令组合。
您可能从以下位置更改了复制的快捷方式:
CTRL+ SHIFT+C
至
CTRL+C
这样,当您尝试终止进程时,CTRL+C不起作用。
尝试将复制快捷方式替换为CTRL++ 。SHIFTC
退出man,使用
q
离开vi使用:q
打开终端 → 首选项 → 快捷方式并搜索是否错误地用Ctrl+替换了任何键C。
试试Ctrl+ Alt+Backspace
如果您使用的是 ubuntu 10.04,您希望启用此密钥。
启用Control- Alt-Backspace
转到系统->首选项->键盘
选择布局选项卡并单击布局选项。
选择键序列以终止 X 服务器并启用Control++AltBackspace。
笔记:
按Ctrl- Alt-Backspace将重新启动您的 X 服务器。