免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ailms
打印 上一主题 下一主题

问 :关于ulimit 的问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-07-31 01:56 |只看该作者
呵呵,果然是这样。你大概是恶搞吧??
root凭什么引用n7css的环境变量。

论坛徽章:
0
22 [报告]
发表于 2007-07-31 02:03 |只看该作者
原帖由 yuhe27913 于 2007-7-31 01:56 发表
呵呵,果然是这样。你大概是恶搞吧??
root凭什么引用n7css的环境变量。




算了,睡觉了。

btw :恶搞这种东西我是不会用到技术上的,ls 有时间不妨做一下实验再说吧

论坛徽章:
0
23 [报告]
发表于 2007-07-31 09:33 |只看该作者
之前写的关于文件描述符限制的东西,大家指正一下 ,谢谢

ulimit -n number  通过这个命令可以设置linux中单一进程可以同时打开的文件描述符
ulimit -n 通过这个方式可以查看单一进程可以同时打开的文件描述符

在/proc/sys/fs/file-max 文件中可以设置整机可以同时打开的最大的文件描述符

由于标准输入输出和标准错误输出分别占据了0 1 2 这三个数字的描述符,所以每一个进程的文件描述符都是从3开始,所以每个进程能自行指定打开的文件描述符要比限制少3个。

普通用户权限:
在使用普通用户权限打开的终端里面使用ulimit -n number减少了能打开的文件描述符之后不能再增加。

root用户权限:
在root权限登录的终端可以修改到最大的值是100万左右大小的文件描述字,这个可能是在系统内核里面做出了限制(没有验证过),在2.6和2.4内核上面可以设置到100万左右。

此时如果修改的值(值A)大于/proc/sys/fs/file-max文件中的值(值B),系统会提示文件描述符超出规定范围,但是仍然可以对文件描述符大于值B的文件进行正常的读写操作。(此处没有详细考虑会出现什么问题)


/proc/sys/fs/file-max文件的值每次开机都需要更改


所有进程的文件描述符都不能超过ulimit命令指定的文件描述符大小,超过则不能打开文件。



C语言操作资源
在linux系统的库函数里面提供了修改和获取限制资源的函数
getrlimit和setrlimit这两个函数
需要用到的数据结构为  struct rlimit

论坛徽章:
0
24 [报告]
发表于 2007-07-31 09:39 |只看该作者
原帖由 ailms 于 2007-7-31 02:03 发表




算了,睡觉了。

btw :恶搞这种东西我是不会用到技术上的,ls 有时间不妨做一下实验再说吧



你的ls已经说得很清楚了,root凭什么引用n7css的环境变量。

论坛徽章:
0
25 [报告]
发表于 2007-07-31 10:06 |只看该作者
原帖由 cx6445 于 2007-7-31 09:39 发表



你的ls已经说得很清楚了,root凭什么引用n7css的环境变量。



既然 root 不会引用 n7css 的环境变量,那为什么 root 不能创建该文件?

还有你所谓的环境变量是那个?能具体说明吗?

论坛徽章:
0
26 [报告]
发表于 2007-07-31 10:17 |只看该作者
to 所有朋友 :能否把你们的实验结果贴上来呢?我们以实验结果说话,不要再做无畏的推论,ok ?

论坛徽章:
0
27 [报告]
发表于 2007-07-31 11:19 |只看该作者
[root@3.7.0Biz-47 /home/bbb]# useradd hh
[root@3.7.0Biz-47 /home/bbb]# su hh
/bin/cat: /www/prima/VERSION: Permission denied
[hh@ /home/bbb]$ ulimit -f 1000
[hh@ /home/bbb]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) 1000
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 12159
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[hh@ /home/bbb]$ su -
Password:
[root@3.7.0Biz-47 ~]# dd if=/dev/zero of=/tmp/test bs=1k count=1024
File size limit exceeded

[root@3.7.0Biz-47 ~]#
貌似不能突破哦

论坛徽章:
0
28 [报告]
发表于 2007-07-31 13:06 |只看该作者
原帖由 mxbao 于 2007-7-31 11:19 发表
[root@3.7.0Biz-47 /home/bbb]# useradd hh
[root@3.7.0Biz-47 /home/bbb]# su hh
/bin/cat: /www/prima/VERSION: Permission denied
[hh@ /home/bbb]$ ulimit -f 1000
[hh@ /home/bbb]$ ulimit -a
core f ...


就是啊。

:em11: :em11:

论坛徽章:
0
29 [报告]
发表于 2007-07-31 14:43 |只看该作者
hi,这个问题果然有趣。
事先我的root是unlimited
oracle 做了ulimt -n 8848   之后su -到root时候root ulimit -n 是8848
而且重新打开子shell也是这样。看来ulimit并非像环境变量那么简单。

论坛徽章:
0
30 [报告]
发表于 2007-07-31 14:45 |只看该作者
俺的想法是 :

由于 ulimit 是影响当前进程和子进程的,而 su - 后的进程也是当前 shell 的一个子进程

所以 ulimit 可能是根据 PPID 来控制的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP