/usr/bin/limits (WAS: Re: Apache.sh on current)
Yuriy Tsibizov
Yuriy.Tsibizov at gfk.ru
Tue Sep 2 19:06:41 UTC 2008
On Tue, 2 Sep 2008, Ed Schouten wrote:
> Looks like I introduced this regression when importing MPSAFE TTY.
> limits(1) dies when RLIMIT_NLIMITS is increased, but the array in
> limits.c isn't extended (seems to be quite fragile).
>
> Can you try the attached patch for limits(1)? Thanks!
Yes, it solves that problem. You may also want to add -p switch to man
page and fix some other places in limits.c (see attached files).
We also have built-in 'limit' in csh -- should it be updated as well?
Yuriy Tsibizov,
GfK RUS Network Administrator
-------------- next part --------------
Index: limits.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/limits/limits.c,v
retrieving revision 1.17
diff -u -r1.17 limits.c
--- limits.c 4 Jul 2007 00:00:40 -0000 1.17
+++ limits.c 2 Sep 2008 18:13:07 -0000
@@ -76,17 +76,18 @@
{
{ "", "infinity", "Resource limits%s%s:\n", "-max", "-cur", "",
{
- { " cputime%-4s %8s", " secs\n", 1 },
- { " filesize%-4s %8s", " kB\n", 1024 },
- { " datasize%-4s %8s", " kB\n", 1024 },
- { " stacksize%-4s %8s", " kB\n", 1024 },
- { " coredumpsize%-4s %8s", " kB\n", 1024 },
- { " memoryuse%-4s %8s", " kB\n", 1024 },
- { " memorylocked%-4s %8s", " kB\n", 1024 },
- { " maxprocesses%-4s %8s", "\n", 1 },
- { " openfiles%-4s %8s", "\n", 1 },
- { " sbsize%-4s %8s", " bytes\n", 1 },
- { " vmemoryuse%-4s %8s", " kB\n", 1024 }
+ { " cputime%-4s %8s", " secs\n", 1 },
+ { " filesize%-4s %8s", " kB\n", 1024 },
+ { " datasize%-4s %8s", " kB\n", 1024 },
+ { " stacksize%-4s %8s", " kB\n", 1024 },
+ { " coredumpsize%-4s %8s", " kB\n", 1024 },
+ { " memoryuse%-4s %8s", " kB\n", 1024 },
+ { " memorylocked%-4s %8s", " kB\n", 1024 },
+ { " maxprocesses%-4s %8s", "\n", 1 },
+ { " openfiles%-4s %8s", "\n", 1 },
+ { " sbsize%-4s %8s", " bytes\n", 1 },
+ { " vmemoryuse%-4s %8s", " kB\n", 1024 },
+ { " pseudo-terminals%-4s %8s", "\n", 1 }
}
},
{ "sh", "unlimited", "", " -H", " -S", "",
@@ -101,22 +102,24 @@
{ "ulimit%s -u %s", ";\n", 1 },
{ "ulimit%s -n %s", ";\n", 1 },
{ "ulimit%s -b %s", ";\n", 1 },
- { "ulimit%s -v %s", ";\n", 1024 }
+ { "ulimit%s -v %s", ";\n", 1024 },
+ { "ulimit%s -p %s", ";\n", 1 }
}
},
{ "csh", "unlimited", "", " -h", "", NULL,
{
- { "limit%s cputime %s", ";\n", 1 },
- { "limit%s filesize %s", ";\n", 1024 },
- { "limit%s datasize %s", ";\n", 1024 },
- { "limit%s stacksize %s", ";\n", 1024 },
- { "limit%s coredumpsize %s", ";\n", 1024 },
- { "limit%s memoryuse %s", ";\n", 1024 },
- { "limit%s memorylocked %s", ";\n", 1024 },
- { "limit%s maxproc %s", ";\n", 1 },
- { "limit%s openfiles %s", ";\n", 1 },
- { "limit%s sbsize %s", ";\n", 1 },
- { "limit%s vmemoryuse %s", ";\n", 1024 }
+ { "limit%s cputime %s", ";\n", 1 },
+ { "limit%s filesize %s", ";\n", 1024 },
+ { "limit%s datasize %s", ";\n", 1024 },
+ { "limit%s stacksize %s", ";\n", 1024 },
+ { "limit%s coredumpsize %s", ";\n", 1024 },
+ { "limit%s memoryuse %s", ";\n", 1024 },
+ { "limit%s memorylocked %s", ";\n", 1024 },
+ { "limit%s maxproc %s", ";\n", 1 },
+ { "limit%s openfiles %s", ";\n", 1 },
+ { "limit%s sbsize %s", ";\n", 1 },
+ { "limit%s vmemoryuse %s", ";\n", 1024 },
+ { "limit%s pseudoterminals %s", ";\n", 1 }
}
},
{ "bash|bash2", "unlimited", "", " -H", " -S", "",
@@ -131,22 +134,24 @@
{ "ulimit%s -u %s", ";\n", 1 },
{ "ulimit%s -n %s", ";\n", 1 },
{ "ulimit%s -b %s", ";\n", 1 },
- { "ulimit%s -v %s", ";\n", 1024 }
+ { "ulimit%s -v %s", ";\n", 1024 },
+ { "ulimit%s -p %s", ";\n", 1 }
}
},
{ "tcsh", "unlimited", "", " -h", "", NULL,
{
- { "limit%s cputime %s", ";\n", 1 },
- { "limit%s filesize %s", ";\n", 1024 },
- { "limit%s datasize %s", ";\n", 1024 },
- { "limit%s stacksize %s", ";\n", 1024 },
- { "limit%s coredumpsize %s", ";\n", 1024 },
- { "limit%s memoryuse %s", ";\n", 1024 },
- { "limit%s memorylocked %s", ";\n", 1024 },
- { "limit%s maxproc %s", ";\n", 1 },
- { "limit%s descriptors %s", ";\n", 1 },
- { "limit%s sbsize %s", ";\n", 1 },
- { "limit%s vmemoryuse %s", ";\n", 1024 }
+ { "limit%s cputime %s", ";\n", 1 },
+ { "limit%s filesize %s", ";\n", 1024 },
+ { "limit%s datasize %s", ";\n", 1024 },
+ { "limit%s stacksize %s", ";\n", 1024 },
+ { "limit%s coredumpsize %s", ";\n", 1024 },
+ { "limit%s memoryuse %s", ";\n", 1024 },
+ { "limit%s memorylocked %s", ";\n", 1024 },
+ { "limit%s maxproc %s", ";\n", 1 },
+ { "limit%s descriptors %s", ";\n", 1 },
+ { "limit%s sbsize %s", ";\n", 1 },
+ { "limit%s vmemoryuse %s", ";\n", 1024 },
+ { "limit%s pseudoterminals %s", ";\n", 1 }
}
},
{ "ksh|pdksh", "unlimited", "", " -H", " -S", "",
@@ -161,7 +166,8 @@
{ "ulimit%s -p %s", ";\n", 1 },
{ "ulimit%s -n %s", ";\n", 1 },
{ "ulimit%s -b %s", ";\n", 1 },
- { "ulimit%s -v %s", ";\n", 1024 }
+ { "ulimit%s -v %s", ";\n", 1024 },
+ { "ulimit%s -p %s", ";\n", 1 }
}
},
{ "zsh", "unlimited", "", " -H", " -S", "",
@@ -176,22 +182,24 @@
{ "ulimit%s -u %s", ";\n", 1 },
{ "ulimit%s -n %s", ";\n", 1 },
{ "ulimit%s -b %s", ";\n", 1 },
- { "ulimit%s -v %s", ";\n", 1024 }
+ { "ulimit%s -v %s", ";\n", 1024 },
+ { "ulimit%s -p %s", ";\n", 1 }
}
},
{ "rc|es", "unlimited", "", " -h", "", NULL,
{
- { "limit%s cputime %s", ";\n", 1 },
- { "limit%s filesize %s", ";\n", 1024 },
- { "limit%s datasize %s", ";\n", 1024 },
- { "limit%s stacksize %s", ";\n", 1024 },
- { "limit%s coredumpsize %s", ";\n", 1024 },
- { "limit%s memoryuse %s", ";\n", 1024 },
- { "limit%s lockedmemory %s", ";\n", 1024 },
- { "limit%s processes %s", ";\n", 1 },
- { "limit%s descriptors %s", ";\n", 1 },
- { "limit%s sbsize %s", ";\n", 1 },
- { "limit%s vmemoryuse %s", ";\n", 1024 }
+ { "limit%s cputime %s", ";\n", 1 },
+ { "limit%s filesize %s", ";\n", 1024 },
+ { "limit%s datasize %s", ";\n", 1024 },
+ { "limit%s stacksize %s", ";\n", 1024 },
+ { "limit%s coredumpsize %s", ";\n", 1024 },
+ { "limit%s memoryuse %s", ";\n", 1024 },
+ { "limit%s lockedmemory %s", ";\n", 1024 },
+ { "limit%s processes %s", ";\n", 1 },
+ { "limit%s descriptors %s", ";\n", 1 },
+ { "limit%s sbsize %s", ";\n", 1 },
+ { "limit%s vmemoryuse %s", ";\n", 1024 },
+ { "limit%s pseudoterminals %s", ";\n", 1 }
}
},
{ NULL, NULL, NULL, NULL, NULL, NULL,
@@ -213,7 +221,8 @@
{ "maxproc", login_getcapnum },
{ "openfiles", login_getcapnum },
{ "sbsize", login_getcapsize },
- { "vmemoryuse", login_getcapsize }
+ { "vmemoryuse", login_getcapsize },
+ { "pseudoterminals",login_getcapnum },
};
/*
@@ -224,7 +233,7 @@
* to be modified accordingly!
*/
-#define RCS_STRING "tfdscmlunbv"
+#define RCS_STRING "tfdscmlunbvp"
static rlim_t resource_num(int which, int ch, const char *str);
static void usage(void);
@@ -261,7 +270,7 @@
}
optarg = NULL;
- while ((ch = getopt(argc, argv, ":EeC:U:BSHab:c:d:f:l:m:n:s:t:u:v:")) != -1) {
+ while ((ch = getopt(argc, argv, ":EeC:U:BSHab:c:d:f:l:m:n:s:t:u:v:p:")) != -1) {
switch(ch) {
case 'a':
doall = 1;
@@ -475,7 +484,7 @@
usage(void)
{
(void)fprintf(stderr,
-"usage: limits [-C class|-U user] [-eaSHBE] [-bcdflmnstuv [val]] [[name=val ...] cmd]\n");
+"usage: limits [-C class|-U user] [-eaSHBE] [-bcdflmnstuvp [val]] [[name=val ...] cmd]\n");
exit(EXIT_FAILURE);
}
@@ -581,6 +590,7 @@
break;
case RLIMIT_NPROC:
case RLIMIT_NOFILE:
+ case RLIMIT_NPTS:
res = strtoq(s, &e, 0);
s = e;
break;
-------------- next part --------------
Index: limits.1
===================================================================
RCS file: /home/ncvs/src/usr.bin/limits/limits.1,v
retrieving revision 1.29
diff -u -r1.29 limits.1
--- limits.1 17 Jan 2005 07:44:20 -0000 1.29
+++ limits.1 2 Sep 2008 18:03:45 -0000
@@ -30,11 +30,11 @@
.Op Fl C Ar class | Fl U Ar user
.Op Fl SHB
.Op Fl ea
-.Op Fl bcdflmnstuv Op Ar val
+.Op Fl bcdflmnstuvp Op Ar val
.Nm
.Op Fl C Ar class | Fl U Ar user
.Op Fl SHB
-.Op Fl bcdflmnstuv Op Ar val
+.Op Fl bcdflmnstuvp Op Ar val
.Op Fl E
.Oo
.Op Ar name Ns = Ns Ar value ...
@@ -262,6 +262,10 @@
and
.Xr mmap 2 Ns 'd
space.
+.It Fl p Op Ar val
+Select or set the
+.Va pseudoterminals
+resource limit.
.El
.Pp
Valid values for
More information about the freebsd-current
mailing list