我运行分析的超级计算机使用 SGE 进行作业管理,并要求每个作业持续时间不超过 24 小时。而这个功能让我很头疼。
遗憾的是,我被要求使用检查点机制来输出结果并重新提交脚本qsub myJobScript
。就程序而言,当时钟时间达到23:30:00(我给IO操作半个小时)时,让其输出一个临时文件对我来说并不困难,假设输出文件名为1.00137/U
and1.00137/p
等。
注意:当您提交作业时,您永远不知道它何时开始。但它启动时在我的文件夹下确实有一个日志文件。
所以我的问题是,当创建和检测到“新文件”时,如何使用crontab
或at
bash 脚本自动提交我的作业?有什么想法吗?
答案1
每 5 分钟运行一个简单的脚本cron
。你的 crontab 可能看起来像这样:
*/5 * * * * /path/to/your/script
脚本伪代码:
IF (lockfile exists) { exit }
create lockfile
IF (old job has not finished yet) {
remove lockfile
exit
}
IF (new job has already been queued) {
remove lockfile
exit
}
schedule new task
remove lockfile
看shell 脚本中的锁定是否正确?了解如何正确锁定(尽可能无竞争条件)。