2014-04-17 87 views
0

我有一個bash CGI日誌記錄連接到我的服務器,我希望當一個新的連接被請求/穩定/服務這個腳本傳遞一個參數/變量到另一個腳本在後臺運行?這可能嗎?我怎樣才能做到這一點?Bash從腳本傳遞信息到腳本

我已經嘗試過環境變量,但這隻會在同一個shell中工作,而且我不能確定兩者都會在同一個shell中運行。我試圖寫入一個文件,但我怎麼知道文件何時被編輯,從而允許第二個腳本執行命令。

我開始變得瘋狂,這必須有可能我不能相信「程序」不能共享的信息...:O型

也許我採取了錯誤的方法,可以有人請指教?

感謝, 馬爾科P.

+0

後臺腳本是否等待來自CGI腳本的輸入? –

回答

2

命名管道可以是單向的,雖然它是阻塞:

設置:

mkfifo /path/to/named/pipe 

CGI腳本:

echo "some data" > /path/to/named/pipe # blocks until other script consumes! 

背景腳本:

while :; do 
    read data < /path/to/named/pipe  # blocks until cgi script produces! 
    do_stuff_with "$data" 
done 
+0

[inotify-tools](https://github.com/rvoicilas/inotify-tools/wiki)是另一種可能性,這樣後臺腳本可以在新文件到達目錄時喚醒並執行其他操作。 –

+0

感謝您的評論,事實上我剛剛發現了有關fifo的總是看到他們周圍從未檢查過他們:P虐待它嘗試,還有關於inotify發現它非常有趣我看到的唯一問題是我有運行它,它不會給我的信息,直到我結束命令是我在使用inotifywatch(我認爲)。我怎麼能用它來實時獲取信息?而comman跑步?嗯fifo的再次是正確的? :P非常感謝! – maco1717

+0

非常感謝!這工作很好...每一天我越來越喜歡bash,爲什麼人們仍然嘗試使用編譯器! xP我想我們需要把Linux放在首位xD – maco1717