系统资源限制和 ulimit 命令
操作系统提供限制可使用资源量的方式。为每个用户设置限制,但限制分别适用于为该用户运行的每个进程。 这些限制可能会影响 Java™ 应用程序,例如,如果某些限制太低,系统可能无法生成完整的 Java 转储文件。
限制可以是硬限制或软限制。由 root 用户设置硬限制。虽然其他用户可以降低硬限制,但只有 root 用户可以增加硬限制。其他用户可以设置和更改软限制,但软限制不能超过硬限制。要查看当前限制,请输入以下命令:
ulimit -Xa
其中,X 为 H 表示硬限制,或 S 表示软限制。如果没有为 X
设置临时限制
使用 ulimit 命令设置仅适用于您当前会话的限制。如果在脚本中使用此命令,设置将在脚本运行时期间应用。这些设置也适用于通过该脚本或从第一个脚本调用的其他脚本创建的进程。命令格式如下:
ulimit -[H|S]limit_name limit_value
其中,H 表示硬限制,S 表示软限制。如果您忽略此参数,那么将设置软限制。以下示例将软文件大小限制设置为 unlimited:
ulimit -f unlimited
存储限制设置
使用 /etc/security/limits.conf 文件存储 ulimit 设置。 如果您正在设置硬限制和软限制,请首先在文件中设置硬限制。设置可以是缺省值或特定于个别用户或组。 应该由系统管理员对此文件进行更改。
查看针对您的操作系统版本的文档,以获取有关如何编辑此文件的指示信息,因为不同版本之间的步骤可能会不同。此文件自身可能将指示信息包含在注释部分中。
启动新的登录 shell 程序(例如 bash -l)或者注销并重新登录回系统时,文件更改将生效。
注:init 命令及其子进程不使用限制文件中指定的限制。操作系统启动后,init 命令运行 inittab 文件中或 init.d 目录的脚本中所列的命令。这些操作将创建 init 命令的子进程。 此时,初始化过程尚未装入限制文件中的设置。只有当启动登录终端会话或用户登录到系统时,才会装入这些设置。如果向 inittab 文件或 init.d 目录中的脚本添加命令并且希望此命令使用特定的用户限制,那么必须根据需要包含用于设置用户限制值的操作。
可用限制
不同操作系统版本之间可以设置的限制有所不同;查看您的版本所对应的文档以获取详细信息。
注:
在 Red Hat Enterprise Linux 的一些版本中,由于 Red Hat Enterprise Linux V5 中的已知问题,您不能将 nofile 限制设置为 unlimited。有关更多信息,请参阅 Red Hat Bugzilla。Linux 的其他版本可能没有此限制。 如果您尝试使用 ulimit 命令将此限制设置为 unlimited,那么将显示以下错误,并且现有值不更改:
[root] # ulimit -n unlimited
bash: ulimit: open files: cannot modify limit: Operation not permitted
如果在 /etc/security/limits.conf 文件中将此限制设置为 unlimited,那么限制将重置为 0。该设置可防止相关用户或组创建新进程。如果用户为 root