2009-02-12 103 views
23

根據docs for the Unix "screen" command,您可以在.screenrc中將其配置爲從一堆默認屏幕開始,每個屏幕都運行您指定的命令。如何用命令啓動Unix屏幕命令?

這裏是我的cofig:

# Default screens 
screen -t "shell_0" 1 
screen -t "autotest" 2 cd ~/project/contactdb ; autotest 

它不會運行自動測試命令。我試圖運行的那個窗口autotest剛剛關閉,當我開始screen

我也剛剛試了一下...

screen -t "autotest" 2 cd ~/project/contactdb 

相同的結果。

我也試過......

screen -t "autotest" 2 ls 

同樣的結果也有。

讓它在啓動時在給定屏幕上運行命令的祕訣是什麼?

回答

21

你的程序正在運行(當然,除了cd),它只是在沒有父shell的情況下運行,所以一旦它完成,它就會退出並完成。

你可以這樣做:

screen -t "autotest" 2 bash -c 'cd ~/project/contactdb ; autotest' 

產卵兩發炮彈,但生活很可能會繼續下去。

6

這可能有幫助,但可能不完全是你想要的。

將「zombie az」或「defzombie az」作爲.screenrc的第一行。 「az」可以是你想要的任何2個鍵。現在,當一個屏幕應該關閉時(例如命令完成執行),它不會真正關閉;點擊'a'將關閉它,點擊'z'將重新執行附加到該屏幕的命令。

我發現在the screen user's manual

4

下面是我的樣子。它似乎工作正常。我認爲如果命令「autotest」不存在,圓括號可能會導致問題,或者屏幕不會打開窗口。

screen -t zsh 1 
screen -t emacs 2 emacs -nw 
screen -t mutt 3 mutt 
monitor on 
screen -t mc 4 mc -s 
screen -t elinks 4 elinks 
5

您也可以在「東西」字符到屏幕,如果你輸入了他們。

這裏是你怎麼做你的榜樣:


screen -t "shell_0" 1 

# create the following screen in the desired dir, instead of cd-ing afterwards :) 
chdir ~/project/contactdb 
screen -t "autotest" 2 

# (without this sometimes screens fail to start correctly for me) 
sleep 5 

# paste some text into screen number 2: 
select 2 
stuff "autotest\012" 
15

試試這個:

$ screen -S 'tailf messages' -d -m tailf /var/log/messages 

後來的後來,你可以這樣做:

$ screen -ls 
1234.tailf messages 

其次:

$screen -r 1234 
0

下面是我該怎麼做。

screen -t shell_0 
chdir ~/project/contactdb 
screen -t autotest autotest 

上面的內容似乎是通過屏幕對程序進行評估。首先我們建立一個標題爲shell_0的新屏幕。由於我們沒有提供其他選項,因此當前工作目錄將是父shell或用戶主目錄的工作目錄。然後我們將新屏幕的默認目錄設置爲~/project/contactdb。接下來,我們建立一個運行autotest命令的新屏幕。

窗口號碼(n)是可選的,我通常省略它。