我想寫一個bash腳本來監視目錄的變化。如果文件是.go或.html文件,我想殺死一個特定的進程然後啓動它。Inotifywait遇到問題,試圖看一個目錄golang的變化
這是失敗的地方,我不知道爲什麼。在盡力搜尋大量網站以獲得幫助之後,我盡我所能來完成這項工作,但我無法得到它。
理想的解決方案是,我將通過傳遞一個目錄和一個文件來運行它,它會在我保存文件時重新加載進程。
我運行它像這樣:
./gowatcher /路徑/要/我的/目錄/至/表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
而你的問題是? –
呃?爲了使它工作? – AntelopeSalad
什麼讓你說它不起作用? –