cronプロセスを終了して再起動しないようにする

cronプロセスを終了して再起動しないようにする

クローンアイテムがフリーズして削除できません。 cron ジョブは、アプリケーション・システムに対して夜間ジョブを実行するスクリプトを開始します。このスクリプトは、アプリケーション・システムのジョブ・スケジューラーに非同期ジョブをサブミットします。次のタスクに進む前に完了する必要があるいくつかの手順があります。これを制御するために、アプリケーションサーバーの戻りコードをテストします。ジョブの状態が 59 より大きい場合は、まだ実行中です。したがって、次のコード(「getjobstatus」コマンドは使用しませんが、以下のjobstatusに数値を返すと仮定)は次のようになります。

jobstatus=0
while [[ $jobstatus -lt 60 ]]
do
   sleep 5
   jobstatus=`getstatus whatever`
done

「スリープ」プロセスを終了しようとしましたが、再び発生し続けます。どのように予防し、永久に削除できますか?

ベストアンサー1

コメントでDeathgripが述べたように、親プロセスを終了する必要があり、いくつかのバリエーションを見つけることsleepができますps | grep sleepps実装が多いため、提供するフラグが何であるか、出力がどのように見えるかを正確に推測することはできません。確認man ps)。

どうなりますか?これを殺すsleepと終了しますが、埋め込みスクリプトの実行には影響しません。ただ次の行に移動し、ループが繰り返されます。睡眠を終了するためにスクリプトを変更する方法はいくつかあります。最も簡単な方法の1つは、次のことですsleep 5 || exit

または、Bash(その他?)を使用している場合は、始めに次の行を追加できますset -e。これは、コマンドが失敗した場合(つまり、ゼロ以外の状態を返す場合)、Bashにスクリプトを終了するように指示します。ただし、これはスクリプトのすべてに影響を与え、他の多くのトラップがあるため、この回避策は避けるのが最善です。 (set -e寝る前に行を追加してset +eすぐに無効にすることもできますが、私が言及した最初の解決策しか使用できないため、これは少し面白いです。)

おすすめ記事