• 締切済み

ファイル更新監視について

お世話様になっております。 Linuxである特定のファイル(aaa.txt)を監視して、そのファイルが更新または新規に作成されたら特定のスクリプト(bbb.sh)を実行したいと思いますが、どのように監視スクリプトを組んだら良いのでしょうか? ご教示の程宜しくお願い致します。

みんなの回答

  • nonta0828
  • ベストアンサー率100% (1/1)
回答No.1

inotify-tools projectのツールが使えると思います。 基本的なツールとしてinotifywaitが使用可能でしょう。 こりあえず「inotify-tools」で検索して見てください。 またこの機能はカーネルのinotifyの実装が必須だと思いますが、最新のカーネルなら実装されていると思います。 インストール方法は、REDHAT系なら yum install inotify-tools Debian系なら apt-get install inotify-tools レポジトリーの追加が必要になるかもしれません。 使い方は簡単です。 inotifywait file_path 指定ファイルがアクセスされるとそのステータスを表示し終了します。 後はご自分でがんばって見てください。 inotify が使えない場合がstatかな? stat -c%y file_path これでファイルの最終モディファイ日時がわかります。 これをうまく使ってより出来るとは思います。

参考URL:
http://inotify-tools.sourceforge.net/
hoshunet
質問者

お礼

ご回答ありがとうございます。 ちょっと調べながら出ないとわかりませんが、 頂いたアドバイスに基づいて試してみたいと思います。 後日結果をご報告したいと思います。

