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

Mar*_*kka 21 unix terminal

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

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

Jon*_*ler 42

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

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

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

  • 很好的答案.我还要提到`bg`,它与`fg`相反.它允许您在后台恢复程序执行,以便您可以将终端用于其他目的.相关的东西是`disown`,它允许你从终端分离你的后台程序,这样即使你关闭终端它也会继续运行.要查看shell控制的作业,请使用`jobs`命令. (3认同)