このようなコマンドが必要な場合は、継続的な統合ビルドスクリプトを開発しています。デフォルトでは、コマンドが終了する前に実行されるように設定されたタイムアウトでコマンドを開始する必要があり、コマンドがバックグラウンドでタイムアウトプロセスを開始した場合は、進行中のすべてのコマンドが待機せずにすぐに実行する必要があります。一種の非同期並行性です。
これが私が想像するものです:
timelimited --limit=10 'somecommand --someoptions'
someothercommand //This gets launched immediately once 'timelimited' is done creating the background process
ベストアンサー1
timeout
と使用できない場合doalarm
(OS Xなど)、次のものを使用できますexpect
。
timeout() {
time=$1
# start the command in a subshell to avoid problem with pipes
# (spawn accepts one command)
command="/bin/sh -c \"$2\""
expect -c "set echo \"-noecho\"; set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { exit 0 }"
if [ $? = 1 ] ; then
echo "Timeout after ${time} seconds"
fi
}