プロが教える店舗&オフィスのセキュリティ対策術

事前に、とあるシェルを準備して保存しておきます。

特定のファイルのタイムスタンプが更新されたら
即、その準備しておいたシェルを実行する方法はありますでしょうか?
cronで実行するのではなく、そのファイルの更新された時のみ即、実行したいのです。

OSはCentOSになります。

よろしくお願いします。

A 回答 (4件)

inotify-toolsがインストールされていなければ、インストールしてください。

あとはExpampleのシェルスクリプトを自分の必要に応じて変更し、起動しておくだけです。

>サーバAに対してユーザーの追加、削除または、各種confファイルの編集等を行います。
>それを更新した時点で、サーバBの同じディレクトリにへ転送(コピー)したいのです。多少の時間差は構いません。

そういう用途でしたら、rsyncをcronで回せば十分だと思います。
また両方のサーバーでユーザー情報を共有するのでしたら、NISを使う方が良いでしょう。

この回答への補足

回答有難うございます。
rsyncで検討する事にします。

補足日時:2007/10/14 21:11
    • good
    • 0

linux kernel-2.6.13からinotify(7)システムコールが提供されていて、ファイルシステムイベントを監視することができるようになっています。


このシステムコールを利用するinotify-toolsというパッケージに含まれるinotifywaitというプログラムを用いるとファイルの更新などのイベントをトリガにして何かをさせることができます。Debian 4.0で確認していますが、CentOSにもパッケージがあるようですので利用できるはずです。
inotifywait(1)のman pageのexample2に特定のファイル更新をトリガにするシェルスクリプトの例が載っているので参考にしてください。

この回答への補足

回答有難うございます。
調べてみたのですが、実際なにからはじめたら良いのか分かりませんでした。
もう少し詳しく教えて頂けないでしょうか?

ちなみに、具体的に今回何をしたいかと言うと、サーバAとサーバBがあり、
サーバAに対してユーザーの追加、削除または、各種confファイルの編集等を行います。
それを更新した時点で、サーバBの同じディレクトリにへ転送(コピー)したいのです。多少の時間差は構いません。
(サーバAとサーバBはほぼ同一の構成になります)

他にも方法があれば、ぜひよろしくお願いします。

補足日時:2007/10/13 23:14
    • good
    • 0

私は使ったことはないのですが、Dazukoというカーネルモジュールを使うと実現できるようです。



参考URL:http://www.usupi.org/info/dazuko.html

この回答への補足

回答有難うございます。
今回は、rsyncで検討する事としました。
dazukoは初めて聞きましたが、別の機会にこちらを検討してみます。

補足日時:2007/10/14 21:13
    • good
    • 0

無いはずです。



そのような動きをプログラムはWindows/Linuxともありますけど、いずれも短時間の待ちを置きながら、繰り返しチェックしているはずです。

この回答への補足

回答ありがとうございます。

タイムスタンプをチェックするのはcronで定期的にやることになるかと思います。それは構いません。
多少の待ち時間が生じるのも構いません。

その結果、更新(変更)があればシェルを実行出来ればよいだけです。

補足日時:2007/10/13 10:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!