在新的命名屏幕中执行命令

在新的命名屏幕中执行命令

我有一个脚本,可以创建一个新屏幕并在其中执行命令(dev webserver)。

screen -S webserver -dm sh launch_webserver.sh

但是,当命令完成(或网络服务器退出)时,屏幕将被破坏。我怎样才能避免这种情况?

答案1

命令完成后您希望发生什么?当没有更多正在运行的命令时,屏幕会话结束,因此如果您想保持会话,则必须运行另一个命令。

如果您想保留窗口并在其中运行更多命令,请在初始命令完成后运行 shell。

screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; exec bash -i'

如果您想保留窗口只是为了查看输出,请运行等待的命令,例如sleep(使用近乎无限的参数)或read(等待直到您按Enter)。

screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; read'

如果您想保留会话但不保留窗口,请运行另一个命令。您必须编写一个 screenrc 文件(无论如何这是一个好主意)。

screen -c /path/to/webserver.screenrc

其中/path/to/webserver.screenrc包含

sessionname webserver
screen -t webserver launch_webserver.sh
screen -t shell bash

相关内容