[RFC] [patch] pkill verbose option

Eitan Adler eitanadlerlist at gmail.com
Thu Feb 4 10:26:32 UTC 2010


This patch hijacks pgrep's -l

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);
 }

On Thu, Feb 4, 2010 at 11:24 AM, Jason Spiro <jasonspiro4 at gmail.com> wrote:

> jhell <jhell <at> DataIX.net> writes:
>
> [snip]
> >
> > Now pkill -v sleep on my system actually causes my Xserver to exit with a
> > unexpected signal 15.
>
> Yes.  "pkill -v sleep" kills all your own processes except for sleep.  As
> root,
> it kills all processes running on your machine except for sleep.
>
> -V is not a good choice of letter for this option:  it's too easy to write
> -v
> instead by accident.  -l (dash-ell), as jhell has suggested elsewhere in
> this
> thread, would be ideal, since it's lowercase and easy to type.  If you
> don't
> like -l, you could choose to make it -D (for "Debug") instead.
>
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>


More information about the freebsd-hackers mailing list