From: Bernhard Voelker <mail@bernhard-voelker.de>
To: "util-linux@vger.kernel.org" <util-linux@vger.kernel.org>
Subject: [PATCH] prlimit: add support for executing a command
Date: Wed, 16 Nov 2011 17:57:27 +0100 [thread overview]
Message-ID: <4EC3EB77.2020000@bernhard-voelker.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 228 bytes --]
As previously dicussed [1] here comes the patch for executing a command
(alternatively to setting limits for a running process via --pid).
[1] http://article.gmane.org/gmane.linux.utilities.util-linux-ng/5038,
Have fun,
Berny
[-- Attachment #2: prlimit-exec.patch --]
[-- Type: text/x-patch, Size: 3366 bytes --]
>From cd30ce6baa45fe9b58c50fea0caf3ab8bd81a066 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <mail@bernhard-voelker.de>
Date: Wed, 16 Nov 2011 17:42:01 +0100
Subject: [PATCH] prlimit: add support for executing a command
prlimit.c: Alternatively to applying the limits to an existing process via the
--pid option, allow a command to be executed. Adapted usage() accordingly.
prlimit.1: mention new syntax.
Signed-off-by: Bernhard Voelker <mail@bernhard-voelker.de>
---
sys-utils/prlimit.1 | 14 +++++++++++++-
sys-utils/prlimit.c | 17 +++++++++++++----
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/sys-utils/prlimit.1 b/sys-utils/prlimit.1
index cc40ac4..6b91214 100644
--- a/sys-utils/prlimit.1
+++ b/sys-utils/prlimit.1
@@ -9,12 +9,22 @@ get and set a process resource limits.
.SH SYNOPSIS
.B prlimit
.RB [options]
-.RB [ \-\-{resource_name}[=limits] ]
+.RB [ \-\-{resource_name}[=limits]
+.RB [ \-\-pid\ PID]
+
+.B prlimit
+.RB [options]
+.RB [ \-\-{resource_name}[=limits]]
+.RB "command " [ argument ...]
.SH DESCRIPTION
Given a process id and one or more resources, \fBprlimit\fP tries to retrieve
and/or modify the limits.
+When \fIcommand\fR is given,
+.B prlimit
+will run this command with the given arguments.
+
The \fIlimits\fP format is composed by a soft and a hard (ceiling) value, separated
by a semicolon (:), in order to modify the existing value(s). If no limits are
used, \fBprlimit\fP will only display the current values. If one of the values
@@ -92,6 +102,8 @@ of open files to 1024 and 4095, respectively.
Modify only the soft limit for the amount of processes.
.IP "\fBprlimit \-\-pid $$ --nproc=unlimited\fP"
Set the amount of processes for both soft and ceiling values to unlimited.
+.IP "\fBprlimit --cpu=10 sort -u hugefile\fP"
+Set the soft and hard CPU time limit and run 'sort'.
.SH "SEE ALSO"
.BR prlimit (2),
diff --git a/sys-utils/prlimit.c b/sys-utils/prlimit.c
index bcbfb5a..1d91909 100644
--- a/sys-utils/prlimit.c
+++ b/sys-utils/prlimit.c
@@ -152,7 +152,9 @@ static void __attribute__ ((__noreturn__)) usage(FILE * out)
fputs(USAGE_HEADER, out);
fprintf(out,
- _(" %s [options]\n"), program_invocation_short_name);
+ _(" %s [options] [-p PID]\n"), program_invocation_short_name);
+ fprintf(out,
+ _(" %s [options] COMMAND\n"), program_invocation_short_name);
fputs(_("\nGeneral Options:\n"), out);
fputs(_(" -p, --pid <pid> process id\n"
@@ -521,7 +523,7 @@ int main(int argc, char **argv)
assert(MAX_RESOURCES == STACK + 1);
while((opt = getopt_long(argc, argv,
- "c::d::e::f::i::l::m::n::q::r::s::t::u::v::x::y::p:o:vVh",
+ "+c::d::e::f::i::l::m::n::q::r::s::t::u::v::x::y::p:o:vVh",
longopts, NULL)) != -1) {
switch(opt) {
case 'c':
@@ -608,8 +610,9 @@ int main(int argc, char **argv)
break;
}
}
- if (argc > optind)
- usage(stderr);
+ if (argc > optind && pid)
+ errx(EXIT_FAILURE,
+ _("--pid option and COMMAND are mutually exclusive"));
if (!ncolumns) {
/* default columns */
@@ -632,6 +635,12 @@ int main(int argc, char **argv)
if (!list_empty(&lims))
show_limits(&lims, tt_flags);
+
+ if (argc > optind) {
+ /* prlimit [options] COMMAND */
+ execvp(argv[optind], &argv[optind]);
+ err(EXIT_FAILURE, _("executing %s failed"), argv[optind]);
+ }
return EXIT_SUCCESS;
}
--
1.7.3.4
next reply other threads:[~2011-11-16 16:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-16 16:57 Bernhard Voelker [this message]
2011-11-23 11:49 ` [PATCH] prlimit: add support for executing a command Karel Zak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EC3EB77.2020000@bernhard-voelker.de \
--to=mail@bernhard-voelker.de \
--cc=util-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.