Oli*_*nde 121 command-line bash job-control
有时,进程会忽略Bash 中Ctrl-发送的 SIGINT 信号C。例如,man和vi。假设您不想谷歌或阅读有关如何退出正在运行的过程的手册,是否有任何键序列始终有效(无需离开终端)?
Ste*_*zzo 174
使用+发送SIGQUIT信号。Ctrl\
.. $ sleep 10
^\Quit
Run Code Online (Sandbox Code Playgroud)
? 这相当于kill -3 pid. 在用户空间中运行的程序不会忽略 sigquit。
还有一组Magic SysRq键盘快捷键。其中一个更有趣的是:Alt+ SysRq+ k。它会杀死当前虚拟控制台上的每个进程。如果您的 ttys 中的一个完全损坏,则可以使用它返回。在运行 X.org 的 tty 上,它可以用来毫不留情地杀死 X。
在大多数键盘上,SysRq 键与打印键相同。在我的笔记本上,它可以使用 Fn 键调用;即按该顺序 Alt?Fn?Print?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
~$
Run Code Online (Sandbox Code Playgroud)
^Z 当然表示Ctrl+Z已被按下。
要更深入地了解外壳和终端,另请参阅我的回答:
tyl*_*erl 10
有时CTRL+C会被发送到错误的程序或输入通道。这在编辑器中尤为常见,例如vi带有管道输出的命令、涉及循环的复杂 bash 命令等。
一个简单、快速的解决方案是暂停作业CTRL+Z,然后按作业号将其终止:kill %1orkill -9 %1等。
尝试以下方法之一:
Ctrl+4
Ctrl+\
或者:
Ctrl+Z然后运行:
kill %1
%1按下Control-时返回的作业数量在哪里Z。添加-9以强制杀死。
当您在文本控制台中时,您还可以尝试:Ctrl- SysRq。内核应该终止进程。
或者SysRq- k,杀死当前虚拟控制台上的所有进程(也可以杀死 X 和 svgalib 程序)。
注意:当使用魔法 SysRq 键杀死冻结的图形程序时,该程序没有机会恢复文本模式。这会使一切变得不可读。
| 归档时间: |
|
| 查看次数: |
121329 次 |
| 最近记录: |