cron - 製造準備ができた代替

cron - 製造準備ができた代替

製造データを記録するために、生産システムでRaspberry Piを使用する意図でRaspberry Piをテストしています。すべてがうまくいっており、先月のテストデータを記録してきました。

冗長性とリスク管理のために予約する必要があるPythonスクリプトがたくさんあります。

私は過去にWindows Server環境で作業してきましたが、タスクスケジューラが必要なすべてのタスクを実行しました。問題のログ記録、失敗時の操作の再試行、通知など

私は過去数週間でcronで遊んで、あまりにも多くの時間を無駄にしました。ログファイルは役に立たず、MTAがインストールされていないため、実際のエラーがありません。

スケジュールをより困難にするよりも簡単にするための選択肢はありますか?

問題の詳細を追加しました。

  • 私は過去に「>>」を試しましたが、運がありませんでした。これが通常の慣行なら、もう一度試してみます。
  • Pythonスクリプトを手動で実行すると、正しく実行されます。しかし、crontabに入れるとすぐに動作が停止し、ログがないため、問題を解決できないか、少なくとも問題を理解できません。
  • ファイルの書き込みに問題があるようです。実行中のcronジョブは、Bluetoothデバイスに接続してからMySQLデータベースにデータを書き込むPythonスクリプトです。
  • cronログはジョブ出力を報告しようとしましたが、MTAが設定されていないため、MTA問題のみを報告し、実際の問題に関する追加情報は提供しません。 (/var/log/cron.logがメインログですか?)
  • MTAを調べてみると、インターネット接続が問題であり、常に利用できない可能性があります。
  • 私のデータロギングジョブは、「crontab -e」にあり、「sudo crontab -e」にあるイメージファイルを生成することです。 (私は2つの異なるcrontabファイルを使用しました)
  • 私のすべてのクローンの操作は次のとおりです。00 6 * * * python /app/test.py

答え1

実際、クローナははい生産準備完了。あまりにも多くの戦いを経験したので、誤動作を非難するのは難しいです。あなたが遭遇する可能性のある問題は、単純なエラーが原因であることです。 cronの問題が何であるかを正確に指摘してください。

gauethがすでに指摘したように、>> /tmp/somefile 2>&1crontabからコマンドを追加できます。その機能は次のとおりです。

  • >> /tmp/somefile「コマンドの標準出力ストリームを /tmp/somefile に追加する」ことを意味します。これは、単に端末に印刷されるすべての内容を指定されたファイルに書き込むことです。 (上書き)の>>代わりに(追加)を使用することに注意してください>
  • 2>&1「stderrをstdoutに送信する」を意味します。人間の観点から:標準出力を作成するのと同じ位置にエラーの出力を作成します(上記のように)。

これにより、cronがスクリプトを実行した後に発生するログ全体を取得できます。ログファイルにこのデータが含まれるように、スクリプトに現在の日付(およびその他のいくつか)を印刷することをお勧めします。

もう一つのことに留意すべき点はPATH変数です。 Cronは対話型のターミナルセッションとはわずかに異なる環境で実行されるため、スクリプトecho $PATH自体またはcrontab行に出力を含めるのが最善です*/20 * * * * export PATH=<paste output of echo $PATH here>; <command>

答え2

> /tmp/logfile 2>&1スケジュールされたコマンドの後、crontabを使用してコマンド出力をログファイルにリダイレクトできます。また確認してみてくださいGNOMEスケジュールcrontabそして操作のためのグラフィカルユーザーインターフェースat

答え3

Unixシステムの運用準備スケジュールツールはcronです。

ロギングの問題

クローンは何を記録しますか?それシステムログで実行された操作。ジョブ出力を電子メールで送信します(利用可能な場合)。

失敗時の操作の再試行

Cronはこれを実行せず、その理由があります。失敗した場合に操作を再試行するのはビジネスロジックです。システムは、どのエラーが再試行されるべきか、いつ、どのエラーが致命的なエラーであるかをどうやって知ることができますか?再試行する必要がある場合は、必要に応じてジョブを再試行するか、複数のジョブを異なる時間にスケジュールしてください。

通知する

上記のロギングをご覧ください。通常、成功したタスクには通知は表示されず、ログエントリのみが表示されます。タスクの完了時に通知を受け取るには、必要な通知メカニズムを使用してタスクスクリプトに追加します。 (準強制GUIを搭載したWindowsとは異なり、UnixはGUI環境でバッチジョブを実行しないため、組み込みのGUIベースの通知機能はありません。)

はるかに。

何?

MTA がインストールされていないため、実際のエラーは失われます。

「博士、こうすればあまりにも痛い」

MTAのインストール。電子メールを送信できるMTAは、すべてのUnixインストールで予想されるコンポーネントですが、一部のディストリビューションではデフォルトのインストールからこれを省略します。

答え4

もうから大好きジェンキンスCIさまざまな「ステロイド使用クローン」ミッションに使用されます。私は、バックアップの作成と復元、古いファイル/ディレクトリのクリーンアップ、複数の手順を含むカスタムルーチンなど、デフォルトで自動化できるすべてのタスクに使用します。ロギングは優れており、必要な機能は基本的に提供されているか、利用可能な多くのプラグインのいずれかを使用して簡単に追加されます。

一度試してみて、CI Butlerを知った後、どのように勝ったのか疑問に思います。

関連情報