このガイドは、DebianEtchシステムにincronをインストールして使用する方法を示しています。 Incronはcronに似ていますが、時間に基づいてコマンドを実行する代わりに、ファイルまたはディレクトリのイベント(ファイルの変更、権限の変更など)が発生したときにコマンドをトリガーできます。
このドキュメントには、いかなる種類の保証もありません。これがあなたのために働くという保証はありません!
1Incronのインストール
Incronはetch-backportsリポジトリで利用できるため、/ etc / apt/sources.listに次の行を追加する必要があります。
vi /etc/apt/sources.list
[...] debhttp://www.backports.org/debianetch-backportsメインコントリビュート非フリー[...] |
backports.orgアーカイブキーをaptにインポートしましょう...
wget -O-http://backports.org/debian/archive.key | apt-key add-
...そして実行
apt-get update
etch-backportsリポジトリはデフォルトで非アクティブであるため、そこからincronをインストールするには、次のコマンドを使用する必要があります。
apt-get-tetch-backportsインストールインクロン
2Incronの使用
cronの使用法はcronの使用法と非常によく似ています。 incrontabエントリを一覧表示(-l)、編集(-e)、および削除(-r)できるincrontabコマンドがあります。詳細については、
を参照してください。man incrontab
そこには次のセクションもあります:
/etc/incron.allowが存在する場合、ここにリストされているユーザーのみがincronを使用できます。それ以外の場合、/ etc / incron.denyが存在する場合、ここにリストされていないユーザーのみがincronを使用できます。これらのファイルが存在しない場合、誰もがincronを使用できます。 (重要な注意:この動作は安全ではなく、ISC Cronで使用されるスタイルと互換性があるように変更される可能性があります。)これらのファイルの場所は、構成で変更できます。
つまり、ルートとしてincrontabを使用する場合は、/ etc / incron.allowを削除する必要があります(これは、すべてのシステムユーザーがincrontabを使用できるため安全ではありません)...
rm -f /etc/incron.allow
...またはそのファイルにルートを追加します(推奨):
vi /etc/incron.allow
root |
これを行う前に、incrontabを使用しようとすると、次のようなエラーメッセージが表示されます。
server1:〜#incrontab -l <br /> user'root'はincronの使用を許可されていません
server1:〜#
その後は機能します:
server1:〜#incrontab -l <br />rootのテーブルがありません
server1:〜#
使用できます
incrontab -e
incronジョブを作成します。これを行う前に、
を確認します。man 5 incrontab
crontabの形式を説明しているからです。基本的にフォーマットは以下の通りです...
...ここで、
IN_ACCESSファイルにアクセスしました(読み取り)(*)
IN_ATTRIBメタデータが変更されました(権限、タイムスタンプ、拡張属性など)(*)
IN_CLOSE_WRITE /> IN_CLOSE_NOWRITE書き込み用に開かれていないファイルが閉じられました(*)
IN_CREATE監視対象ディレクトリに作成されたファイル/ディレクトリ(*)
IN_DELETE DELETE * IN _ /directory自体が削除されました
IN_MODIFYファイルが変更されました(*)
IN_MOVE_SELF監視対象のファイル/ディレクトリ自体が移動されました
IN_MOVED_FROM視聴したディレクトリ(*)
IN_OPENファイルが開かれました(*)
ディレクトリを監視する場合、上記のアスタリスク(*)でマークされたイベントは、ディレクトリ内のファイルで発生する可能性があります。その場合、
返されたイベントデータの名前フィールドは、ディレクトリ内のファイルの名前を識別します。
IN_ALL_EVENTSシンボルは、上記のすべてのイベントのビットマスクとして定義されています。 2つの追加の便利なシンボルは、IN_MOVED_FROMとIN_MOVED_TOの組み合わせであるIN_MOVEと、IN_CLOSE_WRITEとIN_CLOSE_NOWRITEを組み合わせたIN_CLOSEです。
マスクには、さらに次の記号を指定できます。
IN_DONT_FOLLOWシンボリックリンクの場合はパス名を間接参照しないでください
IN_ONESHOT1つのイベントのみのパス名を監視します
IN_ONLYDIRさらに、inotifyシンボルセットに表示されないシンボルがあります。 IN_NO_LOOPです。このシンボルは、現在のイベントが完全に処理されるまで(子プロセスが終了するまで)、イベントの監視を無効にします。
は、イベントが発生したときに実行する必要のあるコマンドです。コマンド仕様内では、次のワイルドダードを使用できます。 $$ドル記号
[メールで保護]監視対象のファイルシステムパス(上記を参照)
$#イベント関連のファイル名
$%イベントフラグ(テキスト)
$&イベントフラグ(数値)ディレクトリを監視している場合、[email protected]はディレクトリパスと$#イベントをトリガーしたファイルを保持します。ファイルを監視している場合、[メールで保護]はファイルへの完全なパスを保持し、$#は空です。
ワイルドカードが必要であるが、それらが何に変換されるかわからない場合は、次のようなincronジョブを作成できます。
/ tmp / IN_MODIFY echo "$$[メール保護]$#$%$&" |
次に、/ tmpディレクトリにファイルを作成または変更し、/ var / log / syslogを確認します。このログには、incronジョブがトリガーされたタイミング、成功したかエラーが発生したか、実際のコマンドは何であったかが示されます。実行されました(つまり、ワイルドカードは実際の値に置き換えられます)。
tail / var / log / syslog
...
Aug 21 17:26:50 server1 incrond [7111] :(ルート)CMD(echo "$ / tmp huhu IN_CREATE 256")
この例では、ファイル/ tmp/huhuを作成しました。ご覧のとおり、[メール保護]は/ tmpに、$#はhuhuに、$%はIN_CREATEに、$&は256に変換されます。
今では十分な理論。最初のincronジョブを作成しましょう。ファイル/etc/apache2/apache2.confとディレクトリ/etc/ apache2 / vhosts /を監視したいのですが、変更があるたびに、incronでApacheを再起動します。これが私たちのやり方です:
incrontab -e
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart / etc / apache2 / vhosts / IN_MODIFY / etc/init。 d/apache2の再起動 |
それでおしまい。テストの目的で、Apache構成を変更し、/ var / log / syslogを確認すると、incronがApacheを再起動することがわかります。
定義されているすべてのincronジョブを一覧表示するには、
を実行します。incrontab -l </ pre>server1:〜#incrontab -l <br /> /etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /etc/init.d / apache2 restart
server1:〜#現在のユーザーのすべてのincronジョブを削除するには、
を実行します。incrontab -rserver1:〜#incrontab -r
ユーザー'root'のテーブルを削除しています
ユーザー'root'のテーブルが正常に削除されました
server1:〜#
3つのリンク
- incron:http://inotify.aiken.cz/?section=incron&page=about&lang=en