LIMIT(1) User Commands LIMIT(1)

NAME


limit, ulimit, unlimit - set or get limitations on the system resources
available to the current shell and its descendents

SYNOPSIS


/usr/bin/ulimit [-f] [blocks]


sh
ulimit [- [HS] [a | cdfnstv]]


ulimit [- [HS] [c | d | f | n | s | t | v]] limit


csh
limit [-h] [resource [limit]]


unlimit [-h] [resource]


ksh
ulimit [-HSacdfnstv] [limit]


ksh93
ulimit [-HSacdfmnpstv] [limit]


DESCRIPTION


/usr/bin/ulimit
The ulimit utility sets or reports the file-size writing limit imposed on
files written by the shell and its child processes (files of any size can
be read). Only a process with appropriate privileges can increase the
limit.

sh
The Bourne shell built-in function, ulimit, prints or sets hard or soft
resource limits. These limits are described in getrlimit(2).


If limit is not present, ulimit prints the specified limits. Any number
of limits can be printed at one time. The -a option prints all limits.


If limit is present, ulimit sets the specified limit to limit. The
string unlimited requests that the current limit, if any, be removed.
Any user can set a soft limit to any value less than or equal to the hard
limit. Any user can lower a hard limit. Only a user with appropriate
privileges can raise or remove a hard limit. See getrlimit(2).


The -H option specifies a hard limit. The -S option specifies a soft
limit. If neither option is specified, ulimit sets both limits and prints
the soft limit.


The following options specify the resource whose limits are to be printed
or set. If no option is specified, the file size limit is printed or set.

-c
Maximum core file size (in 512-byte blocks)


-d
Maximum size of data segment or heap (in Kbytes)


-f
Maximum file size (in 512-byte blocks)


-n
Maximum file descriptor plus 1


-s
Maximum size of stack segment (in Kbytes)


-t
Maximum CPU time (in seconds)


-v
Maximum size of virtual memory (in Kbytes)


csh
The C-shell built-in function, limit, limits the consumption by the
current process or any process it spawns, each not to exceed limit on the
specified resource. The string unlimited requests that the current limit,
if any, be removed. If limit is omitted, prints the current limit. If
resource is omitted, displays all limits.

-h
Use hard limits instead of the current limits. Hard limits impose a
ceiling on the values of the current limits. Only the privileged
user can raise the hard limits.


resource is one of:

cputime
Maximum CPU seconds per process.


filesize
Largest single file allowed. Limited to the size of the
filesystem (see df(8)).


datasize
The maximum size of a process's heap in kilobytes.


stacksize
Maximum stack size for the process. The default stack
size is 2^64.


coredumpsize
Maximum size of a core dump (file). This is limited to
the size of the filesystem.


descriptors
Maximum number of file descriptors. Run the sysdef(8)
command to obtain the maximum possible limits for your
system. The values reported are in hexadecimal, but can
be translated into decimal numbers using the bc(1)
command.


memorysize
Maximum size of virtual memory.


limit is a number, with an optional scaling factor, as follows:

nh
Hours (for cputime).


nk
n kilobytes. This is the default for all but cputime.


nm
n megabytes or minutes (for cputime).


mm:ss
Minutes and seconds (for cputime).


unlimit removes a limitation on resource. If no resource is specified,
then all resource limitations are removed. See the description of the
limit command for the list of resource names.

-h
Remove corresponding hard limits. Only the privileged user can do
this.


ksh
The Korn shell built-in function, ulimit, sets or displays a resource
limit. The available resources limits are listed below. Many systems do
not contain one or more of these limits. The limit for a specified
resource is set when limit is specified. The value of limit can be a
number in the unit specified below with each resource, or the value
unlimited. The string unlimited requests that the current limit, if any,
be removed. The -H and -S flags specify whether the hard limit or the
soft limit for the specified resource is set. A hard limit cannot be
increased once it is set. A soft limit can be increased up to the value
of the hard limit. If neither the -H or -S options is specified, the
limit applies to both. The current resource limit is printed when limit
is omitted. In this case, the soft limit is printed unless -H is
specified. When more than one resource is specified, then the limit name
and unit is printed before the value.

-a
Lists all of the current resource limits.


-c
The number of 512-byte blocks on the size of core dumps.


-d
The number of K-bytes on the size of the data area.


-f
The number of 512-byte blocks on files written by child processes
(files of any size can be read).


-n
The number of file descriptors plus 1.


-s
The number of K-bytes on the size of the stack area.


-t
The number of seconds (CPU time) to be used by each process.


