Shell 脚本中的 Screen 命令

Shell 脚本中的 Screen 命令

我是 shell 脚本的新手,想使用 screen 命令来自动执行以下场景:

  1. 创建屏幕session1并执行 shellscript1
  2. 创建另一个屏幕session2并执行另一个 shell script2,如果结果成功,则转到屏幕并按 Enter 键session1恢复。script1

使用屏幕可以实现这一点吗?请提供建议如何实现这一点。

答案1

这也许是可能的,但我不知道你为什么要这么做。

这完全取决于这是对现有脚本进行自动化的尝试,还是从头开始编写的内容,或者完全是新产品的架构?

如果是前者,我会说编辑现有脚本(你确定它们实际上是脚本吗?)会更容易,不用那样等待,或者将一个脚本的逻辑整合到另一个脚本中。

如果是后者,那么你做错了,应该使用一些不涉及按键的其他 IPC(进程间通信)机制。

答案2

您可以使用screen -X stuff '\n'向正在运行的屏幕会话发送换行符。

我将编写一个包装脚本,该脚本启动后如果脚本成功终止则script2发送换行符:session1

#!/bin/bash
./script2 && screen -S session1 -X stuff '\n'

下面两个命令可以执行您想要的操作:

screen -S session1 -d -m ./script1
screen -S session2 ./wrapper

相关内容