3

たぶん、これに対する別の解決策があります。維持するために 5 ~ 10 の cron とさまざまな間隔を必要とする Web アプリを構築しました。crontab をバージョン管理にチェックインして、他のサーバーに簡単にデプロイできるようにしたいと考えています。

/etc/crontab ファイルに、/myapp/app.crontab ファイルを調べて、そのファイル内のすべての行を crontab エントリとして扱うように指示する行を配置できるようにしたいと考えています...つまり:

0 1 * * *    root   /bin/sh /do/something.sh

/etc/crontab をチェックインしないのはなぜですか? サーバーからサーバーにデプロイする場合、一部のサーバーの crontab には干渉したくない別のエントリが含まれている可能性があるためです。

何か案は?rev ctrl に多数の crontab エントリを保存するために、他の人は何をしていますか?
ありがとう。

4

4 に答える 4

4

チェックアウトしたファイルまたはチェックアウトしたファイルへのシンボリックリンクとして、crontab ファイルを /etc/cron.d/ に配置します。

于 2009-02-05T10:37:25.797 に答える
1

私が取り組んでいるプロジェクトでは、この問題に対して非常に異なるアプローチをとっています。

crontab.plすべてのサーバーが crontab で呼び出すPerl スクリプトがあります。このようにすることで、連続するアプリケーションの展開で crontab を変更する必要がなくなり、crontab.plスクリプトは残りのアプリケーション ソース ファイルと一緒にソース管理下に置くことができます。

コマンド ライン パラメーターを使用して、このスクリプトにさまざまな時間間隔を指定できます。crontab は次のようになります。

*/5 * * * * /usr/local/apache/crontab.pl 5    > /var/log/crontab.log 2>&1 # 5 minute interval
1   * * * * /usr/local/apache/crontab.pl 60   > /var/log/crontab.log 2>&1 # 1 hour interval
1   1 * * * /usr/local/apache/crontab.pl 3600 > /var/log/crontab.log 2>&1 # 1 day interval

次に、そのコマンド ラインの時間間隔を読み取り、指定された間隔に必要なタスクを実行するだけです。

于 2009-02-26T03:49:33.230 に答える
0

これを行う方法は、crontabファイルをソース管理に配置してから、デプロイスクリプトで、crontabファイルをデプロイされているものに置き換えます。

あなたはこのようにそれを行うことができます:

crontab filename

または特定のユーザーの場合(これにはスーパーユーザーアクセス権が必要です):

crontab -u my_web_user filename

これに関する大きな注意点の1つは、ユーザーごとにcrontabエントリが1つだけであり、SCMに保存されていることを前提としていることです。他の誰かがサーバー上のcrontabを編集した場合、それらの編集は次の展開で失われます。ですから、それに注意してください。

于 2009-02-26T02:42:38.667 に答える