posix ps (was Re: Adding `pgrep' and `pkill' to /usr/bin)

Albert Cahalan albert at users.sf.net
Fri Mar 26 16:08:25 PST 2004


On Fri, 2004-03-26 at 17:51, Cyrille Lefevre wrote:
> "Albert Cahalan" <albert at users.sourceforge.net> 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




More information about the freebsd-arch mailing list