加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 后台进程完成后如何获取stdout消息?

发布时间:2020-12-16 01:47:35 所属栏目:安全 来源:网络整理
导读:我意识到关于完成后台任务后的通知还有其他几个问题,以及如何在其他人结束后排队等待工作,以及像 these这样的问题,但我正在寻找一个更简单问题的简单答案. 我想开始一个非常简单的后台工作,并获得一个完整的简单stdout文本通知. 例如: cp My_Huge_File.txt
我意识到关于完成后台任务后的通知还有其他几个问题,以及如何在其他人结束后排队等待工作,以及像 these这样的问题,但我正在寻找一个更简单问题的简单答案.

我想开始一个非常简单的后台工作,并获得一个完整的简单stdout文本通知.

例如:

cp My_Huge_File.txt New_directory &

…当它完成时,我的bash shell会显示一条消息.这条消息可能只是已完成作业的PID,但是如果我可以为每个后台进程编写唯一的消息,那也很酷,所以我可以让很多后台作业运行而不会混淆.

谢谢你的任何建议!

解决方法

编辑:user000001的答案用;分隔命令.我用&&分隔命令在我的原始例子中.我注意到的唯一区别是,如果你使用&&,你不必用括号括起你的基本命令.分号更灵活一些,所以我更新了我的例子.

首先想到的是

{睡2;回声“完成睡眠”; }&

您还可以从上面的行中抑制随附的stderr输出:

{{sleep 2;回声“完成睡眠”; }& } 2> / dev / null

如果要将程序输出(stdout)保存到日志文件以供以后查看,可以使用:

{ { sleep 2; echo "Sleep done"; } & } 2>/dev/null 1>myfile.log

这里甚至是你可能使用的通用表单(你甚至可以创建一个别名,这样你就可以随时运行它而不必输入那么多!):

# dont hesitate to add semicolons for multiple commands
CMD="cp My_Huge_File.txt New_directory"
{ eval $CMD & } 2>/dev/null 1>myfile.log

您也可以使用|将stdout传递给另一个进程如果您希望使用其他脚本或软件实时处理输出.如果您想使用多个管道,T恤也是一个有用的工具.作为参考,还有更多I / O重定向here的示例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读