职位未出现在“职位”中

职位未出现在“职位”中

我有一个名为go.sh

python3 bob.py &> lol.log & 
python3 alice.py &> lol2.log &

当我跑./go.sh然后跑jobs。我执行过的所有工作都没有go.sh出现在jobs.事实上,什么也没有出现jobs

然而,当我逐个运行每个命令时go.sh,它确实出现在jobs.

我怎样才能解决这个问题?

答案1

我假设您go.sh &不只是运行go.shand then jobs,因为这是微不足道的(一旦结束就不会报告任何工作)。

您的脚本在后台启动两项作业,然后就完成了。所以你看不到它。您也看不到脚本启动的作业,因为它是另一个 shell。如果您想查看作业,而不是执行脚本,请获取它。

. go.sh; jobs

现在您应该看到列出的两个职位。

如果您更喜欢执行脚本并仍将其视为一项作业,请告诉它等待其子级完成。wait在结束之前添加。您还可以jobs从脚本内调用。

答案2

仅当作业是您正在键入的 shell 的直接子级时,它才会出现在“jobs”中。该脚本在新进程的子 shell 中运行,因此不是登录 shell 的子级,并且对登录 shell 不可见。

相关内容