xref: /freebsd/usr.bin/limits/limits.1 (revision 6e8394b8baa7d5d9153ab90de6824bcd19b3b4e1)
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.\"	$Id: limits.1,v 1.10 1999/03/15 15:36:56 ghelmer Exp $
21.\"
22.Dd January 15, 1996
23.Dt LIMITS 1
24.Os FreeBSD
25.Sh NAME
26.Nm limits
27.Nd set or display process resource limits
28.Sh SYNOPSIS
29.Nm limits
30.Op Fl C Ar class
31.Op Fl SHB
32.Op Fl ea
33.Op Fl cdflmnstu Op val
34.Nm limits
35.Op Fl C Ar class
36.Op Fl SHB
37.Op Fl cdflmnstu Op val
38.Op Fl E
39.Op Ar name=value ...
40.Op Ar command
41.Nm limits
42.Op Fl U Ar user
43.Op Fl SHB
44.Op Fl ea
45.Op Fl cdflmnstu Op val
46.Nm limits
47.Op Fl U Ar user
48.Op Fl SHB
49.Op Fl cdflmnstu Op val
50.Op Fl E
51.Op Ar name=value ...
52.Op Ar command
53.Sh DESCRIPTION
54.Nm Limits
55either prints or sets kernel resource limits, and may optionally set
56environment variables like
57.Xr env 1
58and run a program with the selected resources.
59Three uses of the
60.Nm limits
61command are possible:
62.Pp
63.Bl -hang -width indent
64.It Nm limits Op Ar limitflags
65.Op Ar name=value
66.Ar command
67.Pp
68This usage sets limits according to
69.Ar limitflags ,
70optionally sets environment variables given as
71.Ar name=value
72pairs, and then runs the specified command.
73.It Nm limits Op Ar limitflags
74.Pp
75This usage determines values of resource settings according to
76.Ar limitflags ,
77does not attempt to set them and outputs these values to
78standard output.
79By default, this will output the current kernel resource settings
80active for the calling process.
81Using the
82.Fl C Ar class
83or
84.Fl U Ar user
85flags, you may also display the current resource settings modified
86by the the appropriate login class resource limit entries from
87the
88.Xr login.conf 5
89login capabilities database.
90.It Nm limits Fl e Op Ar limitflags
91.Pp
92This usage determines values of resource settings according to
93.Ar limitflags ,
94but does not set them itself.
95Like the previous usage it outputs these values to standard
96output, except that it will emit them in
97.Em eval
98format, suitable for the calling shell.
99The calling shell is determined by examining the entries in the
100.Pa /proc
101filesystem for the parent process.
102If the shell is known (ie. it is one of sh, csh, bash, tcsh, ksh,
103pdksh or rc),
104.Nm limits
105emits 'limit' or 'ulimit' commands in the format understood by
106that shell.
107If the name of the shell cannot be determined, then the 'ulimit'
108format used by
109.Pa /bin/sh
110is used.
111.Pp
112This is very useful for setting limits used by scripts, or prior
113launching of daemons and other background tasks with specific
114resource limit settings, and provides the benefit of allowing
115global configuration of maximum resource usage by maintaining a
116central database of settings in the login class database.
117.Pp
118Within a shell script,
119.Nm limits
120will normally be used with eval within backticks as follows:
121.Pp
122.Dl eval `limits -e -C daemon`
123.Pp
124which causes the output of
125.Nm limits
126to be evaluated and set by the current shell.
127.El
128.Pp
129The value of limitflags specified in the above contains one or more of the
130following options:
131.Pp
132.Bl -tag -width "-d [limit]"
133.It Fl C Ar class
134Use current resource values, modified by the resource entries applicable
135for the login class "class".
136.It Fl U Ar user
137Use current resource values, modified by the resource entries applicable
138to the login class which "user" belongs to.
139If the user does not belong to a class, then the resource capabilities
140for the "default" class are used, if it exists, or the "root" class if
141the user is a superuser account.
142.It Fl S
143Selects display or setting of "soft" (or current) resource limits.
144If specific limits settings follow this switch, only soft limits are
145affected unless overridden later with either the
146.Fl H
147or
148.Fl B
149flags.
150.It Fl H
151Selects display or setting of "hard" (or maximum) resource limits.
152If specific limits settings follow this switch, only hard limits are
153affected until overridden later with either the
154.Fl S
155or
156.Fl B
157flags.
158.It Fl B
159Selects display or setting of both "soft" (current) or "hard" (maximum)
160resource limits.
161If specific limits settings follow this switch, both soft and hard
162limits are affected until overridden later with either the
163.Fl S
164or
165.Fl H
166flags.
167.Fl e
168Selects "eval mode" formatting for output.
169This is valid only on display mode and cannot be used when running a
170command.
171The exact syntax used for output depends upon the type of shell from
172which
173.Nm limits
174is invoked.
175.It Fl c Op Ar limit
176Selects or sets (if 'limit' is specified) the
177.Em coredumpsize
178resource limit.
179A value of 0 disables core dumps.
180.It Fl d Op Ar limit
181Selects or sets (if 'limit' is specified) the
182.Em datasize
183resource limit.
184.It Fl f Op Ar limit
185Selects or sets the
186.Em filesize
187resource limit.
188.It Fl l Op Ar limit
189Selects or sets the
190.Em memorylocked
191resource limit.
192.It Fl m Op Ar limit
193Selects or sets the
194.Em memoryuse
195size limit.
196.It Fl n Op Ar limit
197Selects or sets the
198.Em openfiles
199resource limit.  The system-wide limit on the maximum number of
200open files per process can be viewed using the 'sysctl kern.maxfilesperproc'
201command.  The total number of simultaneously open files in the entire
202system is limited to the value displayed by the 'sysctl kern.maxfiles'
203command.
204.It Fl s Op Ar limit
205Selects or sets the
206.Em stacksize
207resource limit.
208.It Fl t Op Ar limit
209Selects or sets the
210.Em cputime
211resource limit.
212.It Fl u Op Ar limit
213Selects or sets the
214.Em maxproc
215resource limit.  The system-wide limit on the maximum number of processes
216allowed per UID can be viewed using the 'sysctl kern.maxprocperuid' command.
217The maximum number of processes that can be running simultaneously
218in the entire system is limited to the value given by
219the 'sysctl kern.maxproc' command.
220.Pp
221Valid values for 'limit' in the above set of flags consist of either the
222string 'infinity' or 'inf' for an infinite (or kernel-defined maximum)
223limit, or a numeric value maybe followed by a suffix.
224Values which relate to size default to a value in bytes, or one of the
225following suffixes may be used as a multiplier:
226.Pp
227.Bl -tag -offset indent -width "xxxx" -compact
228.It b
229512 byte blocks.
230.It k
231kilobytes (1024 bytes).
232.It m
233megabytes (1024*1024 bytes).
234.It g
235gigabytes.
236.It t
237terabytes.
238.El
239.Pp
240The
241.Em cputime
242resource defaults to a number of seconds, but a multiplier may be
243used, and as with size values, multiple values separated by a valid
244suffix are added together:
245.Bl -tag -offset indent -width "xxxx" -compact
246.It s
247seconds.
248.It m
249minutes.
250.It h
251hours.
252.It d
253days.
254.It w
255weeks.
256.It y
257365 day years.
258.El
259.Pp
260.It Fl E
261The option
262.Sq Fl E
263causes
264.Nm limits
265to completely ignore the environment it inherits.
266.It Fl a
267This option forces all resource settings to be displayed even if
268other specific resource settings have been specified.
269For example, if you wish to disable core dumps when starting up
270the usenet news system, but wish to set all other resource settings
271as well that apply to the 'news' account, you might use:
272.Pp
273.Dl eval `limits -U news -aBec 0`
274.Pp
275As with the
276.Xr setrlimit 3
277call, only the superuser may raise process "hard" resource limits.
278Non-root users may, however, lower them or change "soft" resource limits
279within to any value below the hard limit.
280When invoked to execute a program, the failure of
281.Nm limits
282to raise a hard limit is considered a fatal error.
283.El
284.Sh DIAGNOSTICS
285.Nm Limits
286exits with EXIT_FAILURE if usage is incorrect in any way; ie. an invalid
287option, or set/display options are selected in the same invocation,
288.Fl e
289is used when running a program, etc.
290When run in display or eval mode,
291.Nm limits
292exits with a status of EXIT_SUCCESS.
293When run in command mode and execution of the command succeeds, the exit status
294will be whatever the executed program returns.
295.Sh SEE ALSO
296.Xr csh 1 ,
297.Xr env 1 ,
298.Xr limit 1 ,
299.Xr sh 1 ,
300.Xr getrlimit 2 ,
301.Xr setrlimit 2 ,
302.Xr login_cap 3 ,
303.Xr login.conf 5 ,
304.Xr sysctl 8
305.Sh BUGS
306.Nm Limits
307does not handle commands with equal (``='') signs in their
308names, for obvious reasons.
309.Pp
310When eval output is selected, the /proc filesystem must be installed
311and mounted for the shell to be correctly determined, and therefore
312output syntax correct for the running shell.
313The default output is valid for /bin/sh, so this means that any
314usage of
315.Nm limits
316in eval mode prior mounting /proc may only occur in standard bourne
317shell scripts.
318.Pp
319.Nm Limits
320makes no effort to ensure that resource settings emitted or displayed
321are valid and settable by the current user.
322Only a superuser account may raise hard limits, and when doing so
323the FreeBSD kernel will silently lower limits to values less than
324specified if the values given are too high.
325