関連するQ&A

  • ファイルから検索条件を読み込んでGREPを実行したい

    INPUTファイルを以下のように作成します。 >input.txt aaa bbb ccc ・ ・ ・ 特定のディレクトリの複数ファイルに対して grepを順にaaa,bbb,ccc・・・ というようにinput.txtから読み込んで実行し、結果をそれぞれaaa.txt,bbb.txt,ccc.txt・・・ へ出力したいのですが、方法がわからなくて困っています。 どなたかご教授お願いいたします。

    • ベストアンサー
    • Perl
  • 二つのファイルから一行ずつ取り出して計算

    aaa.txt と bbb.txtというファイルがあり、それぞれ 1.1 0.1 -0.2 0.9 … といった感じで一行ずつ数値が入っています。 シェルスクリプトを用いて、 この二つのファイルから一行ずつ取り出して足し算を行いたい (例えばaaa.txtの一行目が1.1、bbb.txtの一行目が0.9なら1.1+0.9=2.0) のですが、どうすれば良いでしょうか。

  • 個別の更新日時を表示するには?

    お世話になります。 一つのフォルダに index.html aaa.html bbb.html ccc.html があったとします。 そして、index.htmlにaaa.html,bbb.html,ccc.htmlの更新日時を自動で取得して表記させるようなことをしたいのですが、いまいちよくわかりません。 index.htmlだけの更新日時を自動で書くようなスクリプトはよく見かけるんですが、別のファイルの更新日時を読み込んで、それを出力するようなスクリプトがないので、ご教授いただけたらと思います。 どうぞよろしくお願いします。

  • バッチファイルの正規表現を利用した文字列検索

    お世話になっております。 表題の件について、質問させてください。 『とあるファイルに記述されている文字列を一部抜き出して、 別ファイルとして保存する』というバッチファイルを作成していますが、 うまく抜き出すことができないため、ご教示いただければ幸いです。 例) ・filelist.txt .\aaa\aaa.txt .\aaa\bbb.txt 上記ファイルに対し、「.\aaa\aaa.txt」の一行のみ取り出した 「aaafile.txt」というファイルを生成したいと考えております。 現在、私が考えたコマンドは下記になります。 for /f %%A in ('findstr /r /c:"aaa[^\\].*" filelist.txt') do echo %%A > aaafile.txt このコマンドを実行すると、「.\aaa\bbb.txt」まで抽出してしまい、 意図通りとなりません。 初歩的なミスかもしれませんが、 何卒、よろしくお願いいたします。

  • C言語でのファイル検索&ファイル書き換えについて

    C言語である特定のフォルダを指定して、その階層内(サブフォルダも含む)にあるファイル、例えばsample_nameをファイル名に含むファイルを見つけ、そのファイル内の例えば下のような書き換えを行えるようなプログラムはどうつくればいいのでしょうか。 元ファイル ~sample_name1.txt~ aaa, 10 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 30 ccc, 12 bbb, 20 ddd, 15 上のように各ファイルにaaaやbbbが共通に含まれています。 対象ファイル:sample_name 対象文字列:aaa 変換後:100 変換後ファイル ~sample_name1.txt~ aaa, 100 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 100 ccc, 12 bbb, 20 ddd, 15

  • フォルダ内のファイル存在監視する常駐プログラム

    あるフォルダ内に、あるファイルの存在を監視して、存在するとある処理を実行するような常駐型の監視プログラムをどのようにすればよいか教えてください。 ファイルはフォルダ内に複数存在する場合があり、古いもの順に取得し処理していきたいのです。 フォルダ名:c:\test\ ファイル名:aaa2009090415001234.txt (1)       aaa2009090416001234.txt (2)  とあると、(1)→(2)の順で処理したい。 aaaYYYYMMDDHHMMSS.txt の形式ファイル Windows系で、できればVBSがいいです。 サンプルコードまたは流れなどがわかれば幸いです。 よろしくお願いします。

  • 秀丸エディタでgrepを行うと前に余計なファイル名と数字が付け加えられる

    grepを行うと、文字の前にファイル名.txtと数字行(****)が付け加えられます 例えば、 aaa bbb をgrepで実行すると .txt(2659):aaa .txt(2660):bbb のようにファイル名と数字行が入ってしまいます。 前につけないように、grepを実行するにはどうすればよいのでしょうか?

  • unixのシェルでファイル内容を読み込む

    ど初心者です。わかりづらいかもしれませんが宜しくお願いします。 以下のような処理を行いたいと考えています。 (1) aaa.sh(シェルスクリプト)にてバッチプログラムを起動 (2)バッチでエラーの場合、結果ファイル(bbb.txt)に「1」を出力する。 (3)aaa.sh(シェルスクリプト)にて結果ファイルの内容を読み取り「1」の場合は、再度バッチプログラムを起動する。 このうち(3)の処理にて、結果ファイルの読み込み方法がわかりません。 調べた結果、以下のような処理で可能なようですが・・ while read LINE; do echo $line done < aaa.txt 読み込むのは1行なので、ループ処理にはしたくないのですが、例えば「read LINE aaa.txt」のような簡単なコマンドで、ファイルの中身を読み込むことはできないのでしょうか? 実はUNIXが初めてで、しかもスケジュールに余裕がないため焦っております。 なにぶん知識不足な故、ちんぷんかんぷんな質問かも知れませんが、よろしくお願いいたします。

  • powershellのファイル名が同一検索

    とある同一フォルダ内に ファイル名 AAA-bbb.txt AAA-ccc.txt 等のファイルがあります。 AAAをキーとして、更新日時が最新の分を 読み込みたいと考えています。 どのように行えばいいのでしょうか。 よろしくお願いいたします

  • VBSでファイル作成をするとき

    VBスクリプトでファイルを生成するソースを書いたのですがそれをバッチで実行するようにしてありますが例えばPCが起動していなく実行できなかった場合次回実行時に「もしこの名前のファイルがなかったら先に 作るはずだったファイルを作る」といったようなのが欲しいと思っております。 こういうのはプログラムで先にファイル検索をさせて無かったら作るといった感じになるのでしょうか? ファイル検索をさせるVBSはFileSystemObjectを使う方法になる以外に無いでしょうか? (ウイルスソフトが反応するため・・・・・) まだこの手の記述方法がわからないのでネットでサンプルを探したのですがなかったのでご存知の方ヒントをいただけないでしょうか? よろしくお願いします。 例:VBSCRIPTを1月にタスク実行でAAA1.txtを作成。 2月にこのタスクを実行したとき先にAAA1.txtがあるかを確認してあればAAA2.txtを作る。 もし無ければAAA1.txtを作る条件を当てはめ作ってからAAA2.txtを作る。