你如何使用命令启动的Unix命令屏幕?
-
23-08-2019 - |
题
按照文档用于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
)是可选的,我通常省略。
不隶属于 StackOverflow