我是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
。
有人可以向我解释一下这里究竟发生了什么吗?
答案 0 :(得分:3)
终端1中的shell是bash,PID为3301.终端2中的shell是bash,PID为4478.所以是的,每个终端窗口都运行一个独立的shell副本。