home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / sh-utils-1.12-src.tgz / tar.out / fsf / sh-utils / src / nohup.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1996-09-28  |  2KB  |  73 lines

  1. #!/bin/sh
  2. # nohup -- run a command immume to hangups, with output to a non-tty
  3. # Copyright (C) 1991 Free Software Foundation, Inc.
  4.  
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2, or (at your option)
  8. # any later version.
  9.  
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14.  
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. # Written by David MacKenzie <djm@gnu.ai.mit.edu>.
  20.  
  21. # Make sure we get GNU nice, if possible; also allow
  22. # it to be somewhere else in PATH if not installed yet.
  23. PATH=@bindir@:$PATH
  24.  
  25. usage="Usage: $0 COMMAND [ARG]...
  26.   or:  $0 OPTION"
  27.  
  28. usage_try="
  29. Try \`$0 --help' for more information."
  30.  
  31. usage_help="
  32.   --help      display this help and exit
  33.   --version   output version information and exit"
  34.  
  35. if [ $# -eq 0 ]; then
  36.   echo >&2 "$usage"
  37.   echo >&2 "$usage_try"
  38.   exit 1
  39. fi
  40.  
  41. case $# in
  42.   1 )
  43.     case "z${1}" in 
  44.       z--help )
  45.      echo "$usage"; echo "$usage_help"; exit 0 ;;
  46.       z--version )
  47.      echo "nohup - @VERSION@"; exit 0 ;;
  48.       * ) ;;
  49.     esac
  50.     ;;
  51.   * ) ;;
  52. esac
  53.  
  54. trap "" 1
  55. oldmask=`umask`; umask 077
  56. # Only redirect the output if the user didn't already do it.
  57. if [ -t 1 ]; then
  58.   # If we cannot write to the current directory, use the home directory.
  59.   if cat /dev/null >> nohup.out; then
  60.     echo "nohup: appending output to \`nohup.out'" 2>&1
  61.     umask $oldmask
  62.     exec nice -5 -- "$@" >> nohup.out 2>&1
  63.   else
  64.     cat /dev/null >> $HOME/nohup.out
  65.     echo "nohup: appending output to \`$HOME/nohup.out'" 2>&1
  66.     umask $oldmask
  67.     exec nice -5 -- "$@" >> $HOME/nohup.out 2>&1
  68.   fi
  69. else
  70.   umask $oldmask
  71.   exec nice -5 -- "$@"
  72. fi
  73.