check_exec.sh
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:2k
源码类别:

生物技术

开发平台:

C/C++

  1. #! /bin/sh
  2. # $Id: check_exec.sh,v 1000.3 2004/02/12 21:52:26 gouriano Exp $
  3. # Author:  Vladimir Ivanov, NCBI 
  4. #
  5. ###########################################################################
  6. #
  7. # Execute check command
  8. #
  9. # Usage:
  10. #    check_exec.sh <cmd-line>
  11. #
  12. # Note:
  13. #    The <cmd-line> can contains any program or scripts.
  14. #
  15. #    The CHECK_TIMEOUT environment variable defines a "timeout" seconds
  16. #    to execute specified command line. By default timeout is 200 sec.
  17. #
  18. #    For protect infinity execution <cmd-line>, this script terminate 
  19. #    check process if it still executing after "timeout" seconds.
  20. #    Script return <cmd-line> exit code or value above 0 in case error
  21. #    to parent shell.
  22. #
  23. ###########################################################################
  24. # Get parameters
  25. timeout="${CHECK_TIMEOUT:-200}"
  26. script_dir=`dirname $0`
  27. script_dir=`(cd "$script_dir"; pwd)`
  28. # Make timestamp
  29. timestamp_file="/tmp/check_exec_timestamp.$$"
  30. touch timestamp_file
  31. # Reinforce timeout
  32. ulimit -t `expr $timeout + 5` > /dev/null 2>&1
  33. # Run command
  34. "$@" &
  35. pid=$!
  36. trap 'kill $pid' 1 2 15
  37. # Execute time-guard
  38. $script_dir/check_exec_guard.sh $timeout $pid &
  39. # Wait ending of execution
  40. wait $pid > /dev/null 2>&1
  41. status=$?
  42. # Special check for core file on Darwin
  43. if [ $status != 0  -a  `uname -s` = "Darwin" -a -d "/cores" ]; then
  44.    core_files=`find /cores/core.* -newer timestamp_file 2>/dev/null`
  45.    for core in $core_files ; do
  46.       if [ -O "$core" ]; then
  47.          # Move the core file to current directory with name "core"
  48.          mv $core ./core > /dev/null 2>&1
  49.          # Save only last core file
  50.          # break
  51.       fi
  52.    done
  53. fi
  54. rm timestamp_file > /dev/null 2>&1
  55. # Return test exit code
  56. exit $status
  57. #  ===========================================================================
  58. #  PRODUCTION $Log: check_exec.sh,v $
  59. #  PRODUCTION Revision 1000.3  2004/02/12 21:52:26  gouriano
  60. #  PRODUCTION PRODUCTION: UPGRADED [CORE_001] Dev-tree R1.21
  61. #  PRODUCTION
  62. #  ===========================================================================