限制用户启动程序的最大CPU时间

我们有一个运行CentOS的CentOS集群,用于研究模拟。 但是,一些对系统不太熟悉的用户最终会在头节点上运行任务,这对于其他任何人来说都是缓慢的。

在将来,我想把一个SSHlogin信息警告给用户直接在头节点上运行的程序的最大运行时间,而且如果它们允许长时间运行(比如大的tar / gzip操作)很好。

TL; DR:如果nice值<= 0,我如何将用户运行的作业限制在24小时cpu时间?

你可以尝试编写一个脚本来检查正在运行的作业,并logging它们的使用情况,并决定在某个挂载之后要做什么。 您也可以尝试使用AND – 自动尼斯守护进程和ulimits / PAM limits来限制用户的CPU时间 (在此之后用户使用了很多CPU时间,进程/会话被终止)。

使用cpulimit ; 在Debian中是在仓库中,但不是为了centos。 在这里,他们有一个编译和使用它的方法: 链接 。 如果你有一个群集,只需要在一台备用机器上编译它,testing一下,并用你的configurationpipe理工具(如cfengine)部署它。

不是一个完整的解决scheme,但我后来发现我需要的命令:

 ps alr | sed 1d | awk '{print ($6 <= 0)? $2 " " $3 " " $12 : ""}' | grep -v "^$" 

其中列出了所有正在运行的作业,其中包含UID,PID和总运行时间三个列,其值为<= 0,如下所示:

 543 3208 11436:31 511 16491 0:00 

我希望这是一个相对简单的问题,即设置一个cron作业来分析这些数据,检查UID并根据需要杀死作业。