优先级对后台任务执行有什么影响?

优先级对后台任务执行有什么影响?

我的两个例子是:

echo hi &

和:

(echo hi &)

第一个会给我进程 ID 作为返回结果(例如"[1] 5627"),其中添加优先运算符会删除它。发生了什么导致这种情况?

另外,有没有办法添加优先级,但仍然让后台任务报告其进程 ID?

答案1

这是一个关于作业控制。请阅读相应部分man bash

shell 中的括号不仅仅是优先运算符。他们启动了一个新的(子)shell。

您通常在启用了作业控制的交互式 shell 中输入内容。将命令放在括号中将在没有作业控制的子 shell 中运行此命令。

尝试:

sleep 10&
jobs

(sleep 10&)
jobs

第一个睡眠由 列出jobs,因为它是从启用作业控制的 shell 启动的。第二个不是,因为它是由子shell启动的。

相关内容