GNU/Linux >> Linux の 問題 >  >> Linux

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

残念なことに、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 =電話を切る


Linux
  1. 「でスクリプトを実行します。 」と「ソース」で?

  2. 実行中の画面セッションを一覧表示するには?

  3. 実行中の場合はアップスタート停止

  1. CronJob が実行されていません

  2. ユーザーのログイン後に systemd サービスを開始し、ユーザーのログアウト前に停止する方法

  3. phpmyadmin と suphp の実行

  1. 自分のマシンでスケジュールされているすべての cron ジョブのリストを取得するにはどうすればよいですか?

  2. Cron を 2 時間ごとに実行する

  3. NGinx と PHP はどのユーザーとして実行する必要がありますか?