2014-06-13 59 views
0

我有一個可以正常工作的部署腳本。在它的結束,我添加此塊:我的自定義init shell腳本停止部署腳本

cat <<EOF> /etc/init.d/uwsgi 
#!/bin/bash 
daemon=$APPVENV/bin/uwsgi 
args="--emperor $APPCONF/uwsgi/app.ini --daemonize /var/log/emperor.log --emperor-pidfile $APPDIR/emperor.pid --gid `id -g $APPUSER`" 
pid=$APPDIR/emperor.pid 
case "$1" in 
    start) 
     echo "Starting uwsgi" 
     start-stop-daemon -p $pid --start --exec $daemon -- $args 
     ;; 
    stop) 
     echo "Stopping script uwsgi" 
     start-stop-daemon --signal INT -p $pid --stop $daemon -- $args 
     ;; 
    reload) 
     echo "Reloading conf" 
     kill -HUP $(cat $pid) 
     ;; 
    *) 
     echo "Usage: /etc/init.d/uwsgi {start|stop|reload}" 
     exit 1 
    ;; 
esac 
exit 0 
EOF 

現在,當我跑我的部署腳本,它被困在這裏,我只看到一個閃爍的光標,並沒有追趕它的行。

難道我做錯了什麼與我的格式,因爲我知道創建與貓文件的東西它是如何格式化很挑剔,表格等

任何幫助,將不勝感激。

回答

1

變量仍然取代在here文檔,還與$(),你在你的腳本這裏做subshel​​ling:

kill -HUP $(cat $pid) 

您的安裝嘗試貓文件,用$ PID可能是空的,所以它會等待用於標準輸入的輸入。 你想逃避那些「$」,以防止膨脹,像

\$(cat \$foo) 

當然,與所有那些你不想讓安裝過程中也得到擴展變量。

+0

嗨。感謝您的答覆。請你解釋第一點,我應該用我的變量做什麼? – Jimmy