current pids per tty

Ian Smith smithi at nimnet.asn.au
Wed Apr 4 13:18:59 UTC 2012


In freebsd-questions Digest, Vol 409, Issue 5, Message: 3
On Wed, 04 Apr 2012 08:03:11 -0700, perryh at pluto.rain.com wrote:
 > "illoai at gmail.com" <illoai at gmail.com> wrote:
 > 
 > > (there is an executable named /usr/bin/jobs, but . . .
 > > well run "cat /usr/bin/jobs" & see for yourself).
 > 
 > Whoa!  Does /usr/bin/jobs even work?
 > 
 >   $ cat /usr/bin/jobs
 >   #!/bin/sh
 >   # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2.10.1.4.1 2010/06/14 02:09:06 kensmith Exp $
 >   # This file is in the public domain.
 >   builtin ${0##*/} ${1+"$@"}
 > 
 > It looks as if generic.sh intends to have the same effect as the
 > builtin matching the name under which the script is run, but at
 > least for "jobs" I don't think it will DTRT because it will run
 > in the wrong context:
 > 
 > * The builtin "jobs" command will report all background jobs known
 >   to the shell in which it is issued.
 > 
 > * Because it is a shebang script, running /usr/bin/jobs will cause
 >   the shell in which it is run to fork/exec an instance of /bin/sh,
 >   and that instance will execute the /usr/bin/jobs script, thus it
 >   will will be the new /bin/sh instance that executes _its_ builtin
 >   "jobs" command -- reporting nothing, since _that_ instance has not
 >   put anything into the background (and has no knowledge of what-all
 >   its parent shell may have put in the background).

Quite so:

t23# jobs -l
t23# sleep 60 &
[1] 86793
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# /usr/bin/jobs -l
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# sh
# jobs -l
# sleep 60 &
# jobs -l
[1] + 86819 Running           sleep 60
# /usr/bin/jobs -l
# jobs -l
[1] + 86819 Running           sleep 60
# exit
t23# jobs -l
[1]  + 86793 Running                       sleep 60
t23# jobs -l
[1]    86793 Done                          sleep 60
t23# jobs -l
t23#

cheers, Ian


More information about the freebsd-questions mailing list