2012-12-02 92 views
-2

我想寫一個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 
+0

而你的問題是? –

+0

呃?爲了使它工作? – AntelopeSalad

+0

什麼讓你說它不起作用? –

回答