limits(1)

NAME

limits - set or display process resource limits

SYNOPSIS

limits [-C class  |  -U  user]  [-SHB]  [-ea]  [-bcdflmnstuv
[val]]
limits [-C class | -U user] [-SHB] [-bcdflmnstuv [val]] [-E]
       [[name=value ...] command]

DESCRIPTION

The limits utility either prints or sets kernel resource
limits, and may
optionally set environment variables like env(1) and run a
program with
the selected resources. Three uses of the limits utility
are possible:
limits [limitflags] [name=value ...] command
This usage sets limits according to limitflags, op
tionally sets
environment variables given as name=value pairs, and
then runs
the specified command.
limits [limitflags]
This usage determines values of resource settings
according to
limitflags, does not attempt to set them and outputs
these values
to standard output. By default, this will output
the current
kernel resource settings active for the calling pro
cess. Using
the -C class or -U user options, you may also dis
play the current
resource settings modified by the appropriate login
class
resource limit entries from the login.conf(5) login
capabilities
database.
limits -e [limitflags]
This usage determines values of resource settings
according to
limitflags, but does not set them itself. Like the
previous
usage, it outputs these values to standard output,
except that it
will emit them in eval format, suitable for the
calling shell.
The calling shell is determined by examining the en
tries in the
/proc file system for the parent process. If the
shell is known
(i.e., it is one of sh, csh, bash, tcsh, ksh, pdksh
or rc),
limits emits limit or ulimit commands in the format
understood by
that shell. If the name of the shell cannot be de
termined, then
the ulimit format used by sh(1) is used.
This is very useful for setting limits used by
scripts, or prior
launching of daemons and other background tasks with
specific
resource limit settings, and provides the benefit of
allowing
global configuration of maximum resource usage by
maintaining a
central database of settings in the login class
database.
Within a shell script, limits will normally be used
with eval
within backticks as follows:

eval `limits -e -C daemon`
which causes the output of limits to be evaluated
and set by the
current shell.
The value of limitflags specified in the above contains one
or more of
the following options:
-C class Use current resource values, modified by the
resource
entries applicable for the login class
class.
-U user Use current resource values, modified by the
resource
entries applicable to the login class the
user belongs
to. If user does not belong to any class,
then the
resource capabilities for the ``default''
class are used,
if it exists, or the ``root'' class if the
user is a
superuser account.
-S Select display or setting of ``soft'' (or
current)
resource limits. If specific limits set
tings follow this
switch, only soft limits are affected unless
overridden
later with either the -H or -B options.
-H Select display or setting of ``hard'' (or
maximum)
resource limits. If specific limits set
tings follow this
switch, only hard limits are affected until
overridden
later with either the -S or -B options.
-B Select display or setting of both ``soft''
(current) or
``hard'' (maximum) resource limits. If spe
cific limits
settings follow this switch, both soft and
hard limits
are affected until overridden later with ei
ther the -S or
-H options. -e Select ``eval mode'' format
ting for output. This is valid only on display mode and
cannot be
used when running a command. The exact syn
tax used for
output depends upon the type of shell from
which limits
is invoked.
-b [val] Select or set the sbsize resource limit.
-c [val] Select or set (if val is specified) the
coredumpsize
resource limit. A value of 0 disables core
dumps.
-d [val] Select or set (if val is specified) the
datasize resource
limit.
-f [val] Select or set the filesize resource limit.
-l [val] Select or set the memorylocked resource lim
it.
-m [val] Select or set the memoryuse size limit.
-n [val] Select or set the openfiles resource limit.
The system
wide limit on the maximum number of open
files per process can be viewed by examining the
kern.maxfilesperproc
sysctl(8) variable. The total number of si
multaneously
open files in the entire system is limited
to the value
displayed by the kern.maxfiles sysctl(8)
variable.
-s [val] Select or set the stacksize resource limit.
-t [val] Select or set the cputime resource limit.
-u [val] Select or set the maxproc resource limit.
The system
wide limit on the maximum number of process
es allowed per
UID can be viewed by examining the
kern.maxprocperuid
sysctl(8) variable. The maximum number of
processes that
can be running simultaneously in the entire
system is
limited to the value of the kern.maxproc
sysctl(8) variable.
-v [val] Select or set the virtualmem resource limit.
This limit
encompasses the entire VM space for the user
process and
is inclusive of text, data, bss, stack,
brk(2), sbrk(2)
and mmap(2)'d space.
Valid values for val in the above set of options consist of
either the
string ``infinity'', ``inf'', ``unlimited'' or ``unlimit''
for an infinite (or kernel-defined maximum) limit, or a numeric value
optionally
followed by a suffix. Values which relate to size default
to a value in
bytes, or one of the following suffixes may be used as a
multiplier:

b 512 byte blocks.
k kilobytes (1024 bytes).
m megabytes (1024*1024 bytes).
g gigabytes.
t terabytes.
The cputime resource defaults to a number of seconds, but a
multiplier
may be used, and as with size values, multiple values sepa
rated by a
valid suffix are added together:

s seconds.
m minutes.
h hours.
d days.
w weeks.
y 365 day years.
-E Cause limits to completely ignore the envi
ronment it
inherits.
-a Force all resource settings to be displayed
even if other
specific resource settings have been speci
fied. For
example, if you wish to disable core dumps
when starting
up the Usenet News system, but wish to set
all other
resource settings as well that apply to the
``news''
account, you might use:

eval `limits -U news -aBec 0`
As with the setrlimit(2) call, only the su
peruser may
raise process ``hard'' resource limits.
Non-root users
may, however, lower them or change ``soft''
resource limits within to any value below the hard lim
it. When
invoked to execute a program, the failure of
limits to
raise a hard limit is considered a fatal er
ror.

EXIT STATUS

The limits utility exits with EXIT_FAILURE if usage is in
correct in any
way; i.e., an invalid option, or set/display options are se
lected in the
same invocation, -e is used when running a program, etc.
When run in
display or eval mode, limits exits with a status of EX
IT_SUCCESS. When
run in command mode and execution of the command succeeds,
the exit status will be whatever the executed program returns.

SEE ALSO

csh(1), env(1), limit(1), sh(1), getrlimit(2), setrlimit(2),
login_cap(3), login.conf(5), sysctl(8)

BUGS

The limits utility does not handle commands with equal (`=')
signs in
their names, for obvious reasons.
When eval output is selected, the /proc file system must be
installed and
mounted for the shell to be correctly determined, and there
fore output
syntax correct for the running shell. The default output is
valid for
sh(1), so this means that any usage of limits in eval mode
prior mounting
/proc may only occur in standard bourne shell scripts.
The limits utility makes no effort to ensure that resource
settings emitted or displayed are valid and settable by the current user.
Only a
superuser account may raise hard limits, and when doing so
the FreeBSD
kernel will silently lower limits to values less than speci
fied if the
values given are too high.
BSD September 18, 2002
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout