⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeout3

📁 android-w.song.android.widget
💻
字号:
#!/bin/bash## The Bash script executes a command with a time-out.# Based on the Bash documentation example.## Upon time-out expiration SIGTERM (15) is sent to the process.  If the signal# is blocked, then the subsequent SIGKILL (9) terminates it.# Dmitry V Golovashkin (E-mail: dvg@ieee.org)#script_name="${0##*/}"# Default values.readonly param_timeout=5readonly param_interval=1readonly param_delay=1declare -i timeout=param_timeoutdeclare -i interval=param_intervaldeclare -i delay=param_delayblue="$(tput setaf 4)"bold_red="$(tput bold; tput setaf 1)"off="$(tput sgr0)"function print_usage() {cat <<EOFSynopsis:  $script_name [-t timeout] [-i interval] [-d delay] commandExecutes the command with a time-out.  Upon time-out expiration SIGTERM (15) issent to the process.  If SIGTERM signal is blocked, then the subsequent SIGKILL(9) terminates it.$blue-t timeout$off    Number of seconds to wait for command completion.    Default value: $param_timeout seconds.  In some practical situations    this value ${bold_red}must$off be increased (for instance -t 180) to allow    the command to complete.$blue-i interval$off    Interval between checks if the process is still alive.    Positive integer, default value: $param_interval seconds.    Default value is OK for most situations.$blue-d delay$off    Delay between posting the SIGTERM signal and destroying the process by    SIGKILL.  Default value: $param_delay seconds.    Default value is OK for most situations.As of today, Bash does not support floating point arithmetic (sleep does),therefore all time values must be integers.Dmitry Golovashkin (E-mail: dvg@ieee.org)EOFexit 1 # No useful work was done.}# Options.while getopts ":t:i:d:" option; do    case "$option" in        t) timeout=$OPTARG ;;        i) interval=$OPTARG ;;        d) delay=$OPTARG ;;        *) print_usage ;;    esacdoneshift $((OPTIND - 1))# $# should be at least 1 (the command to execute), however it may be strictly# greater than 1 if the command itself has options.if (($# == 0 || interval <= 0)); then    print_usagefi# kill -0 pid   Exit code indicates if a signal may be sent to "pid" process.(    ((t = timeout))    while ((t > 0)); do        sleep $interval        kill -0 $$ || exit 0        ((t -= interval))    done    # Be nice, post SIGTERM first.    # The 'exit 0' below will be executed if any preceeding command fails.    kill -s SIGTERM $$ && kill -0 $$ || exit 0    sleep $delay    kill -s SIGKILL $$) 2> /dev/null &exec "$@"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -