1秒間アプリケーションを実行するスクリプトを作成するには?

1秒間アプリケーションを実行するスクリプトを作成するには?

テストのために、それぞれ1秒間フォルダ内のいくつかのアプリケーションを実行する次のbashスクリプトがあります。

#!/bin/bash
for app in ./*.app
do
    myrunner $app &
    sleep 1
    killall -9 myrunner
done

しかし、「killall -9」を使用することは実際には最善の方法ではないようです。より良い方法がありますか?

答え1

timeoutたとえば、を使用したいと思います。

timeout 1s myrunner $app

答え2

$!最後のバックグラウンドプロセスのpidなので、次のようになります。

do
    myrunner $app &
    pid=$!
    sleep 1
    kill -9 $pid
done

sleepバックエンドがないため、中間変数に割り当てる必要はありません。つまり、kill -9 $!

有用な関連変数は、$?最後のコマンドの終了状態であり、WRTバックグラウンドプロセスから次のように取得できます。

somecommand & wait $!
status=$?

答え3

テスト対象に1を提供します。壁時計時間、いいえ営業時間。これは大きな変化をもたらします。

完了基準を設定せずに一定時間だけ実行するのはなぜですか?これにより、テストしたいものが実際に完了したという保証はありません(特に後で実行するテストが長い場合)。

関連情報