home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / bin / nohup < prev    next >
Text File  |  1998-11-19  |  2KB  |  76 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 Foundation,
  17. # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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=/usr/bin:$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="Run COMMAND, ignoring hangup signals.
  32.  
  33.   --help      display this help and exit
  34.   --version   output version information and exit
  35.  
  36. Report bugs to sh-utils-bugs@gnu.ai.mit.edu"
  37.  
  38. if [ $# -eq 0 ]; then
  39.   echo >&2 "$usage"
  40.   echo >&2 "$usage_try"
  41.   exit 1
  42. fi
  43.  
  44. case $# in
  45.   1 )
  46.     case "z${1}" in
  47.       z--help )
  48.      echo "$usage"; echo "$usage_help"; exit 0 ;;
  49.       z--version )
  50.      echo "nohup (GNU sh-utils) 1.16"; exit 0 ;;
  51.       * ) ;;
  52.     esac
  53.     ;;
  54.   * ) ;;
  55. esac
  56.  
  57. trap "" 1
  58. oldmask=`umask`; umask 077
  59. # Only redirect the output if the user didn't already do it.
  60. if [ -t 1 ]; then
  61.   # If we cannot write to the current directory, use the home directory.
  62.   if cat /dev/null >> nohup.out; then
  63.     echo "nohup: appending output to \`nohup.out'" 2>&1
  64.     umask $oldmask
  65.     exec nice -5 -- "$@" >> nohup.out 2>&1
  66.   else
  67.     cat /dev/null >> $HOME/nohup.out
  68.     echo "nohup: appending output to \`$HOME/nohup.out'" 2>&1
  69.     umask $oldmask
  70.     exec nice -5 -- "$@" >> $HOME/nohup.out 2>&1
  71.   fi
  72. else
  73.   umask $oldmask
  74.   exec nice -5 -- "$@"
  75. fi
  76.