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

From: Cyrille Lefevre (root_at_gits.dyndns.org)
Date: 03/26/04

  • Next message: Kris Kennaway: "Re: Is MTX_CONTESTED evil?"
    To: "Albert Cahalan" <albert@users.sourceforge.net>, <arch@freebsd.org>
    Date: Fri, 26 Mar 2004 23:51:24 +0100
    
    

    "Albert Cahalan" <albert@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 :)

    > > (the term comes from linux) instead of static #define such as... say :
    > >
    > > $ ps -X help
    > > any bsd bsd43reno bsd44 default extended freebsd hpux irix netbsd none
    openbsd
    > > pedantic posix relaxed solaris sunos susv3 tru64
    >
    > 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.

    > > 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.

    > 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.

    > > -M from irix
    >
    > Do you have documentation or examples for this?

    irix -M is freebsd -Z, so, simple to implement :)

    > > and some others
    > > they also enable many keywords such as :
    > > RUSAGE and co from tru64, class and psr from solaris, and many others
    > > (mostly aliases)
    > >
    > > when finished, I'll probably submit these changes as a port in the meantime
    > > since I suppose -arch will reject these important changes to a native
    command.
    > > the most important and not done part is... the manual page. any volonteers ?
    >
    > Step 1:
    >
    > a. ps does old BSD behavior by default

    true

    > b. /posix/bin/ps is a script that sets the SUSv3 personality
    > c. /usr/ucb/ps is a link to /bin/ps

    no problem.

    > Step 2:
    >
    > a. ps does SUSv3 by default
    > b. /posix/bin/ps is a link to /bin/ps
    > c. /usr/ucb/ps is a script that sets the old BSD personality
    >
    > > $ 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

    possible switches
    bsd : bsd syntax
    extended : allow enhanced options and keywords.
    pedantic : be strict about the syntax (-p pid instead of -p pidlist)
    posix : posix syntax (! bsd)
    relaxed : ! pedantic

    some examples :

    tru64,-posix is equivalent to tru64,+bsd since tru64 implies +posix

    freebsd,-pedantic,+extended allow -p pidlist, -g and -n sunos options
    and -s tru64 options.

    susv3,+extended is strictly posix but allow the following options :
    -C cmdlist hpux : select processes by name
    -c irix/hpux/solaris : omit c and nice column, add cls column
    -j irix/hpux/solaris/tru64 : job control informations
    -O fmtlist bsd/tru64 : pid fmtlist s tty time comm
    -P hpux/solaris : add psr column
    -s sidlist irix/hpux/solaris/tru64 : select process by session id
    -x hpux : equivalent to -ww bsd option
    -y solaris : omit f and addr columns, add rss column

    > 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 :)

    > You forgot the "-F" from DYNIX/ptx. It's really nice.

    any pointer ?

    Cyrille Lefevre.

    -- 
    home: mailto:cyrille.lefevre@laposte.net
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
    

  • Next message: Kris Kennaway: "Re: Is MTX_CONTESTED evil?"

    Relevant Pages

    • Re: Simple BSD Backup System
      ... coming to BSD is meant to pick up the essential syntax and primary ... Please note that the handbook clearly notes this a bit above the ... | points for other file systems or symbolic links into those file systems. ...
      (comp.unix.bsd.freebsd.misc)
    • Re: Makefiles compatible with both BSD and GNU make?
      ... > FreeBSD's make understands the gnu-style include syntax with no leading ... Automake is the usual way around compatibility issues; ... if one removes the leading dot on "include" it can't find .depend if the ... This works in BSD make altho its not doing anything that isn't ...
      (freebsd-questions)
    • Re: Problem mit init.d script
      ... Nimm ein System V ps bzw. GNU procutil ps und die Optionen ... Das ist wesentlich robuster als das dysfunktionale BSD ps bzw. der BSD ... Syntax vom GNU procutils ps. ...
      (de.comp.os.unix.shell)
    • Re: make vs. gmake
      ... BSD make and GNU make use different syntax, ... except for working around bugs in BSD make. ...
      (comp.unix.bsd.freebsd.misc)