如何根据位置或分区限制作业提交
how to limit job submision depending on location or partition
我想知道是否有一种方法可以根据在 HPC 中进行提交的位置来限制作业提交。
事情是,最近添加了暂存盘存储。所以现在我有两个分区。
- 主目录
- 临时目录
我希望所有 HPC 用户都被迫只在 scratch 目录而不是主目录中提交他们的作业。
HPC 正在为作业计划程序运行 LSF。那么,我能否通过 LSF 控制作业提交(即 bsub),以便只有在 scratch 目录下提交的作业才能在 HPC 中运行?
提前致谢。
我认为没有办法在本地执行此操作,但有一种方法可以自定义 LSF 提交时检查以拒绝从错误目录提交的作业。查看此文档:
特别是,您要做的是定义一个 esub
脚本来检查适当的提交 CWD。假设您将脚本命名为 esub.dircheck
,它看起来像这样:
#!/bin/sh
# Reject if submission is under /home
if [[ $PWD/ = /home/* ]]; then
echo "Job submission from /home forbidden"
exit $LSB_SUB_ABORT_VALUE
fi
现在您可以将 esub.dircheck
放入 $LSF_SERVERDIR
(确保它对所有人都可执行)。最后,如果您希望每次作业提交都进行检查,请在 lsf.conf 中设置以下参数:
LSB_ESUB_METHOD=dircheck
最后一点:我只是检查 PWD 在上面的代码中是否有 home 作为前缀,但如果你想确保你所在的目录,你可能需要做一些更复杂的事情在 /home 下,因为可能有符号链接会破坏前缀检查。 Take a look at this answer for details.
我想知道是否有一种方法可以根据在 HPC 中进行提交的位置来限制作业提交。
事情是,最近添加了暂存盘存储。所以现在我有两个分区。
- 主目录
- 临时目录
我希望所有 HPC 用户都被迫只在 scratch 目录而不是主目录中提交他们的作业。
HPC 正在为作业计划程序运行 LSF。那么,我能否通过 LSF 控制作业提交(即 bsub),以便只有在 scratch 目录下提交的作业才能在 HPC 中运行?
提前致谢。
我认为没有办法在本地执行此操作,但有一种方法可以自定义 LSF 提交时检查以拒绝从错误目录提交的作业。查看此文档:
特别是,您要做的是定义一个 esub
脚本来检查适当的提交 CWD。假设您将脚本命名为 esub.dircheck
,它看起来像这样:
#!/bin/sh
# Reject if submission is under /home
if [[ $PWD/ = /home/* ]]; then
echo "Job submission from /home forbidden"
exit $LSB_SUB_ABORT_VALUE
fi
现在您可以将 esub.dircheck
放入 $LSF_SERVERDIR
(确保它对所有人都可执行)。最后,如果您希望每次作业提交都进行检查,请在 lsf.conf 中设置以下参数:
LSB_ESUB_METHOD=dircheck
最后一点:我只是检查 PWD 在上面的代码中是否有 home 作为前缀,但如果你想确保你所在的目录,你可能需要做一些更复杂的事情在 /home 下,因为可能有符号链接会破坏前缀检查。 Take a look at this answer for details.