Bash 从另一个窗口在一个终端窗口中执行脚本
我正在使用Bash 从另一个窗口在一个终端窗口中执行脚本,bash,terminal,gnu-screen,Bash,Terminal,Gnu Screen,我正在使用screen在终端窗口内创建多个外壳。 如果我在一个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
screen
在终端窗口内创建多个外壳。
如果我在一个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
#/bin/bash
读行时
做
回声线;
对于{a..d}中的x
做
bash t.sh$line/x$x
xdool键ctrl+a c
完成
已完成<个文件
文件
文件包含包含数据文件的文件夹名称
现在执行此脚本时,执行脚本t.sh
,然后创建一个新屏幕并继续循环。
现在,最后我得到了4个屏幕shell,但是脚本t.sh
仅在第一个shell中执行了4次。
因此,我需要在4个shell中分别执行脚本t.sh
(另请注意:我的基本要求是我有一个132核的CPU,并且希望单独执行一个脚本132次,并跟踪每次执行的输出。)要直接回答您的问题,您可以使用从一个
屏幕
窗口向另一个屏幕发出命令,该命令可以通过屏幕-X
调用
不过,您的情况更简单:只需调用
screen bash t.sh$line/x$x
即可,而不是发出ctrl+a c
键。默认情况下,从屏幕
会话中调用屏幕
(除非清除了$STY
环境变量)。是否确实要从其他终端执行脚本?如果只是为了便于监控,可以执行以下操作:
# 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
#我想要查看输出的另一个终端:
$tty
/dev/pts/xx#&1
谢谢您的回复,杰夫。但是这个命令返回的是必须连接到终端。
错误。经过几次尝试,我无法重现这个问题。你能分享足够多我可以复制的东西吗?我刚刚用上面提到的代码中的screen bash t.sh$line/x$x
行替换了bash t.sh$line/x$x
。谢谢你的回复@anishsane。根据您的解决方案,脚本基本上是在主终端中执行的,但其输出将被传输到其他终端。但我需要的是将整个执行转移到另一个终端。stdin、stdout、stderr都被转移。其他环境不被转移。通常,这是我需要的。但你的要求可能会有所不同。