我有一个脚本,可以创建一个新屏幕并在其中执行命令(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