How can I make a program keep running even after I logout?

Nikolas Britton freebsd at nbritton.org
Wed Dec 15 11:42:55 PST 2004


Rae Kim wrote:

>I connect to my computer from school computer.
>
>I want to cvsup or/and portupgrade and logout but the program keep running?
>_______________________________________________
>freebsd-questions at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-questions
>To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
>
>  
>
Hi Rae, I asked this very same question back in ("Job Control") back in 
November, first thing to know is that the default for the csh shell is 
not to hangup background jobs when you exit the shell. here is all the 
meat from that tread:

###This is the way I thought up on my own Rae###
$ ssh localhost
Password: ****
Last login: Mon Nov 22 06:13:59 2004 from localhost
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
       The Regents of the University of California.  All rights reserved.

FreeBSD 5.3-RELEASE-p1 (SPECTRA) #0: Sat Nov 20 23:30:17 CST 2004

Welcome to FreeBSD!

$ su
Password: ****
spectra# cvsup -g -L 2 /root/ports-supfile > /root/ports-supfile.log&
[1] 71669
spectra# exit
exit
$ exit
Connection to localhost closed.
$ tail /root/ports-supfile.log
 Add delta 1.25 2004.11.21.22.03.48 marcus
Edit ports/x11-toolkits/py-gnome2/Makefile
 Add delta 1.78 2004.11.20.17.18.17 kwm
Edit ports/x11-toolkits/py-gnome2/distinfo
 Add delta 1.28 2004.11.20.17.18.17 kwm
Edit ports/x11-toolkits/py-gnome2/pkg-plist
 Add delta 1.31 2004.11.20.17.18.17 kwm
Updating collection ports-x11-wm/cvs
Shutting down connection to server
Finished successfully
$ exit
----------------------
Presumably you've also nohup -ed the background job too....:-)

anyway have a look at 'screen' to give you virtual terminals that you 
drop out of and back into when you want to.
-----------------------
yes screen will do that, detach first before logout, then re-attach when 
you want o get back to that session. Also no need to background the job, 
as screen will just keep the job running after detach anyway..

----------------------
###This was the one I liked the most Rae###
 >From work:
# nohup foobar >& foobar.log &

Back home:
# tail -f foobar.log

Ruben
--------------------
If all you want to do is inspect the output from your command, then
simply use script(1) to save a transcript of the output.  script(1)
comes with the system.  Use it like this:

    % cd /usr/ports/x11/xorg
    % script /tmp/make.out  sudo make install

And /tmp/make.out will contain a transcript of everything that appears
on your screen during the course of doing that job.

    Cheers,

    Matthew
-------------------
Thanks....

# nohup foobar >& foobar.log &
              ^^^^           ^^^

Why'd you do it like that, how is it diffrent from this way?:
# nohup foobar > foobar.log &
---------------
His example redirects both stdout and stderr to foobar.log, while yours
only redirect stdout. (Note that ">&" is a csh-specific operator. The
equivalent for a Bourne-shell derivative would be:
 nohup foobar > foobar.log 2>&1 &
I.e. redirecting stdout to foobar.log and then redirecting file
descriptor 2 (stderr) to wherever file descriptor 1 (stdout) goes to
(foobar.log in this case.)

When used with the nohup command I believe the redirection of stderr
is unnecessary since the manpage for nohup(1) says "If standard error is a
terminal, it is directed to the same place as the standard output."


More information about the freebsd-questions mailing list