残念なことに、Google の結果にリストされているこのページや他のページでは、誰も pstree について言及していないハングした cron ジョブをどのように処理するかについて説明しています。
pstree
ツリーの cron 部分の下を見てください
シェル スクリプト ラッパーが存在する場合、それが 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 switch オプションが 1 時間経過するとタイムアウト信号を送信し、その後 kill -HUP
を送信する必要があります。 cronjob に信号を送ってから、プロセスも確実に取得してから、それ自体を終了/強制終了してください。
または、コードを cronjob 自体に記述して、ALARM シグナルのタイムアウトを処理し、穏やかに停止する前に確実にクリーンアップする必要があります。
編集
これはまさに私が言及していたものです:http://chihungchan.blogspot.com/2011/03/no-more-hanging-jobs-in-cron.html のウォッチドッグ
crontab が実行を開始したプロセスを停止する必要があります。
#kill -HUP PID (PID: Process ID is the process running)
PID と実行中のプロセス (および詳細情報) の関係を確認するには、top
を使用します。 コマンド、キー <
で列の順序を変更します と >
ps -ax|grep [your_process_file]
も試してみてください 選択した名前でフィルタリングされた実行中のプロセスを一覧表示します
-HUP =電話を切る