我正在使用 shellcheck 来修复 sh 脚本中的警告。该脚本使用以下命令检查硬文件描述符限制:
ulimit -H -n
它通过以下方式设置软 fd 限制:
ulimit -n "$MAX_FD"
这会生成 shellcheck 警告:
In POSIX sh, ulimit -H is not supported. [SC2039]
In POSIX sh, ulimit -n is not supported. [SC2039]
在 POSIX sh 中获取硬资源限制和设置软资源限制的可移植方法是什么?
答案1
嗯,严格来说,POSIXulimit
似乎只知道-f
选项(最大文件大小),所以我想答案是“无”。
实际上,我在 Linux 上拥有的所有 shell(Bash、Busybox、Dash、Ksh、mksh、yash、zsh)都有一个ulimit
支持-H
、-S
和 的内置命令-n
。
我不确定非 Linux 系统,但是FreeBSD 手册页sh(1)
还提到了这些,在 OpenBSD 上,/bin/sh
似乎是 ksh,这也支持他们。