Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Jun 2010 03:30:14 +0200
From:      Pieter de Goeje <pieter@degoeje.nl>
To:        freebsd-questions@freebsd.org
Cc:        Eitan Adler <lists@eitanadler.com>, questions@freebsd.org
Subject:   Re: why does ps |grep sometimes not return itself?
Message-ID:  <201006100330.14618.pieter@degoeje.nl>
In-Reply-To: <4C0F4410.40900@infracaninophile.co.uk>
References:  <AANLkTimdtot-1vlYofXo-dv3V7jyFW7VU0D6dq3vqBqV@mail.gmail.com> <4C0F4410.40900@infracaninophile.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 09 June 2010 09:34:40 Matthew Seaman wrote:
> On 09/06/2010 08:15:23, Eitan Adler wrote:
> > Why do I sometimes see the grep in ps's output and sometimes not see it?
> > [eitan@AlphaBeta ~ ]% ps aux|grep Me
> > eitan 96325  0.0  0.0  1856   724   5  RL+  10:14AM   0:00.00 grep Me
> > [eitan@AlphaBeta ~ ]% ps aux|grep Me
> > [eitan@AlphaBeta ~ !1! ]%
>
> When you run that pipeline the OS doesn't start both programs exactly
> simultaneously. It starts ps(1) first, then grep(1) together with
> creating the pipeline by connecting ps's stdout to grep's stdin.
> Depending on system load and various other factors, this may allow ps(1)
> to grab the snapshot of the process table that it works on before
> grep(1) has started.  It's a race condition.
>
> Whether you see this effect or not will depend very much on system
> conformation and load.  I can't reproduce the effect on a lightly loaded
> dual processor machine, which always shows the grep process, whereas on
> a single processor virtual machine running under VirtualBox, I never see
> grep in the ps output unless I renice the ps(1) process.
>

I would like to add that you can avoid the issue entirely by using this 
command:
% ps aux -p `pgrep sh`
USER    PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root   1326  0.0  0.1  6680  3664  ??  Is    1:09AM   0:00.00 /usr/sbin/sshd
pyotr  1460  0.0  0.1  3972  2696  v0  I     1:09AM   0:00.02 -zsh (zsh)

-- 
Pieter de Goeje



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006100330.14618.pieter>