gpt4 book ai didi

linux - `nohup` 提交 `SLURM` 作业时出现问题

转载 作者:行者123 更新时间:2023-12-05 05:38:05 27 4
gpt4 key购买 nike

我有一个运行 bash 脚本的 python 代码 main.py,bash 脚本依次提交一个作业 job.bash 并获得它的 JOBID 使用 echo $JOBID | awk {'打印 $4'}。如果我在终端中运行 python,bash 脚本会工作,并且我能够获取并回显 JOBID,如下所示:

#!/bin/bash 
JOBID=`sbatch ~/job.bash | tee output.log`
JOBID=`echo $JOBID | awk {'print $4'}`
echo $JOBID

作为 python 的一部分在终端 python main.py 中运行,但是在执行 nohup python main.py & 时,回显不会打印或存储 JOBID.

有什么原因吗?


我正在提交一个 slurm 作业,因此 JOBID 是来自 slurm 的 pid


(7 月 17 日更新)看起来问题出在命令 sbatch ~/job.bash | tee output.log,它不会使用 nohup 提交,因此 JOBID 永远不会被存储和回显。

(7 月 18 日更新)根据 @pynexj 的评论,在脚本结果中添加 set -x:

nohup: ignoring input and redirecting stderr to stdout
+ date
Mon Jul 18 21:46:35 +03 2022
++ sbatch ~/job.bash
++ tee output.log
+ JOBID=
++ echo
++ awk '{print $4}'
+ JOBID=
+ echo

问题依然存在。 nohup 似乎与 sbatch 不兼容。


问题:为什么 nohup 应该阻止提交 slurm 作业?它的目的仅仅是捕获终止信号?

最佳答案

如果这个问题只发生在 nohup 上目前,您可以获得nohup的好处没有实际使用它:

yourscript </dev/null >file.log 2>&1 & disown -h "$!"

这会执行以下操作:

  • /dev/null 重定向标准输入与 </dev/null
  • 将 stdout 和 stderr 重定向到日志文件 >file.log 2>&1
  • disown -h "$!" 告诉 shell 不要将 HUP 信号转发给后台进程

...这就是一切nohup

关于linux - `nohup` 提交 `SLURM` 作业时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73015915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com