Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

ファイル/ディレクトリの変更に応じて任意のジョブを実行するincron

2008年08月25日 12:12 Shashank-Sharma(2008年8月20日(水)) 1 2 3

 例えば、各自のhomeディレクトリ中にファイルやディレクトリが新規作成された時点で指定のオーディオファイルを自動再生させたいという場合は、「/home/linuxlala IN_CREATE paplay /usr/share/sounds/pop.wav」といったincrontabのエントリを登録しておけばいい。同じく「/home/linuxlala IN_CREATE rm -rf $@/$#」も同様のイベントをトリガとして実行されるエントリだが、この場合は少々悪質な操作が行われることになる。つまりこのエントリをincrontabファイルに登録しておくと、当該ユーザのhomeディレクトリで何らかのディレクトリやファイルが作成された段階で、それらは即座に削除されてしまうのだ。実はこの場合、ワイルドカードと呼ばれる特殊な記号($@/$#)を用いることによって、新規に作成されたファイル/ディレクトリのフルパスをrm -rfコマンドに渡しているのである。

 より実用的な用途にてこうしたワイルドカードが役立つのは、実行したいスクリプトやコマンドにファイル名の情報を渡したいという場合であろう。例えば、指定されたファイル中から“呪いの言葉”(curse word)を削除するスクリプトが手元にあり、/home/linuxlala/Documentsディレクトリに作成されるファイルはすべてその処理対象としたいという場合は、「/home/linuxlala/Documents IN_CLOSE_WRITE /home/linuxlala/replace_curse_words.sh $@/$#」というincrontabエントリを用意しておけばいいことになる。なおこのエントリではIN_CREATEではなくIN_CLOSE_WRITEを指定しているが、これはIN_CREATEイベントはディレクトリであっても生成されるのに対して、IN_CLOSE_WRITEはファイルのみが対象となるからである。

 $@と$#のワイルドカードは、監視対象とされるファイルのパスおよび当該イベントに関係したファイル名をそれぞれ返すものだが、その他にもイベントフラグをテキストおよび数値形式で処理する$%や$&などのワイルドカードも利用することができる。

 なおincrontabファイルの内容を書き換えた場合は、「incrontab -d」コマンドを実行してユーザテーブルをリロードさせておく必要がある。このアップデートを行わなかった場合は、変更前の指定に基づいたincronの処理が実行され続けることになる。

最終更新:2008年10月25日 17:07