Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Apr 2004 04:07:49 +0200
From:      "Cyrille Lefevre" <root@gits.dyndns.org>
To:        "Jilles Tjoelker" <jilles@stack.nl>
Cc:        Albert Cahalan <albert@users.sourceforge.net>
Subject:   Re: ps enhencements (posix syntax, and more)
Message-ID:  <01cb01c428d7$ea7592b0$7890a8c0@dyndns.org>
References:  <019601c426b0$77dc91a0$7890a8c0@dyndns.org><p0602040dbcab0fdc78a2@[128.113.24.47]> <1082504719.3444.534.camel@cube><00ba01c427f3$b3477f40$7890a8c0@dyndns.org> <20040422172401.GA88130@stack.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
"Jilles Tjoelker" <jilles@stack.nl> wrote:
> On Thu, Apr 22, 2004 at 12:54:51AM +0200, Cyrille Lefevre wrote:
> > > > fname   FNAME   alias to ucomm [solaris]
>
> > > Yes, except that it's narrow. Make it 8 characters wide.
>
> > yes, I know, but, for instance, it's just an alias and I don't
> > understand the 8 char limit ? 13 yes, but 8 !
>
> Because solaris does it that way.

good answer :)

> Quoting from the pr:
>
> > -s    show signal output, same as -O SFMT (option taken from tru64
> >       conflicts w/ netbsd -s, aka show threads w/ different fields
> >       IMHO, this may be implemented as part of freebsd -H).
>
> Historic BSD used it to show kernel stack size. Tried with Ultrix
> 4.x, NextSTEP and 4.3BSD-Quasijarus. It may look like (from the latter):
>
[snip]
>
> The 4.3BSD man page says:
>      s    Adds the size SSIZ of the kernel stack of each process
>           (for use by system maintainers) to the basic output
>           format.
>
> It's quite likely that 's' for signals is an OSF invention.

your are right and wrong. I'm using as a reference, 4.3BSD reno which
seems to be the first BSD version to introduce "keywords" before 4.4BSD.
and 4.3BSD code says that -s is SFMT, while anterior versions say what
you say. however, the 4.3BSD reno manual page has not been updated to
match the code :(

> >     added keywords (bsd) :
>
> Keep the -o option equal between bsd and posix modes, if possible.

well, they are. by "added  keywords (bsd)", I mean keywords which comes
from other BSD implementations.

> >    enhancements to the posix syntax are :
> >    -O              same as -o pid,fmtlist,tty,time,comm
>
> Where do you have this from? Keep this -O same as BSD -O if possible.

under BSD, pid, tt, state, time and command are the default fields used by all
formats,
while under POSIX, it's pid, tty, time and comm. not my fault.

> SUSv3 mentions BSD's -O in an informative section and recommends -O
> being used for that purpose.

right and wrong, the sysv3 manual page says :

"In a new BSD version of ps, a -O option can be used to write all of the default
information"

note the "default information".

they also said : "This was not adopted because the default output is
implementation-defined."

so, it's implementation-defined :)

> > Format string which contains both an equal sign and a comma are considered
> > to be comma only separated list. so, both
> > -o "pid=process id,ppid=parent pid,command=command line" and
> > -o "pid=child ppid=parent command=command" are well parsed,
> > unfortunately, mixing "user=user name,pid=pid command" isn't...
>
> Hmm, FreeBSD 5.x follows the spec exactly in this respect, an equal sign
> marks the rest of the argument as header text, so I doubt whether it's
> worth doing this. Note that FreeBSD 4.x aborts header texts at a comma
> or space.

any other opinion ?

> >   findvar() rewritten to handle header specification on aliases.
> >   now, you may say "ps -O acflg=XXX" as well as "ps -O acfalg=XXX"
>
> There's a PR of mine open on that, too (much simpler).

your implementation isn't recursive, so -o RUSAGE could'nt be handled.

> > -t '?' to select process not attached to a terminal (from older bsd)
>
> Good.

-t - has just been implemented, also (from netbsd and probably some older bsd).

both options are now handled at kernel level.

> > tsid added in -j format string
>
> Use sid instead, it's more informative (in case of processes that can't
> access their ctty anymore (like 'p2-') or don't have a ctty at all). I
> think I had a PR for that, too (certainly a local patch, at least).

you are right, I forgot to say that sid as also been added, as well as
tpgid and tsid, but only if -Q (or -W extended in the future) is given.
maybe sid should be added to the default format string (w/o -Q) ?

# bps -jQ
USER   PID  PPID  PGID   SID TPGID  TSID JOBC STAT TT       TIME COMMAND

> > if (!S_ISCHR(sb.st_mode)) {
>
> Use isatty(3) for checking whether it's a tty. Things like ps -t
> /dev/da0s1a are meaningless but I think your patch will not reject it.

isatty(3) needs a file descriptor. do you intend that each -t args with an
absolute path would have to be opened, checked w/ isatty(2), then close ?
why not, any other opinion ?

thanks for you review.

Cyrille Lefevre.
-- 
mailto:clefevre-lists@9online.fr



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01cb01c428d7$ea7592b0$7890a8c0>