文章目录
- ✅ 方法一:使用 `--test-only`(推荐)
- ✅ 方法二:在脚本中打印 Slurm 环境变量(用于调试)
- ✅ 方法三:使用 `sbatch --wrap` + `env` 快速测试(轻量提交)
- 📌 常见 Slurm 环境变量包括:
- 🔍 总结
sbatch本身是用于提交作业脚本到 Slurm 调度系统的,它不会在提交时执行脚本内容,但也不会直接显示将要使用的运行参数和环境变量。
如果你希望预览sbatch 提交时会使用的参数和 Slurm 环境变量,而不真正提交作业,可以使用以下技巧:
✅ 方法一:使用--test-only(推荐)
Slurm 提供了--test-only(或-t)选项,用于检查作业是否可以被调度,不会真正提交作业,但会返回如果提交成功会获得的作业 ID 以及资源分配信息。
sbatch --test-only your_script.sh输出示例:
Job 12345 would be submitted if --test-only were not used虽然它不会列出所有环境变量,但可以验证资源请求(如--nodes,--ntasks,--time等)是否有效。
✅ 方法二:在脚本中打印 Slurm 环境变量(用于调试)
你可以在作业脚本开头加入一段代码,仅在测试时运行,打印 Slurm 设置的环境变量,例如:
#!/bin/bash#SBATCH --nodes=2#SBATCH --ntasks-per-node=4#SBATCH --time=01:00:00# 仅用于调试:打印 Slurm 环境变量env|grepSLURM|sortecho"=== SBATCH parameters ==="scontrol show job$SLURM_JOB_ID2>/dev/null||echo"Job not running (testing?)"然后用--test-only提交不会执行这段代码,但如果你临时提交一个短作业(如--wrap),可以快速查看实际生效的变量。
✅ 方法三:使用sbatch --wrap+env快速测试(轻量提交)
如果你愿意做一个快速的测试提交(几秒内完成),可以用:
sbatch--wrap='env | grep SLURM'--output=slurm-test.out然后查看slurm-test.out文件,即可看到实际运行时 Slurm 设置的全部环境变量。
📌 常见 Slurm 环境变量包括:
SLURM_JOB_IDSLURM_NNODESSLURM_NTASKSSLURM_CPUS_PER_TASKSLURM_JOB_NODELISTSLURM_SUBMIT_DIRSLURM_JOB_NUM_NODES- 等等
完整列表可参考 Slurm 官方文档:https://slurm.schedmd.com/sbatch.html#lbAI
🔍 总结
| 目标 | 方法 |
|---|---|
| 验证参数是否合法(不提交) | sbatch --test-only script.sh |
| 查看实际生效的 Slurm 环境变量 | 提交一个env | grep SLURM的轻量作业 |
| 调试脚本中的参数 | 在脚本中加入scontrol show job $SLURM_JOB_ID和env |