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