From owner-freebsd-arch@FreeBSD.ORG Fri Mar 26 16:08:25 2004 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9E08E16A4CE; Fri, 26 Mar 2004 16:08:25 -0800 (PST) Received: from sccrmhc12.comcast.net (sccrmhc12.comcast.net [204.127.202.56]) by mx1.FreeBSD.org (Postfix) with ESMTP id 340C043D3F; Fri, 26 Mar 2004 16:08:25 -0800 (PST) (envelope-from albert@users.sf.net) Received: from c-65-34-189-253.se.client2.attbi.com ([65.34.189.253]) by comcast.net (sccrmhc12) with SMTP id <2004032700082301200605dfe>; Sat, 27 Mar 2004 00:08:24 +0000 From: Albert Cahalan To: Cyrille Lefevre In-Reply-To: <1b9701c41384$ddff8da0$7890a8c0@dyndns.org> References: <1080334271.2255.1301.camel@cube> <1b9701c41384$ddff8da0$7890a8c0@dyndns.org> Content-Type: text/plain Organization: Message-Id: <1080346391.2255.1347.camel@cube> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.4 Date: 26 Mar 2004 19:13:11 -0500 Content-Transfer-Encoding: 7bit cc: arch@freebsd.org cc: das@freebsd.org cc: drosih@rpi.edu cc: freebsd-standards@freebsd.org cc: Albert Cahalan Subject: Re: posix ps (was Re: Adding `pgrep' and `pkill' to /usr/bin) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Mar 2004 00:08:25 -0000 On Fri, 2004-03-26 at 17:51, Cyrille Lefevre wrote: > "Albert Cahalan" wrote: > > > Cyrille Lefevre writes: > > > > > two years ago, I've added posix syntax and so to my locally ps(1). > > > for instance, I'm currently adding the notion of dynamic personalities > > > > OK, would YOU be interested in working with me on some sort of > > common ps specification beyond what SUSv3 has to offer? I'd love > > to see something that Sun could adopt, and that could be mostly > > merged into the next revision of the standard. > > why not :) Great. Unless people object, I'll wipe the Cc: list for this. BTW, I hadn't meant to imply that any other person was being some kind of uncooperative prick. We all have time constraints and plenty of projects. > > So you use "-X" as an escape into long options? Why not "--help"? > > no, PERSONALITY=solaris is the same as -X solaris. -X is the option > I use to switch between personalities. so, -X help is a sort of -L which > lists available keywords. -o help in the posix syntax stands for -L in > the bsd syntax. I don't use -L as in the bsd syntax to avoid a > conflict with -L which permit to list threads in the solaris syntax. Oh, OK. It's kind of weird, since "ps -o pid,help,comm" would seem to be something for 3 columns, but suit yourself. I didn't bother, thinking "ps L" and "man ps" would do. I suppose the -X has to be the first option...? > > > personalities enable options such as : > > > bsd ps : > > > -g and -n from sunos, -s from tru64 and some other options. > > > posix ps : see susv3 man (see > > > http://www.opengroup.org/onlinepubs/007904975/toc.htm) > > > -j from all except posix > > > -c, -y and -P from solaris > > > -C cmdlist (ala pgrep :) and -x from hpux > > > > That "-x" will hurt you. Without it, it is easy for a SUSv3 parser > > to detect the common old "ps -ax" syntax. > > well, hpux -f only list the first 64 characters of a command line > (where solaris list the first 80 ones), the hpux -x option is > equivalent to the bsd -ww option. Eh, "-ww" plus turning on argument display, right? It's the opposite of BSD "c" AFAIK, and implied by "-f". > > BTW, I have a regression test suite that you might find useful. > > yes, of course. for instance, I'm trying to resolve header's naming, > say user is USER or UID depending of the personality... etc. First of all, perfection is the enemy of good. Part of my solution: {"uid_hack", "UID", pr_euser, sr_nop, 8, USR, XXX, ET|USER}, > > > -M from irix > > > > Do you have documentation or examples for this? > > irix -M is freebsd -Z, so, simple to implement :) It's never that simple. > > > $ PERSONALITY=susv3,+extended ps -? > > > usage: ps [-AacdefjlPxy] [-C cmdlist] [-G grouplist] [-g pgrplist] > > > [-n system [-n core]] [-O fmtlist] [-o fmtlist] [-p pidlist] > > > [-s sidlist] [-t ttylist] [-U ruserlist] [-u userlist] [-X > perslist] > > > ps -o help > > > ps -X help > > > > What syntax do you use for PERSONALITY settings? Let's do > > something compatible. > > [=+-]keyword[,[=+-]keyword ...] > > "=" is optional and say "this personality", "+" say add "this personality" > to the previous one, and "-" say delete "this personality" to the previous one. > > possible personalities by themself are : > bsd43reno bsd44 default freebsd hpux irix netbsd openbsd solaris sunos susv3 > tru64 > any : all above > none : none of the above The bsd43reno/bsd44/freebsd distinction is interesting. I hope you'll add "linux" to your list. :-) I was hoping that your syntax covered fall-back choices. Then I could ask for "unixware" as a first choice, and for "posix" if "unixware" is unknown. > possible switches > bsd : bsd syntax > extended : allow enhanced options and keywords. > pedantic : be strict about the syntax (-p pid instead of -p pidlist) It's normal to allow a list. The list is either the remaining part of the current argument ("ps -p42,45,16") or the next one. I ban crud like "ps -p 42,,7" and "ps -p ,42,91,". > > The name isn't so good. Tru64 uses CMD_ENV for this, affecting > > more than just ps. I made PS_PERSONALITY take priority so that > > you could change ps behavior without changing other behaviors. > > PS_PERSONALITY is the name that linux uses. this may conflict in > .profiles since the syntax is different. to complete what you say : > irix uses _XPG=1 and hpux uses UNIX95=1 > of course, all of them could be tested for more and more compatobility :) Heh. I do in fact check _XPG=1 and UNIX95=1. > > You forgot the "-F" from DYNIX/ptx. It's really nice. > > any pointer ? It's a friendly format, kind of along the lines of BSD "u". $ ps -F UID PID PPID C SZ RSS PSR STIME TTY TIME CMD albert 21666 21665 1 770 1672 0 19:11 pts/14 00:00:00 bash albert 21674 21666 0 744 880 0 19:11 pts/14 00:00:00 ps -F