2006-10-31 23:23:16 +08:00
\section ulimit ulimit - set or get the shells resource usage limits
2005-10-15 19:11:39 +08:00
\subsection ulimit-synopsis Synopsis
<tt>ulimit [OPTIONS] [LIMIT]</tt>
\subsection ulimit-description Description
2007-01-12 23:15:40 +08:00
The ulimit builtin is used to set the resource usage limits of the
shell and any processes spawned by it. If a new limit value is
omitted, the current value of the limit of the resource is printed.
Use one of the following switches to specify which resource limit to set or report:
2005-10-15 19:11:39 +08:00
- <code>-c</code> or <code>--core-size</code> The maximum size of core files created
2006-08-11 17:26:03 +08:00
- <code>-d</code> or <code>--data-size</code> The maximum size of a process's data segment
2005-10-15 19:11:39 +08:00
- <code>-f</code> or <code>--file-size</code> The maximum size of files created by the shell
- <code>-l</code> or <code>--lock-size</code> The maximum size that may be locked into memory
- <code>-m</code> or <code>--resident-set-size</code> The maximum resident set size
- <code>-n</code> or <code>--file-descriptor-count</code> The maximum number of open file descriptors (most systems do not allow this value to be set)
- <code>-s</code> or <code>--stack-size</code> The maximum stack size
- <code>-t</code> or <code>--cpu-time</code> The maximum amount of cpu time in seconds
- <code>-u</code> or <code>--process-count</code> The maximum number of processes available to a single user
2005-10-17 21:36:57 +08:00
- <code>-v</code> or <code>--virtual-memory-size</code> The maximum amount of virtual memory available to the shell. If supported by OS.
2005-10-15 19:11:39 +08:00
2007-01-12 23:15:40 +08:00
Note that not all these limits are available in all operating systems.
The value of limit can be a number in the unit specified for
the resource or one of the special values hard, soft, or unlimited,
which stand for the current hard limit, the current soft limit, and no
limit, respectively.
2005-10-15 19:11:39 +08:00
If limit is given, it is the new value of the specified resource. If
no option is given, then -f is assumed. Values are in kilobytes,
except for -t, which is in seconds and -n and -u, which are unscaled
values. The return status is 0 unless an invalid option or argument is
supplied, or an error occurs while setting a new limit.
2007-01-12 23:15:40 +08:00
ulimit also accepts the following switches that determine what type of limit to set:
- <code>-H</code> or <code>--hard</code> Set hard resource limit
- <code>-S</code> or <code>--soft</code> Set soft resource limit
A hard limit cannot be increased once it is set; a soft limit may be
increased up to the value of the hard limit. If neither -H nor -S is
specified, both the soft and hard limits are updated when assigning a
new limit value, and the soft limit is used when reporting the current
value.
The following additional options are also understood by ulimit:
- <code>-a</code> or <code>--all</code> Print all current limits
- <code>-h</code> or <code>--help</code> Display help and exit
The fish implementation of ulimit should behave identically to the
implementation in bash, except for these differences:
2005-10-15 19:11:39 +08:00
- Fish ulimit supports GNU-style long options for all switches
2007-01-12 23:15:40 +08:00
- Fish ulimit does not support the -p option for getting the pipe size. The bash implementation consists of a compile-time check that empirically guesses this number by writing to a pipe and waiting for SIGPIPE. Depending on bash version, there may also be further additional limits to set in bash that do not exist in fish.
- Fish ulimit does not support getting or setting multiple limits in one command, except reporting all values using the -a switch
2005-10-15 19:11:39 +08:00
\subsection ulimit-example Example
<tt>ulimit -Hs 64</tt>
would set the hard stack size limit to 64 kB: