summaryrefslogtreecommitdiffstats
path: root/usr.bin/pkill
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2005-03-20 10:53:54 +0000
committerpjd <pjd@FreeBSD.org>2005-03-20 10:53:54 +0000
commit2b2f4d5e6ee324f63a5e2f2288dbf208de06c75a (patch)
tree3635da83083f1a0b469cd4a62b7d2055156eaef8 /usr.bin/pkill
parenta97367034b4a1fdcbd5755cc9beb76dd0a944c3f (diff)
downloadFreeBSD-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.19
-rw-r--r--usr.bin/pkill/pkill.c25
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);
}
OpenPOWER on IntegriCloud