打开一个新的终端会产生一个新的shell吗?

时间:2015-09-15 20:14:49

标签: linux shell unix

我是Unix系统命令和架构的新手。我发现一些相当混乱的概念,并留下了一些未解答的问题,例如:在单个用户的登录会话中可以生成多少个shell? shell的数量是否与用户登录有关?

在探索系统命令时,我尝试了以下方法:

打开一个终端窗口,比如终端1.按顺序输入以下命令:

sleep 300
^z(ctrl+z)
bg
jobs
ps

jobs的输出:

[1]+  Running                 sleep 300 &

ps的输出:

PID TTY          TIME CMD
3301 pts/1    00:00:00 bash
4494 pts/1    00:00:00 sleep
4497 pts/1    00:00:00 ps

不浪费任何进一步的时间(300秒远没有花费),我打开另一个终端,让我们命名为终端2.我按顺序输入以下命令:

jobs
ps

jobs的输出:-no output,返回命令提示符 -

ps的输出:

PID TTY          TIME CMD
4478 pts/3    00:00:00 bash
4496 pts/3    00:00:00 ps

我想知道为什么在终端2中执行的后台sleep作业(具有进程ID 4494)未列在终端2中,既没有jobs也没有ps

有人可以向我解释一下这里究竟发生了什么吗?

1 个答案:

答案 0 :(得分:3)

终端1中的shell是bash,PID为3301.终端2中的shell是bash,PID为4478.所以是的,每个终端窗口都运行一个独立的shell副本。