按顺序跟踪子进程

按顺序跟踪子进程

我在远程服务器上运行几个命令sshpass

  gnome-terminal --maximize 
  --tab --title='aTask' -e "sshpass -p "afsd@#$5u89f"  ssh [email protected] 'command1 && command2'" \

所以我的问题是,如果我的最后一条命令是mvn clean install,那么我怎么知道构建成功了?

在某种程度上,我需要跟踪我的第一个子进程是否已成功完成所有命令,以便我可以按顺序启动另一个子进程。

答案1

如果您想顺序运行,那么退出代码就足够了;

command && echo "it worked"

或者

command || echo "we are having a bad day"

如果 gnome-terminal 或 sshpass 未返回正确的返回代码文件,请报告错误并使用替代方案。

如果你想并行运行使用参数-P或平行线哪里的

退出状态是运行的每个命令的退出状态的组合,OR 在一起。 (因此,如果任何一个命令退出非零,并行作为一个整体将退出非零。)

如果您的命令之一在执行之前返回,请使用替代方案或使您的命令采用异步设计模式(重新发明轮子),例如通过附加

 ; echo $(date) $? > task1.r

然后等待所有任务完成;

while [ $(cat task*.r 2>/dev/null | wc -l) -lt $TASK_COUNT ] ; do
    sleep 1
done
grep -P " [^0]$" task*.r && echo "we are having a bad day"

相关内容