我很好奇如何通过 SSH 隧道启动软件,但同时保持软件在 SSH 服务器上运行。
例如,我为我的兄弟和他的朋友托管了一个 minecraft 服务器。如果发生某些事情,我需要重新启动 minecraft 软件,虽然我可以通过 Putty 或终端从任何计算机执行此操作,但只有我保持 SSH 隧道畅通,正在运行的 minecraft 软件会话才会保持活动状态。
如何在不让 SSH 客户端托管软件会话的情况下使用 SSH 启动软件和服务?
答案1
在此示例中,我将使用svnserve
必须启动的守护进程。因此,假设您的 SSH 用户名是“kyle”,服务器的主机名是“home.example.com”,您可以执行以下操作:
ssh -f [email protected] "svnserve -d"
有时用户必须强制分配伪终端,在这种情况下使用 -t 标志:
ssh -t [email protected] "svnserve -d"
如果你的守护进程不知道如何“守护”自身,那么你可以将其发送到后台:
ssh -f [email protected] "/usr/local/bin/minecraft-server &"
强烈建议阅读 SSH 手册页...;)如果您花 2 分钟阅读 SSH 客户端的手册页,您可以自己找到这些信息。
答案2
您应该使用屏幕或 tmux。
screen 启动屏幕,然后您可以随意连接和分离终端( ctrl + A , D )来分离。