Chinaunix

标题: shell脚本里不能执行ulimit -n 65535 [打印本页]

作者: 笑着爱你    时间: 2014-03-01 16:09
标题: shell脚本里不能执行ulimit -n 65535
shell脚本里不能执行ulimit -n 65535 和ulimit -c unlimited。这个为什么使用bash -x查看执行过程也没有报错。
这个ulimit命令为什么不能在shell脚本中执行生效?难道ulimit是特殊的命令?亲高手帮解答
作者: q1208c    时间: 2014-03-01 16:21
可以执行的. 我经常这么用. 不过, 它只对本shell及子shell有效.
作者: 笑着爱你    时间: 2014-03-01 16:33
什么意思?可以说的更清楚一些么?
我只是想修改当前用户的打开文件数量和打开core的开关。
我想在当前ssh窗口下,运行一个软件,这个软件运行前先运行一个脚本来设置打开文件数和打开core开关。请指点一下,不胜感激
作者: q1208c    时间: 2014-03-01 16:38
回复 3# 笑着爱你

那没用的.

当前用户的, 必须是在用户 login 时设置才能生效.

打开文件数一般是修改 limits.conf 或者 limits.d 下的相关文件的.

另外, core size 建议是关闭的. 否则, 可能把硬盘空间很快用光的.
   
作者: 笑着爱你    时间: 2014-03-01 16:46
请教一下。我需要调试软件,所以才需要打开core开关,这个不是重点。重点是如何可以修改配置,让ulimit -n 65535生效就可以了。我也只是针对当前登陆的用户。其他用户我不care的。还请你可否可以给出个建议?
作者: 笑着爱你    时间: 2014-03-01 16:48
我知道这个网站有很多shell脚本的牛人,还请大家多给些建议。我也知道可以修改/root/.bash_profil文件可以让之后的用户使用心得配置,但是我只是想要当前用户可以使用shell脚本可以让ulimit -n 65535命令生效。
作者: q1208c    时间: 2014-03-01 17:26
回复 5# 笑着爱你

ulimit -n 由于需要修改kernel的一部分参数, 所以, 普通用户无法执行(我刚试了一下). 所以, 才需要修改 系统配置文件, 我在前面已经说过了.

如果你非要本地用户自己去 执行, 你觉得有可能么? 你自己限制自己可以打开多少个文件, 那还限制个P了, 不是等于没有限制?
   
作者: 笑着爱你    时间: 2014-03-01 19:45
第一我是以root用户登录。
第二我是要测试性能,所以需要修改open file数量的,系统默认是1024个,但是这个数值不能满足我的要求。

我只想我的软件在开始运行后,先执行一个脚本来配置环境,就是需要修改open file数量 ulimit -n 65535.只要可以修改就可以了。
我只想知道有没有办法实现,因为我在shell下是可以修改的的,但是把这个命令放在脚本中执行就不行了。


作者: linccn    时间: 2014-03-01 20:11
回复 8# 笑着爱你


    你回复帖子的时候最好指定一下接收人,不然对方不能及时接收到消息提醒。(一点小小的建议)
作者: q1208c    时间: 2014-03-03 08:04
回复 8# 笑着爱你

我在第一次回复就告诉你了, 如果是root用户, 是可以执行的, 但它的结果只会影响你当前的shell和它的子shell. 当你的shell脚本退出的时候, 它的作用就结束了.
   

我不是太明白你为啥总是纠结在这里. 你完全可以在你测试的shell开头的地方设置呀.
作者: Herowinter    时间: 2014-03-03 10:02
回复 10# q1208c

我这边实验了下,好像和楼主描述的是一样的。
我有一个C的可执行程序test,接收参数小于2时会core dumped
一个shell 脚本 里面就1句话 ulimit -c unlimited
当我执行脚本后运行可执行程序没有core文件,
当我在终端敲ulimit -c unlimited有core文件。
  1. [masonzhu@rat122 sandbox]$ rm core*
  2. [masonzhu@rat122 sandbox]$ ./test.sh
  3. [masonzhu@rat122 sandbox]$ ./test aaa
  4. 2
  5. aaa
  6. Segmentation fault (core dumped)
  7. [masonzhu@rat122 sandbox]$ ls|grep core
  8. [masonzhu@rat122 sandbox]$ ulimit -c unlimited
  9. [masonzhu@rat122 sandbox]$ ./test aaa
  10. 2
  11. aaa
  12. Segmentation fault (core dumped)
  13. [masonzhu@rat122 sandbox]$ ls|grep core
  14. core.3767
复制代码

作者: Herowinter    时间: 2014-03-03 10:22
回复 1# 笑着爱你

好像对子shell无效?
我又试了下,以
  1. source test.sh



  2. . ./test.sh
复制代码
运行脚本就可以得到正确结果。


   
作者: vc66vcc    时间: 2019-07-31 15:44
脚本用source执行就可以了lol




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2