誰かがこれを手伝ってくれることを望んでいました.15秒間ループ内にあるものを実行するシェルスクリプトのループが必要です. たとえば
if (true)
run command for 15 seconds
fi
kill PID
私はシェルスクリプトを初めて使用するので、これで迷っています。また、違いがある場合は、debian instll を使用しています
どんな助けでも大歓迎です
timeout
コマンドをお探しですか?
次の bash スクリプトが役立つ場合があります。スクリプトは、ループを開始する前に初期エポック時間を変数として設定します。ループが実行されている間、追加の変数が現在のエポック時間で設定されます。両方のエポック時間が比較され、差が 15 以下である限り、コマンドは実行され続けます。以下のスクリプトでは、現在実行中のコマンドが「echo "counting ${COUNTER}"」であることに注意してください。目的に合わせてスクリプトのこの部分を変更する必要があります。2 つのエポック時間の差が 15 を超えると、スクリプトは終了します。この時点で kill コマンドを開始する必要があります。エラーが発生した場合は、"YourLogFile" に "ERROR... YourScript.sh failed" が表示されます (ログ ファイルを希望するものに設定してください)。
注: このループ内で実行しようとしているものは、15 秒間に何度も実行される可能性があります。以下のスクリプトをテストとして使用すると、echo コマンドが毎秒 50 回以上実行されることがわかります。
#!/bin/bash
LOOP="true"
INITIAL_TIME=$(date "+%s")
while [[ ${LOOP} == true ]]; do
CURRENT_TIME=$(date "+%s")
COUNTER=$(expr ${CURRENT_TIME} - ${INITIAL_TIME})
if [[ ${COUNTER} -le "15" ]]; then
echo "counting ${COUNTER}"
# RUN YOUR COMMAND IN PLACE OF THE ABOVE echo COMMAND
elif [[ ${COUNTER} -gt "15" ]]; then
exit 0
#INITIATE YOUR KILL COMMAND IN PLACE OF OR BEFORE THE exit
else
echo "ERROR... YourScript.sh failed" >> /YourLogFile
fi
done