diff options
author | pjd <pjd@FreeBSD.org> | 2005-03-20 10:53:54 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-03-20 10:53:54 +0000 |
commit | 2b2f4d5e6ee324f63a5e2f2288dbf208de06c75a (patch) | |
tree | 3635da83083f1a0b469cd4a62b7d2055156eaef8 /usr.bin/pkill | |
parent | a97367034b4a1fdcbd5755cc9beb76dd0a944c3f (diff) | |
download | FreeBSD-src-2b2f4d5e6ee324f63a5e2f2288dbf208de06c75a.zip FreeBSD-src-2b2f4d5e6ee324f63a5e2f2288dbf208de06c75a.tar.gz |
Add and document '-j' option which allows to match processes based on its
jail ID.
Reviewed by: gad
MFC after: 3 days
Diffstat (limited to 'usr.bin/pkill')
-rw-r--r-- | usr.bin/pkill/pkill.1 | 9 | ||||
-rw-r--r-- | usr.bin/pkill/pkill.c | 25 |
2 files changed, 30 insertions, 4 deletions
diff --git a/usr.bin/pkill/pkill.1 b/usr.bin/pkill/pkill.1 index d0a29f5..04126fe 100644 --- a/usr.bin/pkill/pkill.1 +++ b/usr.bin/pkill/pkill.1 @@ -36,7 +36,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd March 25, 2004 +.Dd March 20, 2005 .Dt PKILL 1 .Os .Sh NAME @@ -52,6 +52,7 @@ .Op Fl U Ar uid .Op Fl d Ar delim .Op Fl g Ar pgrp +.Op Fl j Ar jid .Op Fl s Ar sid .Op Fl t Ar tty .Op Fl u Ar euid @@ -65,6 +66,7 @@ .Op Fl P Ar ppid .Op Fl U Ar uid .Op Fl g Ar pgrp +.Op Fl j Ar jid .Op Fl s Ar sid .Op Fl t Ar tty .Op Fl u Ar euid @@ -119,6 +121,11 @@ The value zero is taken to mean the process group ID of the running or .Nm pkill command. +.It Fl j Ar jid +Restrict matches to processes inside jails with a jail ID in the comma-separated +list +.Ar jid . +The value zero is taken to mean any jail ID. .It Fl l Long output. Print the process name in addition to the process ID for each matching diff --git a/usr.bin/pkill/pkill.c b/usr.bin/pkill/pkill.c index 8af5cff..33c6b9a 100644 --- a/usr.bin/pkill/pkill.c +++ b/usr.bin/pkill/pkill.c @@ -109,6 +109,7 @@ struct listhead pgrplist = SLIST_HEAD_INITIALIZER(list); struct listhead ppidlist = SLIST_HEAD_INITIALIZER(list); struct listhead tdevlist = SLIST_HEAD_INITIALIZER(list); struct listhead sidlist = SLIST_HEAD_INITIALIZER(list); +struct listhead jidlist = SLIST_HEAD_INITIALIZER(list); int main(int, char **); void usage(void); @@ -168,7 +169,7 @@ main(int argc, char **argv) debug_opt = 0; execf = coref = _PATH_DEVNULL; - while ((ch = getopt(argc, argv, "DG:M:N:P:U:d:fg:lns:t:u:vx")) != -1) + while ((ch = getopt(argc, argv, "DG:M:N:P:U:d:fg:j:lns:t:u:vx")) != -1) switch (ch) { case 'D': debug_opt++; @@ -203,6 +204,10 @@ main(int argc, char **argv) makelist(&pgrplist, LT_PGRP, optarg); criteria = 1; break; + case 'j': + makelist(&jidlist, LT_GENERIC, optarg); + criteria = 1; + break; case 'l': if (!pgrep) usage(); @@ -390,6 +395,19 @@ main(int argc, char **argv) continue; } + SLIST_FOREACH(li, &jidlist, li_chain) { + if (kp->ki_jid > 0) { + if (li->li_number == 0) + break; + if (kp->ki_jid == (int)li->li_number) + break; + } + } + if (SLIST_FIRST(&jidlist) != NULL && li == NULL) { + selected[i] = 0; + continue; + } + if (argc == 0) selected[i] = 1; } @@ -451,8 +469,9 @@ usage(void) fprintf(stderr, "usage: %s %s [-G gid] [-M core] [-N system]\n" - " [-P ppid] [-U uid] [-g pgrp] [-s sid] [-t tty]\n" - " [-u euid] pattern ...\n", getprogname(), ustr); + " [-P ppid] [-U uid] [-g pgrp] [-j jid] [-s sid]\n" + " [-t tty] [-u euid] pattern ...\n", getprogname(), + ustr); exit(STATUS_ERROR); } |