2012-03-27 56 views
1

我一直在努力如下腳本在自己的屏幕窗口而不腳本完成

startup_message off 
vbell off 
caption always "%{= bb}%{+b w}%n %h %=%t %c" 
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" 
activity "Activity in %t(%n)" 
shell -/bin/bash 
chdir /path1 
screen -t WINDOW1 bash -c 'MYSCRIPT1' 
chdir /path2 
screen -r WINDOW1 bash -c 'MYSCRIPT2' 

我運行此腳本如下

screen -c TEST 

編寫自定義.screenrc文件測試時退出我試圖實現的是執行一個屏幕命令,該命令在兩個不同的目錄路徑中生成兩個窗口,並且應該運行兩個不同的命令/腳本。

但使用此代碼我的屏幕立即終止,這是默認行爲。

我希望屏幕窗口不應該被終止,而是應該回到目錄路徑1目錄path2分別一旦命令在每個屏幕窗口終止。

回答

0

我解決這個問題如下。寫稱爲STARTSCRIPT啓動腳本下面的內容

screen -d -m -S SESSIONNAME 

screen -X -S SESSIONNAME -p 0 -t WINDOW0 
screen -X -S SESSIONNAME screen -t WINDOW1 1 

echo "Trying to start memcached...." 
screen -X -S SESSIONNAME -p 1 stuff "memcached 
" 
echo 'Memcached started....' 

echo "Trying to start MYSCRIPT1...." 
screen -X -S SESSIONNAME screen -t MYSCRIPT1 2 
screen -X -S SESSIONNAME -p 2 stuff "cd /path1; ./MYSCRIPT1 
" 
echo 'MYSCRIPT1 started....' 

echo "Trying to start MYSCRIPT2...." 
screen -X -S SESSIONNAME screen -t MYSCRIPT2 3 
screen -X -S SESSIONNAME -p 3 stuff "cd /path2; ./MYSCRIPT2 
" 
echo 'MYSCRIPT2 started....' 

要注意雙引號(「)在命令的下一行是很重要的,沒有它的命令將不會執行。

我也很難移動屏幕狀態設置到自己的〜/ .screenrc文件,讓每一個屏幕窗口中創建的樣子屏幕會話中的一個標籤。

startup_message off 
vbell off 
caption always "%{= bb}%{+b w}%n %h %=%t %c" 
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" 
activity "Activity in %t(%n)" 
shell -/bin/bash 

我執行STARTSCRIPT如下

$./STARTSCRIPT 

它給了我在他們自己的屏幕窗口中運行命令的所需輸出,並且即使命令完成後這些窗口也不會終止。