我一直在尝试编写一个脚本来创建屏幕会话并启动游戏服务器,我实际上做到了。但问题是在分离后重新附加到该会话...我知道服务器在与会话分离后正在运行,但是在写入screen -ls
我的会话时不会出现。即使我输入也Cntrl+A "
不会显示任何会话。尝试screen -r
告诉我没有会话,但我 100% 确定有会话,因为服务器仍在运行,并且输入会ps au
向我显示该过程。我究竟做错了什么?
此外,创建一个会话并在其中运行服务器,分离然后重新附加工作。只是当在脚本上完成时,它不会重新附加也不会找到它。
答案1
也许您的应用程序并不真正需要屏幕,甚至可以在没有活动会话(例如守护程序)的情况下运行。然后它可以简单地从屏幕上分离,这实际上就完成了。您可能需要指定一些参数以使其在前台运行(如果有这样的选项)。
您可以尝试在屏幕中运行 bash
screen -dmS script bash -c '/execute/shell/script.sh; exec bash'
这样屏幕应该可以生存(使用 bash),这样你就可以看到控制台。
答案2
首先使用以下命令启动新的屏幕会话:
screen -dmS <sessionname> <script_name>
这将创建一个新的独立屏幕会话与制作的 <sessionname>
.默认情况下它会自动分离。
稍后你可以附您可以随时通过以下方式参加此会议:
screen -r <sessionname>`
为了重新连接到正在运行的会话。
笔记:请使用以下键盘组合:CTRL + A 后按 D到分离再次屏幕。
分离意味着您继续在屏幕内运行脚本,而不终止脚本。这意味着您可以稍后随时重新连接。