bin/143558: [patch] Add verbose option to pkill
Eitan Adler
eitanadlerlist at gmail.com
Thu Feb 4 17:40:02 UTC 2010
>Number: 143558
>Category: bin
>Synopsis: [patch] Add verbose option to pkill
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Thu Feb 04 17:40:01 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Eitan Adler
>Release: FreeBSD 8.0 Release Patch 2
>Organization:
>Environment:
>Description:
Allows user to specify -l for pkill to print out which processes were killed if any.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
Index: pkill.1
===================================================================
--- pkill.1 (revision 203347)
+++ pkill.1 (working copy)
@@ -168,9 +168,9 @@
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.
+If used in conjunction with the
+.Nm pkill
+command, it lists the signal sent as well.
.It Fl n
Select only the newest (most recently started) of the matching processes.
.It Fl o
Index: pkill.c
===================================================================
--- pkill.c (revision 203347)
+++ pkill.c (working copy)
@@ -182,7 +182,7 @@
pidfilelock = 0;
execf = coref = _PATH_DEVNULL;
- while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnos:t:u:vx")) != -1)
+ while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ilj:lnos:t:u:vx")) != -1)
switch (ch) {
case 'D':
debug_opt++;
@@ -245,8 +245,6 @@
criteria = 1;
break;
case 'l':
- if (!pgrep)
- usage();
longfmt = 1;
break;
case 'n':
@@ -528,16 +526,26 @@
/*
* Take the appropriate action for each matched process, if any.
*/
+ int didAction = 0;
for (i = 0, rv = 0, kp = plist; i < nproc; i++, kp++) {
if (PSKIP(kp))
continue;
if (selected[i]) {
+ if (longfmt)
+ {
+ didAction = 1;
+ printf("kill -%d %d\n",signum,kp->ki_pid);
+ }
if (inverse)
continue;
} else if (!inverse)
continue;
rv |= (*action)(kp);
}
+ if (!didAction && !pgrep)
+ {
+ printf("No matching processes belonging to you were found\n");
+ }
exit(rv ? STATUS_MATCH : STATUS_NOMATCH);
}
@@ -550,7 +558,7 @@
if (pgrep)
ustr = "[-LSfilnovx] [-d delim]";
else
- ustr = "[-signal] [-ILfinovx]";
+ ustr = "[-signal] [-ILfilnovx]";
fprintf(stderr,
"usage: %s %s [-F pidfile] [-G gid] [-M core] [-N system]\n"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list