How do I limit the running time of a BASH script

前端 未结 5 1632
慢半拍i
慢半拍i 2020-12-01 14:39

I have a long running BASH script that I am running under CYGWIN on Windows.

I would like to limit the script to run for 30 seconds, and automatically terminate if i

5条回答
  •  Happy的楠姐
    2020-12-01 15:11

    timeout 30s YOUR_COMMAND COMMAND_ARGUMENTS
    

    Below are all the options for "timeout" under coreutils:

    $ timeout --help
    Usage: timeout [OPTION] DURATION COMMAND [ARG]...
      or:  timeout [OPTION]
    Start COMMAND, and kill it if still running after DURATION.
    
    Mandatory arguments to long options are mandatory for short options too.
          --preserve-status
                     exit with the same status as COMMAND, even when the
                       command times out
          --foreground
                     when not running timeout directly from a shell prompt,
                       allow COMMAND to read from the TTY and get TTY signals;
                       in this mode, children of COMMAND will not be timed out
      -k, --kill-after=DURATION
                     also send a KILL signal if COMMAND is still running
                       this long after the initial signal was sent
      -s, --signal=SIGNAL
                     specify the signal to be sent on timeout;
                       SIGNAL may be a name like 'HUP' or a number;
                       see 'kill -l' for a list of signals
          --help     display this help and exit
          --version  output version information and exit
    
    DURATION is a floating point number with an optional suffix:
    's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
    
    If the command times out, and --preserve-status is not set, then exit with
    status 124.  Otherwise, exit with the status of COMMAND.  If no signal
    is specified, send the TERM signal upon timeout.  The TERM signal kills
    any process that does not block or catch that signal.  It may be necessary
    to use the KILL (9) signal, since this signal cannot be caught, in which
    case the exit status is 128+9 rather than 124.
    
    GNU coreutils online help: 
    Full documentation at: 
    or available locally via: info '(coreutils) timeout invocation'
    

提交回复
热议问题