2012-03-27 48 views
1

我一直在努力如下脚本在自己的屏幕窗口而不脚本完成

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 

编写自定义.screenrc文件测试时退出我试图实现的是执行一个屏幕命令,该命令在两个不同的目录路径中生成两个窗口,并且应该运行两个不同的命令/脚本。

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

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

回答

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 

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