我正在使用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次脚本并跟踪每次执行的输出。)
答案 0 :(得分:0)
要直接回答您的问题,您可以使用at
command从screen
窗口向另一个窗口发出命令,可以通过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