Symfoware

Symfowareについての考察blog

Linux inotifywait でファイルの更新を監視し、コマンドを実行する

apidocをDebian 9にインストールしました。
APIドキュメント生成ツール apidoc をDebian 9にインストール

ソースコードを更新したら自動的にドキュメントも更新して欲しい。



inotifywait



こちらが参考になりました。
inotifywait を使って,ファイルが作成されたらアクションを起こすスクリプトを書く

inotify-toolsをインストール


# apt install inotify-tools




更新管理用のスクリプトを作成します。


# vi /var/dev/api_watch.sh




内容は以下の通り。


#!/bin/bash
# required package: inotify-tools
api_dir=/var/dev/php
doc_dir=/var/dev/apidoc

events=(-e CREATE -e MODIFY -e DELETE)
while inotifywait ${events[@]} $api_dir; do
apidoc -i $api_dir -o $doc_dir
done




ソースフォルダ内、ファイルの「作成(CREATE)」「変更(MODIFY)」「削除(DELETE)」を監視。
イベントが発生したら、apidocコマンドを実行してドキュメントを更新します。


実行権限を付与して監視を実行。


# chmod +x api_watch.sh
# ./api_watch.sh
Setting up watches.
Watches established.





適当にphpのコメントを修正して保存します。


  1. <?php
  2. /**
  3. * @api {get} /user/:id Request User information
  4. * @apiName GetUser
  5. * @apiGroup User
  6. *
  7. * @apiParam {Number} id Users unique ID.
  8. *
  9. * @apiSuccess {String} firstname Firstname of the User.
  10. * @apiSuccess {String} lastname Lastname of the User.
  11. * @apiSuccess {String} tel tel number of the User.(ここを追加)
  12. */




ドキュメントが更新されました。

794_01.png





systemdによる自動実行



systemdに登録して、バックグラウンドで自動実行するようにしておきます。

過去記事のこちらを参考にしました。
Ubuntu Systemdでプログラムをサービス起動する(窓使いの憂鬱)


設定ファイルを作成。


# vi /etc/systemd/system/api_watch.service




内容は以下の通り。
生成したドキュメントをwebサーバーで公開する場合は、UserとGroupにwww-dataを指定すると良いかもしれません。


[Unit]
Description = apidoc create daemon

[Service]
ExecStart = /var/dev/api_watch.sh
Restart = always
Type = simple

# 実行ユーザーを指定する場合
#User=www-data
#Group=www-data

[Install]
WantedBy = multi-user.target





サービスとして認識されているか確認


# systemctl list-unit-files --type=service | grep api_watch
api_watch.service                     disabled




サービスを有効化


# systemctl enable api_watch




サービス開始


# systemctl start api_watch




サービスが起動しているか確認


# systemctl status api_watch




phpのコメントを変更して動作を確認します。

794_02.png

ちゃんと監視が行われているようです。

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/09/03(日) 16:40:32|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Android Matrixで画像の拡大・縮小 | ホーム | APIドキュメント生成ツール apidoc をDebian 9にインストール>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/2054-9472241a
この記事にトラックバックする(FC2ブログユーザー)