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