Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用命令启动Unix屏幕命令?_Bash_Unix_Shell_Command Line_Gnu Screen - Fatal编程技术网

Bash 如何使用命令启动Unix屏幕命令?

Bash 如何使用命令启动Unix屏幕命令?,bash,unix,shell,command-line,gnu-screen,Bash,Unix,Shell,Command Line,Gnu Screen,根据,您可以在.screenrc中配置它,以一组默认屏幕开始,每个屏幕运行您指定的命令 这是我的咖啡: # Default screens screen -t "shell_0" 1 screen -t "autotest" 2 cd ~/project/contactdb ; autotest 它不会运行自动测试命令。当我启动屏幕时,试图运行自动测试的窗口会立即关闭 我也试过了,只是 screen -t "autotest" 2 cd ~/project/contactdb 同样的结果

根据,您可以在.screenrc中配置它,以一组默认屏幕开始,每个屏幕运行您指定的命令

这是我的咖啡:

# Default screens
screen -t "shell_0"  1
screen -t "autotest" 2 cd ~/project/contactdb ; autotest
它不会运行自动测试命令。当我启动
屏幕时,试图运行
自动测试的窗口会立即关闭

我也试过了,只是

screen -t "autotest" 2 cd ~/project/contactdb
同样的结果

我也试过

screen -t "autotest" 2 ls
结果也一样

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

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

你可以做:

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

产生两个外壳,但生命可能会继续。

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

将“僵尸az”或“解除僵尸az”作为.screenrc的第一行。“az”可以是任意两个键。现在,当屏幕应该关闭时(例如,命令执行完毕),它实际上不会关闭;点击“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 -S 'tailf messages' -d -m tailf /var/log/messages
之后,您可以执行以下操作:

$ screen -ls
1234.tailf messages
其次是:

$screen -r 1234
我会这样做的

screen -t shell_0
chdir ~/project/contactdb
screen -t autotest autotest
以上内容似乎通过屏幕按程序进行评估。首先,我们建立一个标题为
shell\u 0
的新屏幕。因为我们没有给出其他选项,所以当前的工作目录将是父shell的目录或用户的主目录。然后,我们将新屏幕的默认目录设置为
~/project/contactdb
。接下来,我们建立一个运行
autotest
命令的新屏幕


窗口编号(
n
)是可选的,我通常会忽略它。

您也可以使用:
$screen-r tailf
,它更易于使用,并且无需使用
-ls
screen -t shell_0
chdir ~/project/contactdb
screen -t autotest autotest