如何在HTCondor HPC管理器中同时记录错误到stdout和stderr文件?
在HTCondor中同时记录错误输出到stdout和stderr文件的方法
有两种简单的实现方式,可根据需求选择:
方法一:直接修改HTCondor提交脚本
在提交脚本里,将Error和Output配置项指向同一个文件,HTCondor会自动把标准输出(stdout)和标准错误(stderr)都写入该文件。
修改后的完整提交脚本如下:
#################### # # 实验脚本 # 简单的HTCondor提交描述文件 # # chmod a+x ~/diversity-for-predictive-success-of-meta-learning/main.sh # chmod a+x /shared/rsaas/miranda9//diversity-for-predictive-success-of-meta-learning/main.sh # condor_submit -i # condor_submit job.sub # #################### Executable = /home/miranda9/diversity-for-predictive-success-of-meta-learning/main.sh # Executable = /shared/rsaas/miranda9/diversity-for-predictive-success-of-meta-learning/main.sh SUBMIT_FILE = main.sh # 输出文件配置:将stdout和stderr合并到同一个文件 Log = $(SUBMIT_FILE).log$(CLUSTER) Output = $(SUBMIT_FILE).combined.out$(CLUSTER) Error = $(SUBMIT_FILE).combined.out$(CLUSTER) # GPU资源配置 REquest_gpus = 1 requirements = (CUDADeviceName == "Quadro RTX 6000") || (CUDADeviceName == "NVIDIA A40") # CPU资源配置 Request_cpus = 16 # 通知设置 Notify_user = brando....@gmail.com Notification = always Environment = CONDOR_JOB_ID= $(CLUSTER) # 将作业加入队列 Queue
方法二:修改可执行脚本(main.sh)
如果不想调整提交脚本,可以在main.sh中添加重定向逻辑,把stderr合并到stdout:
在脚本开头添加以下代码,所有命令的输出(包括错误)会合并输出,HTCondor的Output文件会捕获全部内容:
# 将stderr重定向到stdout,同时保留控制台输出 exec > >(tee "$CONDOR_JOB_ID".combined.out) 2>&1
或者在执行具体任务命令时直接添加重定向:
# 示例:执行Python脚本时合并输出 python /path/to/your/task_script.py > "$CONDOR_JOB_ID".combined.out 2>&1
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

