首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改ulimit on rails

更改ulimit on rails
EN

Stack Overflow用户
提问于 2015-03-13 23:47:14
回答 1查看 980关注 0票数 0

在我的rails应用程序中,我运行一个外部进程,这个进程可能非常消耗资源,具体取决于我传递的输入。因此,我希望确保它不会占用太多时间,并且我希望更改ulimit。

ulimit在我的shell中运行良好,但很快我尝试在rails中更改它,我得到了一个无效的参数。

代码语言:javascript
复制
    $ rails c
    [1] pry(main)> `/usr/bin/ulimit -Ht`
    => "unlimited\n"
    [2] pry(main)> `/usr/bin/ulimit -Ht 1`
    /usr/bin/ulimit: line 4: ulimit: cpu time: cannot modify limit:           
    Invalid argument

这不是一个语法问题,因为:

代码语言:javascript
复制
[1] pry(main)> `/usr/bin/ulimit -Ht 'unlimited'`
=> ""
[2] pry(main)> `/usr/bin/ulimit -Ht 'wrongparam'`
/usr/bin/ulimit: line 4: ulimit: wrongparam: invalid number
=> ""

这也不是权限问题:

代码语言:javascript
复制
[5] pry(main)> `sudo ulimit -Ht 1`
Password:
/usr/bin/ulimit: line 4: ulimit: cpu time: cannot modify limit: Invalid argument

更改软限制效果很好:

代码语言:javascript
复制
[10] pry(main)> `ulimit -St 1; ulimit -St`
=> "1\n"

更改启动rails的shell中的硬限制也是有效的。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-14 00:12:21

ulimit不限制执行时间,只限制cpu时间,因此它可能不会产生您想要的确切效果。你可以看看timeout

如果您执意要使用ulimit,那么最好的方法就是创建一个您可以调用的shell脚本,而不是尝试在ruby中直接调用ulimit。ulimit通常是shell的一个函数,因此最好这样运行它。

像这样的东西可能会起作用:

代码语言:javascript
复制
#!/bin/bash

ulimit -Ht 1 && whateveryouaretryingtorun $1 

然后把它叫做

代码语言:javascript
复制
%x{./path/to/script arguments}

我还没有亲自测试过这一点,因为ulimit是内置在zsh中的,所以在那个上下文中调用它有点不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29036534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档