有时,进程会忽略Bash中Ctrl- 发送的SIGINT信号C。例如man
和vi
。假设您不想使用Google或阅读有关如何退出正在运行的过程的手册,是否有任何按键序列将始终有效(无需离开终端)?
有时,进程会忽略Bash中Ctrl- 发送的SIGINT信号C。例如man
和vi
。假设您不想使用Google或阅读有关如何退出正在运行的过程的手册,是否有任何按键序列将始终有效(无需离开终端)?
Answers:
用+ 发送SIGQUIT信号。Ctrl\
.. $ sleep 10
^\Quit
→相当于kill -3 pid
。在用户空间中运行的程序不会忽略sigquit。
还有一组Magic SysRq键盘快捷键。其中一个比较有趣的是:Alt+ SysRq+ k。它会杀死当前虚拟控制台上的每个进程。如果您的其中一个tty完全损坏了,可以用来返回。在运行X.org的tty上,可以毫不留情地杀死X。
在大多数键盘上,SysRq键与打印键相同。在我的笔记本上,可以使用Fn键调用它。即依次按Alt→Fn→打印→k。
以下是一些基本的流程管理快捷方式:
bg
在后台继续执行,fg
加到前台)注: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。
有关Shell和Terminals的更多信息,请参见以下内容:
ps
以查看其进程ID并使用kill pid
或(如果您不关心该程序的其他实例)杀死它们killall vi
。无论如何,Ctrl-Z似乎总是有效。
kill %%
可以取消最后一个工作,kill %5
其中5是显示的工作编号jobs
。
Ctrl
+ 键?\
\
尝试以下方法之一:
Ctrl+4
Ctrl+\
要么:
Ctrl+ Z然后运行:
kill %1
%1
当您按Control- 时,返回的作业编号在哪里Z?添加-9
逼杀。
在文本控制台中时,您也可以尝试:Ctrl- SysRq。内核应终止进程。
或SysRq- k杀死当前虚拟控制台上的所有进程(也可以杀死X和svgalib程序)。
注意:当使用魔术SysRq键杀死冻结的图形程序时,该程序将无法恢复文本模式。这会使所有内容都不可读。
试试Ctrl+ Alt+Backspace
如果您使用的是ubuntu 10.04,则要启用此密钥。
要启用Control- Alt-Backspace
转到系统->首选项->键盘
选择布局选项卡,然后单击布局选项。
选择键序列杀死X服务器,并启用Control+ Alt+Backspace。
注意:
压延Ctrl- Alt- Backspace将重新启动X服务器。