summaryrefslogtreecommitdiffstats
path: root/bin/pkill
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2010-06-20 08:48:30 +0000
committerbrian <brian@FreeBSD.org>2010-06-20 08:48:30 +0000
commitf16fb8206ed902d68fd499178f91de0b8d64c8f9 (patch)
treef840c0ad50be145deb3cfa22d7454ecbe559b7de /bin/pkill
parent5b3161617ddabdcf1d0a41c0ff4d45278901da7a (diff)
downloadFreeBSD-src-f16fb8206ed902d68fd499178f91de0b8d64c8f9.zip
FreeBSD-src-f16fb8206ed902d68fd499178f91de0b8d64c8f9.tar.gz
Recognise the -l switch with pkill - list kill command(s) used.
PR: 143558 Submitted by: eitanadlerlist at gmail dot com MFC after: 3 weeks
Diffstat (limited to 'bin/pkill')
-rw-r--r--bin/pkill/pkill.110
-rw-r--r--bin/pkill/pkill.c14
2 files changed, 16 insertions, 8 deletions
diff --git a/bin/pkill/pkill.1 b/bin/pkill/pkill.1
index 0c666e5..7188387 100644
--- a/bin/pkill/pkill.1
+++ b/bin/pkill/pkill.1
@@ -156,14 +156,16 @@ The value
matches processes not in jail.
.It Fl l
Long output.
-Print the process name in addition to the process ID for each matching
+For
+.Nm pgrep ,
+print the process name in addition to the process ID for each matching
process.
If used in conjunction with
.Fl f ,
print the process ID and the full argument list for each matching process.
-This option can only be used with the
-.Nm pgrep
-command.
+For
+.Nm pkill ,
+display the kill command used for each process killed.
.It Fl n
Select only the newest (most recently started) of the matching processes.
.It Fl o
diff --git a/bin/pkill/pkill.c b/bin/pkill/pkill.c
index 7876b87..d9959c58 100644
--- a/bin/pkill/pkill.c
+++ b/bin/pkill/pkill.c
@@ -128,7 +128,7 @@ main(int argc, char **argv)
{
char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q, *pidfile;
const char *execf, *coref;
- int ancestors, debug_opt;
+ int ancestors, debug_opt, did_action;
int i, ch, bestidx, rv, criteria, pidfromfile, pidfilelock;
size_t jsz;
int (*action)(const struct kinfo_proc *);
@@ -242,8 +242,6 @@ main(int argc, char **argv)
criteria = 1;
break;
case 'l':
- if (!pgrep)
- usage();
longfmt = 1;
break;
case 'n':
@@ -530,16 +528,24 @@ main(int argc, char **argv)
/*
* Take the appropriate action for each matched process, if any.
*/
+ did_action = 0;
for (i = 0, rv = 0, kp = plist; i < nproc; i++, kp++) {
if (PSKIP(kp))
continue;
if (selected[i]) {
+ if (longfmt && !pgrep) {
+ did_action = 1;
+ printf("kill -%d %d\n", signum, kp->ki_pid);
+ }
if (inverse)
continue;
} else if (!inverse)
continue;
rv |= (*action)(kp);
}
+ if (!did_action && !pgrep && longfmt)
+ fprintf(stderr,
+ "No matching processes belonging to you were found\n");
exit(rv ? STATUS_MATCH : STATUS_NOMATCH);
}
@@ -552,7 +558,7 @@ usage(void)
if (pgrep)
ustr = "[-LSfilnoqvx] [-d delim]";
else
- ustr = "[-signal] [-ILfinovx]";
+ ustr = "[-signal] [-ILfilnovx]";
fprintf(stderr,
"usage: %s %s [-F pidfile] [-G gid] [-M core] [-N system]\n"
OpenPOWER on IntegriCloud