web-dev-qa-db-ja.com

現在実行中のcronタブを一覧表示して停止します

私はcronjobを作成しましたが、それは非常に長い時間実行されますが、それを停止する方法がわかりません。

7
emeraldhieu

Crontabが実行を開始したプロセスを停止する必要があります。

#kill -HUP PID (PID: Process ID is the process running)

PIDと実行中のプロセス(および詳細)の関係を確認するには、topコマンドを使用し、キー<および>を使用して列の順序を変更します。

また、選択した名前でフィルタリングされた実行中のプロセスを一覧表示するps -ax|grep [your_process_file]も試してください。

-HUP =ハングアップ

1
I.G. Pascual

シェルスクリプトラッパーが周りにある場合、それが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 のウォッチドッグ

3
user14449

これとグーグルにリストされている他のページで誰もがpstreeについて言及していないハングしたcronジョブをどのように処理するかについての結果を恥ずかしく思う。

pstree

ツリーのcron部分の下を見る

3
Joe

まず、このコマンドで作業プロセスを確認します。

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

このコマンドの出力は

599  599 cron
4288  599 \_ CRON

そして、このコマンドでプロセスを強制終了します

pkill -s 4288
0
aemre