如何用命令启动Unix屏幕命令?

根据Unix“屏幕”命令的文档 ,你可以在.screenrc中configuration它,从一堆默认屏幕开始,每个屏幕都运行一个你指定的命令。

这是我的cofig:

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

它不会运行自动testing命令。 我试图运行autotest那个窗口只是在我开始screen时立即closures。

我也试过,只是…

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

同样的结果。

我也试过…

 screen -t "autotest" 2 ls 

同样的结果也在那里。

启动时在给定屏幕上运行命令的秘诀是什么?

你的程序正在运行(当然,除了cd),它只是在没有父shell的情况下运行,所以一旦它完成,它就会退出并完成。

你可以这样做:

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

产生两个贝壳,但生活可能会继续下去。

尝试这个:

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

然后,你可以做:

 $ screen -ls 1234.tailf messages 

其次是:

 $screen -r 1234 

这可能有帮助,但可能不完全是你想要的。

将“zombie az”或“defzombie az”作为.screenrc的第一行。 “az”可以是任何你想要的2个键。 现在,当一个屏幕应该关闭(命令完成执行,例如),它不会真正关闭; 点击“a”将关闭它,点击“z”将重新执行附加到该屏幕的命令。

我发现在屏幕上的用户手册 。

您也可以将字符“填充”到屏幕中,就像输入了字符一样。

以下是你可以用你的例子来做的事情:

 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" 

这是我的样子。 它似乎工作正常。 我认为无论是括号可能导致问题或屏幕将不会打开一个窗口,如果命令“自动测试”不存在。

 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 

这是我该怎么做的。

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

以上似乎是通过屏幕程序化评估。 首先我们建立一个标题为shell_0的新屏幕。 由于我们没有提供其他选项,所以当前工作目录将是父shell或用户主目录的工作目录。 然后,我们将新屏幕的默认目录设置为~/project/contactdb 。 接下来,我们建立一个运行autotest命令的新屏幕。

窗口号( n )是可选的,我通常省略它。