-v
The number of K-bytes for virtual memory.


If no option is specified, -f is assumed.

Per-Shell Memory Parameters
The heapsize, datasize, and stacksize parameters are not system tunables.
The only controls for these are hard limits, set in a shell startup file,
or system-wide soft limits, which, for the current version of the Solaris
OS, is 2^64bytes.

ksh93
ulimit sets or displays resource limits. These limits apply to the
current process and to each child process created after the resource
limit has been set. If limit is specified, the resource limit is set,
otherwise, its current value is displayed on standard output.


Increasing the limit for a resource usually requires special privileges.
Some systems allow you to lower resource limits and later increase them.
These are called soft limits. Once a hard limit is set the resource
cannot be increased.


Different systems allow you to specify different resources and some
restrict how much you can raise the limit of the resource.


The value of limit depends on the unit of the resource listed for each
resource. In addition, limit can be "unlimited" to indicate no limit for
that resource.


If you do not specify -H or -S, -S is used for listing and both -S and -H
are used for setting resources.


If you do not specify any resource, the default is -f.


The following options are available for ulimit in ksh93:

-a
Displays all current resource limits.


-b
--sbsize
Specifies the socket buffer size in bytes.


-c
--core
Specifies the core file size in blocks.


-d
--data
Specifies the data size in kbytes.


-f
--fsize
Specifies the file size in blocks.


-H
Displays or sets a hard limit.


-L
--locks
Specifies the number of file locks.


-l
--memlock
Specifies the locked address space in Kbytes.


-M
--as
Specifies the address space limit in Kbytes.


-n
--nofile
Specifies the number of open files.


-p
--pipe
Specifies the pipe buffer size in bytes.


-m
--rss
Specifies the resident set size in Kbytes


-S
Displays or sets a soft limit.


-s
--stack
Specifies the stack size in Kbytes.


-T
--threads
Specifies the number of threads.


-t
--cpu
Specifies the CPU time in seconds.


-u
--nproc
Specifies the number of processes.


-v
--vmem
Specifies the process size in Kbytes.


OPTIONS


The following option is supported by /usr/bin/ulimit:

-f
Sets (or reports, if no blocks operand is present), the file size
limit in blocks. The -f option is also the default case.


OPERANDS


The following operand is supported by /usr/bin/ulimit:

blocks
The number of 512-byte blocks to use as the new file size
limit.


EXAMPLES


/usr/bin/ulimit

Example 1: Limiting the Stack Size




The following example limits the stack size to 512 kilobytes:


example% ulimit -s 512
example% ulimit -a
time(seconds) unlimited
file(blocks) 100
data(kbytes) 523256
stack(kbytes) 512
coredump(blocks) 200
nofiles(descriptors) 64
memory(kbytes) unlimited


sh/ksh

Example 2: Limiting the Number of File Descriptors




The following command limits the number of file descriptors to 12:


example$ ulimit -n 12
example$ ulimit -a
time(seconds) unlimited
file(blocks) 41943
data(kbytes) 523256
stack(kbytes) 8192
coredump(blocks) 200
nofiles(descriptors) 12
vmemory(kbytes) unlimited


csh

Example 3: Limiting the Core Dump File Size




The following command limits the size of a core dump file size to 0
kilobytes:


example% limit coredumpsize 0
example% limit
cputime unlimited
filesize unlimited
datasize 523256 kbytes
stacksize 8192 kbytes
coredumpsize 0 kbytes
descriptors 64
memorysize unlimited


Example 4: Removing the limitation for core file size




The following command removes the above limitation for the core file
size:


example% unlimit coredumpsize
example% limit
cputime unlimited
filesize unlimited
datasize 523256 kbytes
stacksize 8192 kbytes
coredumpsize unlimited
descriptors 64
memorysize unlimited


ENVIRONMENT VARIABLES


See environ(7) for descriptions of the following environment variables
that affect the execution of ulimit: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES,
and NLSPATH.

EXIT STATUS


The following exit values are returned by ulimit:

0
Successful completion.


>0
A request for a higher limit was rejected or an error occurred.


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:

/usr/bin/ulimit, csh, ksh, sh

+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Committed |
+--------------------+-------------------+
|Standard | See standards(7). |
+--------------------+-------------------+

ksh93

+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Uncommitted |
+--------------------+-----------------+

SEE ALSO


bc(1), csh(1), ksh(1), ksh93(1), sh(1), getrlimit(2), attributes(7),
environ(7), standards(7), df(8), su(8), swap(8), sysdef(8)

September 12, 2020 LIMIT(1)