从其他窗口在一个终端窗口中执行脚本

时间:2015-06-02 05:18:07

标签: bash terminal gnu-screen

我正在使用screen在终端窗口中创建多个shell。 如果我在一个shell中执行脚本并使用ctrl+a c创建一个新屏幕,有没有办法在创建屏幕后,当前在第一个shell中执行的脚本向新创建的shell屏幕发出命令。

例如,我有一个脚本:

#!/bin/bash
while read line
do
echo $line;
for x in {a..d}
do
    bash t.sh $line/x$x 
    xdotool key ctrl+a c
done
done < files

files文件包含一个包含数据文件的文件夹名称。

现在执行此脚本时,执行脚本t.sh,然后创建一个新屏幕并继续循环。 现在最后我得到了4个屏幕外壳,但脚本t.sh仅在第一个shell中执行了4次。 所以,我需要基本上分别在4个shell中执行脚本t.sh

(P.S。:我的基本要求是我有一个132核CPU并且想要分别执行132次脚本并跟踪每次执行的输出。)

2 个答案:

答案 0 :(得分:0)

要直接回答您的问题,您可以使用at commandscreen窗口向另一个窗口发出命令,可以通过screen -X调用。

您的情况更简单:请拨打ctrl+a c,而不是发出screen bash t.sh $line/x$x按键。默认情况下,在screen会话中调用screen create a new process in the same session(除非清除$STY环境变量)。

答案 1 :(得分:0)

你真的想从其他终端执行脚本吗?如果您只是想这样做以便于监控,您可以这样做:

# my other terminal where I want to see the output:
$ tty
/dev/pts/xx  #<~~~~ note this tty device number

# my main terminal:
$ bash t.sh $line/x$x </dev/pts/xx >/dev/pts/xx 2>&1