我可以像这样启动后台进程:
>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 %
[技术来自这个答案]