退出命令行程序的正确方法?

时间:2011-11-22 04:17:15

标签: unix terminal

我正在使用mac / linux并且我知道ctrl-z会在终端中停止当前运行的命令,但是当我检查系统监视器时,我经常看到该进程仍在运行。在终端中停止命令的正确方法是什么?

通常我在运行python或ruby应用程序时遇到此问题,我不确定这是否与它有关,只是想我会添加它。

3 个答案:

答案 0 :(得分:41)

使用 control-z 暂停该过程(请参阅stty -a的输出,其中列出susp下的键击。这使它运行,但在假死(因此它没有使用任何CPU资源)。它可以在以后恢复。

如果你想永久停止程序,那么任何中断(通常是 control-c )或退出(通常是 control - \ )都会停止进程,后者产生核心转储(除非你已经禁用它们)。您也可以使用从另一个终端发送到进程的HUP或TERM信号(或者,如果确实有必要,使用KILL信号,但首先尝试其他信号);或者您可以使用 control-z 暂停进程,然后从当前终端发送死亡威胁,然后将(即将死亡)进程带回前台(fg

请注意,所有组合键都可以通过stty命令或等效命令进行更改;默认值可能因系统而异。

答案 1 :(得分:2)

如果您执行ctrl-z然后键入exit,它将关闭后台应用程序。

Ctrl+Q是杀死应用程序的另一种好方法。

答案 2 :(得分:1)

查看Job Control on UNIX systems

如果您无法控制shell,只需按 ctrl + C 即可停止该过程。如果这不起作用,您可以尝试 ctrl + Z 并使用jobskill -9 %<job #>将其删除。 &#39; -9&#39;是一种信号。您可以man kill查看信号列表。