使用 cmd 启动后台进程时显示命令 &



我可以像这样启动后台进程:

>user@host ~ $ sleep 2m &
>[1] 123456

启动后台作业后,将立即显示作业编号和 pid[1] 123456

启动作业后,我可以使用jobs -l检查其状态。

>user@host ~ $ jobs -l
>[1] 123456 Running sleep 2m &

我希望在启动后台进程时看到jobs -l的完整输出,如下所示:

>user@host ~ $ sleep 2m &
>[1] 123456 Running sleep 2m &

我也会对命令感到满意,如下所示:

>user@host ~ $ sleep 2m &
>[1] 123456 sleep 2m &

我在手册页中查找了一些控制显示内容的环境变量,但尚未找到它。 这是否可能,如果可能,如何做到这一点?

您可以定义一个函数来打印命令,然后在后台执行它。

mybg() {
echo "Backgrounding: $@"
eval "$@ &"
}

然后你可以做:

mybg sleep 60

您可以通过使用 group 命令启动后台执行和重定向 group 命令的 stderr 来抑制初始[1] 123456输出。 您可以立即jobs -l %打印有关放置在后台的最后一个命令的输出。

{ sleep 2m &} 2>/dev/null; jobs -l %

如果您关心正在运行的作业的 stderr,则可以像这样扩展它:

{ sleep 2m 2>&3 &} 3>&2 2>/dev/null; jobs -l %

[技术来自这个答案]

最新更新