25

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

这是我的配置:

# 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

那里也有同样的结果。

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

4

6 回答 6

21

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

你可以这样做:

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

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

于 2009-02-12T22:31:23.583 回答
16

试试这个:

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

然后稍后您可以执行以下操作:

$ screen -ls
1234.tailf messages

其次是:

$screen -r 1234
于 2009-11-23T07:09:38.467 回答
7

这可能会有所帮助,但可能并不完全是您想要的。

将“zombie az”或“defzombie az”作为 .screenrc 的第一行。“az”可以是您想要的任何 2 个键。现在,当一个屏幕应该关闭时(例如,命令执行完毕),它实际上并没有关闭;点击“a”将关闭它,点击“z”将重新执行附加到该屏幕的命令。

我在屏幕上找到了用户手册

于 2009-02-12T22:59:59.410 回答
6

您还可以将字符“填充”到屏幕中,就像您已键入它们一样。

以下是您可以使用示例执行此操作的方法:


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"
于 2009-06-15T23:10:45.623 回答
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
于 2009-02-12T23:21:55.350 回答
0

这就是我的做法。

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

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

窗口编号(n)是可选的,我一般省略它。

于 2012-12-20T18:18:44.180 回答