North Detail / ノースディテール

BLOG ブログ

ブログ
CATEGORY
TECH

incronを使ってみた話

North Detailで時々インフラ作業をしているFujiと申します。
今回はincronというジョブ実行プロセスを初めて使ってみた記事になります。

やりたかったこと

  • サーバ上の特定のディレクトリにzipファイルが配置されたことを検知して、配置しているシェルスクリプトを実行してほしい。
  • 実行されたログを出してほしい。

incronの紹介

incronは指定されたファイルまたはディレクトリに対して
指定したイベントが発生したことを検知してコマンドを実行することができる
cronのファイル版と言えるデーモンプロセスです。

  • 公式GitHubリポジトリ

    https://github.com/ar-/incron

  • こういったイベントを検知することができます、詳しくは上記リポジトリを参照ください。
    • IN_CREATE:該当ディレクトリ内にファイルが作成されたら
    • IN_MODIFY:ファイルが更新されたら
    • IN_CLOSE_WRITE:編集が終わったら
    • etc...

実行環境

クラウドプラットフォーム:AWS
サービス:EC2
OS: Amazon Linux2

ファイル構成

/path/to
  ┗ project
    ┣ script.sh // 実行してほしいスクリプト
    ┗ zip_dir // zipファイル配置ディレクトリ
      ┗ source.zip //アップロードするzipファイル

インストール手順

よくお世話になっているepelが入っていれば、yumでインストールできるので楽ですね。
ただ、デフォルトのエディエタがvimですので、vimが入っていないと編集画面起動時にエラーメッセージが表示されますので、ご注意ください。

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm vim
$ sudo yum install incron

※ 使用するエディタを指定したい方は/etc/incron.confを編集ください

入力方法&記法

編集はcron同様に、-eオプションを付けて行います。

$ incrontab -e

↓のように記述していきます。cronの日時指定部分にパスとイベントを指定する要領ですね

/path/to/検知対象ファイルorディレクトリ 検知イベント 実行コマンド

今回はこのように設定しました。

/path/to/project/zip_dir IN_CLOSE_WRITE /path/to/project/script.sh

実行結果

zipファイルをproject/zip_dirにアップロードすると、見事にscript.shが実行されました。
incronが実行されたかどうか、はcronと同じく/var/log/cron.logに記載されます

使ってみた感想

かなり便利です!
CI/CDツールなどが使用できない状況では、作業の自動化にかなり役立つのではないでしょうか!
5年前に知りたかった...

Fuji
WRITER:Fuji
主な記事 一覧へ

一覧へ

IS 501383 / ISO 27001