ulimit -u
是否设置了上限:
部分答案似乎可以通过help ulimit
,man $(basename $SHELL)
,setrlimit(3)
的推理或查看
$ ulimit -u 708 | ulimit -u
709
$
对管道命令中shell(子)进程分配机制的一些假设。 (这是上面例子中的一个硬限制。)是否有一个全面的资源,供研究或参考,实际上专注于Unix / POSIX资源管理?
列表项1上的 阐述,考虑两个登录shell,limits -u
分别为200和100。还有一个fork bomb
bomb() { # increment and output cnt, pipe to new process
cnt=$1; cnt=$((cnt + 1)); echo $cnt; sleep 1;
echo | bomb $cnt;
}
我在200-processes-shell中运行bomb
。如果在另一个shell中设置了100个限制,我是否应该在200个进程或接近100个进程附近终止?
这就是我所看到的:
$ bomb 1
2
3
...
196
197
-bash: fork: retry: No child processes
-bash: fork: retry: Resource temporarily unavailable
答案 0 :(得分:1)
- 关于从调用它的进程开始创建的进程数?
醇>
不仅这些进程,该限制影响用户启动的所有进程(相同的uid)
- 考虑已使用相同(有效,文件系统,真实,已保存?)用户ID运行的进程数量?
醇>
它正在考虑它们,更确切地说,它正在计算共享相同用户ID的每个线程。
- 可以兼容POSIX系统吗?
醇>
不保证。这是POSIX shell标准中未定义的基础,ulimit
仅支持文件大小限制。它可能会也可能不会实现,具体取决于底层操作系统,因为没有便携式(POSIX)方法。