我们有一个运行 CentOS 和 Sun Grid Engine 的集群,用于研究模拟。但是,一些不太熟悉系统的用户最终会在头节点上运行作业,这当然会使其他人的速度变慢。
将来,我想放置一个 SSH 登录消息,警告人们用户直接在头节点上运行的程序的最大运行时间,但如果他们愿意的话,也允许运行长时间的作业(例如大的 tar/gzip 操作)。
TL;DR:如果 nice 值 <= 0,如何将用户运行的作业限制为 24 小时 CPU 时间?
答案1
您可以尝试编写一个脚本来检查正在运行的作业并记录其利用率,并决定在一定数量之后要做什么。您也可以尝试AND - 自动良好守护进程并ulimits
PAM limits
限制 CPU 时间用户的(在用户使用了那么多的 CPU 时间之后,进程/会话将被终止)。
答案2
答案3
这不是一个完整的解决方案,但我随后找到了我需要的命令:
ps alr | sed 1d | awk '{print ($6 <= 0)? $2 " " $3 " " $12 : ""}' | grep -v "^$"
它列出了所有正在运行的、且 nice 值 <= 0 的作业(分为三列),包括 UID、PID 和总运行时间,如下所示:
543 3208 11436:31
511 16491 0:00
我希望这是一个相对简单的事情,即设置一个 cron 作业来解析这些数据、检查 UID 并在适当的时候终止作业。