cronはどのように機能しますか?


2

を多用するアプリを作成したいと思いますcron。毎分1秒未満で実行されるpythonプログラムを実行します。

この行のたてがみ:

*/1 * * * * python crtip.py parameters

私はcrontab -l持つことができますか?どのように機能しますか?スケジュールされたジョブごとに分岐しますか?

おかげで、


2
わからない。cronの内部コードと、コーディング中の使用方法についてです。
フアンジョコンティ

* / 1は*と同じです。制限に関しては、間違って使用しているOSレベルの制限にぶつかっていると思います。これらのタスクを実行するデーモンを作成することを検討しましたか?
ceejayoz

2
何のcronデーモンについて話しているのですか?私は現在Dillonのcronの開発者です。そのための答えを提供できます。しかし、Vixie cron、fcron、bcronなどもあります。Vixiecronは、* nixで最も広く展開されているcronデーモンです。
-dubiousjim

回答:


9

質問に対処するには:

  • crontabには何行ありますか?

crontabの最大行数を知りません。ただし、おそらく数百行以上はかなり一般的ではないため(十分にテストされていないため)、保守も困難です。だから、おそらくそれを超えることは避けたい。

  • スケジュールされたジョブごとに分岐しますか?

はい。

そうは言っても、cronあなたが説明するようなものにはあまり一般的に使用されません。頻繁に、非常に多くの異なるパラメーターを使用してプログラムを呼び出す必要がある場合、何らかのデーモン/サーバープロセスを記述する方がおそらく適切です。利点は次のとおりです。

  • 素敵な統合ログ(cronのログにメッセージをダンプしたり、メールで送信したりする代わりに)
  • プログラムをいつ実行するかについてのより詳細な制御(および1分以上の精度)
  • 常に内部的に分岐する必要がないため、パフォーマンスが向上します。
  • 巨大なcrontabよりも保守/インストールが簡単

たぶん、必要な呼び出しの数、パラメーター、目的を詳細に説明できます。それから私達はよりよく助けることができます。


3

以下は、私が現在開発している1つのcronデーモン、dillonのcron(dcron)に対する回答です。ディストリビューションにはさまざまなcronデーモンがありますが、答えはそれぞれ異なります。Vixie cronはおそらく最も普及しています。その答えはわかりません。

とにかく、dillonのcronの場合、ユーザーはcrontabに256個の重要な行を含めることができます(これはコンパイル時に構成可能です)。ルートにはそれ以上のものがあります(65535と思います)。さらに、rootは複数のcrontab(/ var / spool / cron / crontabs / rootにあるもの、および/etc/cron.d/に必要な数の追加のcrontab)を持つことができます。

Cronコマンドは、1分間に1回のみ実行されます。毎分60種類のコマンドを実行しsleep 1、それらに接頭辞、などを付けるだけsleep 2です。しかし、私はこれがあなたが考えていることに対する最善の解決策だとは思いません。

はい、実装では、各cronjobは個別のプロセスに分岐します。stdoutまたはstderrへの出力がある場合、さらに別のプロセスがフォークしてメールを送信します。


2

はい、すべてのcronjobを分岐します。しかし、サーバーが適度に強力な場合でも、すぐに問題が発生することはないと思います。私の個人ホームページは非常に古いPentium III 1.1 GHz / 512 MB RAM /低速IDE HDで実行されており、1時間ごとに15個の異なるcronjobを実行しても問題ありません。

cronジョブが非常にCPUまたはI / Oに飢えている場合、走行距離は変わる可能性がありますが、「1秒未満で実行される」部分は、まったく問題はないと思います。時間が経てばそうするように言われたら、もっと複雑なことを考えてください。


1

crontabで多くのプロセスを管理しなければならないという、同様の問題がありました。私がしたことは、特定のフォルダー(コマンドラインで提供)内のすべての実行可能ファイルとリンクをリストし、それらを連続して実行する1つのメインスクリプトを書くことでした。このスクリプトは、たとえば「monitor」パラメーターとともにcrontabに入れます。このパラメーターは、毎分実行され、「$ BASEFOLDER / monitor」内のすべてのスクリプトを実行します。この方法では、1時間ごと、特定の日に、朝に1回、夜に1回、起動するエントリを持つこともできます。

私のメインスクリプトは、環境変数の特定の保証されたセット、統合されたロギング、およびアプリケーション固有のものを提供するなど、それ以上のことを行いますが、アイデアが得られることを願っています。これは、一部のディストリビューションが使用するcron.daily / cron.hourlyシステムに多少似ています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.