xref: /dragonfly/usr.bin/limits/limits.1 (revision 4662ec71)
1.\" Copyright (c) 1996 David Nugent <davidn@blaze.net.au>
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, is permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice immediately at the beginning of the file, without modification,
9.\"    this list of conditions, and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\"    notice, this list of conditions and the following disclaimer in the
12.\"    documentation and/or other materials provided with the distribution.
13.\" 3. This work was done expressly for inclusion into FreeBSD.  Other use
14.\"    is permitted provided this notation is included.
15.\" 4. Absolutely no warranty of function or purpose is made by the author
16.\"    David Nugent.
17.\" 5. Modifications may be freely made to this file providing the above
18.\"    conditions are met.
19.\"
20.\" $FreeBSD: src/usr.bin/limits/limits.1,v 1.14.2.10 2003/02/25 20:31:18 trhodes Exp $
21.\"
22.Dd January 15, 1996
23.Dt LIMITS 1
24.Os
25.Sh NAME
26.Nm limits
27.Nd set or display process resource limits
28.Sh SYNOPSIS
29.Nm
30.Op Fl C Ar class
31.Op Fl SHB
32.Op Fl ea
33.Op Fl cdfklmnstuv Op val
34.Nm
35.Op Fl C Ar class
36.Op Fl SHB
37.Op Fl cdfklmnstuv Op val
38.Op Fl E
39.Op Ar name Ns = Ns Ar value ...
40.Op Ar command
41.Nm
42.Op Fl U Ar user
43.Op Fl SHB
44.Op Fl ea
45.Op Fl cdflmnstuv Op val
46.Nm
47.Op Fl U Ar user
48.Op Fl SHB
49.Op Fl cdflmnstuv Op val
50.Op Fl E
51.Op Ar name Ns = Ns Ar value ...
52.Op Ar command
53.Sh DESCRIPTION
54The
55.Nm
56utility either prints or sets kernel resource limits, and may optionally set
57environment variables like
58.Xr env 1
59and run a program with the selected resources.
60Three uses of the
61.Nm
62command are possible:
63.Bl -tag -width indent
64.It Xo
65.Nm
66.Op Ar limitflags
67.Op Ar name Ns = Ns Ar value
68.Ar command
69.Xc
70This usage sets limits according to
71.Ar limitflags ,
72optionally sets environment variables given as
73.Ar name Ns = Ns Ar value
74pairs, and then runs the specified command.
75.It Xo
76.Nm
77.Op Ar limitflags
78.Xc
79This usage determines values of resource settings according to
80.Ar limitflags ,
81does not attempt to set them and outputs these values to
82standard output.
83By default, this will output the current kernel resource settings
84active for the calling process.
85Using the
86.Fl C Ar class
87or
88.Fl U Ar user
89flags, you may also display the current resource settings modified
90by the appropriate login class resource limit entries from
91the
92.Xr login.conf 5
93login capabilities database.
94.It Xo
95.Nm
96.Fl e Op Ar limitflags
97.Xc
98This usage determines values of resource settings according to
99.Ar limitflags ,
100but does not set them itself.
101Like the previous usage it outputs these values to standard
102output, except that it will emit them in
103.Em eval
104format, suitable for the calling shell.
105The calling shell is determined by examining the entries in the
106.Pa /proc
107filesystem for the parent process.
108If the shell is known (i.e. it is one of sh, csh, bash, tcsh, ksh,
109pdksh or rc),
110.Nm
111emits 'limit' or 'ulimit' commands in the format understood by
112that shell.
113If the name of the shell cannot be determined, then the 'ulimit'
114format used by
115.Xr sh 1
116is used.
117.Pp
118This is very useful for setting limits used by scripts, or prior
119launching of daemons and other background tasks with specific
120resource limit settings, and provides the benefit of allowing
121global configuration of maximum resource usage by maintaining a
122central database of settings in the login class database.
123.Pp
124Within a shell script,
125.Nm
126will normally be used with eval within backticks as follows:
127.Pp
128.Dl eval `limits -e -C daemon`
129.Pp
130which causes the output of
131.Nm
132to be evaluated and set by the current shell.
133.El
134.Pp
135The value of
136.Ar limitflags
137specified in the above contains one or more of the following options:
138.Bl -tag -width "-d [limit]"
139.It Fl C Ar class
140Use current resource values, modified by the resource entries applicable
141for the login class "class".
142.It Fl U Ar user
143Use current resource values, modified by the resource entries applicable
144to the login class which "user" belongs to.
145If the user does not belong to a class, then the resource capabilities
146for the "default" class are used, if it exists, or the "root" class if
147the user is a superuser account.
148.It Fl S
149Select display or setting of "soft" (or current) resource limits.
150If specific limits settings follow this switch, only soft limits are
151affected unless overridden later with either the
152.Fl H
153or
154.Fl B
155flags.
156.It Fl H
157Select display or setting of "hard" (or maximum) resource limits.
158If specific limits settings follow this switch, only hard limits are
159affected until overridden later with either the
160.Fl S
161or
162.Fl B
163flags.
164.It Fl B
165Select display or setting of both "soft" (current) or "hard" (maximum)
166resource limits.
167If specific limits settings follow this switch, both soft and hard
168limits are affected until overridden later with either the
169.Fl S
170or
171.Fl H
172flags.
173.Fl e
174Select "eval mode" formatting for output.
175This is valid only on display mode and cannot be used when running a
176command.
177The exact syntax used for output depends upon the type of shell from
178which
179.Nm
180is invoked.
181.It Fl b Op Ar limit
182Selects or sets the
183.Em sbsize
184resource limit.
185.It Fl c Op Ar limit
186Select or set (if 'limit' is specified) the
187.Em coredumpsize
188resource limit.
189A value of 0 disables core dumps.
190.It Fl d Op Ar limit
191Select or set (if 'limit' is specified) the
192.Em datasize
193resource limit.
194.It Fl f Op Ar limit
195Select or set the
196.Em filesize
197resource limit.
198.It Fl k Op Ar limit
199Select or set the
200.Em posixlocks
201resource limit.
202.It Fl l Op Ar limit
203Select or set the
204.Em memorylocked
205resource limit.
206.It Fl m Op Ar limit
207Select or set the
208.Em memoryuse
209size limit.
210.It Fl n Op Ar limit
211Select or set the
212.Em openfiles
213resource limit.  The system-wide limit on the maximum number of
214open files per process can be viewed using the 'sysctl kern.maxfilesperproc'
215command.  The total number of simultaneously open files in the entire
216system is limited to the value displayed by the 'sysctl kern.maxfiles'
217command.
218.It Fl s Op Ar limit
219Select or set the
220.Em stacksize
221resource limit.
222.It Fl t Op Ar limit
223Select or set the
224.Em cputime
225resource limit.
226.It Fl u Op Ar limit
227Select or set the
228.Em maxproc
229resource limit.  The system-wide limit on the maximum number of processes
230allowed per UID can be viewed using the 'sysctl kern.maxprocperuid' command.
231The maximum number of processes that can be running simultaneously
232in the entire system is limited to the value given by
233the 'sysctl kern.maxproc' command.
234.It Fl v Op Ar limit
235Select or set the
236.Em virtualmem
237resource limit.
238This limit encompasses the entire VM space for the user process
239and is inclusive of text, data, bss, stack,
240.Xr brk 2 ,
241.Xr sbrk 2
242and
243.Xr mmap 2 Ns 'd
244space.
245.El
246.Pp
247Valid values for
248.Ar val
249in the above set of options consist of either the
250string
251.Dq Li infinity ,
252.Dq Li inf ,
253.Dq Li unlimited
254or
255.Dq Li unlimit
256for an infinite (or kernel-defined maximum)
257limit, or a numeric value optionally followed by a suffix.
258Values which relate to size default to a value in bytes, or one of the
259following suffixes may be used as a multiplier:
260.Pp
261.Bl -tag -offset indent -width 4n -compact
262.It Li b
263512 byte blocks.
264.It Li k
265kilobytes (1024 bytes).
266.It Li m
267megabytes (1024*1024 bytes).
268.It Li g
269gigabytes.
270.It Li t
271terabytes.
272.El
273.Pp
274The
275.Va cputime
276resource defaults to a number of seconds, but a multiplier may be
277used, and as with size values, multiple values separated by a valid
278suffix are added together:
279.Pp
280.Bl -tag -offset indent -width 4n -compact
281.It Li s
282seconds.
283.It Li m
284minutes.
285.It Li h
286hours.
287.It Li d
288days.
289.It Li w
290weeks.
291.It Li y
292365 day years.
293.El
294.Bl -tag -width ".Fl C Ar class"
295.It Fl E
296Cause
297.Nm
298to completely ignore the environment it inherits.
299.It Fl a
300Force all resource settings to be displayed even if
301other specific resource settings have been specified.
302For example, if you wish to disable core dumps when starting up
303the Usenet News system, but wish to set all other resource settings
304as well that apply to the
305.Dq Li news
306account, you might use:
307.Pp
308.Dl "eval `limits -U news -aBec 0`"
309.Pp
310As with the
311.Xr setrlimit 2
312call, only the superuser may raise process
313.Dq hard
314resource limits.
315Non-root users may, however, lower them or change
316.Dq soft
317resource limits
318within to any value below the hard limit.
319When invoked to execute a program, the failure of
320.Nm
321to raise a hard limit is considered a fatal error.
322.El
323.Sh EXIT STATUS
324The
325.Nm
326utility
327exits with EXIT_FAILURE if usage is incorrect in any way; i.e. an invalid
328option, or set/display options are selected in the same invocation,
329.Fl e
330is used when running a program, etc.
331When run in display or eval mode,
332.Nm
333exits with a status of EXIT_SUCCESS.
334When run in command mode and execution of the command succeeds, the exit status
335will be whatever the executed program returns.
336.Sh SEE ALSO
337.Xr builtin 1 ,
338.Xr csh 1 ,
339.Xr env 1 ,
340.Xr limit 1 ,
341.Xr sh 1 ,
342.Xr getrlimit 2 ,
343.Xr setrlimit 2 ,
344.Xr login_cap 3 ,
345.Xr login.conf 5 ,
346.Xr sysctl 8
347.Sh BUGS
348The
349.Nm
350utility does not handle commands with equal (``='') signs in their
351names, for obvious reasons.
352.Pp
353When eval output is selected, the
354.Pa /proc
355filesystem must be installed
356and mounted for the shell to be correctly determined, and therefore
357output syntax correct for the running shell.
358The default output is valid for
359.Xr sh 1 ,
360so this means that any
361usage of
362.Nm
363in eval mode prior mounting
364.Pa /proc
365may only occur in standard bourne
366shell scripts.
367.Pp
368The
369.Nm
370utility makes no effort to ensure that resource settings emitted or displayed
371are valid and settable by the current user.
372Only a superuser account may raise hard limits, and when doing so
373the
374.Dx
375kernel will silently lower limits to values less than
376specified if the values given are too high.
377