2016-04-27 80 views
0

我正在寻找一种方法将sacct自动提供的作业信息自动保存到某个文件中。到目前为止,我在作业批处理脚本中包含了一个sacct调用,但状态总是“RUNNING”。自动保存slurm作业信息

有没有办法在工作结束/死亡后自动调用sacct

我唯一想到的是提交第二份工作,然后调用sacct,但这显然不是一个好选择。

+0

相反,在第一个依赖第一个(_e.g._,'--dependency = afterany:firstjobid')的时候运行第二个工作似乎就像你无法访问Slurm日志或配置文件。你有避免这种方法的特殊原因吗? – TheDudeAbides

+0

我看到了两个问题:1.集群管理员强烈反对提交那些基本上没有任何作用的作业,以限制对调度程序的压力(同样的精神,他们只提供每隔30秒更新一次的squeue缓存版本)2.在运行我的作业阵列我的公平份额非常低,所以我不能确定第二份工作在sacct提供的信息被清除之前正在运行(队列在这里可能很长)。 – allion

+0

好的,我明白了。 ['at'](http://man.cx/at)是否是群集节点上的一个选项?尽管我忘记了如何用Slurm做到这一点,但如果你可以在节点上获得交互式登录,请检查'/ usr/lib/cron/at.allow'(可能只是'/ etc/cron.allow')和'/ usr/lib/cron/at.deny'来确定。我不会指望它 - 因为Slurm排除了'at' /'batch'的需要。但是,如果出于某种原因在节点上允许'at''',则可以在指定的时间间隔运行'sacct'命令_集群作业本身已经终止。 – TheDudeAbides

回答

0

您可以在slurm.conf中设置一个文件来存储JobCompLoc的作业完成数据。 (我们解析该文件以在作业完成电子邮件中发送额外信息,其中包括(我认为)您从sacct获得的所有内容)。

+0

有趣!不幸的是,我似乎没有访问'JobCompLoc'文件夹,我也不能修改'slurm.conf',因为我在群集上。应该提到这一点。 – allion