CTRL Z 与 Linux jobs

平常测试的时候,经常要开多个终端感觉有点不方便,特别是一些不支持自定义的远程 webssh。最近用 EMACS 的时候,接触到了 ctrl+z 这个东西,随手记录一下。

通常的应用程序可以通过 ctrl+z 切换到后台,例如很常见的一个场景,启动一个 http server,然后用 curl 命令(或者 ab 之类的命令)去请求它测试一下。这个时候就可以使用 ctrl+z 切换后台来节省开多个终端的时间:

$ node index
# ctrl+z
^Z
[1]  + 26762 suspended  node index

启动之后直接 ctrl+z 就可以切换到后台。然后可以通过 jobs 来查看后台程序

$ jobs
[1]  + suspended  node index

切换到后台之后,之后就可以做一些别的操作。等操作结束后,可以重新将其从后台转到前台来:

$ fg
[1]  + 26762 continued  node index
# ... 应用日志

这样就可以勉强不用开多个终端了。直接结束前台的程序可以使用 ctrl+c。

这里有一个简单的前台程序和后台程序的概念。通常的后台程序启动方式是:

node index &

多个后台任务可以通过 %n 来选择恢复某个到前台。例如:

$ fg %1

就可以恢复 jobs 显示的编号为 1 的任务。恢复到前台之后可以通过 ctrl+c 结束任务。也可以通过 kill 来直接杀死后台任务:

$ kill %1
Advertisements