脚本完成后,在自己的屏幕窗口中编写脚本而不退出

时间:2012-03-27 07:33:11

标签: gnu-screen

我一直在尝试编写自定义.screenrc文件TEST,如下所示

startup_message off
vbell off
caption always "%{= bb}%{+b w}%n %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
activity "Activity in %t(%n)"
shell -/bin/bash
chdir /path1
screen -t WINDOW1 bash -c 'MYSCRIPT1'
chdir /path2
screen -r WINDOW1 bash -c 'MYSCRIPT2'

我正在运行此脚本,如下所示

screen -c TEST

我想要实现的是执行一个屏幕命令,该命令在两个不同的目录路径中生成两个窗口,并且在每个窗口中应该运行两个不同的命令/脚本。

但是使用此代码我的屏幕会立即终止,这是默认行为。

我希望屏幕窗口不应该被终止,而是一旦命令在每个屏幕窗口中终止,它们应该分别回到目录path1目录path2。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题如下。写了一个名为STARTSCRIPT的启动脚本,内容如下

screen -d -m -S SESSIONNAME

screen -X -S SESSIONNAME -p 0 -t WINDOW0
screen -X -S SESSIONNAME screen -t WINDOW1 1

echo "Trying to start memcached...."
screen -X -S SESSIONNAME -p 1 stuff "memcached
"
echo 'Memcached started....'

echo "Trying to start MYSCRIPT1...."
screen -X -S SESSIONNAME screen -t MYSCRIPT1 2
screen -X -S SESSIONNAME -p 2 stuff "cd /path1; ./MYSCRIPT1
"
echo 'MYSCRIPT1 started....'

echo "Trying to start MYSCRIPT2...."
screen -X -S SESSIONNAME screen -t MYSCRIPT2 3
screen -X -S SESSIONNAME -p 3 stuff "cd /path2; ./MYSCRIPT2
"
echo 'MYSCRIPT2 started....'

重要的是要在命令的下一行注意双引号(“),否则命令将不会执行。

此外,我将屏幕硬状态设置移动到其自己的〜/ .screenrc文件中,以便创建的每个屏幕窗口看起来都像是屏幕会话中的选项卡。

startup_message off
vbell off
caption always "%{= bb}%{+b w}%n %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
activity "Activity in %t(%n)"
shell -/bin/bash

我按如下方式执行了STARTSCRIPT

$./STARTSCRIPT

它在自己的屏幕窗口中给出了所需的运行命令输出,即使命令完成,这些窗口也不会终止。