Eon*_*nil 209 unix command-line
我正在使用 Mac OS X 终端。我使用Ctrl+Z或Ctrl+C来停止一些程序。但我意识到我不知道他们到底在做什么。它们是什么,它们之间有什么区别?
这个问题是本周的超级用户问题。
阅读 2011 年 3 月 13 日的博客条目以了解更多详细信息或提交您自己的本周问题。
Wuf*_*ers 277
Control+Z用于通过向进程发送信号来暂停进程,该信号SIGSTOP不能被程序拦截。而Control+C用于杀死带有信号的进程SIGINT,并且可以被程序拦截,因此它可以在退出之前清理自己,或者根本不退出。
如果您挂起一个进程,这将显示在 shell 中,告诉您它已被挂起:
[1]+ Stopped yes
Run Code Online (Sandbox Code Playgroud)
但是,如果你杀死一个,除了被退回到 shell 提示之外,你不会看到任何确认。当你暂停一个进程时,你也可以用它做一些花哨的事情。例如,运行这个:
fg
Run Code Online (Sandbox Code Playgroud)
暂停程序将使其回到前台。
并运行命令
bg
Run Code Online (Sandbox Code Playgroud)
程序暂停后将允许它在后台运行(尽管程序的输出仍将转到 TTY)。
如果你想杀死一个挂起的程序,你不必fg先把它带回来,你可以简单地执行以下命令:
kill %1
Run Code Online (Sandbox Code Playgroud)
如果您有多个挂起的命令,请运行
jobs
Run Code Online (Sandbox Code Playgroud)
将列出它们,如下所示:
[1]- Stopped pianobar
[2]+ Stopped yes
Run Code Online (Sandbox Code Playgroud)
使用%#,其中#是作业编号(jobs输出中方括号中的编号)bg,fg, 或kill可用于对该作业执行操作。
Ben*_*igt 24
Ctrl+Z 使用 SIGTSTP 暂停进程,您可以稍后恢复它。Ctrl+C 使用 SIGINT 终止进程,除非它被目标处理/忽略,否则它会终止进程,因此您无法恢复它。还有一个 SIGSTOP 可以通过它发送kill()并且进程无法拦截。SIGCONT 是 SIGSTOP 和 SIGTSTP 的对应,它取消挂起进程。
小智 18
CTRL+Z 停止(暂停)一个工作
CTRL+C 终止作业
使用 CTRL+C 您无法恢复进程,但使用 CTRL+Z 可以通过在命令提示符处输入来恢复作业:
fg %1
Run Code Online (Sandbox Code Playgroud)
如果您暂停了多个进程,那么您应该这样做
jobs
Run Code Online (Sandbox Code Playgroud)
查看输出并选择适当的数字来恢复例如
fg %3
Run Code Online (Sandbox Code Playgroud)
恢复列表中的第三个作业。您还可以在后台运行作业
bg %n
Run Code Online (Sandbox Code Playgroud)
其中 n 是工作编号。
| 归档时间: |
|
| 查看次数: |
302912 次 |
| 最近记录: |