web-dev-qa-db-ja.com

1k行以上のスケジュールを含むcrontabファイルは可能ですか?

私はスケジュールされたタスクを作成することを計画しています、そして、Linuxがcrontabを使用してそれらのタスクを処理することを望みます。

注:一部のタスクはスケジュールが異なり、一部は同じです

[crontabファイル(schedule.cron)]

* * * * * /application/monitor -source1
* * * * * /application/monitor -source2
* * * * * /application/monitor -source3
...
* * * * * /application/monitor -source500
* * * * * /application/monitor -source501
* * * * * /application/monitor -source502
...
* * * * * /application/monitor -source1000
* * * * * /application/monitor -source1001
* * * * * /application/monitor -source1002
5
prix

Cronファイルの長さに制限はないと確信しています(32ビットの制限が原因で65536文字/行になる可能性があります)。

スタックオーバーフローと Server Fault の一部の人々は、制限があると考えました:

(2011)Ubuntu Debianは256に制限されています(そして、私はちょうどそれに遭遇しました)。 FreeBSDは喜んで600エントリを受け入れます。それ以上はチェックしていませんが、600のcrontabエントリは誰にとっても十分なはずです:)

しかし、それは受け入れられた答えではありませんでした、そして、それはそうではなかったと言います。

許可されているcrontabエントリの数に文書化された制限はないようです。そのため、使用している特定のバージョンのソースコードをチェックする以外に、おそらくcrontabマンページのBUGエントリが役立つ場合があります。

Although cron requires that each entry in a crontab end in a newline character, neither the crontab command nor the cron daemon will detect this error. Instead, the crontab will appear to load normally. However, the command will never run. The best choice is to ensure that your crontab has a blank line at the end.

nixおよびLinux では、これが答えでした:

cronデーモンはリンクリストにユーザーごとにcrontabエントリを保存するため、croniesの制限はファイルシステム(最大ファイルサイズ)に依存するようです。詳細については、cronieのuser.cを参照してください。つまり、crontabのジョブエントリの最大数は基本的に無制限です。

だから私はそれが無制限であることをかなり確信していますが、最後にその空白行が必要です。 :)

2
Tim

これは、crontabの制限を検索している人(自分自身を含む)にとってはまだ上にあります。だから私は興味がある他の人のために更新を投稿します:

2019年の時点で、DebianのCronは、最大のcrontab行数を強制して、悪意のあるユーザーが過度に大きなcrontabを作成するのを防ぎます。 Debian変更ログ によると。

  • バージョン3.0pl1-133では、3月10日に1000行の制限が導入されました
  • バージョン3.0pl1-134は、6月23日にこの制限を10000行に緩和しました

UbuntuやMintなどのDebianベースのディストリビューションは、これらの変更をすぐに採用するでしょう。

1
Peter