根据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
)是可选的,我通常省略它。