、あなたは単にプロセスの前にtimeout
を使用することができます。それは1.5秒後に行われなかった場合プロセスが終了したかどうかを確認するには?あなたは、プロセスのために時間制限を設定したい場合は
timeout 1.5s COMMAND
これはCOMMAND
を殺すでしょう。
私はいくつかのbashスクリプトでこのコマンドを使用しました。どのプロセスが期限前に完全に完了したのか、(期限を超過したために)殺されたのか、どうすれば分かりますか?
、あなたは単にプロセスの前にtimeout
を使用することができます。それは1.5秒後に行われなかった場合プロセスが終了したかどうかを確認するには?あなたは、プロセスのために時間制限を設定したい場合は
timeout 1.5s COMMAND
これはCOMMAND
を殺すでしょう。
私はいくつかのbashスクリプトでこのコマンドを使用しました。どのプロセスが期限前に完全に完了したのか、(期限を超過したために)殺されたのか、どうすれば分かりますか?
ヌーtimeout
コマンドは、通常、124のステータスコードを返します。それ以外の場合は、コマンド自体から返されたステータスコードを返します。だから、すぐにtimeout
を実行した後$?
の値をつかんでステータスコードをテストすることができます。
timeout 1.5s COMMAND
status=$?
if ((status==124)); then
# command timed out
elif (status!=0)); then
# command terminated in time, but it returned an error status
else
# command terminated in time and reported success
fi
ステータスコード124を返すことがありますあなたのコマンドでは、あなたは--preserve-status
オプションを使用してかどうかを確認しなければならない場合コマンドは、timeout
に送信するように指示した信号で終了しました。詳細については、man timeout
を参照してください。
がCOMMAND
後&& echo >> time_limit.txt
を追加:COMMAND
が殺されたかどうかを確認したいのであれば
timeout 1.5s COMMAND && echo >> time_limit.txt
を、ファイルtime_limit.txt
の存在を確認してください。そのファイルが存在する場合、コマンドが強制終了されなかったことを意味します。それ以外の場合は、コマンドが強制終了されました。 bashスクリプトで
、あなたは次のようにそのファイルの存在を確認することができます。タイムアウト時間を超過した場合
if [[ -r time_limit.txt ]]then;
{
echo "The command was NOT killed"
}
else
{
echo "The command was killed"
}