按照文档用于Unix的 “屏幕” 命令,您可以在.screenrc开始与一帮默认的屏幕配置,每个运行您指定的命令。

下面是我的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

同样的结果也有。

有什么秘诀来得到它在给定屏幕上启动时运行命令?

有帮助吗?

解决方案

您的程序正在运行(当然,除了CD),这只是它没有父壳正在运行,所以一旦它完成,它退出就大功告成了。

您可以这样做:

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

这可能会帮助,但可能不完全你想要什么。

把“僵尸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)是可选的,我通常省略。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top