我正在使维护例程自动化,该例程涉及启动和停止在屏幕会话中运行的脚本。我的方法是杀死屏幕会话,然后重新启动它,并使用脚本功能在脚本内运行命令,以创建屏幕并传递命令,而无需附加到屏幕。
但是,我对此有困难。我可以在不使用的情况下正确创建屏幕screen -d -m -S screen_name
。但是,如果我基于以下命令运行命令:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
回声-ne'\ 015'用反引号而不是单引号引起来。这是模拟用户在我使用的命令移至目录并执行位于该目录的脚本时按下Enter键。该命令有效,但是仅在创建屏幕后将其附加到屏幕上的情况下。当我尝试自动化创建屏幕并在其中运行命令的过程时,我希望避免在脚本内附加和分离。我将尝试创建一个shell脚本的建议,该脚本包含需要在屏幕内执行并根据结果进行编辑的命令。
有没有一种方法可以创建屏幕并在屏幕中运行一个命令,或者在创建后但在执行命令之前不必附加到屏幕上?
提前致谢。
**更新-尝试过将我需要执行的命令放置在shell脚本中的建议,我已经能够成功创建一个屏幕并从该屏幕内执行命令,但是当脚本停止运行时,我的行为是屏幕也会关闭。这不应该是一个问题,因为该脚本是一个日志记录脚本,仅应在知道sys admin或通过我尝试开发的脚本后停止,但是最好以这样的方式进行屏幕设置:如果脚本停止,则不会消失。是否有可能实现这种行为?**
.screenrc
包含line 的特殊行zombie kr
,该行将使打开的窗口保持打开状态,您可以按一下k
以关闭winodw,或者r
再次在窗口中运行命令。我有这个用于我的默认.screenrc。