Can a Bourn Shell Script put itself in the background?

Karl Vogel vogelke+unix at pobox.com
Fri Jun 5 22:49:10 UTC 2009


>> On Fri, 5 Jun 2009 13:02:00 -0600, 
>> Chad Perrin <perrin at apotheon.com> said:

C> I got the impression this question was about a script backgrounding itself,
C> though -- possibly creating a daemon using bash.

   Same here.  This seems a bit slimy, but it works (assuming you don't
   already have an environment variable called DAEMON):

     me% cat doit
     #!/bin/ksh
     # script to daemonize itself.

     PATH=/usr/local/bin:/bin:/usr/bin:/usr/sbin; export PATH
     umask 022
     env | grep 'DAEMON=yes' > /dev/null

     case $? in
         0) logger -t test "$$ is a daemon, args $@"
            ;;
         1) echo "$$ not a daemon, args $@"
            DAEMON=yes daemon $0 ${1+"$@"}
            ;;
     esac
     exit 0

     me% ./doit a b c
     18131 not a daemon, args a b c

     me% tail -1 /var/log/syslog
     Jun  5 18:41:54 host test: 18135 is a daemon, args a b c

-- 
Karl Vogel                      I don't speak for the USAF or my company
Gingko Viagra: to help you remember what the f*** you're doing.


More information about the freebsd-questions mailing list