xref: /dragonfly/usr.bin/limits/limits.1 (revision 3d33658b)
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 March 1, 2019
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 sbrk 2
241and
242.Xr mmap 2 Ns 'd
243space.
244.El
245.Pp
246Valid values for
247.Ar val
248in the above set of options consist of either the
249string
250.Dq Li infinity ,
251.Dq Li inf ,
252.Dq Li unlimited
253or
254.Dq Li unlimit
255for an infinite (or kernel-defined maximum)
256limit, or a numeric value optionally followed by a suffix.
257Values which relate to size default to a value in bytes, or one of the
258following suffixes may be used as a multiplier:
259.Pp
260.Bl -tag -offset indent -width 4n -compact
261.It Li b
262512 byte blocks.
263.It Li k
264kilobytes (1024 bytes).
265.It Li m
266megabytes (1024*1024 bytes).
267.It Li g
268gigabytes.
269.It Li t
270terabytes.
271.El
272.Pp
273The
274.Va cputime
275resource defaults to a number of seconds, but a multiplier may be
276used, and as with size values, multiple values separated by a valid
277suffix are added together:
278.Pp
279.Bl -tag -offset indent -width 4n -compact
280.It Li s
281seconds.
282.It Li m
283minutes.
284.It Li h
285hours.
286.It Li d
287days.
288.It Li w
289weeks.
290.It Li y
291365 day years.
292.El
293.Bl -tag -width ".Fl C Ar class"
294.It Fl E
295Cause
296.Nm
297to completely ignore the environment it inherits.
298.It Fl a
299Force all resource settings to be displayed even if
300other specific resource settings have been specified.
301For example, if you wish to disable core dumps when starting up
302the Usenet News system, but wish to set all other resource settings
303as well that apply to the
304.Dq Li news
305account, you might use:
306.Pp
307.Dl "eval `limits -U news -aBec 0`"
308.Pp
309As with the
310.Xr setrlimit 2
311call, only the superuser may raise process
312.Dq hard
313resource limits.
314Non-root users may, however, lower them or change
315.Dq soft
316resource limits
317within to any value below the hard limit.
318When invoked to execute a program, the failure of
319.Nm
320to raise a hard limit is considered a fatal error.
321.El
322.Sh EXIT STATUS
323The
324.Nm
325utility
326exits with EXIT_FAILURE if usage is incorrect in any way; i.e. an invalid
327option, or set/display options are selected in the same invocation,
328.Fl e
329is used when running a program, etc.
330When run in display or eval mode,
331.Nm
332exits with a status of EXIT_SUCCESS.
333When run in command mode and execution of the command succeeds, the exit status
334will be whatever the executed program returns.
335.Sh SEE ALSO
336.Xr builtin 1 ,
337.Xr csh 1 ,
338.Xr env 1 ,
339.Xr limit 1 ,
340.Xr sh 1 ,
341.Xr getrlimit 2 ,
342.Xr setrlimit 2 ,
343.Xr login_cap 3 ,
344.Xr login.conf 5 ,
345.Xr sysctl 8
346.Sh BUGS
347The
348.Nm
349utility does not handle commands with equal (``='') signs in their
350names, for obvious reasons.
351.Pp
352When eval output is selected, the
353.Pa /proc
354filesystem must be installed
355and mounted for the shell to be correctly determined, and therefore
356output syntax correct for the running shell.
357The default output is valid for
358.Xr sh 1 ,
359so this means that any
360usage of
361.Nm
362in eval mode prior mounting
363.Pa /proc
364may only occur in standard bourne
365shell scripts.
366.Pp
367The
368.Nm
369utility makes no effort to ensure that resource settings emitted or displayed
370are valid and settable by the current user.
371Only a superuser account may raise hard limits, and when doing so
372the
373.Dx
374kernel will silently lower limits to values less than
375specified if the values given are too high.
376