Linux bjob​​s + bj1 -l:在单个linux命令中列出列出的每个作业的日志

时间:2019-05-22 18:51:54

标签: linux

  1. bjob​​s -g JobGroupName | grep RUN | awk'{print $ 1}' 列出所有正在运行的作业 示例列出了以下作业: 8299414 8299410
  2. bj1 -l 8299414 | awk'{print $ 44}'给了我该作业的运行日志

如图所示,我可以获取每个作业的日志,但是我不想为100个作业手动执行此操作。 如何结合步骤1和步骤2,以列出所有列出的作业的所有日志?管子没有工作。我相信带有foreach的功能可能会起作用,但仍无法找到简单的方法。

预先感谢

1 个答案:

答案 0 :(得分:0)

最直接的方法是for循环:

for id in $(bjobs -g JobGroupName | grep RUN | awk '{print $1}'); do
  bj1 -l $id | awk '{print $44}'
done

我对bjobs / bj1工具不熟悉,但是如果它们的行为类似于ps,那么xargs是一个不错的选择-它使您可以运行带有STDOUT输出作为参数的命令:

bjobs -g JobGroupName | grep RUN | awk '{print $1}' | xargs bj1 -l | awk '{print $44}'