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的示例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |