我可以这样启动后台进程:
>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 &
我在手册页中查找了一些环境变量,该变量控制显示的内容,但尚未找到它。这可能吗?如果可以,怎么办?
答案 0 :(得分:0)
您可以定义一个函数,该函数先打印命令,然后在后台执行它。
mybg() {
echo "Backgrounding: $@"
eval "$@ &"
}
那么您可以做:
mybg sleep 60
答案 1 :(得分:0)
您可以通过使用group命令启动后台执行并重定向group命令的stderr来禁止显示初始[1] 123456
。您可以紧随其后的是jobs -l %
,以打印出所需的关于在后台放置的最后一条命令的输出。
{ sleep 2m &} 2>/dev/null; jobs -l %
如果您关心正在运行的作业的标准错误,则可以这样扩展:
{ sleep 2m 2>&3 &} 3>&2 2>/dev/null; jobs -l %
[技术来自this答案]