根据Unix"screen"命令的文档,您可以在.screenrc中配置它以从一堆默认屏幕开始,每个屏幕都运行您指定的命令.
这是我的cofig:
# Default screens screen -t "shell_0" 1 screen -t "autotest" 2 cd ~/project/contactdb ; autotest
它不会运行autotest命令.autotest
当我开始时,我试图运行的那个窗口立即关闭screen
.
我也尝试过......
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"