編集のcrontabをプログラムおよび更新するためにデーモンを強制
質問
私は、優れたCronEditの宝石を使用してRubyでのcrontabのためのWebフロントエンドを書くことをしようとしています。私はディロンのcronのcrontabのソースコードを経て、デーモンは次の掃引時にcronのリストを更新するように、それは、特定のファイルを更新していることが分かりました。
VixieCronのman crontabのでは、それは言う:
また、cronがそのスプールディレクトリのMODTIMEかどうかを確認するために毎分をチェック (または/ etc / crontabの上MODTIME)が変更されている、それが有する場合、クーロンは、次に意志 すべてのcrontabファイルにMODTIMEを調べ、変更のあったものを再ロードします。 crontabファイルを変更したときにcronを再起動する必要はありません。ご了承ください crontabのは、(1)コマンドは、スプールディレクトリのMODTIMEを更新するたびに、それを crontabファイルを変更します。
手動でのcronファイルを編集した後、デーモンは必ずそれをリフレッシュすることを保証するために、任意のプラットフォーム(Ubuntuの、レッドハット、ArchLinux、マックOS X)に依存しない方法はありますか?
解決 3
あなたは非常に多くのgnibblerとアーロンをありがとうございます。私は、Ruby用の両方と「いつでも」「cronedit」宝石のためのソースコードを行ってきました。更新のcronエントリを持つ既存のcronファイルを置き換える - どちらも「のcrontab」を行います。つまり、これらのライブラリが順番にデーモンをリフレッシュするために必要なものは何でも細目を行うだろう標準のcrontabツールを利用して、私の元の質問に反し意味ます。
私は最高のプラットフォームに依存しないと思うし、デーモンをリフレッシュするにcron(ディロン、いるVixie、mcronなど)に依存しない方法は、常に関連するcrontabのユーティリティを使用することです。プログラムで編集する場合でも、ユーザープログラムは、特定のプラットフォーム/のcronによって必要とされるものは何でもするだろうcrontabのユーティリティに新規のcronファイルを渡す必要があります。
@マークは、コメントをありがとうございました。しかし、私は、ユーザーがちょうど直接crontabファイルを編集するようにWWWを通じてカスタマイズできるシンプルなWebフロントエンドを提供しようとしています。
ご回答のためにどうもありがとうございます!
他のヒント
いいえ、ありません。あなたはそれがVixieCron知っている場合、ディレクトリのタイムスタンプを更新します。そうでなければ、あなたはそれが偽物にできることがあります:あなたが(crontabのためのエディタを起動しなければならない)EDITOR
を起動する前に、ENV変数crontab -e
を設定します。
アイデアが変更になり、いくつかのプログラムにエディタを設定することです。 crontab -e
が終了し、ファイルを再読み込みし、何かが変更されたことにcronを伝えるために、エディタを待ちます。
は、しかし、あなたはまだそれを再起動する必要があります。しかし、私は、LinuxやMac OS Xを実行しているもので、このような古代のバージョンを見つけることができることを疑うます。
まともな近代的なLinuxディストリビューションを使用すると、別のファイルとしてあなたのcrontabエントリを置くことができ/etc/cron.d/
ディレクトリを持っています。私が正しくリコール新しいcronfileが書き込まれてから2分以内に読みます。
これは重要な、なぜ別のレバーを使用しないということですか?言い換えれば、2つのオプションがあります:
crontabの1:私は、などを変更する必要がある特定のパラメータを持つ/ DO /いくつか/非常に/特定/事
。crontabファイル2:/ DO /何を/ニーズ/ / /
やるべきこと#2では、ジョブが何をすべきか、実行時に決定し、それを行うための責任があります。この設計では、crontabファイルは、いくつかの詳細なレベルでどのように動作するかを理解する必要の概念は無関係です。