2013-04-10 23 views
-1

我有一個Django,爲此我需要每兩秒運行一次命令。命令如下:Bash/Django:在一個shell中運行幾個監視命令,每個shell都有獨立的環境變量

watch SITE=<site_name> ./manage.py collectstatic --noinput 

我設置SITE爲VM環境變量,然後使用Django的系統知道它需要對運行該命令,以及其他東西的網站。所有的「網站」都是從相同的代碼庫運行的,它在虛擬環境中運行。

問題是,現在有7個「站點」,我需要運行此命令對每兩秒鐘,並有更多的管道。這意味着我打開了7個終端選項卡,每個選項卡分別運行相同的虛擬機,每個虛擬機每隔兩秒運行一次該命令!

有沒有一種方法,我可以有某種腳本,以便以相同的方式爲每個站點運行這些命令,但在一個終端選項卡中?或者甚至更好,只是在後臺運行?

+0

我不確定這個問題是否合適。沒有可以給予回答的答案。那就說,看看'領班'? – 2013-04-10 20:09:02

回答

1

由於手錶不能在後臺運行,一個簡單的腳本將完成你要找的東西。使用for循環可以使增加站點數量變得簡單。如果你在腳本上運行watch,那麼你可以繼續執行重複執行。

如果您可以將您的要求放鬆一分鐘,其他要查看的內容爲cron

#!/bin/bash 
for SITE_NAME in <site1> <site2> <site3> 
do 
    SITE=$SITE_NAME ./manage.py collectstatic --noinput 
done 
+0

謝謝你Voider,這是完美的。 – shrewdbeans 2013-04-13 15:24:01

1

不知道你想要什麼。 這是一個通用的bash腳本以在後臺運行的一些命令每個2秒:通過與未決符號調用它

#!/bin/bash 

command1 & 
command2 & 
command3 & 

#wait 
# decomment the line above if you want to wait until 
# all the spawned process ends before going further 

sleep 2 
exec $0 

腳本本身可以在後臺運行:

./script.sh & 
相關問題