LSF 作业提交 - 标准输出和标准错误重定向

LSF job submission - stdout & stderr redirection

我已经通过以下命令提交了我的工作:

bsub -e error.log -o output.log ./myScript.sh

我有一个问题:为什么输出和错误日志只有在作业结束后才可用?

谢谢

LSF 不会将输出发送回提交主机。如果提交主机和执行主机有共享文件系统,并且 JOB_SPOOL_DIR 在该共享文件系统中(假脱机目录默认为 $HOME/.lsbatch),那么您应该在那里看到 stdout 和 stderr。作业完成后,那里的文件被复制回bsub指定的位置。

检查 bparams -a | grep JOB_SPOOL_DIR 以查看管理员是否更改了假脱机目录的位置。使用或不使用 -o/-e 选项,当作业为 运行 时,其 stdout/err 将被捕获到作业的假脱机目录中。作业完成后,stdout/stderr 被复制到 bsub -o/-e 指定的文件名中。假脱机目录中文件的位置是 $JOB_SPOOL_DIR/<jobsubmittime>.<jobid>.out$JOB_SPOOL_DIR/<jobsubmittime>.<jobid>.err

[user1@beta ~]$ cat log.sh 
LINE=1
while :
do
  echo "line $LINE"
  LINE=$((LINE+1))
  sleep 1
done

[user1@beta ~]$ bsub -o output.log -e error.log ./log.sh
Job <930> is submitted to default queue <normal>.
[user1@beta ~]$ tail -f .lsbatch/*.930.out
line 1
line 2
line 3
...

根据 LSF documentation 行为是可配置的:

If LSB_STDOUT_DIRECT is not set and you use the bsub -o option, the standard output of a job is written to a temporary file and copied to the file you specify after the job finishes.