私はcronjobを作成しましたが、それは非常に長い時間実行されますが、それを停止する方法がわかりません。
Crontabが実行を開始したプロセスを停止する必要があります。
#kill -HUP PID (PID: Process ID is the process running)
PIDと実行中のプロセス(および詳細)の関係を確認するには、top
コマンドを使用し、キー<
および>
を使用して列の順序を変更します。
また、選択した名前でフィルタリングされた実行中のプロセスを一覧表示するps -ax|grep [your_process_file]
も試してください。
-HUP =ハングアップ
シェルスクリプトラッパーが周りにある場合、それがcronjobをタイムアウトにする必要があると思います。 cronjobが呼び出された期間からタイムアウトが発生した場合、ラッパーはSIGHUPまたはSIGALARMを送信する必要があります。このようなもの:
50 * * * * /usr/bin/my_cron_wrapper_timeout -t 1 /usr/bin/my_command_cron_job_to_run
このcron_wrapper_timeoutは、基本的に-tスイッチオプションが1時間経過するとタイムアウト信号を送信し、次にkill -HUP
cronjobにシグナルを送信し、プロセスも同様に刈り取り、それ自体を終了/終了します。
あるいは、ALARM信号のタイムアウトを処理し、穏やかに停止する前にコードがクリーンアップされるように、cronjob自体でコードを記述する必要があります。
[〜#〜]編集[〜#〜]
これはまさに私が言及していたものです: http://chihungchan.blogspot.com/2011/03/no-more-hanging-jobs-in-cron.html のウォッチドッグ
これとグーグルにリストされている他のページで誰もがpstreeについて言及していないハングしたcronジョブをどのように処理するかについての結果を恥ずかしく思う。
pstree
ツリーのcron部分の下を見る
まず、このコマンドで作業プロセスを確認します。
ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"
このコマンドの出力は
599 599 cron
4288 599 \_ CRON
そして、このコマンドでプロセスを強制終了します
pkill -s 4288