ディレクトリの変更を監視する bash スクリプトを作成しようとしています。ファイルが .go または .html ファイルの場合、特定のプロセスを強制終了してから開始したいと思います。
これはいたるところで失敗しており、その理由はわかりません。ヘルプを求めて多くの Web サイトを精査した後、これを機能させるために最善を尽くしましたが、取得できません。
理想的な解決策は、実行するディレクトリとファイルを渡して実行し、ファイルを保存するときにプロセスをリロードすることです。
私はそれを次のように実行しています:
./gowatcher /path/to/my/directory/to/watch foo.go
これが私がこれまでに持っているものです:
#!/usr/bin/env bash
WATCH_DIR=$1
FILENAME=$2
function restart_goserver() {
if go run $FILENAME
then
pkill -9 -f $FILENAME > /dev/null 2>&1
pkill -9 -f a.out > /dev/null 2>&1
go run $FILENAME &
echo "started $FILENAME"
else
echo "server restart failed"
fi
}
cd $WATCH_DIR
restart_goserver
echo "watching directory: $WATCH_DIR"
inotifywait -mrq -e close_write $WATCH_DIR | while read file
do
if grep -E '^(.*\.go)|(.*\.html)$'
then
echo "--------------------"
restart_goserver
fi
done