首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取前段时间完成的后台进程的退出代码

获取前段时间完成的后台进程的退出代码
EN

Stack Overflow用户
提问于 2016-06-29 03:53:55
回答 1查看 58关注 0票数 0

这可能不是一个全新的话题,但我遇到了一点奇怪的情况。

通过在后台启动脚本,我在一个循环中处理了大约1000个文件。我想根据每个进程返回的退出代码对文件执行一些操作。当我进入循环等待每个进程完成时,我发现一些进程已经完成了。我修改了脚本,使其仅在pgrep找到进程时才等待,并假定进程已成功完成。问题是-我必须知道每个进程的退出代码,以便对相应的文件执行操作。有什么想法吗?

pid_list=() for FILE in $SOME_FOLDER do (process with FILE as parameter) & done

for pid in "${pid_list[@]}" do if pgrep $pid; then #process could have just completed as we got here if wait $pid; then echo "process $pid successfully completed!" >> $logfile else echo "process $pid failed!" >> $logfile fnc_error_exit fi else echo "assumed that process $pid successfully completed but I DON'T KNOW THE EXIT CODE!" >> $logfile continue fi done

EN

回答 1

Stack Overflow用户

发布于 2016-07-08 10:21:59

我不能准确地解决你的问题。

既然我不知道你的确切情况,你可以尝试其他方法使用父脚本和子脚本吗?

例如,最上面的脚本如下所示:

代码语言:javascript
复制
  for FILE in $HOME/*.txt
  do
    parent.sh $FILE  &
  done

然后,parent.sh是这样的:

代码语言:javascript
复制
  child.sh  $1
  RC=$?
  case $RC in
     0 ) echo Exit code 0 for $1 >> parent.log
     ;;
     1 ) echo Exit code 1 for $1 >> parent.log
     ;;
     * ) echo Other Exit code $RC for $1 >> parent.log
     ;;
  esac

子脚本如下所示:

代码语言:javascript
复制
   grep -q hello $1

然后,parent.sh将处理child.sh的每个退出代码

所有文件都将由parent.sh处理,而不会遗漏处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38085169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档